aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier <[email protected]>2011-02-01 12:09:25 -0500
committerStefan Monnier <[email protected]>2011-02-01 12:09:25 -0500
commit8f1d2ef658f95549eb33fe5265f8f11c5129bece (patch)
treeb7cd852a1adb423384532cfe22c31547160b22bc
parent590130fb19e1f433965c421d98fedeb2d7c33310 (diff)
parent1dc4075fa8809805aed5092e93e225e889725c94 (diff)
Merge from trunk
-rw-r--r--ChangeLog413
-rw-r--r--INSTALL14
-rw-r--r--INSTALL.BZR3
-rw-r--r--Makefile.in104
-rw-r--r--README12
-rw-r--r--aclocal.m41003
-rw-r--r--admin/CPP-DEFINES1
-rw-r--r--admin/ChangeLog88
-rw-r--r--admin/MAINTAINERS1
-rw-r--r--admin/README4
-rw-r--r--admin/admin.el30
-rw-r--r--admin/alloc-colors.c6
-rwxr-xr-xadmin/build-configs4
-rw-r--r--admin/bzrmerge.el316
-rw-r--r--admin/charsets/Makefile3
-rw-r--r--admin/charsets/big5.awk3
-rw-r--r--admin/charsets/compact.awk3
-rw-r--r--admin/charsets/cp51932.awk6
-rw-r--r--admin/charsets/cp932.awk3
-rw-r--r--admin/charsets/eucjp-ms.awk5
-rw-r--r--admin/charsets/gb180302.awk3
-rw-r--r--admin/charsets/gb180304.awk3
-rw-r--r--admin/charsets/kuten.awk1
-rwxr-xr-xadmin/charsets/mapconv3
-rw-r--r--admin/charsets/mapfiles/README4
-rw-r--r--admin/charsets/mule-charsets.el3
-rwxr-xr-xadmin/check-doc-strings1
-rw-r--r--admin/cus-test.el4
-rwxr-xr-xadmin/diff-tar-files6
-rw-r--r--admin/emacs-pretesters1
-rwxr-xr-xadmin/make-announcement4
-rwxr-xr-xadmin/make-changelog-diff1
-rwxr-xr-xadmin/make-emacs5
-rw-r--r--admin/make-tarball.txt3
-rw-r--r--admin/notes/bzr81
-rw-r--r--admin/notes/copyright39
-rw-r--r--admin/notes/font-backend3
-rw-r--r--admin/notes/iftc1
-rw-r--r--admin/notes/lel-TODO2
-rw-r--r--admin/notes/multi-tty3
-rw-r--r--admin/notes/trailing-whitespace1
-rw-r--r--admin/notes/unicode3
-rw-r--r--admin/nt/README-UNDUMP.W323
-rw-r--r--admin/nt/README-ftp-server3
-rwxr-xr-xadmin/nt/dump.bat3
-rwxr-xr-xadmin/quick-install-emacs9
-rw-r--r--admin/unidata/.gitignore1
-rw-r--r--admin/unidata/Makefile.in2
-rw-r--r--admin/unidata/bidimirror.awk2
-rw-r--r--admin/unidata/biditype.awk2
-rw-r--r--admin/unidata/copyright.html3
-rw-r--r--admin/unidata/makefile.w32-in2
-rw-r--r--admin/unidata/unidata-gen.el5
-rw-r--r--arg-nonnull.h26
-rwxr-xr-xautogen.sh2
-rw-r--r--c++defs.h271
-rwxr-xr-xcompile143
-rw-r--r--config.bat5
-rwxr-xr-xconfig.guess47
-rwxr-xr-xconfig.sub89
-rwxr-xr-xconfigure3929
-rw-r--r--configure.in165
-rwxr-xr-xdepcomp630
-rw-r--r--doc/emacs/ChangeLog106
-rw-r--r--doc/emacs/Makefile.in14
-rw-r--r--doc/emacs/abbrevs.texi8
-rw-r--r--doc/emacs/ack.texi20
-rw-r--r--doc/emacs/anti.texi6
-rw-r--r--doc/emacs/arevert-xtra.texi7
-rw-r--r--doc/emacs/basic.texi4
-rw-r--r--doc/emacs/buffers.texi7
-rw-r--r--doc/emacs/building.texi16
-rw-r--r--doc/emacs/cal-xtra.texi7
-rw-r--r--doc/emacs/calendar.texi7
-rw-r--r--doc/emacs/cmdargs.texi8
-rw-r--r--doc/emacs/commands.texi8
-rw-r--r--doc/emacs/custom.texi10
-rw-r--r--doc/emacs/dired-xtra.texi7
-rw-r--r--doc/emacs/dired.texi7
-rw-r--r--doc/emacs/display.texi18
-rw-r--r--doc/emacs/doclicense.texi4
-rw-r--r--doc/emacs/emacs-xtra.texi6
-rw-r--r--doc/emacs/emacs.texi23
-rw-r--r--doc/emacs/emerge-xtra.texi7
-rw-r--r--doc/emacs/entering.texi8
-rw-r--r--doc/emacs/files.texi41
-rw-r--r--doc/emacs/fixit.texi8
-rw-r--r--doc/emacs/fortran-xtra.texi7
-rw-r--r--doc/emacs/frames.texi21
-rw-r--r--doc/emacs/glossary.texi8
-rw-r--r--doc/emacs/gnu.texi8
-rw-r--r--doc/emacs/gpl.texi4
-rw-r--r--doc/emacs/help.texi7
-rw-r--r--doc/emacs/indent.texi8
-rw-r--r--doc/emacs/killing.texi36
-rw-r--r--doc/emacs/kmacro.texi8
-rw-r--r--doc/emacs/m-x.texi8
-rw-r--r--doc/emacs/macos.texi3
-rw-r--r--doc/emacs/maintaining.texi13
-rw-r--r--doc/emacs/major.texi8
-rw-r--r--doc/emacs/makefile.w32-in14
-rw-r--r--doc/emacs/mark.texi7
-rw-r--r--doc/emacs/mini.texi7
-rw-r--r--doc/emacs/misc.texi42
-rw-r--r--doc/emacs/msdog-xtra.texi6
-rw-r--r--doc/emacs/msdog.texi81
-rw-r--r--doc/emacs/mule.texi7
-rw-r--r--doc/emacs/picture-xtra.texi6
-rw-r--r--doc/emacs/programs.texi7
-rw-r--r--doc/emacs/regs.texi10
-rw-r--r--doc/emacs/rmail.texi121
-rw-r--r--doc/emacs/screen.texi7
-rw-r--r--doc/emacs/search.texi19
-rw-r--r--doc/emacs/sending.texi7
-rw-r--r--doc/emacs/text.texi13
-rw-r--r--doc/emacs/trouble.texi23
-rw-r--r--doc/emacs/vc-xtra.texi7
-rw-r--r--doc/emacs/vc1-xtra.texi7
-rw-r--r--doc/emacs/windows.texi8
-rw-r--r--doc/emacs/xresources.texi8
-rw-r--r--doc/lispintro/ChangeLog9
-rw-r--r--doc/lispintro/Makefile.in18
-rw-r--r--doc/lispintro/README3
-rw-r--r--doc/lispintro/cons-1.eps3
-rw-r--r--doc/lispintro/cons-2.eps3
-rw-r--r--doc/lispintro/cons-2a.eps3
-rw-r--r--doc/lispintro/cons-3.eps3
-rw-r--r--doc/lispintro/cons-4.eps3
-rw-r--r--doc/lispintro/cons-5.eps3
-rw-r--r--doc/lispintro/doclicense.texi4
-rw-r--r--doc/lispintro/drawers.eps3
-rw-r--r--doc/lispintro/emacs-lisp-intro.texi4
-rw-r--r--doc/lispintro/lambda-1.eps3
-rw-r--r--doc/lispintro/lambda-2.eps3
-rw-r--r--doc/lispintro/lambda-3.eps3
-rw-r--r--doc/lispintro/makefile.w32-in3
-rw-r--r--doc/lispref/ChangeLog291
-rw-r--r--doc/lispref/Makefile.in18
-rw-r--r--doc/lispref/README3
-rw-r--r--doc/lispref/abbrevs.texi8
-rw-r--r--doc/lispref/advice.texi7
-rw-r--r--doc/lispref/anti.texi7
-rw-r--r--doc/lispref/back.texi7
-rw-r--r--doc/lispref/backups.texi13
-rw-r--r--doc/lispref/buffers.texi3
-rw-r--r--doc/lispref/commands.texi7
-rw-r--r--doc/lispref/compile.texi7
-rw-r--r--doc/lispref/control.texi7
-rw-r--r--doc/lispref/customize.texi7
-rw-r--r--doc/lispref/debugging.texi7
-rw-r--r--doc/lispref/display.texi20
-rw-r--r--doc/lispref/doclicense.texi4
-rw-r--r--doc/lispref/edebug.texi7
-rw-r--r--doc/lispref/elisp-covers.texi7
-rw-r--r--doc/lispref/elisp.texi3
-rw-r--r--doc/lispref/errors.texi7
-rw-r--r--doc/lispref/eval.texi7
-rw-r--r--doc/lispref/files.texi58
-rw-r--r--doc/lispref/frames.texi17
-rw-r--r--doc/lispref/front-cover-1.texi4
-rw-r--r--doc/lispref/functions.texi7
-rw-r--r--doc/lispref/gpl.texi4
-rw-r--r--doc/lispref/hash.texi7
-rw-r--r--doc/lispref/help.texi3
-rw-r--r--doc/lispref/hooks.texi7
-rw-r--r--doc/lispref/internals.texi7
-rw-r--r--doc/lispref/intro.texi7
-rw-r--r--doc/lispref/keymaps.texi31
-rw-r--r--doc/lispref/lay-flat.texi7
-rw-r--r--doc/lispref/lists.texi7
-rw-r--r--doc/lispref/loading.texi35
-rw-r--r--doc/lispref/locals.texi8
-rw-r--r--doc/lispref/macros.texi7
-rw-r--r--doc/lispref/makefile.w32-in19
-rw-r--r--doc/lispref/maps.texi5
-rw-r--r--doc/lispref/markers.texi7
-rw-r--r--doc/lispref/minibuf.texi7
-rw-r--r--doc/lispref/modes.texi832
-rw-r--r--doc/lispref/nonascii.texi7
-rw-r--r--doc/lispref/numbers.texi7
-rw-r--r--doc/lispref/objects.texi7
-rw-r--r--doc/lispref/os.texi7
-rw-r--r--doc/lispref/package.texi3
-rw-r--r--doc/lispref/positions.texi7
-rw-r--r--doc/lispref/processes.texi30
-rw-r--r--doc/lispref/searching.texi16
-rw-r--r--doc/lispref/sequences.texi7
-rw-r--r--doc/lispref/streams.texi7
-rw-r--r--doc/lispref/strings.texi13
-rw-r--r--doc/lispref/symbols.texi7
-rw-r--r--doc/lispref/syntax.texi7
-rw-r--r--doc/lispref/text.texi8
-rwxr-xr-xdoc/lispref/tindex.pl4
-rw-r--r--doc/lispref/tips.texi7
-rw-r--r--doc/lispref/two-volume-cross-refs.txt5
-rw-r--r--doc/lispref/two-volume.make3
-rw-r--r--doc/lispref/two.el4
-rw-r--r--doc/lispref/variables.texi8
-rw-r--r--doc/lispref/vol1.texi5
-rw-r--r--doc/lispref/vol2.texi5
-rw-r--r--doc/lispref/windows.texi7
-rw-r--r--doc/man/ChangeLog7
-rw-r--r--doc/man/ctags.12
-rw-r--r--doc/man/ebrowse.13
-rw-r--r--doc/man/emacs.13
-rw-r--r--doc/man/emacsclient.131
-rw-r--r--doc/man/etags.13
-rw-r--r--doc/man/grep-changelog.13
-rw-r--r--doc/man/rcs-checkin.13
-rw-r--r--doc/misc/ChangeLog133
-rw-r--r--doc/misc/Makefile.in117
-rw-r--r--doc/misc/ada-mode.texi7
-rw-r--r--doc/misc/auth.texi2
-rw-r--r--doc/misc/autotype.texi7
-rw-r--r--doc/misc/calc.texi4
-rw-r--r--doc/misc/cc-mode.texi5
-rw-r--r--doc/misc/cl.texi21
-rw-r--r--doc/misc/dbus.texi117
-rw-r--r--doc/misc/dired-x.texi7
-rw-r--r--doc/misc/ebrowse.texi7
-rw-r--r--doc/misc/ede.texi7
-rw-r--r--doc/misc/ediff.texi3
-rw-r--r--doc/misc/edt.texi3
-rw-r--r--doc/misc/eieio.texi6
-rw-r--r--doc/misc/emacs-mime.texi3
-rw-r--r--doc/misc/epa.texi70
-rw-r--r--doc/misc/erc.texi6
-rw-r--r--doc/misc/ert.texi841
-rw-r--r--doc/misc/eshell.texi7
-rw-r--r--doc/misc/eudc.texi3
-rw-r--r--doc/misc/faq.texi13
-rw-r--r--doc/misc/flymake.texi6
-rw-r--r--doc/misc/forms.texi7
-rw-r--r--doc/misc/gnus-coding.texi2
-rw-r--r--doc/misc/gnus-faq.texi3
-rw-r--r--doc/misc/gnus-news.el5
-rw-r--r--doc/misc/gnus-news.texi2
-rw-r--r--doc/misc/gnus.texi1951
-rw-r--r--doc/misc/gpl.texi4
-rw-r--r--doc/misc/idlwave.texi7
-rw-r--r--doc/misc/info.texi7
-rw-r--r--doc/misc/mairix-el.texi6
-rw-r--r--doc/misc/makefile.w32-in117
-rw-r--r--doc/misc/message.texi7
-rw-r--r--doc/misc/mh-e.texi3
-rw-r--r--doc/misc/newsticker.texi6
-rw-r--r--doc/misc/nxml-mode.texi6
-rw-r--r--doc/misc/org.texi7
-rw-r--r--doc/misc/pcl-cvs.texi7
-rw-r--r--doc/misc/pgg.texi3
-rw-r--r--doc/misc/rcirc.texi6
-rw-r--r--doc/misc/reftex.texi7
-rw-r--r--doc/misc/remember.texi6
-rw-r--r--doc/misc/sasl.texi2
-rw-r--r--doc/misc/sc.texi7
-rw-r--r--doc/misc/sem-user.texi7
-rw-r--r--doc/misc/semantic.texi7
-rw-r--r--doc/misc/ses.texi7
-rw-r--r--doc/misc/sieve.texi3
-rw-r--r--doc/misc/smtpmail.texi6
-rw-r--r--doc/misc/speedbar.texi7
-rw-r--r--doc/misc/texinfo.tex834
-rw-r--r--doc/misc/tramp.texi24
-rw-r--r--doc/misc/trampver.texi3
-rw-r--r--doc/misc/url.texi7
-rw-r--r--doc/misc/vip.texi7
-rw-r--r--doc/misc/viper.texi7
-rw-r--r--doc/misc/widget.texi7
-rw-r--r--doc/misc/woman.texi7
-rw-r--r--etc/.gitignore2
-rw-r--r--etc/CONTRIBUTE3
-rw-r--r--etc/ChangeLog88
-rw-r--r--etc/DEBUG4
-rw-r--r--etc/DISTRIB4
-rw-r--r--etc/ERC-NEWS3
-rw-r--r--etc/ETAGS.EBNF3
-rw-r--r--etc/ETAGS.README3
-rw-r--r--etc/GNU3
-rw-r--r--etc/GNUS-NEWS3
-rw-r--r--etc/HELLO3
-rw-r--r--etc/MACHINES6
-rw-r--r--etc/MAILINGLISTS6
-rw-r--r--etc/MH-E-NEWS4
-rw-r--r--etc/MORE.STUFF4
-rw-r--r--etc/NEWS160
-rw-r--r--etc/NEWS.1-173
-rw-r--r--etc/NEWS.183
-rw-r--r--etc/NEWS.195
-rw-r--r--etc/NEWS.203
-rw-r--r--etc/NEWS.213
-rw-r--r--etc/NEWS.225
-rw-r--r--etc/NEWS.2328
-rw-r--r--etc/NEXTSTEP2
-rw-r--r--etc/PROBLEMS20
-rw-r--r--etc/README3
-rw-r--r--etc/SERVICE1
-rw-r--r--etc/TERMS3
-rw-r--r--etc/TODO3
-rw-r--r--etc/charsets/README5
-rw-r--r--etc/compilation.txt5
-rw-r--r--etc/edt-user.el4
-rw-r--r--etc/emacs-buffer.gdb3
-rw-r--r--etc/emacs.py1
-rw-r--r--etc/emacs2.py3
-rw-r--r--etc/emacs3.py3
-rw-r--r--etc/enriched.doc3
-rw-r--r--etc/gnus-tut.txt3
-rw-r--r--etc/grep.txt3
-rw-r--r--etc/images/README10
-rw-r--r--etc/images/checked.xpm2
-rw-r--r--etc/images/custom/README2
-rw-r--r--etc/images/ezimage/README3
-rw-r--r--etc/images/gnus/README8
-rw-r--r--etc/images/gnus/gnus.svg3
-rw-r--r--etc/images/gud/README9
-rw-r--r--etc/images/icons/README4
-rw-r--r--etc/images/icons/hicolor/scalable/apps/emacs.svg2
-rw-r--r--etc/images/icons/hicolor/scalable/mimetypes/emacs-document.svg3
-rw-r--r--etc/images/mh-logo.xpm3
-rw-r--r--etc/images/mpc/README2
-rw-r--r--etc/images/mpc/ffwd.xpm1
-rw-r--r--etc/images/mpc/next.xpm1
-rw-r--r--etc/images/mpc/pause.xpm1
-rw-r--r--etc/images/mpc/play.xpm1
-rw-r--r--etc/images/mpc/prev.xpm1
-rw-r--r--etc/images/mpc/rewind.xpm1
-rw-r--r--etc/images/mpc/stop.xpm1
-rw-r--r--etc/images/separator.xpm8
-rw-r--r--etc/images/smilies/README3
-rw-r--r--etc/images/smilies/grayscale/README2
-rw-r--r--etc/images/smilies/medium/README2
-rw-r--r--etc/images/splash.svg3
-rw-r--r--etc/images/splash.xpm3
-rw-r--r--etc/images/tree-widget/default/README3
-rw-r--r--etc/images/tree-widget/folder/README3
-rw-r--r--etc/images/unchecked.xpm2
-rw-r--r--etc/nxml/00000-0007F.el1
-rw-r--r--etc/nxml/00080-000FF.el1
-rw-r--r--etc/nxml/00100-0017F.el1
-rw-r--r--etc/nxml/00180-0024F.el1
-rw-r--r--etc/nxml/00250-002AF.el1
-rw-r--r--etc/nxml/002B0-002FF.el1
-rw-r--r--etc/nxml/00300-0036F.el1
-rw-r--r--etc/nxml/00370-003FF.el1
-rw-r--r--etc/nxml/00400-004FF.el1
-rw-r--r--etc/nxml/00500-0052F.el1
-rw-r--r--etc/nxml/00530-0058F.el1
-rw-r--r--etc/nxml/00590-005FF.el1
-rw-r--r--etc/nxml/00600-006FF.el1
-rw-r--r--etc/nxml/00700-0074F.el1
-rw-r--r--etc/nxml/00780-007BF.el1
-rw-r--r--etc/nxml/00900-0097F.el1
-rw-r--r--etc/nxml/00980-009FF.el1
-rw-r--r--etc/nxml/00A00-00A7F.el1
-rw-r--r--etc/nxml/00A80-00AFF.el1
-rw-r--r--etc/nxml/00B00-00B7F.el1
-rw-r--r--etc/nxml/00B80-00BFF.el1
-rw-r--r--etc/nxml/00C00-00C7F.el1
-rw-r--r--etc/nxml/00C80-00CFF.el1
-rw-r--r--etc/nxml/00D00-00D7F.el1
-rw-r--r--etc/nxml/00D80-00DFF.el1
-rw-r--r--etc/nxml/00E00-00E7F.el1
-rw-r--r--etc/nxml/00E80-00EFF.el1
-rw-r--r--etc/nxml/00F00-00FFF.el1
-rw-r--r--etc/nxml/01000-0109F.el1
-rw-r--r--etc/nxml/010A0-010FF.el1
-rw-r--r--etc/nxml/01100-011FF.el1
-rw-r--r--etc/nxml/01200-0137F.el1
-rw-r--r--etc/nxml/013A0-013FF.el1
-rw-r--r--etc/nxml/01400-0167F.el1
-rw-r--r--etc/nxml/01680-0169F.el1
-rw-r--r--etc/nxml/016A0-016FF.el1
-rw-r--r--etc/nxml/01700-0171F.el1
-rw-r--r--etc/nxml/01720-0173F.el1
-rw-r--r--etc/nxml/01740-0175F.el1
-rw-r--r--etc/nxml/01760-0177F.el1
-rw-r--r--etc/nxml/01780-017FF.el1
-rw-r--r--etc/nxml/01800-018AF.el1
-rw-r--r--etc/nxml/01E00-01EFF.el1
-rw-r--r--etc/nxml/01F00-01FFF.el1
-rw-r--r--etc/nxml/02000-0206F.el1
-rw-r--r--etc/nxml/02070-0209F.el1
-rw-r--r--etc/nxml/020A0-020CF.el1
-rw-r--r--etc/nxml/020D0-020FF.el1
-rw-r--r--etc/nxml/02100-0214F.el1
-rw-r--r--etc/nxml/02150-0218F.el1
-rw-r--r--etc/nxml/02190-021FF.el1
-rw-r--r--etc/nxml/02200-022FF.el1
-rw-r--r--etc/nxml/02300-023FF.el1
-rw-r--r--etc/nxml/02400-0243F.el1
-rw-r--r--etc/nxml/02440-0245F.el1
-rw-r--r--etc/nxml/02460-024FF.el1
-rw-r--r--etc/nxml/02500-0257F.el1
-rw-r--r--etc/nxml/02580-0259F.el1
-rw-r--r--etc/nxml/025A0-025FF.el1
-rw-r--r--etc/nxml/02600-026FF.el1
-rw-r--r--etc/nxml/02700-027BF.el1
-rw-r--r--etc/nxml/027C0-027EF.el1
-rw-r--r--etc/nxml/027F0-027FF.el1
-rw-r--r--etc/nxml/02800-028FF.el1
-rw-r--r--etc/nxml/02900-0297F.el1
-rw-r--r--etc/nxml/02980-029FF.el1
-rw-r--r--etc/nxml/02A00-02AFF.el1
-rw-r--r--etc/nxml/02E80-02EFF.el1
-rw-r--r--etc/nxml/02F00-02FDF.el1
-rw-r--r--etc/nxml/02FF0-02FFF.el1
-rw-r--r--etc/nxml/03000-0303F.el1
-rw-r--r--etc/nxml/03040-0309F.el1
-rw-r--r--etc/nxml/030A0-030FF.el1
-rw-r--r--etc/nxml/03100-0312F.el1
-rw-r--r--etc/nxml/03130-0318F.el1
-rw-r--r--etc/nxml/03190-0319F.el1
-rw-r--r--etc/nxml/031A0-031BF.el1
-rw-r--r--etc/nxml/031F0-031FF.el1
-rw-r--r--etc/nxml/03200-032FF.el1
-rw-r--r--etc/nxml/03300-033FF.el1
-rw-r--r--etc/nxml/03400-04DBF.el1
-rw-r--r--etc/nxml/0A000-0A48F.el1
-rw-r--r--etc/nxml/0A490-0A4CF.el1
-rw-r--r--etc/nxml/0FB00-0FB4F.el1
-rw-r--r--etc/nxml/0FB50-0FDFF.el1
-rw-r--r--etc/nxml/0FE00-0FE0F.el1
-rw-r--r--etc/nxml/0FE20-0FE2F.el1
-rw-r--r--etc/nxml/0FE30-0FE4F.el1
-rw-r--r--etc/nxml/0FE50-0FE6F.el1
-rw-r--r--etc/nxml/0FE70-0FEFF.el1
-rw-r--r--etc/nxml/0FF00-0FFEF.el1
-rw-r--r--etc/nxml/0FFF0-0FFFF.el1
-rw-r--r--etc/nxml/10300-1032F.el1
-rw-r--r--etc/nxml/10330-1034F.el1
-rw-r--r--etc/nxml/10400-1044F.el1
-rw-r--r--etc/nxml/1D000-1D0FF.el1
-rw-r--r--etc/nxml/1D100-1D1FF.el1
-rw-r--r--etc/nxml/1D400-1D7FF.el1
-rw-r--r--etc/nxml/E0000-E007F.el1
-rw-r--r--etc/nxml/test-invalid.xml3
-rw-r--r--etc/nxml/test-valid.xml3
-rw-r--r--etc/ps-prin0.ps3
-rw-r--r--etc/ps-prin1.ps3
-rw-r--r--etc/refcards/Makefile29
-rw-r--r--etc/refcards/README3
-rw-r--r--etc/refcards/calccard.tex6
-rw-r--r--etc/refcards/cs-dired-ref.tex6
-rw-r--r--etc/refcards/cs-refcard.tex7
-rw-r--r--etc/refcards/cs-survival.tex6
-rw-r--r--etc/refcards/de-refcard.tex6
-rw-r--r--etc/refcards/dired-ref.tex6
-rw-r--r--etc/refcards/fr-dired-ref.tex6
-rw-r--r--etc/refcards/fr-refcard.tex7
-rw-r--r--etc/refcards/fr-survival.tex6
-rw-r--r--etc/refcards/gnus-logo.eps3
-rw-r--r--etc/refcards/gnus-refcard.tex3
-rw-r--r--etc/refcards/orgcard.tex7
-rw-r--r--etc/refcards/pdflayout.sty6
-rw-r--r--etc/refcards/pl-refcard.tex6
-rw-r--r--etc/refcards/pt-br-refcard.tex7
-rw-r--r--etc/refcards/refcard.tex7
-rw-r--r--etc/refcards/ru-refcard.tex6
-rw-r--r--etc/refcards/sk-dired-ref.tex6
-rw-r--r--etc/refcards/sk-refcard.tex5
-rw-r--r--etc/refcards/sk-survival.tex6
-rw-r--r--etc/refcards/survival.tex6
-rw-r--r--etc/refcards/vipcard.tex6
-rw-r--r--etc/refcards/viperCard.tex6
-rw-r--r--etc/schema/locate.rnc2
-rw-r--r--etc/schema/relaxng.rnc2
-rw-r--r--etc/schema/schemas.xml6
-rw-r--r--etc/ses-example.ses5
-rw-r--r--etc/srecode/cpp.srt2
-rw-r--r--etc/srecode/default.srt2
-rw-r--r--etc/srecode/doc-cpp.srt2
-rw-r--r--etc/srecode/doc-default.srt2
-rw-r--r--etc/srecode/doc-java.srt2
-rw-r--r--etc/srecode/ede-make.srt2
-rw-r--r--etc/srecode/el.srt2
-rw-r--r--etc/srecode/getset-cpp.srt2
-rw-r--r--etc/srecode/java.srt2
-rw-r--r--etc/srecode/make.srt2
-rw-r--r--etc/srecode/template.srt2
-rw-r--r--etc/srecode/test.srt2
-rw-r--r--etc/srecode/texi.srt2
-rw-r--r--etc/srecode/wisent.srt2
-rw-r--r--etc/themes/tango-dark-theme.el180
-rw-r--r--etc/themes/tango-theme.el173
-rw-r--r--etc/themes/tsdh-dark-theme.el60
-rw-r--r--etc/themes/tsdh-light-theme.el59
-rw-r--r--etc/themes/wheatgrass-theme.el2
-rw-r--r--etc/tutorials/TUTORIAL4
-rw-r--r--etc/tutorials/TUTORIAL.bg4
-rw-r--r--etc/tutorials/TUTORIAL.cn7
-rw-r--r--etc/tutorials/TUTORIAL.cs4
-rw-r--r--etc/tutorials/TUTORIAL.de4
-rw-r--r--etc/tutorials/TUTORIAL.eo6
-rw-r--r--etc/tutorials/TUTORIAL.es4
-rw-r--r--etc/tutorials/TUTORIAL.fr4
-rw-r--r--etc/tutorials/TUTORIAL.he2
-rw-r--r--etc/tutorials/TUTORIAL.it3
-rw-r--r--etc/tutorials/TUTORIAL.ja4
-rw-r--r--etc/tutorials/TUTORIAL.ko4
-rw-r--r--etc/tutorials/TUTORIAL.nl8
-rw-r--r--etc/tutorials/TUTORIAL.pl4
-rw-r--r--etc/tutorials/TUTORIAL.pt_BR3
-rw-r--r--etc/tutorials/TUTORIAL.ro4
-rw-r--r--etc/tutorials/TUTORIAL.ru4
-rw-r--r--etc/tutorials/TUTORIAL.sk4
-rw-r--r--etc/tutorials/TUTORIAL.sl4
-rw-r--r--etc/tutorials/TUTORIAL.sv4
-rw-r--r--etc/tutorials/TUTORIAL.th4
-rw-r--r--etc/tutorials/TUTORIAL.translators1
-rw-r--r--etc/tutorials/TUTORIAL.zh4
-rw-r--r--info/.gitignore2
-rw-r--r--info/dir1
-rwxr-xr-xinstall-sh676
-rw-r--r--leim/.gitignore2
-rw-r--r--leim/CXTERM-DIC/4Corner.tit1
-rw-r--r--leim/CXTERM-DIC/ARRAY30.tit1
-rw-r--r--leim/CXTERM-DIC/CCDOSPY.tit1
-rw-r--r--leim/CXTERM-DIC/ECDICT.tit1
-rw-r--r--leim/CXTERM-DIC/ETZY.tit1
-rw-r--r--leim/CXTERM-DIC/PY-b5.tit1
-rw-r--r--leim/CXTERM-DIC/Punct-b5.tit1
-rw-r--r--leim/CXTERM-DIC/Punct.tit1
-rw-r--r--leim/CXTERM-DIC/QJ-b5.tit1
-rw-r--r--leim/CXTERM-DIC/QJ.tit1
-rw-r--r--leim/CXTERM-DIC/SW.tit1
-rw-r--r--leim/CXTERM-DIC/TONEPY.tit1
-rw-r--r--leim/CXTERM-DIC/ZOZY.tit1
-rw-r--r--leim/ChangeLog33
-rw-r--r--leim/MISC-DIC/CTLau-b5.html3
-rw-r--r--leim/MISC-DIC/CTLau.html3
-rw-r--r--leim/Makefile.in65
-rw-r--r--leim/README3
-rw-r--r--leim/leim-ext.el6
-rw-r--r--leim/makefile.w32-in6
-rw-r--r--leim/quail/.gitignore1
-rw-r--r--leim/quail/arabic.el3
-rw-r--r--leim/quail/croatian.el4
-rw-r--r--leim/quail/cyril-jis.el6
-rw-r--r--leim/quail/cyrillic.el6
-rw-r--r--leim/quail/czech.el4
-rw-r--r--leim/quail/ethiopic.el3
-rw-r--r--leim/quail/georgian.el4
-rw-r--r--leim/quail/greek.el6
-rw-r--r--leim/quail/hangul.el3
-rw-r--r--leim/quail/hanja-jis.el3
-rw-r--r--leim/quail/hanja.el6
-rw-r--r--leim/quail/hanja3.el4
-rw-r--r--leim/quail/hebrew.el3
-rw-r--r--leim/quail/indian.el4
-rw-r--r--leim/quail/ipa.el5
-rw-r--r--leim/quail/japanese.el6
-rw-r--r--leim/quail/lao.el3
-rw-r--r--leim/quail/latin-alt.el7
-rw-r--r--leim/quail/latin-ltx.el7
-rw-r--r--leim/quail/latin-post.el6
-rw-r--r--leim/quail/latin-pre.el7
-rw-r--r--leim/quail/lrt.el6
-rw-r--r--leim/quail/py-punct.el6
-rw-r--r--leim/quail/pypunct-b5.el3
-rw-r--r--leim/quail/rfc1345.el4
-rw-r--r--leim/quail/sgml-input.el4
-rw-r--r--leim/quail/sisheng.el3
-rw-r--r--leim/quail/slovak.el4
-rw-r--r--leim/quail/symbol-ksc.el6
-rw-r--r--leim/quail/thai.el3
-rw-r--r--leim/quail/tibetan.el6
-rw-r--r--leim/quail/uni-input.el6
-rw-r--r--leim/quail/viqr.el3
-rw-r--r--leim/quail/vntelex.el4
-rw-r--r--leim/quail/welsh.el4
-rw-r--r--lib-src/.gitignore2
-rw-r--r--lib-src/ChangeLog99
-rw-r--r--lib-src/Makefile.in57
-rw-r--r--lib-src/ebrowse.c15
-rw-r--r--lib-src/emacsclient.c11
-rw-r--r--lib-src/etags.c13
-rw-r--r--lib-src/fakemail.c7
-rw-r--r--lib-src/getopt.c1245
-rw-r--r--lib-src/getopt1.c177
-rw-r--r--lib-src/getopt_int.h134
-rw-r--r--lib-src/gettext.h82
-rwxr-xr-xlib-src/grep-changelog4
-rw-r--r--lib-src/hexl.c13
-rw-r--r--lib-src/make-docfile.c32
-rw-r--r--lib-src/makefile.w32-in54
-rw-r--r--lib-src/movemail.c20
-rw-r--r--lib-src/ntlib.c7
-rw-r--r--lib-src/ntlib.h7
-rw-r--r--lib-src/pop.c10
-rw-r--r--lib-src/pop.h5
-rw-r--r--lib-src/profile.c5
-rwxr-xr-xlib-src/rcs-checkin4
-rwxr-xr-xlib-src/rcs2log7
-rw-r--r--lib-src/test-distrib.c8
-rw-r--r--lib-src/update-game-score.c7
-rwxr-xr-xlib-src/vcdiff5
-rw-r--r--lib/COPYING674
-rw-r--r--lib/Makefile.am8
-rw-r--r--lib/Makefile.in993
-rw-r--r--lib/dtoastr.c2
-rw-r--r--lib/ftoastr.c136
-rw-r--r--lib/ftoastr.h144
-rw-r--r--lib/getopt.c1192
-rw-r--r--lib/getopt.in.h (renamed from lib-src/getopt_.h)94
-rw-r--r--lib/getopt1.c170
-rw-r--r--lib/getopt_.h280
-rw-r--r--lib/getopt_int.h135
-rw-r--r--lib/gettext.h280
-rw-r--r--lib/gnulib.mk388
-rw-r--r--lib/intprops.h86
-rw-r--r--lib/makefile.w32-in154
-rw-r--r--lib/mktime-internal.h4
-rw-r--r--lib/mktime.c737
-rw-r--r--lib/stdbool.in.h122
-rw-r--r--lib/stddef.in.h87
-rw-r--r--lib/strftime.c1468
-rw-r--r--lib/strftime.h34
-rw-r--r--lib/time.in.h243
-rw-r--r--lib/time_r.c45
-rw-r--r--lib/unistd.in.h1378
-rw-r--r--lisp/ChangeLog.15
-rw-r--r--lisp/ChangeLog.104
-rw-r--r--lisp/ChangeLog.115
-rw-r--r--lisp/ChangeLog.123
-rw-r--r--lisp/ChangeLog.132
-rw-r--r--lisp/ChangeLog.143
-rw-r--r--lisp/ChangeLog.24
-rw-r--r--lisp/ChangeLog.34
-rw-r--r--lisp/ChangeLog.44
-rw-r--r--lisp/ChangeLog.54
-rw-r--r--lisp/ChangeLog.64
-rw-r--r--lisp/ChangeLog.74
-rw-r--r--lisp/ChangeLog.84
-rw-r--r--lisp/ChangeLog.94
-rw-r--r--lisp/ChangeLog.trunk1682
-rw-r--r--lisp/Makefile.in5
-rw-r--r--lisp/abbrev.el26
-rw-r--r--lisp/abbrevlist.el4
-rw-r--r--lisp/align.el4
-rw-r--r--lisp/allout.el1428
-rw-r--r--lisp/ansi-color.el4
-rw-r--r--lisp/apropos.el4
-rw-r--r--lisp/arc-mode.el3
-rw-r--r--lisp/array.el3
-rw-r--r--lisp/autoarg.el4
-rw-r--r--lisp/autoinsert.el5
-rw-r--r--lisp/autorevert.el4
-rw-r--r--lisp/avoid.el4
-rw-r--r--lisp/battery.el4
-rw-r--r--lisp/bindings.el4
-rw-r--r--lisp/bookmark.el4
-rw-r--r--lisp/bs.el4
-rw-r--r--lisp/buff-menu.el14
-rw-r--r--lisp/button.el17
-rw-r--r--lisp/calc/README6
-rw-r--r--lisp/calc/README.prev3
-rw-r--r--lisp/calc/calc-aent.el4
-rw-r--r--lisp/calc/calc-alg.el4
-rw-r--r--lisp/calc/calc-arith.el4
-rw-r--r--lisp/calc/calc-bin.el4
-rw-r--r--lisp/calc/calc-comb.el4
-rw-r--r--lisp/calc/calc-cplx.el4
-rw-r--r--lisp/calc/calc-embed.el4
-rw-r--r--lisp/calc/calc-ext.el20
-rw-r--r--lisp/calc/calc-fin.el4
-rw-r--r--lisp/calc/calc-forms.el4
-rw-r--r--lisp/calc/calc-frac.el4
-rw-r--r--lisp/calc/calc-funcs.el4
-rw-r--r--lisp/calc/calc-graph.el26
-rw-r--r--lisp/calc/calc-help.el13
-rw-r--r--lisp/calc/calc-incom.el4
-rw-r--r--lisp/calc/calc-keypd.el3
-rw-r--r--lisp/calc/calc-lang.el4
-rw-r--r--lisp/calc/calc-macs.el4
-rw-r--r--lisp/calc/calc-map.el30
-rw-r--r--lisp/calc/calc-math.el4
-rw-r--r--lisp/calc/calc-menu.el3
-rw-r--r--lisp/calc/calc-misc.el4
-rw-r--r--lisp/calc/calc-mode.el4
-rw-r--r--lisp/calc/calc-mtx.el4
-rw-r--r--lisp/calc/calc-nlfit.el3
-rw-r--r--lisp/calc/calc-poly.el4
-rw-r--r--lisp/calc/calc-prog.el34
-rw-r--r--lisp/calc/calc-rewr.el4
-rw-r--r--lisp/calc/calc-rules.el4
-rw-r--r--lisp/calc/calc-sel.el4
-rw-r--r--lisp/calc/calc-stat.el4
-rw-r--r--lisp/calc/calc-store.el4
-rw-r--r--lisp/calc/calc-stuff.el4
-rw-r--r--lisp/calc/calc-trail.el4
-rw-r--r--lisp/calc/calc-undo.el5
-rw-r--r--lisp/calc/calc-units.el127
-rw-r--r--lisp/calc/calc-vec.el4
-rw-r--r--lisp/calc/calc-yank.el3
-rw-r--r--lisp/calc/calc.el18
-rw-r--r--lisp/calc/calcalg2.el4
-rw-r--r--lisp/calc/calcalg3.el4
-rw-r--r--lisp/calc/calccomp.el4
-rw-r--r--lisp/calc/calcsel2.el4
-rw-r--r--lisp/calculator.el214
-rw-r--r--lisp/calendar/appt.el4
-rw-r--r--lisp/calendar/cal-bahai.el4
-rw-r--r--lisp/calendar/cal-china.el4
-rw-r--r--lisp/calendar/cal-coptic.el4
-rw-r--r--lisp/calendar/cal-dst.el4
-rw-r--r--lisp/calendar/cal-french.el4
-rw-r--r--lisp/calendar/cal-hebrew.el3
-rw-r--r--lisp/calendar/cal-html.el4
-rw-r--r--lisp/calendar/cal-islam.el4
-rw-r--r--lisp/calendar/cal-iso.el4
-rw-r--r--lisp/calendar/cal-julian.el4
-rw-r--r--lisp/calendar/cal-mayan.el5
-rw-r--r--lisp/calendar/cal-menu.el4
-rw-r--r--lisp/calendar/cal-move.el4
-rw-r--r--lisp/calendar/cal-persia.el4
-rw-r--r--lisp/calendar/cal-tex.el4
-rw-r--r--lisp/calendar/cal-x.el4
-rw-r--r--lisp/calendar/calendar.el4
-rw-r--r--lisp/calendar/diary-lib.el8
-rw-r--r--lisp/calendar/holidays.el3
-rw-r--r--lisp/calendar/icalendar.el4
-rw-r--r--lisp/calendar/lunar.el5
-rw-r--r--lisp/calendar/parse-time.el3
-rw-r--r--lisp/calendar/solar.el5
-rw-r--r--lisp/calendar/time-date.el3
-rw-r--r--lisp/calendar/timeclock.el3
-rw-r--r--lisp/calendar/todo-mode.el4
-rw-r--r--lisp/case-table.el4
-rw-r--r--lisp/cdl.el4
-rw-r--r--lisp/cedet/ChangeLog91
-rw-r--r--lisp/cedet/cedet-cscope.el3
-rw-r--r--lisp/cedet/cedet-files.el3
-rw-r--r--lisp/cedet/cedet-global.el3
-rw-r--r--lisp/cedet/cedet-idutils.el3
-rw-r--r--lisp/cedet/cedet.el4
-rw-r--r--lisp/cedet/data-debug.el3
-rw-r--r--lisp/cedet/ede.el3
-rw-r--r--lisp/cedet/ede/auto.el2
-rw-r--r--lisp/cedet/ede/autoconf-edit.el3
-rw-r--r--lisp/cedet/ede/base.el2
-rw-r--r--lisp/cedet/ede/cpp-root.el3
-rw-r--r--lisp/cedet/ede/custom.el2
-rw-r--r--lisp/cedet/ede/dired.el4
-rw-r--r--lisp/cedet/ede/emacs.el3
-rw-r--r--lisp/cedet/ede/files.el3
-rw-r--r--lisp/cedet/ede/generic.el2
-rw-r--r--lisp/cedet/ede/linux.el3
-rw-r--r--lisp/cedet/ede/locate.el3
-rw-r--r--lisp/cedet/ede/make.el3
-rw-r--r--lisp/cedet/ede/makefile-edit.el3
-rw-r--r--lisp/cedet/ede/pconf.el4
-rw-r--r--lisp/cedet/ede/pmake.el3
-rw-r--r--lisp/cedet/ede/proj-archive.el3
-rw-r--r--lisp/cedet/ede/proj-aux.el3
-rw-r--r--lisp/cedet/ede/proj-comp.el3
-rw-r--r--lisp/cedet/ede/proj-elisp.el3
-rw-r--r--lisp/cedet/ede/proj-info.el4
-rw-r--r--lisp/cedet/ede/proj-misc.el4
-rw-r--r--lisp/cedet/ede/proj-obj.el4
-rw-r--r--lisp/cedet/ede/proj-prog.el4
-rw-r--r--lisp/cedet/ede/proj-scheme.el3
-rw-r--r--lisp/cedet/ede/proj-shared.el3
-rw-r--r--lisp/cedet/ede/proj.el4
-rw-r--r--lisp/cedet/ede/project-am.el3
-rw-r--r--lisp/cedet/ede/shell.el3
-rw-r--r--lisp/cedet/ede/simple.el3
-rw-r--r--lisp/cedet/ede/source.el3
-rw-r--r--lisp/cedet/ede/speedbar.el4
-rw-r--r--lisp/cedet/ede/srecode.el3
-rw-r--r--lisp/cedet/ede/system.el3
-rw-r--r--lisp/cedet/ede/util.el3
-rw-r--r--lisp/cedet/inversion.el4
-rw-r--r--lisp/cedet/mode-local.el3
-rw-r--r--lisp/cedet/pulse.el3
-rw-r--r--lisp/cedet/semantic.el4
-rw-r--r--lisp/cedet/semantic/analyze.el4
-rw-r--r--lisp/cedet/semantic/analyze/complete.el3
-rw-r--r--lisp/cedet/semantic/analyze/debug.el2
-rw-r--r--lisp/cedet/semantic/analyze/fcn.el3
-rw-r--r--lisp/cedet/semantic/analyze/refs.el3
-rw-r--r--lisp/cedet/semantic/bovine.el3
-rw-r--r--lisp/cedet/semantic/bovine/c-by.el4
-rw-r--r--lisp/cedet/semantic/bovine/c.el3
-rw-r--r--lisp/cedet/semantic/bovine/debug.el3
-rw-r--r--lisp/cedet/semantic/bovine/el.el4
-rw-r--r--lisp/cedet/semantic/bovine/gcc.el3
-rw-r--r--lisp/cedet/semantic/bovine/make-by.el4
-rw-r--r--lisp/cedet/semantic/bovine/make.el4
-rw-r--r--lisp/cedet/semantic/bovine/scm-by.el3
-rw-r--r--lisp/cedet/semantic/bovine/scm.el4
-rw-r--r--lisp/cedet/semantic/chart.el3
-rw-r--r--lisp/cedet/semantic/complete.el4
-rw-r--r--lisp/cedet/semantic/ctxt.el4
-rw-r--r--lisp/cedet/semantic/db-debug.el3
-rw-r--r--lisp/cedet/semantic/db-ebrowse.el4
-rw-r--r--lisp/cedet/semantic/db-el.el4
-rw-r--r--lisp/cedet/semantic/db-file.el4
-rw-r--r--lisp/cedet/semantic/db-find.el4
-rw-r--r--lisp/cedet/semantic/db-global.el4
-rw-r--r--lisp/cedet/semantic/db-javascript.el4
-rw-r--r--lisp/cedet/semantic/db-mode.el3
-rw-r--r--lisp/cedet/semantic/db-ref.el3
-rw-r--r--lisp/cedet/semantic/db-typecache.el3
-rw-r--r--lisp/cedet/semantic/db.el4
-rw-r--r--lisp/cedet/semantic/debug.el3
-rw-r--r--lisp/cedet/semantic/decorate.el3
-rw-r--r--lisp/cedet/semantic/decorate/include.el3
-rw-r--r--lisp/cedet/semantic/decorate/mode.el4
-rw-r--r--lisp/cedet/semantic/dep.el3
-rw-r--r--lisp/cedet/semantic/doc.el4
-rw-r--r--lisp/cedet/semantic/ede-grammar.el3
-rw-r--r--lisp/cedet/semantic/edit.el4
-rw-r--r--lisp/cedet/semantic/find.el4
-rw-r--r--lisp/cedet/semantic/format.el4
-rw-r--r--lisp/cedet/semantic/fw.el4
-rw-r--r--lisp/cedet/semantic/grammar-wy.el3
-rw-r--r--lisp/cedet/semantic/grammar.el3
-rw-r--r--lisp/cedet/semantic/html.el3
-rw-r--r--lisp/cedet/semantic/ia-sb.el4
-rw-r--r--lisp/cedet/semantic/ia.el4
-rw-r--r--lisp/cedet/semantic/idle.el4
-rw-r--r--lisp/cedet/semantic/imenu.el2
-rw-r--r--lisp/cedet/semantic/java.el4
-rw-r--r--lisp/cedet/semantic/lex-spp.el3
-rw-r--r--lisp/cedet/semantic/lex.el3
-rw-r--r--lisp/cedet/semantic/mru-bookmark.el3
-rw-r--r--lisp/cedet/semantic/sb.el4
-rw-r--r--lisp/cedet/semantic/scope.el3
-rw-r--r--lisp/cedet/semantic/senator.el4
-rw-r--r--lisp/cedet/semantic/sort.el4
-rw-r--r--lisp/cedet/semantic/symref.el2
-rw-r--r--lisp/cedet/semantic/symref/cscope.el2
-rw-r--r--lisp/cedet/semantic/symref/filter.el3
-rw-r--r--lisp/cedet/semantic/symref/global.el3
-rw-r--r--lisp/cedet/semantic/symref/grep.el3
-rw-r--r--lisp/cedet/semantic/symref/idutils.el3
-rw-r--r--lisp/cedet/semantic/symref/list.el5
-rw-r--r--lisp/cedet/semantic/tag-file.el3
-rw-r--r--lisp/cedet/semantic/tag-ls.el4
-rw-r--r--lisp/cedet/semantic/tag-write.el3
-rw-r--r--lisp/cedet/semantic/tag.el4
-rw-r--r--lisp/cedet/semantic/texi.el4
-rw-r--r--lisp/cedet/semantic/util-modes.el4
-rw-r--r--lisp/cedet/semantic/util.el4
-rw-r--r--lisp/cedet/semantic/wisent.el4
-rw-r--r--lisp/cedet/semantic/wisent/comp.el3
-rw-r--r--lisp/cedet/semantic/wisent/java-tags.el4
-rw-r--r--lisp/cedet/semantic/wisent/javascript.el3
-rw-r--r--lisp/cedet/semantic/wisent/javat-wy.el3
-rw-r--r--lisp/cedet/semantic/wisent/js-wy.el3
-rw-r--r--lisp/cedet/semantic/wisent/python-wy.el3
-rw-r--r--lisp/cedet/semantic/wisent/python.el3
-rw-r--r--lisp/cedet/semantic/wisent/wisent.el4
-rw-r--r--lisp/cedet/srecode.el3
-rw-r--r--lisp/cedet/srecode/args.el3
-rw-r--r--lisp/cedet/srecode/compile.el3
-rw-r--r--lisp/cedet/srecode/cpp.el3
-rw-r--r--lisp/cedet/srecode/ctxt.el3
-rw-r--r--lisp/cedet/srecode/dictionary.el3
-rw-r--r--lisp/cedet/srecode/document.el3
-rw-r--r--lisp/cedet/srecode/el.el3
-rw-r--r--lisp/cedet/srecode/expandproto.el3
-rw-r--r--lisp/cedet/srecode/extract.el3
-rw-r--r--lisp/cedet/srecode/fields.el3
-rw-r--r--lisp/cedet/srecode/filters.el3
-rw-r--r--lisp/cedet/srecode/find.el3
-rw-r--r--lisp/cedet/srecode/getset.el3
-rw-r--r--lisp/cedet/srecode/insert.el3
-rw-r--r--lisp/cedet/srecode/java.el3
-rw-r--r--lisp/cedet/srecode/map.el3
-rw-r--r--lisp/cedet/srecode/mode.el3
-rw-r--r--lisp/cedet/srecode/semantic.el3
-rw-r--r--lisp/cedet/srecode/srt-mode.el16
-rw-r--r--lisp/cedet/srecode/srt-wy.el3
-rw-r--r--lisp/cedet/srecode/srt.el3
-rw-r--r--lisp/cedet/srecode/table.el3
-rw-r--r--lisp/cedet/srecode/template.el3
-rw-r--r--lisp/cedet/srecode/texi.el3
-rw-r--r--lisp/chistory.el4
-rw-r--r--lisp/cmuscheme.el4
-rw-r--r--lisp/color.el (renamed from lisp/gnus/color.el)2
-rw-r--r--lisp/comint.el113
-rw-r--r--lisp/completion.el5
-rw-r--r--lisp/composite.el2
-rw-r--r--lisp/cus-dep.el4
-rw-r--r--lisp/cus-edit.el28
-rw-r--r--lisp/cus-face.el4
-rw-r--r--lisp/cus-start.el9
-rw-r--r--lisp/cus-theme.el6
-rw-r--r--lisp/custom.el115
-rw-r--r--lisp/dabbrev.el4
-rw-r--r--lisp/delim-col.el4
-rw-r--r--lisp/delsel.el4
-rw-r--r--lisp/descr-text.el4
-rw-r--r--lisp/desktop.el5
-rw-r--r--lisp/dframe.el4
-rw-r--r--lisp/dired-aux.el85
-rw-r--r--lisp/dired-x.el23
-rw-r--r--lisp/dired.el87
-rw-r--r--lisp/dirtrack.el3
-rw-r--r--lisp/disp-table.el5
-rw-r--r--lisp/dnd.el34
-rw-r--r--lisp/doc-view.el194
-rw-r--r--lisp/dos-fns.el5
-rw-r--r--lisp/dos-vars.el4
-rw-r--r--lisp/dos-w32.el4
-rw-r--r--lisp/double.el4
-rw-r--r--lisp/dynamic-setting.el3
-rw-r--r--lisp/ebuff-menu.el3
-rw-r--r--lisp/echistory.el4
-rw-r--r--lisp/edmacro.el4
-rw-r--r--lisp/ehelp.el4
-rw-r--r--lisp/electric.el10
-rw-r--r--lisp/elide-head.el4
-rw-r--r--lisp/emacs-lisp/.gitignore1
-rw-r--r--lisp/emacs-lisp/advice.el8
-rw-r--r--lisp/emacs-lisp/assoc.el4
-rw-r--r--lisp/emacs-lisp/authors.el3
-rw-r--r--lisp/emacs-lisp/autoload.el4
-rw-r--r--lisp/emacs-lisp/avl-tree.el3
-rw-r--r--lisp/emacs-lisp/backquote.el4
-rw-r--r--lisp/emacs-lisp/benchmark.el4
-rw-r--r--lisp/emacs-lisp/bindat.el3
-rw-r--r--lisp/emacs-lisp/byte-opt.el3
-rw-r--r--lisp/emacs-lisp/byte-run.el4
-rw-r--r--lisp/emacs-lisp/bytecomp.el9
-rw-r--r--lisp/emacs-lisp/chart.el77
-rw-r--r--lisp/emacs-lisp/check-declare.el3
-rw-r--r--lisp/emacs-lisp/checkdoc.el7
-rw-r--r--lisp/emacs-lisp/cl-extra.el4
-rw-r--r--lisp/emacs-lisp/cl-indent.el4
-rw-r--r--lisp/emacs-lisp/cl-loaddefs.el6
-rw-r--r--lisp/emacs-lisp/cl-macs.el3
-rw-r--r--lisp/emacs-lisp/cl-seq.el4
-rw-r--r--lisp/emacs-lisp/cl-specs.el4
-rw-r--r--lisp/emacs-lisp/cl.el4
-rw-r--r--lisp/emacs-lisp/copyright.el332
-rw-r--r--lisp/emacs-lisp/crm.el4
-rw-r--r--lisp/emacs-lisp/cust-print.el4
-rw-r--r--lisp/emacs-lisp/debug.el4
-rw-r--r--lisp/emacs-lisp/derived.el4
-rw-r--r--lisp/emacs-lisp/disass.el4
-rw-r--r--lisp/emacs-lisp/easy-mmode.el10
-rw-r--r--lisp/emacs-lisp/easymenu.el86
-rw-r--r--lisp/emacs-lisp/edebug.el6
-rw-r--r--lisp/emacs-lisp/eieio-base.el3
-rw-r--r--lisp/emacs-lisp/eieio-comp.el4
-rw-r--r--lisp/emacs-lisp/eieio-custom.el4
-rw-r--r--lisp/emacs-lisp/eieio-datadebug.el3
-rw-r--r--lisp/emacs-lisp/eieio-opt.el5
-rw-r--r--lisp/emacs-lisp/eieio-speedbar.el4
-rw-r--r--lisp/emacs-lisp/eieio.el4
-rw-r--r--lisp/emacs-lisp/eldoc.el4
-rw-r--r--lisp/emacs-lisp/elint.el3
-rw-r--r--lisp/emacs-lisp/elp.el5
-rw-r--r--lisp/emacs-lisp/ert-x.el290
-rw-r--r--lisp/emacs-lisp/ert.el2544
-rw-r--r--lisp/emacs-lisp/ewoc.el4
-rw-r--r--lisp/emacs-lisp/find-func.el4
-rw-r--r--lisp/emacs-lisp/find-gc.el4
-rw-r--r--lisp/emacs-lisp/float-sup.el3
-rw-r--r--lisp/emacs-lisp/generic.el4
-rw-r--r--lisp/emacs-lisp/gulp.el4
-rw-r--r--lisp/emacs-lisp/helper.el4
-rw-r--r--lisp/emacs-lisp/lisp-mnt.el4
-rw-r--r--lisp/emacs-lisp/lisp-mode.el3
-rw-r--r--lisp/emacs-lisp/lisp.el4
-rw-r--r--lisp/emacs-lisp/macroexp.el3
-rw-r--r--lisp/emacs-lisp/map-ynp.el4
-rw-r--r--lisp/emacs-lisp/package-x.el2
-rw-r--r--lisp/emacs-lisp/package.el20
-rw-r--r--lisp/emacs-lisp/pcase.el2
-rw-r--r--lisp/emacs-lisp/pp.el4
-rw-r--r--lisp/emacs-lisp/re-builder.el27
-rw-r--r--lisp/emacs-lisp/regexp-opt.el4
-rw-r--r--lisp/emacs-lisp/regi.el4
-rw-r--r--lisp/emacs-lisp/ring.el4
-rw-r--r--lisp/emacs-lisp/rx.el67
-rw-r--r--lisp/emacs-lisp/shadow.el3
-rw-r--r--lisp/emacs-lisp/smie.el2
-rw-r--r--lisp/emacs-lisp/syntax.el4
-rw-r--r--lisp/emacs-lisp/tcover-ses.el4
-rw-r--r--lisp/emacs-lisp/tcover-unsafep.el3
-rw-r--r--lisp/emacs-lisp/testcover.el3
-rw-r--r--lisp/emacs-lisp/timer.el3
-rw-r--r--lisp/emacs-lisp/tq.el4
-rw-r--r--lisp/emacs-lisp/trace.el4
-rw-r--r--lisp/emacs-lisp/unsafep.el6
-rw-r--r--lisp/emacs-lisp/warnings.el3
-rw-r--r--lisp/emacs-lock.el4
-rw-r--r--lisp/emulation/crisp.el4
-rw-r--r--lisp/emulation/cua-base.el5
-rw-r--r--lisp/emulation/cua-gmrk.el4
-rw-r--r--lisp/emulation/cua-rect.el4
-rw-r--r--lisp/emulation/edt-lk201.el5
-rw-r--r--lisp/emulation/edt-mapper.el46
-rw-r--r--lisp/emulation/edt-pc.el4
-rw-r--r--lisp/emulation/edt-vt100.el5
-rw-r--r--lisp/emulation/edt.el4
-rw-r--r--lisp/emulation/keypad.el4
-rw-r--r--lisp/emulation/pc-mode.el4
-rw-r--r--lisp/emulation/pc-select.el4
-rw-r--r--lisp/emulation/tpu-edt.el6
-rw-r--r--lisp/emulation/tpu-extras.el3
-rw-r--r--lisp/emulation/tpu-mapper.el4
-rw-r--r--lisp/emulation/vi.el1
-rw-r--r--lisp/emulation/vip.el5
-rw-r--r--lisp/emulation/viper-cmd.el3
-rw-r--r--lisp/emulation/viper-ex.el4
-rw-r--r--lisp/emulation/viper-init.el3
-rw-r--r--lisp/emulation/viper-keym.el4
-rw-r--r--lisp/emulation/viper-macs.el4
-rw-r--r--lisp/emulation/viper-mous.el4
-rw-r--r--lisp/emulation/viper-util.el5
-rw-r--r--lisp/emulation/viper.el4
-rw-r--r--lisp/emulation/ws-mode.el4
-rw-r--r--lisp/env.el4
-rw-r--r--lisp/epa-dired.el3
-rw-r--r--lisp/epa-file.el23
-rw-r--r--lisp/epa-hook.el3
-rw-r--r--lisp/epa-mail.el3
-rw-r--r--lisp/epa.el3
-rw-r--r--lisp/epg-config.el3
-rw-r--r--lisp/epg.el8
-rw-r--r--lisp/erc/ChangeLog20
-rw-r--r--lisp/erc/ChangeLog.013
-rw-r--r--lisp/erc/ChangeLog.023
-rw-r--r--lisp/erc/ChangeLog.033
-rw-r--r--lisp/erc/ChangeLog.043
-rw-r--r--lisp/erc/ChangeLog.053
-rw-r--r--lisp/erc/ChangeLog.063
-rw-r--r--lisp/erc/ChangeLog.073
-rw-r--r--lisp/erc/ChangeLog.083
-rw-r--r--lisp/erc/erc-autoaway.el4
-rw-r--r--lisp/erc/erc-backend.el3
-rw-r--r--lisp/erc/erc-button.el4
-rw-r--r--lisp/erc/erc-capab.el3
-rw-r--r--lisp/erc/erc-compat.el4
-rw-r--r--lisp/erc/erc-dcc.el15
-rw-r--r--lisp/erc/erc-ezbounce.el3
-rw-r--r--lisp/erc/erc-fill.el4
-rw-r--r--lisp/erc/erc-goodies.el4
-rw-r--r--lisp/erc/erc-hecomplete.el3
-rw-r--r--lisp/erc/erc-ibuffer.el4
-rw-r--r--lisp/erc/erc-identd.el3
-rw-r--r--lisp/erc/erc-imenu.el3
-rw-r--r--lisp/erc/erc-join.el3
-rw-r--r--lisp/erc/erc-lang.el3
-rw-r--r--lisp/erc/erc-list.el3
-rw-r--r--lisp/erc/erc-log.el3
-rw-r--r--lisp/erc/erc-match.el4
-rw-r--r--lisp/erc/erc-menu.el4
-rw-r--r--lisp/erc/erc-netsplit.el3
-rw-r--r--lisp/erc/erc-networks.el3
-rw-r--r--lisp/erc/erc-notify.el3
-rw-r--r--lisp/erc/erc-page.el3
-rw-r--r--lisp/erc/erc-pcomplete.el3
-rw-r--r--lisp/erc/erc-replace.el4
-rw-r--r--lisp/erc/erc-ring.el4
-rw-r--r--lisp/erc/erc-services.el3
-rw-r--r--lisp/erc/erc-sound.el3
-rw-r--r--lisp/erc/erc-speedbar.el4
-rw-r--r--lisp/erc/erc-spelling.el3
-rw-r--r--lisp/erc/erc-stamp.el4
-rw-r--r--lisp/erc/erc-track.el4
-rw-r--r--lisp/erc/erc-truncate.el3
-rw-r--r--lisp/erc/erc-xdcc.el3
-rw-r--r--lisp/erc/erc.el24
-rw-r--r--lisp/eshell/.gitignore1
-rw-r--r--lisp/eshell/em-alias.el4
-rw-r--r--lisp/eshell/em-banner.el4
-rw-r--r--lisp/eshell/em-basic.el4
-rw-r--r--lisp/eshell/em-cmpl.el4
-rw-r--r--lisp/eshell/em-dirs.el4
-rw-r--r--lisp/eshell/em-glob.el3
-rw-r--r--lisp/eshell/em-hist.el8
-rw-r--r--lisp/eshell/em-ls.el3
-rw-r--r--lisp/eshell/em-pred.el3
-rw-r--r--lisp/eshell/em-prompt.el4
-rw-r--r--lisp/eshell/em-rebind.el5
-rw-r--r--lisp/eshell/em-script.el4
-rw-r--r--lisp/eshell/em-smart.el4
-rw-r--r--lisp/eshell/em-term.el4
-rw-r--r--lisp/eshell/em-unix.el3
-rw-r--r--lisp/eshell/em-xtra.el4
-rw-r--r--lisp/eshell/esh-arg.el4
-rw-r--r--lisp/eshell/esh-cmd.el4
-rw-r--r--lisp/eshell/esh-ext.el4
-rw-r--r--lisp/eshell/esh-io.el4
-rw-r--r--lisp/eshell/esh-mode.el4
-rw-r--r--lisp/eshell/esh-module.el4
-rw-r--r--lisp/eshell/esh-opt.el3
-rw-r--r--lisp/eshell/esh-proc.el4
-rw-r--r--lisp/eshell/esh-test.el3
-rw-r--r--lisp/eshell/esh-util.el3
-rw-r--r--lisp/eshell/esh-var.el4
-rw-r--r--lisp/eshell/eshell.el7
-rw-r--r--lisp/expand.el4
-rw-r--r--lisp/ezimage.el4
-rw-r--r--lisp/face-remap.el3
-rw-r--r--lisp/facemenu.el4
-rw-r--r--lisp/faces.el4
-rw-r--r--lisp/ffap.el4
-rw-r--r--lisp/filecache.el3
-rw-r--r--lisp/files-x.el3
-rw-r--r--lisp/files.el258
-rw-r--r--lisp/filesets.el4
-rw-r--r--lisp/find-cmd.el3
-rw-r--r--lisp/find-dired.el4
-rw-r--r--lisp/find-file.el4
-rw-r--r--lisp/find-lisp.el4
-rw-r--r--lisp/finder.el4
-rw-r--r--lisp/flow-ctrl.el4
-rw-r--r--lisp/foldout.el4
-rw-r--r--lisp/follow.el4
-rw-r--r--lisp/font-core.el4
-rw-r--r--lisp/font-lock.el9
-rw-r--r--lisp/format-spec.el3
-rw-r--r--lisp/format.el8
-rw-r--r--lisp/forms-d2.el4
-rw-r--r--lisp/forms-pass.el1
-rw-r--r--lisp/forms.el4
-rw-r--r--lisp/frame.el5
-rw-r--r--lisp/fringe.el4
-rw-r--r--lisp/generic-x.el4
-rw-r--r--lisp/gnus/ChangeLog622
-rw-r--r--lisp/gnus/ChangeLog.15
-rw-r--r--lisp/gnus/ChangeLog.25
-rw-r--r--lisp/gnus/auth-source.el36
-rw-r--r--lisp/gnus/canlock.el3
-rw-r--r--lisp/gnus/compface.el2
-rw-r--r--lisp/gnus/deuglify.el3
-rw-r--r--lisp/gnus/ecomplete.el3
-rw-r--r--lisp/gnus/flow-fill.el48
-rw-r--r--lisp/gnus/gmm-utils.el3
-rw-r--r--lisp/gnus/gnus-agent.el18
-rw-r--r--lisp/gnus/gnus-art.el590
-rw-r--r--lisp/gnus/gnus-async.el3
-rw-r--r--lisp/gnus/gnus-bcklg.el3
-rw-r--r--lisp/gnus/gnus-bookmark.el3
-rw-r--r--lisp/gnus/gnus-cache.el3
-rw-r--r--lisp/gnus/gnus-cite.el3
-rw-r--r--lisp/gnus/gnus-cus.el3
-rw-r--r--lisp/gnus/gnus-delay.el3
-rw-r--r--lisp/gnus/gnus-demon.el3
-rw-r--r--lisp/gnus/gnus-diary.el3
-rw-r--r--lisp/gnus/gnus-dired.el3
-rw-r--r--lisp/gnus/gnus-draft.el15
-rw-r--r--lisp/gnus/gnus-dup.el3
-rw-r--r--lisp/gnus/gnus-eform.el3
-rw-r--r--lisp/gnus/gnus-ems.el3
-rw-r--r--lisp/gnus/gnus-fun.el2
-rw-r--r--lisp/gnus/gnus-gravatar.el74
-rw-r--r--lisp/gnus/gnus-group.el28
-rw-r--r--lisp/gnus/gnus-html.el4
-rw-r--r--lisp/gnus/gnus-int.el22
-rw-r--r--lisp/gnus/gnus-kill.el3
-rw-r--r--lisp/gnus/gnus-logic.el3
-rw-r--r--lisp/gnus/gnus-mh.el3
-rw-r--r--lisp/gnus/gnus-ml.el3
-rw-r--r--lisp/gnus/gnus-mlspl.el3
-rw-r--r--lisp/gnus/gnus-msg.el11
-rw-r--r--lisp/gnus/gnus-picon.el3
-rw-r--r--lisp/gnus/gnus-range.el3
-rw-r--r--lisp/gnus/gnus-registry.el3
-rw-r--r--lisp/gnus/gnus-salt.el3
-rw-r--r--lisp/gnus/gnus-score.el3
-rw-r--r--lisp/gnus/gnus-setup.el3
-rw-r--r--lisp/gnus/gnus-sieve.el2
-rw-r--r--lisp/gnus/gnus-spec.el3
-rw-r--r--lisp/gnus/gnus-srvr.el9
-rw-r--r--lisp/gnus/gnus-start.el66
-rw-r--r--lisp/gnus/gnus-sum.el64
-rw-r--r--lisp/gnus/gnus-sync.el2
-rw-r--r--lisp/gnus/gnus-topic.el3
-rw-r--r--lisp/gnus/gnus-undo.el3
-rw-r--r--lisp/gnus/gnus-util.el10
-rw-r--r--lisp/gnus/gnus-uu.el4
-rw-r--r--lisp/gnus/gnus-vm.el3
-rw-r--r--lisp/gnus/gnus-win.el19
-rw-r--r--lisp/gnus/gnus.el5
-rw-r--r--lisp/gnus/gravatar.el42
-rw-r--r--lisp/gnus/html2text.el2
-rw-r--r--lisp/gnus/ietf-drums.el3
-rw-r--r--lisp/gnus/legacy-gnus-agent.el2
-rw-r--r--lisp/gnus/mail-parse.el3
-rw-r--r--lisp/gnus/mail-prsvr.el3
-rw-r--r--lisp/gnus/mail-source.el3
-rw-r--r--lisp/gnus/mailcap.el6
-rw-r--r--lisp/gnus/message.el79
-rw-r--r--lisp/gnus/messcompat.el3
-rw-r--r--lisp/gnus/mm-bodies.el3
-rw-r--r--lisp/gnus/mm-decode.el31
-rw-r--r--lisp/gnus/mm-encode.el3
-rw-r--r--lisp/gnus/mm-extern.el3
-rw-r--r--lisp/gnus/mm-partial.el3
-rw-r--r--lisp/gnus/mm-url.el3
-rw-r--r--lisp/gnus/mm-util.el5
-rw-r--r--lisp/gnus/mm-uu.el17
-rw-r--r--lisp/gnus/mm-view.el44
-rw-r--r--lisp/gnus/mml-sec.el3
-rw-r--r--lisp/gnus/mml-smime.el10
-rw-r--r--lisp/gnus/mml.el3
-rw-r--r--lisp/gnus/mml1991.el6
-rw-r--r--lisp/gnus/mml2015.el82
-rw-r--r--lisp/gnus/nnagent.el3
-rw-r--r--lisp/gnus/nnbabyl.el4
-rw-r--r--lisp/gnus/nndiary.el3
-rw-r--r--lisp/gnus/nndir.el3
-rw-r--r--lisp/gnus/nndoc.el3
-rw-r--r--lisp/gnus/nndraft.el3
-rw-r--r--lisp/gnus/nneething.el3
-rw-r--r--lisp/gnus/nnfolder.el32
-rw-r--r--lisp/gnus/nngateway.el3
-rw-r--r--lisp/gnus/nnheader.el5
-rw-r--r--lisp/gnus/nnimap.el125
-rw-r--r--lisp/gnus/nnir.el61
-rw-r--r--lisp/gnus/nnmail.el7
-rw-r--r--lisp/gnus/nnmairix.el2
-rw-r--r--lisp/gnus/nnmbox.el3
-rw-r--r--lisp/gnus/nnmh.el3
-rw-r--r--lisp/gnus/nnml.el10
-rw-r--r--lisp/gnus/nnoo.el3
-rw-r--r--lisp/gnus/nnregistry.el2
-rw-r--r--lisp/gnus/nnrss.el3
-rw-r--r--lisp/gnus/nnspool.el3
-rw-r--r--lisp/gnus/nntp.el61
-rw-r--r--lisp/gnus/nnvirtual.el3
-rw-r--r--lisp/gnus/nnweb.el3
-rw-r--r--lisp/gnus/pop3.el3
-rw-r--r--lisp/gnus/proto-stream.el50
-rw-r--r--lisp/gnus/qp.el3
-rw-r--r--lisp/gnus/rfc1843.el3
-rw-r--r--lisp/gnus/rfc2045.el3
-rw-r--r--lisp/gnus/rfc2047.el3
-rw-r--r--lisp/gnus/rfc2104.el3
-rw-r--r--lisp/gnus/rfc2231.el3
-rw-r--r--lisp/gnus/rtree.el2
-rw-r--r--lisp/gnus/score-mode.el3
-rw-r--r--lisp/gnus/shr-color.el2
-rw-r--r--lisp/gnus/shr.el98
-rw-r--r--lisp/gnus/sieve-manage.el8
-rw-r--r--lisp/gnus/sieve-mode.el3
-rw-r--r--lisp/gnus/sieve.el9
-rw-r--r--lisp/gnus/smiley.el3
-rw-r--r--lisp/gnus/smime.el3
-rw-r--r--lisp/gnus/spam-report.el3
-rw-r--r--lisp/gnus/spam-stat.el3
-rw-r--r--lisp/gnus/spam-wash.el2
-rw-r--r--lisp/gnus/spam.el2102
-rw-r--r--lisp/gnus/starttls.el3
-rw-r--r--lisp/gnus/utf7.el3
-rw-r--r--lisp/gnus/yenc.el2
-rw-r--r--lisp/gs.el4
-rw-r--r--lisp/help-at-pt.el3
-rw-r--r--lisp/help-fns.el29
-rw-r--r--lisp/help-macro.el4
-rw-r--r--lisp/help-mode.el14
-rw-r--r--lisp/help.el3
-rw-r--r--lisp/hex-util.el3
-rw-r--r--lisp/hexl.el242
-rw-r--r--lisp/hfy-cmap.el3
-rw-r--r--lisp/hi-lock.el4
-rw-r--r--lisp/hilit-chg.el3
-rw-r--r--lisp/hippie-exp.el3
-rw-r--r--lisp/hl-line.el4
-rw-r--r--lisp/htmlfontify.el299
-rw-r--r--lisp/ibuf-ext.el3
-rw-r--r--lisp/ibuf-macs.el4
-rw-r--r--lisp/ibuffer.el6
-rw-r--r--lisp/icomplete.el5
-rw-r--r--lisp/ido.el30
-rw-r--r--lisp/ielm.el4
-rw-r--r--lisp/iimage.el3
-rw-r--r--lisp/image-dired.el11
-rw-r--r--lisp/image-file.el4
-rw-r--r--lisp/image-mode.el20
-rw-r--r--lisp/image.el4
-rw-r--r--lisp/imenu.el4
-rw-r--r--lisp/indent.el4
-rw-r--r--lisp/info-look.el4
-rw-r--r--lisp/info-xref.el635
-rw-r--r--lisp/info.el18
-rw-r--r--lisp/informat.el4
-rw-r--r--lisp/international/ccl.el6
-rw-r--r--lisp/international/characters.el6
-rw-r--r--lisp/international/cp51932.el1
-rw-r--r--lisp/international/eucjp-ms.el1
-rw-r--r--lisp/international/fontset.el6
-rw-r--r--lisp/international/isearch-x.el6
-rw-r--r--lisp/international/iso-ascii.el4
-rw-r--r--lisp/international/iso-cvt.el4
-rw-r--r--lisp/international/iso-transl.el4
-rw-r--r--lisp/international/ja-dic-cnv.el3
-rw-r--r--lisp/international/ja-dic-utl.el3
-rw-r--r--lisp/international/kinsoku.el6
-rw-r--r--lisp/international/kkc.el6
-rw-r--r--lisp/international/latexenc.el3
-rw-r--r--lisp/international/latin1-disp.el4
-rw-r--r--lisp/international/mule-cmds.el6
-rw-r--r--lisp/international/mule-conf.el6
-rw-r--r--lisp/international/mule-diag.el6
-rw-r--r--lisp/international/mule-util.el6
-rw-r--r--lisp/international/mule.el9
-rw-r--r--lisp/international/ogonek.el4
-rw-r--r--lisp/international/quail.el6
-rw-r--r--lisp/international/robin.el3
-rw-r--r--lisp/international/titdic-cnv.el6
-rw-r--r--lisp/international/ucs-normalize.el4
-rw-r--r--lisp/international/utf-7.el4
-rw-r--r--lisp/isearch.el18
-rw-r--r--lisp/isearchb.el4
-rw-r--r--lisp/iswitchb.el4
-rw-r--r--lisp/jit-lock.el4
-rw-r--r--lisp/jka-cmpr-hook.el5
-rw-r--r--lisp/jka-compr.el9
-rw-r--r--lisp/json.el3
-rw-r--r--lisp/kermit.el4
-rw-r--r--lisp/kmacro.el4
-rw-r--r--lisp/language/burmese.el3
-rw-r--r--lisp/language/cham.el3
-rw-r--r--lisp/language/china-util.el6
-rw-r--r--lisp/language/chinese.el6
-rw-r--r--lisp/language/cyril-util.el4
-rw-r--r--lisp/language/cyrillic.el6
-rw-r--r--lisp/language/czech.el4
-rw-r--r--lisp/language/english.el6
-rw-r--r--lisp/language/ethio-util.el6
-rw-r--r--lisp/language/ethiopic.el6
-rw-r--r--lisp/language/european.el6
-rw-r--r--lisp/language/georgian.el4
-rw-r--r--lisp/language/greek.el3
-rw-r--r--lisp/language/hanja-util.el3
-rw-r--r--lisp/language/hebrew.el6
-rw-r--r--lisp/language/ind-util.el4
-rw-r--r--lisp/language/indian.el6
-rw-r--r--lisp/language/japan-util.el6
-rw-r--r--lisp/language/japanese.el6
-rw-r--r--lisp/language/khmer.el3
-rw-r--r--lisp/language/korea-util.el6
-rw-r--r--lisp/language/korean.el6
-rw-r--r--lisp/language/lao-util.el6
-rw-r--r--lisp/language/lao.el6
-rw-r--r--lisp/language/misc-lang.el3
-rw-r--r--lisp/language/romanian.el4
-rw-r--r--lisp/language/sinhala.el3
-rw-r--r--lisp/language/slovak.el4
-rw-r--r--lisp/language/tai-viet.el6
-rw-r--r--lisp/language/thai-util.el6
-rw-r--r--lisp/language/thai-word.el3
-rw-r--r--lisp/language/thai.el6
-rw-r--r--lisp/language/tibet-util.el6
-rw-r--r--lisp/language/tibetan.el6
-rw-r--r--lisp/language/tv-util.el3
-rw-r--r--lisp/language/utf-8-lang.el4
-rw-r--r--lisp/language/viet-util.el6
-rw-r--r--lisp/language/vietnamese.el6
-rw-r--r--lisp/ldefs-boot.el445
-rw-r--r--lisp/ledit.el4
-rw-r--r--lisp/linum.el3
-rw-r--r--lisp/loadhist.el4
-rw-r--r--lisp/loadup.el44
-rw-r--r--lisp/locate.el3
-rw-r--r--lisp/longlines.el3
-rw-r--r--lisp/lpr.el5
-rw-r--r--lisp/ls-lisp.el3
-rw-r--r--lisp/macros.el5
-rw-r--r--lisp/mail/binhex.el10
-rw-r--r--lisp/mail/blessmail.el4
-rw-r--r--lisp/mail/emacsbug.el31
-rw-r--r--lisp/mail/feedmail.el1
-rw-r--r--lisp/mail/footnote.el4
-rw-r--r--lisp/mail/hashcash.el3
-rw-r--r--lisp/mail/mail-extr.el4
-rw-r--r--lisp/mail/mail-hist.el4
-rw-r--r--lisp/mail/mail-utils.el114
-rw-r--r--lisp/mail/mailabbrev.el4
-rw-r--r--lisp/mail/mailalias.el10
-rw-r--r--lisp/mail/mailclient.el3
-rw-r--r--lisp/mail/mailheader.el3
-rw-r--r--lisp/mail/mailpost.el1
-rw-r--r--lisp/mail/metamail.el4
-rw-r--r--lisp/mail/mspools.el3
-rw-r--r--lisp/mail/reporter.el4
-rw-r--r--lisp/mail/rfc2368.el3
-rw-r--r--lisp/mail/rfc822.el4
-rw-r--r--lisp/mail/rmail-spam-filter.el4
-rw-r--r--lisp/mail/rmail.el224
-rw-r--r--lisp/mail/rmailedit.el4
-rw-r--r--lisp/mail/rmailkwd.el4
-rw-r--r--lisp/mail/rmailmm.el1085
-rw-r--r--lisp/mail/rmailmsc.el4
-rw-r--r--lisp/mail/rmailout.el5
-rw-r--r--lisp/mail/rmailsort.el4
-rw-r--r--lisp/mail/rmailsum.el4
-rw-r--r--lisp/mail/sendmail.el197
-rw-r--r--lisp/mail/smtpmail.el13
-rw-r--r--lisp/mail/supercite.el4
-rw-r--r--lisp/mail/uce.el4
-rw-r--r--lisp/mail/undigest.el5
-rw-r--r--lisp/mail/unrmail.el4
-rw-r--r--lisp/mail/uudecode.el3
-rw-r--r--lisp/makefile.w32-in5
-rw-r--r--lisp/makesum.el3
-rw-r--r--lisp/man.el9
-rw-r--r--lisp/master.el4
-rw-r--r--lisp/mb-depth.el3
-rw-r--r--lisp/md4.el2
-rw-r--r--lisp/menu-bar.el38
-rw-r--r--lisp/mh-e/ChangeLog7
-rw-r--r--lisp/mh-e/ChangeLog.14
-rw-r--r--lisp/mh-e/mh-acros.el4
-rw-r--r--lisp/mh-e/mh-alias.el5
-rw-r--r--lisp/mh-e/mh-buffers.el5
-rw-r--r--lisp/mh-e/mh-comp.el12
-rw-r--r--lisp/mh-e/mh-compat.el4
-rw-r--r--lisp/mh-e/mh-e.el5
-rw-r--r--lisp/mh-e/mh-folder.el4
-rw-r--r--lisp/mh-e/mh-funcs.el5
-rw-r--r--lisp/mh-e/mh-gnus.el4
-rw-r--r--lisp/mh-e/mh-identity.el4
-rw-r--r--lisp/mh-e/mh-inc.el4
-rw-r--r--lisp/mh-e/mh-junk.el4
-rw-r--r--lisp/mh-e/mh-letter.el5
-rw-r--r--lisp/mh-e/mh-limit.el4
-rw-r--r--lisp/mh-e/mh-mime.el3
-rw-r--r--lisp/mh-e/mh-print.el4
-rw-r--r--lisp/mh-e/mh-scan.el5
-rw-r--r--lisp/mh-e/mh-search.el5
-rw-r--r--lisp/mh-e/mh-seq.el3
-rw-r--r--lisp/mh-e/mh-show.el5
-rw-r--r--lisp/mh-e/mh-speed.el4
-rw-r--r--lisp/mh-e/mh-thread.el4
-rw-r--r--lisp/mh-e/mh-tool-bar.el4
-rw-r--r--lisp/mh-e/mh-utils.el5
-rw-r--r--lisp/mh-e/mh-xface.el4
-rw-r--r--lisp/midnight.el6
-rw-r--r--lisp/minibuf-eldef.el4
-rw-r--r--lisp/minibuffer.el3
-rw-r--r--lisp/misc.el3
-rw-r--r--lisp/misearch.el3
-rw-r--r--lisp/mouse-copy.el4
-rw-r--r--lisp/mouse-drag.el3
-rw-r--r--lisp/mouse-sel.el3
-rw-r--r--lisp/mouse.el17
-rw-r--r--lisp/mpc.el3
-rw-r--r--lisp/msb.el9
-rw-r--r--lisp/mwheel.el4
-rw-r--r--lisp/net/ange-ftp.el4
-rw-r--r--lisp/net/browse-url.el4
-rw-r--r--lisp/net/dbus.el74
-rw-r--r--lisp/net/dig.el3
-rw-r--r--lisp/net/dns.el3
-rw-r--r--lisp/net/eudc-bob.el4
-rw-r--r--lisp/net/eudc-export.el4
-rw-r--r--lisp/net/eudc-hotlist.el4
-rw-r--r--lisp/net/eudc-vars.el4
-rw-r--r--lisp/net/eudc.el3
-rw-r--r--lisp/net/eudcb-bbdb.el4
-rw-r--r--lisp/net/eudcb-ldap.el4
-rw-r--r--lisp/net/eudcb-mab.el4
-rw-r--r--lisp/net/eudcb-ph.el4
-rw-r--r--lisp/net/gnutls.el4
-rw-r--r--lisp/net/goto-addr.el4
-rw-r--r--lisp/net/hmac-def.el2
-rw-r--r--lisp/net/hmac-md5.el2
-rw-r--r--lisp/net/imap-hash.el3
-rw-r--r--lisp/net/imap.el3
-rw-r--r--lisp/net/ldap.el14
-rw-r--r--lisp/net/mairix.el3
-rw-r--r--lisp/net/net-utils.el3
-rw-r--r--lisp/net/netrc.el29
-rw-r--r--lisp/net/newst-backend.el4
-rw-r--r--lisp/net/newst-plainview.el4
-rw-r--r--lisp/net/newst-reader.el4
-rw-r--r--lisp/net/newst-ticker.el4
-rw-r--r--lisp/net/newst-treeview.el3
-rw-r--r--lisp/net/newsticker.el4
-rw-r--r--lisp/net/ntlm.el2
-rw-r--r--lisp/net/quickurl.el3
-rw-r--r--lisp/net/rcirc.el26
-rw-r--r--lisp/net/rcompile.el4
-rw-r--r--lisp/net/rlogin.el4
-rw-r--r--lisp/net/sasl-cram.el2
-rw-r--r--lisp/net/sasl-digest.el2
-rw-r--r--lisp/net/sasl-ntlm.el2
-rw-r--r--lisp/net/sasl.el2
-rw-r--r--lisp/net/secrets.el16
-rw-r--r--lisp/net/snmp-mode.el4
-rw-r--r--lisp/net/socks.el4
-rw-r--r--lisp/net/telnet.el5
-rw-r--r--lisp/net/tls.el3
-rw-r--r--lisp/net/tramp-cache.el6
-rw-r--r--lisp/net/tramp-cmds.el2
-rw-r--r--lisp/net/tramp-compat.el2
-rw-r--r--lisp/net/tramp-ftp.el15
-rw-r--r--lisp/net/tramp-gvfs.el3
-rw-r--r--lisp/net/tramp-gw.el3
-rw-r--r--lisp/net/tramp-imap.el3
-rw-r--r--lisp/net/tramp-sh.el184
-rw-r--r--lisp/net/tramp-smb.el5
-rw-r--r--lisp/net/tramp-uu.el4
-rw-r--r--lisp/net/tramp.el88
-rw-r--r--lisp/net/trampver.el3
-rw-r--r--lisp/net/webjump.el4
-rw-r--r--lisp/net/xesam.el3
-rw-r--r--lisp/net/zeroconf.el3
-rw-r--r--lisp/newcomment.el15
-rw-r--r--lisp/notifications.el2
-rw-r--r--lisp/novice.el3
-rw-r--r--lisp/nxml/nxml-enc.el3
-rw-r--r--lisp/nxml/nxml-glyph.el3
-rw-r--r--lisp/nxml/nxml-maint.el3
-rw-r--r--lisp/nxml/nxml-mode.el3
-rw-r--r--lisp/nxml/nxml-ns.el3
-rw-r--r--lisp/nxml/nxml-outln.el3
-rw-r--r--lisp/nxml/nxml-parse.el3
-rw-r--r--lisp/nxml/nxml-rap.el3
-rw-r--r--lisp/nxml/nxml-uchnm.el3
-rw-r--r--lisp/nxml/nxml-util.el3
-rw-r--r--lisp/nxml/rng-cmpct.el3
-rw-r--r--lisp/nxml/rng-dt.el3
-rw-r--r--lisp/nxml/rng-loc.el3
-rw-r--r--lisp/nxml/rng-maint.el3
-rw-r--r--lisp/nxml/rng-match.el3
-rw-r--r--lisp/nxml/rng-nxml.el3
-rw-r--r--lisp/nxml/rng-parse.el3
-rw-r--r--lisp/nxml/rng-pttrn.el3
-rw-r--r--lisp/nxml/rng-uri.el3
-rw-r--r--lisp/nxml/rng-util.el3
-rw-r--r--lisp/nxml/rng-valid.el3
-rw-r--r--lisp/nxml/rng-xsd.el3
-rw-r--r--lisp/nxml/xmltok.el3
-rw-r--r--lisp/nxml/xsd-regexp.el3
-rw-r--r--lisp/obsolete/awk-mode.el4
-rw-r--r--lisp/obsolete/cl-compat.el3
-rw-r--r--lisp/obsolete/complete.el4
-rw-r--r--lisp/obsolete/fast-lock.el4
-rw-r--r--lisp/obsolete/iso-acc.el4
-rw-r--r--lisp/obsolete/iso-insert.el4
-rw-r--r--lisp/obsolete/iso-swed.el4
-rw-r--r--lisp/obsolete/keyswap.el4
-rw-r--r--lisp/obsolete/lazy-lock.el3
-rw-r--r--lisp/obsolete/levents.el4
-rw-r--r--lisp/obsolete/lmenu.el3
-rw-r--r--lisp/obsolete/lucid.el3
-rw-r--r--lisp/obsolete/old-whitespace.el4
-rw-r--r--lisp/obsolete/options.el4
-rw-r--r--lisp/obsolete/pgg-def.el (renamed from lisp/pgg-def.el)4
-rw-r--r--lisp/obsolete/pgg-gpg.el (renamed from lisp/pgg-gpg.el)4
-rw-r--r--lisp/obsolete/pgg-parse.el (renamed from lisp/pgg-parse.el)4
-rw-r--r--lisp/obsolete/pgg-pgp.el (renamed from lisp/pgg-pgp.el)4
-rw-r--r--lisp/obsolete/pgg-pgp5.el (renamed from lisp/pgg-pgp5.el)4
-rw-r--r--lisp/obsolete/pgg.el (renamed from lisp/pgg.el)9
-rw-r--r--lisp/obsolete/resume.el4
-rw-r--r--lisp/obsolete/s-region.el4
-rw-r--r--lisp/obsolete/scribe.el4
-rw-r--r--lisp/obsolete/spell.el (renamed from lisp/textmodes/spell.el)36
-rw-r--r--lisp/obsolete/sregex.el (renamed from lisp/emacs-lisp/sregex.el)5
-rw-r--r--lisp/obsolete/swedish.el4
-rw-r--r--lisp/obsolete/sym-comp.el3
-rw-r--r--lisp/obsolete/vc-mcvs.el4
-rw-r--r--lisp/org/ChangeLog1329
-rw-r--r--lisp/org/ob-C.el3
-rw-r--r--lisp/org/ob-R.el3
-rw-r--r--lisp/org/ob-asymptote.el3
-rw-r--r--lisp/org/ob-calc.el3
-rw-r--r--lisp/org/ob-clojure.el3
-rw-r--r--lisp/org/ob-comint.el3
-rw-r--r--lisp/org/ob-css.el3
-rw-r--r--lisp/org/ob-ditaa.el3
-rw-r--r--lisp/org/ob-dot.el3
-rw-r--r--lisp/org/ob-emacs-lisp.el3
-rw-r--r--lisp/org/ob-eval.el3
-rw-r--r--lisp/org/ob-exp.el3
-rw-r--r--lisp/org/ob-gnuplot.el3
-rw-r--r--lisp/org/ob-haskell.el3
-rw-r--r--lisp/org/ob-js.el3
-rw-r--r--lisp/org/ob-keys.el3
-rw-r--r--lisp/org/ob-latex.el3
-rw-r--r--lisp/org/ob-ledger.el3
-rw-r--r--lisp/org/ob-lisp.el3
-rw-r--r--lisp/org/ob-lob.el3
-rw-r--r--lisp/org/ob-matlab.el3
-rw-r--r--lisp/org/ob-mscgen.el3
-rw-r--r--lisp/org/ob-ocaml.el3
-rw-r--r--lisp/org/ob-octave.el3
-rw-r--r--lisp/org/ob-org.el3
-rw-r--r--lisp/org/ob-perl.el3
-rw-r--r--lisp/org/ob-plantuml.el3
-rw-r--r--lisp/org/ob-python.el3
-rw-r--r--lisp/org/ob-ref.el3
-rw-r--r--lisp/org/ob-ruby.el3
-rw-r--r--lisp/org/ob-sass.el3
-rw-r--r--lisp/org/ob-scheme.el3
-rw-r--r--lisp/org/ob-screen.el3
-rw-r--r--lisp/org/ob-sh.el3
-rw-r--r--lisp/org/ob-sql.el3
-rw-r--r--lisp/org/ob-sqlite.el3
-rw-r--r--lisp/org/ob-table.el3
-rw-r--r--lisp/org/ob-tangle.el3
-rw-r--r--lisp/org/ob.el3
-rw-r--r--lisp/org/org-agenda.el4
-rw-r--r--lisp/org/org-archive.el4
-rw-r--r--lisp/org/org-ascii.el4
-rw-r--r--lisp/org/org-attach.el3
-rw-r--r--lisp/org/org-bbdb.el4
-rw-r--r--lisp/org/org-beamer.el3
-rw-r--r--lisp/org/org-bibtex.el3
-rw-r--r--lisp/org/org-capture.el6
-rw-r--r--lisp/org/org-clock.el4
-rw-r--r--lisp/org/org-colview.el4
-rw-r--r--lisp/org/org-compat.el4
-rw-r--r--lisp/org/org-complete.el4
-rw-r--r--lisp/org/org-crypt.el3
-rw-r--r--lisp/org/org-ctags.el3
-rw-r--r--lisp/org/org-datetree.el3
-rw-r--r--lisp/org/org-docbook.el3
-rw-r--r--lisp/org/org-docview.el3
-rw-r--r--lisp/org/org-entities.el3
-rw-r--r--lisp/org/org-exp-blocks.el4
-rw-r--r--lisp/org/org-exp.el4
-rw-r--r--lisp/org/org-faces.el8
-rw-r--r--lisp/org/org-feed.el3
-rw-r--r--lisp/org/org-footnote.el3
-rw-r--r--lisp/org/org-freemind.el3
-rw-r--r--lisp/org/org-gnus.el4
-rw-r--r--lisp/org/org-habit.el3
-rw-r--r--lisp/org/org-html.el4
-rw-r--r--lisp/org/org-icalendar.el4
-rw-r--r--lisp/org/org-id.el3
-rw-r--r--lisp/org/org-indent.el3
-rw-r--r--lisp/org/org-info.el4
-rw-r--r--lisp/org/org-inlinetask.el2
-rw-r--r--lisp/org/org-install.el4
-rw-r--r--lisp/org/org-irc.el3
-rw-r--r--lisp/org/org-jsinfo.el4
-rw-r--r--lisp/org/org-latex.el3
-rw-r--r--lisp/org/org-list.el4
-rw-r--r--lisp/org/org-mac-message.el3
-rw-r--r--lisp/org/org-macs.el4
-rw-r--r--lisp/org/org-mew.el3
-rw-r--r--lisp/org/org-mhe.el4
-rw-r--r--lisp/org/org-mks.el3
-rw-r--r--lisp/org/org-mobile.el3
-rw-r--r--lisp/org/org-mouse.el3
-rw-r--r--lisp/org/org-plot.el3
-rw-r--r--lisp/org/org-protocol.el4
-rw-r--r--lisp/org/org-publish.el4
-rw-r--r--lisp/org/org-remember.el7
-rw-r--r--lisp/org/org-rmail.el4
-rw-r--r--lisp/org/org-src.el4
-rw-r--r--lisp/org/org-table.el4
-rw-r--r--lisp/org/org-taskjuggler.el2
-rw-r--r--lisp/org/org-timer.el3
-rw-r--r--lisp/org/org-vm.el4
-rw-r--r--lisp/org/org-w3m.el3
-rw-r--r--lisp/org/org-wl.el4
-rw-r--r--lisp/org/org-xoxo.el4
-rw-r--r--lisp/org/org.el4
-rw-r--r--lisp/outline.el4
-rw-r--r--lisp/paren.el3
-rw-r--r--lisp/password-cache.el3
-rw-r--r--lisp/patcomp.el1
-rw-r--r--lisp/paths.el4
-rw-r--r--lisp/pcmpl-cvs.el4
-rw-r--r--lisp/pcmpl-gnu.el4
-rw-r--r--lisp/pcmpl-linux.el4
-rw-r--r--lisp/pcmpl-rpm.el4
-rw-r--r--lisp/pcmpl-unix.el44
-rw-r--r--lisp/pcomplete.el4
-rw-r--r--lisp/play/5x5.el4
-rw-r--r--lisp/play/animate.el4
-rw-r--r--lisp/play/blackbox.el4
-rw-r--r--lisp/play/bruce.el4
-rw-r--r--lisp/play/bubbles.el3
-rw-r--r--lisp/play/cookie1.el4
-rw-r--r--lisp/play/decipher.el3
-rw-r--r--lisp/play/dissociate.el4
-rw-r--r--lisp/play/doctor.el4
-rw-r--r--lisp/play/dunnet.el4
-rw-r--r--lisp/play/fortune.el3
-rw-r--r--lisp/play/gamegrid.el4
-rw-r--r--lisp/play/gametree.el3
-rw-r--r--lisp/play/gomoku.el3
-rw-r--r--lisp/play/handwrite.el4
-rw-r--r--lisp/play/hanoi.el1
-rw-r--r--lisp/play/landmark.el1351
-rw-r--r--lisp/play/life.el3
-rw-r--r--lisp/play/meese.el1
-rw-r--r--lisp/play/morse.el4
-rw-r--r--lisp/play/mpuz.el4
-rw-r--r--lisp/play/pong.el4
-rw-r--r--lisp/play/snake.el4
-rw-r--r--lisp/play/solitaire.el4
-rw-r--r--lisp/play/spook.el4
-rw-r--r--lisp/play/studly.el1
-rw-r--r--lisp/play/tetris.el4
-rw-r--r--lisp/play/yow.el4
-rw-r--r--lisp/play/zone.el4
-rw-r--r--lisp/printing.el3
-rw-r--r--lisp/proced.el3
-rw-r--r--lisp/progmodes/ada-mode.el4
-rw-r--r--lisp/progmodes/ada-prj.el3
-rw-r--r--lisp/progmodes/ada-stmt.el5
-rw-r--r--lisp/progmodes/ada-xref.el4
-rw-r--r--lisp/progmodes/antlr-mode.el56
-rw-r--r--lisp/progmodes/asm-mode.el4
-rw-r--r--lisp/progmodes/autoconf.el4
-rw-r--r--lisp/progmodes/bug-reference.el3
-rw-r--r--lisp/progmodes/cap-words.el4
-rw-r--r--lisp/progmodes/cc-align.el5
-rw-r--r--lisp/progmodes/cc-awk.el4
-rw-r--r--lisp/progmodes/cc-bytecomp.el4
-rw-r--r--lisp/progmodes/cc-cmds.el5
-rw-r--r--lisp/progmodes/cc-compat.el5
-rw-r--r--lisp/progmodes/cc-defs.el5
-rw-r--r--lisp/progmodes/cc-engine.el5
-rw-r--r--lisp/progmodes/cc-fonts.el3
-rw-r--r--lisp/progmodes/cc-langs.el5
-rw-r--r--lisp/progmodes/cc-menus.el5
-rw-r--r--lisp/progmodes/cc-mode.el5
-rw-r--r--lisp/progmodes/cc-styles.el5
-rw-r--r--lisp/progmodes/cc-vars.el5
-rw-r--r--lisp/progmodes/cfengine.el4
-rw-r--r--lisp/progmodes/cmacexp.el4
-rw-r--r--lisp/progmodes/compile.el967
-rw-r--r--lisp/progmodes/cperl-mode.el4
-rw-r--r--lisp/progmodes/cpp.el4
-rw-r--r--lisp/progmodes/cwarn.el4
-rw-r--r--lisp/progmodes/dcl-mode.el3
-rw-r--r--lisp/progmodes/delphi.el4
-rw-r--r--lisp/progmodes/ebnf-abn.el4
-rw-r--r--lisp/progmodes/ebnf-bnf.el4
-rw-r--r--lisp/progmodes/ebnf-dtd.el4
-rw-r--r--lisp/progmodes/ebnf-ebx.el4
-rw-r--r--lisp/progmodes/ebnf-iso.el4
-rw-r--r--lisp/progmodes/ebnf-otz.el4
-rw-r--r--lisp/progmodes/ebnf-yac.el4
-rw-r--r--lisp/progmodes/ebnf2ps.el3
-rw-r--r--lisp/progmodes/ebrowse.el4
-rw-r--r--lisp/progmodes/etags.el5
-rw-r--r--lisp/progmodes/executable.el4
-rw-r--r--lisp/progmodes/f90.el4
-rw-r--r--lisp/progmodes/flymake.el3
-rw-r--r--lisp/progmodes/fortran.el4
-rw-r--r--lisp/progmodes/gdb-mi.el2
-rw-r--r--lisp/progmodes/glasses.el4
-rw-r--r--lisp/progmodes/grep.el27
-rw-r--r--lisp/progmodes/gud.el4
-rw-r--r--lisp/progmodes/hideif.el3
-rw-r--r--lisp/progmodes/hideshow.el4
-rw-r--r--lisp/progmodes/icon.el3
-rw-r--r--lisp/progmodes/idlw-complete-structtag.el3
-rw-r--r--lisp/progmodes/idlw-help.el6
-rw-r--r--lisp/progmodes/idlw-shell.el3
-rw-r--r--lisp/progmodes/idlw-toolbar.el4
-rw-r--r--lisp/progmodes/idlwave.el3
-rw-r--r--lisp/progmodes/inf-lisp.el4
-rw-r--r--lisp/progmodes/js.el13
-rw-r--r--lisp/progmodes/ld-script.el4
-rw-r--r--lisp/progmodes/m4-mode.el4
-rw-r--r--lisp/progmodes/make-mode.el4
-rw-r--r--lisp/progmodes/mantemp.el4
-rw-r--r--lisp/progmodes/meta-mode.el3
-rw-r--r--lisp/progmodes/mixal-mode.el4
-rw-r--r--lisp/progmodes/modula2.el1
-rw-r--r--lisp/progmodes/octave-inf.el4
-rw-r--r--lisp/progmodes/octave-mod.el3
-rw-r--r--lisp/progmodes/pascal.el4
-rw-r--r--lisp/progmodes/perl-mode.el9
-rw-r--r--lisp/progmodes/prolog.el4364
-rw-r--r--lisp/progmodes/ps-mode.el4
-rw-r--r--lisp/progmodes/python.el4
-rw-r--r--lisp/progmodes/ruby-mode.el109
-rw-r--r--lisp/progmodes/scheme.el5
-rw-r--r--lisp/progmodes/sh-script.el6
-rw-r--r--lisp/progmodes/simula.el3
-rw-r--r--lisp/progmodes/sql.el3
-rw-r--r--lisp/progmodes/subword.el3
-rw-r--r--lisp/progmodes/tcl.el3
-rw-r--r--lisp/progmodes/vera-mode.el3
-rw-r--r--lisp/progmodes/verilog-mode.el3
-rw-r--r--lisp/progmodes/vhdl-mode.el4
-rw-r--r--lisp/progmodes/which-func.el4
-rw-r--r--lisp/progmodes/xscheme.el4
-rw-r--r--lisp/ps-bdf.el7
-rw-r--r--lisp/ps-def.el3
-rw-r--r--lisp/ps-mule.el4
-rw-r--r--lisp/ps-print.el16
-rw-r--r--lisp/ps-samp.el3
-rw-r--r--lisp/recentf.el10
-rw-r--r--lisp/rect.el82
-rw-r--r--lisp/register.el4
-rw-r--r--lisp/repeat.el4
-rw-r--r--lisp/replace.el4
-rw-r--r--lisp/reposition.el3
-rw-r--r--lisp/reveal.el4
-rw-r--r--lisp/rfn-eshadow.el4
-rw-r--r--lisp/rot13.el4
-rw-r--r--lisp/ruler-mode.el4
-rw-r--r--lisp/savehist.el4
-rw-r--r--lisp/saveplace.el8
-rw-r--r--lisp/sb-image.el4
-rw-r--r--lisp/scroll-all.el4
-rw-r--r--lisp/scroll-bar.el4
-rw-r--r--lisp/scroll-lock.el3
-rw-r--r--lisp/select.el3
-rw-r--r--lisp/server.el4
-rw-r--r--lisp/ses.el4
-rw-r--r--lisp/sha1.el3
-rw-r--r--lisp/shadowfile.el4
-rw-r--r--lisp/shell.el4
-rw-r--r--lisp/simple.el95
-rw-r--r--lisp/skeleton.el3
-rw-r--r--lisp/sort.el4
-rw-r--r--lisp/soundex.el4
-rw-r--r--lisp/speedbar.el176
-rw-r--r--lisp/startup.el39
-rw-r--r--lisp/strokes.el11
-rw-r--r--lisp/subr.el263
-rw-r--r--lisp/t-mouse.el4
-rw-r--r--lisp/tabify.el4
-rw-r--r--lisp/talk.el4
-rw-r--r--lisp/tar-mode.el5
-rw-r--r--lisp/tempo.el4
-rw-r--r--lisp/term.el40
-rw-r--r--lisp/term/AT386.el4
-rw-r--r--lisp/term/README3
-rw-r--r--lisp/term/apollo.el1
-rw-r--r--lisp/term/bobcat.el1
-rw-r--r--lisp/term/common-win.el3
-rw-r--r--lisp/term/cygwin.el1
-rw-r--r--lisp/term/internal.el5
-rw-r--r--lisp/term/iris-ansi.el4
-rw-r--r--lisp/term/linux.el1
-rw-r--r--lisp/term/lk201.el1
-rw-r--r--lisp/term/news.el4
-rw-r--r--lisp/term/ns-win.el3
-rw-r--r--lisp/term/pc-win.el4
-rw-r--r--lisp/term/rxvt.el4
-rw-r--r--lisp/term/sun.el4
-rw-r--r--lisp/term/sup-mouse.el4
-rw-r--r--lisp/term/tty-colors.el3
-rw-r--r--lisp/term/tvi970.el4
-rw-r--r--lisp/term/vt100.el4
-rw-r--r--lisp/term/vt102.el1
-rw-r--r--lisp/term/vt125.el1
-rw-r--r--lisp/term/vt200.el1
-rw-r--r--lisp/term/vt201.el1
-rw-r--r--lisp/term/vt220.el1
-rw-r--r--lisp/term/vt240.el1
-rw-r--r--lisp/term/vt300.el1
-rw-r--r--lisp/term/vt320.el1
-rw-r--r--lisp/term/vt400.el1
-rw-r--r--lisp/term/vt420.el1
-rw-r--r--lisp/term/w32-win.el33
-rw-r--r--lisp/term/w32console.el2
-rw-r--r--lisp/term/wyse50.el4
-rw-r--r--lisp/term/x-win.el3
-rw-r--r--lisp/term/xterm.el4
-rw-r--r--lisp/terminal.el5
-rw-r--r--lisp/textmodes/artist.el4
-rw-r--r--lisp/textmodes/bib-mode.el4
-rw-r--r--lisp/textmodes/bibtex-style.el4
-rw-r--r--lisp/textmodes/bibtex.el4
-rw-r--r--lisp/textmodes/conf-mode.el6
-rw-r--r--lisp/textmodes/css-mode.el3
-rw-r--r--lisp/textmodes/dns-mode.el3
-rw-r--r--lisp/textmodes/enriched.el4
-rw-r--r--lisp/textmodes/fill.el3
-rw-r--r--lisp/textmodes/flyspell.el3
-rw-r--r--lisp/textmodes/ispell.el4
-rw-r--r--lisp/textmodes/makeinfo.el4
-rw-r--r--lisp/textmodes/nroff-mode.el5
-rw-r--r--lisp/textmodes/page-ext.el4
-rw-r--r--lisp/textmodes/page.el4
-rw-r--r--lisp/textmodes/paragraphs.el4
-rw-r--r--lisp/textmodes/picture.el3
-rw-r--r--lisp/textmodes/po.el4
-rw-r--r--lisp/textmodes/refbib.el4
-rw-r--r--lisp/textmodes/refer.el4
-rw-r--r--lisp/textmodes/refill.el4
-rw-r--r--lisp/textmodes/reftex-auc.el4
-rw-r--r--lisp/textmodes/reftex-cite.el4
-rw-r--r--lisp/textmodes/reftex-dcr.el4
-rw-r--r--lisp/textmodes/reftex-global.el4
-rw-r--r--lisp/textmodes/reftex-index.el368
-rw-r--r--lisp/textmodes/reftex-parse.el4
-rw-r--r--lisp/textmodes/reftex-ref.el3
-rw-r--r--lisp/textmodes/reftex-sel.el198
-rw-r--r--lisp/textmodes/reftex-toc.el195
-rw-r--r--lisp/textmodes/reftex-vars.el4
-rw-r--r--lisp/textmodes/reftex.el4
-rw-r--r--lisp/textmodes/remember.el3
-rw-r--r--lisp/textmodes/rst.el55
-rw-r--r--lisp/textmodes/sgml-mode.el4
-rw-r--r--lisp/textmodes/table.el3
-rw-r--r--lisp/textmodes/tex-mode.el203
-rw-r--r--lisp/textmodes/texinfmt.el5
-rw-r--r--lisp/textmodes/texinfo.el4
-rw-r--r--lisp/textmodes/texnfo-upd.el3
-rw-r--r--lisp/textmodes/text-mode.el4
-rw-r--r--lisp/textmodes/tildify.el4
-rw-r--r--lisp/textmodes/two-column.el4
-rw-r--r--lisp/textmodes/underline.el4
-rw-r--r--lisp/thingatpt.el5
-rw-r--r--lisp/thumbs.el3
-rw-r--r--lisp/time-stamp.el5
-rw-r--r--lisp/time.el9
-rw-r--r--lisp/timezone.el5
-rw-r--r--lisp/tmm.el70
-rw-r--r--lisp/tool-bar.el113
-rw-r--r--lisp/tooltip.el4
-rw-r--r--lisp/tree-widget.el3
-rw-r--r--lisp/tutorial.el3
-rw-r--r--lisp/type-break.el3
-rw-r--r--lisp/uniquify.el4
-rw-r--r--lisp/url/ChangeLog54
-rw-r--r--lisp/url/url-about.el4
-rw-r--r--lisp/url/url-auth.el4
-rw-r--r--lisp/url/url-cache.el4
-rw-r--r--lisp/url/url-cid.el4
-rw-r--r--lisp/url/url-cookie.el250
-rw-r--r--lisp/url/url-dav.el4
-rw-r--r--lisp/url/url-dired.el4
-rw-r--r--lisp/url/url-expand.el4
-rw-r--r--lisp/url/url-file.el4
-rw-r--r--lisp/url/url-ftp.el4
-rw-r--r--lisp/url/url-gw.el4
-rw-r--r--lisp/url/url-handlers.el4
-rw-r--r--lisp/url/url-history.el4
-rw-r--r--lisp/url/url-http.el4
-rw-r--r--lisp/url/url-imap.el3
-rw-r--r--lisp/url/url-irc.el4
-rw-r--r--lisp/url/url-ldap.el3
-rw-r--r--lisp/url/url-mailto.el4
-rw-r--r--lisp/url/url-methods.el4
-rw-r--r--lisp/url/url-misc.el4
-rw-r--r--lisp/url/url-news.el4
-rw-r--r--lisp/url/url-nfs.el4
-rw-r--r--lisp/url/url-ns.el4
-rw-r--r--lisp/url/url-parse.el4
-rw-r--r--lisp/url/url-privacy.el4
-rw-r--r--lisp/url/url-proxy.el3
-rw-r--r--lisp/url/url-util.el4
-rw-r--r--lisp/url/url-vars.el4
-rw-r--r--lisp/url/url.el4
-rw-r--r--lisp/userlock.el4
-rw-r--r--lisp/vc/add-log.el4
-rw-r--r--lisp/vc/compare-w.el5
-rw-r--r--lisp/vc/cvs-status.el5
-rw-r--r--lisp/vc/diff-mode.el11
-rw-r--r--lisp/vc/diff.el19
-rw-r--r--lisp/vc/ediff-diff.el4
-rw-r--r--lisp/vc/ediff-help.el4
-rw-r--r--lisp/vc/ediff-hook.el4
-rw-r--r--lisp/vc/ediff-init.el4
-rw-r--r--lisp/vc/ediff-merg.el4
-rw-r--r--lisp/vc/ediff-mult.el5
-rw-r--r--lisp/vc/ediff-ptch.el4
-rw-r--r--lisp/vc/ediff-util.el5
-rw-r--r--lisp/vc/ediff-vers.el4
-rw-r--r--lisp/vc/ediff-wind.el4
-rw-r--r--lisp/vc/ediff.el4
-rw-r--r--lisp/vc/log-edit.el6
-rw-r--r--lisp/vc/log-view.el4
-rw-r--r--lisp/vc/pcvs-defs.el5
-rw-r--r--lisp/vc/pcvs-info.el5
-rw-r--r--lisp/vc/pcvs-parse.el4
-rw-r--r--lisp/vc/pcvs-util.el4
-rw-r--r--lisp/vc/pcvs.el4
-rw-r--r--lisp/vc/smerge-mode.el77
-rw-r--r--lisp/vc/vc-annotate.el4
-rw-r--r--lisp/vc/vc-arch.el4
-rw-r--r--lisp/vc/vc-bzr.el95
-rw-r--r--lisp/vc/vc-cvs.el4
-rw-r--r--lisp/vc/vc-dav.el3
-rw-r--r--lisp/vc/vc-dir.el57
-rw-r--r--lisp/vc/vc-dispatcher.el58
-rw-r--r--lisp/vc/vc-git.el62
-rw-r--r--lisp/vc/vc-hg.el63
-rw-r--r--lisp/vc/vc-hooks.el5
-rw-r--r--lisp/vc/vc-mtn.el3
-rw-r--r--lisp/vc/vc-rcs.el5
-rw-r--r--lisp/vc/vc-sccs.el5
-rw-r--r--lisp/vc/vc-svn.el40
-rw-r--r--lisp/vc/vc.el9
-rw-r--r--lisp/vcursor.el4
-rw-r--r--lisp/version.el4
-rw-r--r--lisp/view.el5
-rw-r--r--lisp/vt-control.el4
-rw-r--r--lisp/vt100-led.el4
-rw-r--r--lisp/w32-fns.el5
-rw-r--r--lisp/w32-vars.el3
-rw-r--r--lisp/wdired.el4
-rw-r--r--lisp/whitespace.el7
-rw-r--r--lisp/wid-browse.el4
-rw-r--r--lisp/wid-edit.el51
-rw-r--r--lisp/widget.el4
-rw-r--r--lisp/windmove.el4
-rw-r--r--lisp/window.el4
-rw-r--r--lisp/winner.el4
-rw-r--r--lisp/woman.el15
-rw-r--r--lisp/x-dnd.el3
-rw-r--r--lisp/xml.el4
-rw-r--r--lisp/xt-mouse.el4
-rw-r--r--lwlib/ChangeLog19
-rw-r--r--lwlib/Makefile.in3
-rw-r--r--lwlib/lwlib-Xaw.c5
-rw-r--r--lwlib/lwlib-Xaw.h2
-rw-r--r--lwlib/lwlib-Xlw.c5
-rw-r--r--lwlib/lwlib-Xlw.h2
-rw-r--r--lwlib/lwlib-Xm.c13
-rw-r--r--lwlib/lwlib-Xm.h2
-rw-r--r--lwlib/lwlib-int.h5
-rw-r--r--lwlib/lwlib-utils.c7
-rw-r--r--lwlib/lwlib-utils.h2
-rw-r--r--lwlib/lwlib.c15
-rw-r--r--lwlib/lwlib.h5
-rw-r--r--lwlib/xlwmenu.c5
-rw-r--r--lwlib/xlwmenu.h6
-rw-r--r--lwlib/xlwmenuP.h6
-rw-r--r--m4/00gnulib.m430
-rw-r--r--m4/c-strtod.m459
-rw-r--r--m4/extensions.m4118
-rw-r--r--m4/getopt.m4347
-rw-r--r--m4/gl-comp.m4278
-rw-r--r--m4/gnulib-common.m4234
-rw-r--r--m4/gnulib-tool.m457
-rw-r--r--m4/include_next.m4244
-rw-r--r--m4/mktime.m4241
-rw-r--r--m4/multiarch.m462
-rw-r--r--m4/stdbool.m4103
-rw-r--r--m4/stddef_h.m445
-rw-r--r--m4/strftime.m430
-rw-r--r--m4/time_h.m4109
-rw-r--r--m4/time_r.m462
-rw-r--r--m4/tm_gmtoff.m414
-rw-r--r--m4/unistd_h.m4162
-rw-r--r--m4/wchar_t.m424
-rwxr-xr-xmake-dist47
-rwxr-xr-xmissing376
-rwxr-xr-xmkinstalldirs12
-rwxr-xr-xmove-if-change92
-rw-r--r--msdos/ChangeLog14
-rw-r--r--msdos/INSTALL3
-rw-r--r--msdos/README6
-rw-r--r--msdos/is_exec.c2
-rw-r--r--msdos/mainmake.v23
-rw-r--r--msdos/sed1v2.inp4
-rw-r--r--msdos/sed1x.inp4
-rw-r--r--msdos/sed2v2.inp5
-rw-r--r--msdos/sed2x.inp4
-rw-r--r--msdos/sed3v2.inp4
-rw-r--r--msdos/sed4.inp4
-rw-r--r--msdos/sed5x.inp4
-rw-r--r--msdos/sed6.inp4
-rw-r--r--msdos/sedalloc.inp3
-rw-r--r--msdos/sedleim.inp6
-rw-r--r--msdos/sedlisp.inp4
-rw-r--r--msdos/sigaction.c2
-rw-r--r--nextstep/ChangeLog9
-rw-r--r--nextstep/Cocoa/Emacs.base/Contents/Info.plist4
-rw-r--r--nextstep/Cocoa/Emacs.base/Contents/Resources/Credits.html3
-rw-r--r--nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings2
-rw-r--r--nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist2
-rw-r--r--nextstep/INSTALL2
-rw-r--r--nextstep/README2
-rw-r--r--nt/.gitignore2
-rw-r--r--nt/ChangeLog36
-rw-r--r--nt/INSTALL20
-rw-r--r--nt/README3
-rw-r--r--nt/README.W3227
-rw-r--r--nt/addpm.c5
-rw-r--r--nt/addsection.c5
-rw-r--r--nt/cmdproxy.c5
-rw-r--r--nt/config.nt76
-rwxr-xr-xnt/configure.bat20
-rw-r--r--nt/ddeclient.c5
-rw-r--r--nt/emacs.rc2
-rw-r--r--nt/emacsclient.rc2
-rw-r--r--nt/envadd.bat5
-rwxr-xr-xnt/ftime-nostartup.bat3
-rw-r--r--nt/ftime.bat3
-rw-r--r--nt/gmake.defs4
-rw-r--r--nt/icons/README7
-rw-r--r--nt/inc/arpa/inet.h2
-rw-r--r--nt/inc/grp.h6
-rw-r--r--nt/inc/langinfo.h5
-rw-r--r--nt/inc/netdb.h2
-rw-r--r--nt/inc/netinet/in.h2
-rw-r--r--nt/inc/nl_types.h6
-rw-r--r--nt/inc/pwd.h2
-rw-r--r--nt/inc/sys/dir.h2
-rw-r--r--nt/inc/sys/file.h2
-rw-r--r--nt/inc/sys/ioctl.h2
-rw-r--r--nt/inc/sys/param.h2
-rw-r--r--nt/inc/sys/socket.h6
-rw-r--r--nt/inc/sys/stat.h4
-rw-r--r--nt/inc/sys/time.h2
-rw-r--r--nt/inc/unistd.h2
-rw-r--r--nt/makefile.w32-in25
-rw-r--r--nt/multi-install-info.bat5
-rw-r--r--nt/nmake.defs4
-rw-r--r--nt/paths.h8
-rw-r--r--nt/preprep.c5
-rw-r--r--nt/runemacs.c7
-rw-r--r--nt/zipdist.bat3
-rw-r--r--oldXMenu/Activate.c6
-rw-r--r--oldXMenu/AddPane.c2
-rw-r--r--oldXMenu/AddSel.c2
-rw-r--r--oldXMenu/ChangeLog7
-rw-r--r--oldXMenu/ChgPane.c2
-rw-r--r--oldXMenu/ChgSel.c2
-rw-r--r--oldXMenu/Create.c5
-rw-r--r--oldXMenu/DelPane.c2
-rw-r--r--oldXMenu/DelSel.c2
-rw-r--r--oldXMenu/Destroy.c2
-rw-r--r--oldXMenu/Error.c2
-rw-r--r--oldXMenu/EvHand.c2
-rw-r--r--oldXMenu/FindPane.c2
-rw-r--r--oldXMenu/FindSel.c5
-rw-r--r--oldXMenu/InsPane.c2
-rw-r--r--oldXMenu/InsSel.c2
-rw-r--r--oldXMenu/Internal.c5
-rw-r--r--oldXMenu/Locate.c2
-rw-r--r--oldXMenu/Makefile.in3
-rw-r--r--oldXMenu/Post.c2
-rw-r--r--oldXMenu/Recomp.c2
-rw-r--r--oldXMenu/SetAEQ.c2
-rw-r--r--oldXMenu/SetFrz.c2
-rw-r--r--oldXMenu/SetPane.c2
-rw-r--r--oldXMenu/SetSel.c2
-rw-r--r--oldXMenu/X10.h2
-rw-r--r--oldXMenu/XCrAssoc.c2
-rw-r--r--oldXMenu/XDelAssoc.c2
-rw-r--r--oldXMenu/XDestAssoc.c2
-rw-r--r--oldXMenu/XLookAssoc.c2
-rw-r--r--oldXMenu/XMakeAssoc.c2
-rw-r--r--oldXMenu/XMenu.h2
-rw-r--r--oldXMenu/XMenuInt.h2
-rw-r--r--oldXMenu/copyright.h2
-rw-r--r--oldXMenu/insque.c5
-rw-r--r--src/.gdbinit14
-rw-r--r--src/.gitignore2
-rw-r--r--src/ChangeLog.14
-rw-r--r--src/ChangeLog.104
-rw-r--r--src/ChangeLog.24
-rw-r--r--src/ChangeLog.35
-rw-r--r--src/ChangeLog.45
-rw-r--r--src/ChangeLog.55
-rw-r--r--src/ChangeLog.65
-rw-r--r--src/ChangeLog.75
-rw-r--r--src/ChangeLog.85
-rw-r--r--src/ChangeLog.94
-rw-r--r--src/ChangeLog.trunk1292
-rw-r--r--src/Makefile.in17
-rw-r--r--src/README3
-rw-r--r--src/alloc.c117
-rw-r--r--src/atimer.c8
-rw-r--r--src/atimer.h5
-rw-r--r--src/bidi.c2
-rw-r--r--src/blockinput.h5
-rw-r--r--src/buffer.c239
-rw-r--r--src/buffer.h17
-rw-r--r--src/bytecode.c16
-rw-r--r--src/callint.c30
-rw-r--r--src/callproc.c61
-rw-r--r--src/casefiddle.c6
-rw-r--r--src/casetab.c5
-rw-r--r--src/category.c27
-rw-r--r--src/category.h4
-rw-r--r--src/ccl.c22
-rw-r--r--src/ccl.h7
-rw-r--r--src/character.c59
-rw-r--r--src/character.h17
-rw-r--r--src/charset.c35
-rw-r--r--src/charset.h12
-rw-r--r--src/chartab.c6
-rw-r--r--src/cm.c5
-rw-r--r--src/cm.h5
-rw-r--r--src/cmds.c11
-rw-r--r--src/coding.c213
-rw-r--r--src/coding.h49
-rw-r--r--src/commands.h48
-rw-r--r--src/composite.c22
-rw-r--r--src/composite.h12
-rw-r--r--src/config.in158
-rw-r--r--src/data.c13
-rw-r--r--src/dbusbind.c211
-rw-r--r--src/deps.mk5
-rw-r--r--src/dired.c22
-rw-r--r--src/dispextern.h64
-rw-r--r--src/dispnew.c151
-rw-r--r--src/disptab.h12
-rw-r--r--src/doc.c32
-rw-r--r--src/doprnt.c7
-rw-r--r--src/dosfns.c42
-rw-r--r--src/dosfns.h20
-rw-r--r--src/editfns.c68
-rw-r--r--src/emacs-icon.h4
-rw-r--r--src/emacs.c151
-rw-r--r--src/epaths.in7
-rw-r--r--src/eval.c384
-rw-r--r--src/fileio.c202
-rw-r--r--src/filelock.c27
-rw-r--r--src/filemode.c5
-rw-r--r--src/firstfile.c5
-rw-r--r--src/floatfns.c7
-rw-r--r--src/fns.c58
-rw-r--r--src/font.c381
-rw-r--r--src/font.h20
-rw-r--r--src/fontset.c81
-rw-r--r--src/fontset.h17
-rw-r--r--src/frame.c147
-rw-r--r--src/frame.h22
-rw-r--r--src/fringe.c23
-rw-r--r--src/ftfont.c47
-rw-r--r--src/ftfont.h4
-rw-r--r--src/ftxfont.c6
-rw-r--r--src/getloadavg.c7
-rw-r--r--src/getpagesize.h9
-rw-r--r--src/globals.h2902
-rw-r--r--src/gmalloc.c4
-rw-r--r--src/gnutls.c10
-rw-r--r--src/gnutls.h2
-rw-r--r--src/gtkutil.c369
-rw-r--r--src/gtkutil.h6
-rw-r--r--src/image.c138
-rw-r--r--src/indent.c15
-rw-r--r--src/indent.h5
-rw-r--r--src/insdel.c17
-rw-r--r--src/intervals.c5
-rw-r--r--src/intervals.h13
-rw-r--r--src/keyboard.c465
-rw-r--r--src/keyboard.h29
-rw-r--r--src/keymap.c66
-rw-r--r--src/keymap.h9
-rw-r--r--src/lastfile.c5
-rw-r--r--src/lisp.h342
-rw-r--r--src/lread.c173
-rw-r--r--src/m/alpha.h5
-rw-r--r--src/m/amdx86-64.h5
-rw-r--r--src/m/ia64.h7
-rw-r--r--src/m/ibmrs6000.h5
-rw-r--r--src/m/ibms390.h5
-rw-r--r--src/m/ibms390x.h5
-rw-r--r--src/m/intel386.h5
-rw-r--r--src/m/iris4d.h5
-rw-r--r--src/m/m68k.h5
-rw-r--r--src/m/macppc.h5
-rw-r--r--src/m/sparc.h5
-rw-r--r--src/m/template.h5
-rw-r--r--src/m/vax.h5
-rw-r--r--src/macros.c23
-rw-r--r--src/macros.h13
-rw-r--r--src/makefile.w32-in14
-rw-r--r--src/marker.c11
-rw-r--r--src/md5.c2
-rw-r--r--src/md5.h2
-rw-r--r--src/mem-limits.h5
-rw-r--r--src/menu.c14
-rw-r--r--src/menu.h6
-rw-r--r--src/minibuf.c127
-rw-r--r--src/mktime.c544
-rw-r--r--src/msdos.c13
-rw-r--r--src/msdos.h5
-rw-r--r--src/ndir.h2
-rw-r--r--src/ns.mk2
-rw-r--r--src/nsfns.m188
-rw-r--r--src/nsfont.m23
-rw-r--r--src/nsgui.h4
-rw-r--r--src/nsimage.m3
-rw-r--r--src/nsmenu.m37
-rw-r--r--src/nsselect.m34
-rw-r--r--src/nsterm.h11
-rw-r--r--src/nsterm.m232
-rw-r--r--src/pre-crt0.c2
-rw-r--r--src/print.c331
-rw-r--r--src/process.c61
-rw-r--r--src/process.h8
-rw-r--r--src/puresize.h5
-rw-r--r--src/ralloc.c7
-rw-r--r--src/regex.c10
-rw-r--r--src/regex.h5
-rw-r--r--src/region-cache.c7
-rw-r--r--src/region-cache.h7
-rw-r--r--src/s/aix4-2.h5
-rw-r--r--src/s/bsd-common.h5
-rw-r--r--src/s/cygwin.h5
-rw-r--r--src/s/darwin.h5
-rw-r--r--src/s/freebsd.h7
-rw-r--r--src/s/gnu-kfreebsd.h2
-rw-r--r--src/s/gnu-linux.h7
-rw-r--r--src/s/gnu.h5
-rw-r--r--src/s/hpux10-20.h5
-rw-r--r--src/s/hpux11.h2
-rw-r--r--src/s/irix6-5.h7
-rw-r--r--src/s/ms-w32.h6
-rw-r--r--src/s/msdos.h5
-rw-r--r--src/s/netbsd.h5
-rw-r--r--src/s/openbsd.h2
-rw-r--r--src/s/sol2-10.h2
-rw-r--r--src/s/sol2-6.h5
-rw-r--r--src/s/template.h5
-rw-r--r--src/s/unixware.h5
-rw-r--r--src/s/usg5-4-common.h5
-rw-r--r--src/scroll.c12
-rw-r--r--src/search.c29
-rw-r--r--src/sheap.c4
-rw-r--r--src/sound.c5
-rw-r--r--src/strftime.c1444
-rw-r--r--src/syntax.c36
-rw-r--r--src/syntax.h10
-rw-r--r--src/sysdep.c10
-rw-r--r--src/sysselect.h5
-rw-r--r--src/syssignal.h5
-rw-r--r--src/systime.h5
-rw-r--r--src/systty.h5
-rw-r--r--src/syswait.h5
-rw-r--r--src/term.c40
-rw-r--r--src/termcap.c4
-rw-r--r--src/termchar.h5
-rw-r--r--src/termhooks.h7
-rw-r--r--src/terminal.c23
-rw-r--r--src/terminfo.c5
-rw-r--r--src/termopts.h19
-rw-r--r--src/textprop.c71
-rw-r--r--src/tparam.c2
-rw-r--r--src/undo.c30
-rw-r--r--src/unexaix.c5
-rw-r--r--src/unexcoff.c5
-rw-r--r--src/unexcw.c4
-rw-r--r--src/unexelf.c5
-rw-r--r--src/unexhp9k800.c2
-rw-r--r--src/unexmacosx.c20
-rw-r--r--src/unexsol.c2
-rw-r--r--src/unexw32.c5
-rw-r--r--src/vm-limit.c5
-rw-r--r--src/w16select.c14
-rw-r--r--src/w32.c14
-rw-r--r--src/w32.h5
-rw-r--r--src/w32console.c14
-rw-r--r--src/w32fns.c214
-rw-r--r--src/w32font.c9
-rw-r--r--src/w32font.h4
-rw-r--r--src/w32gui.h5
-rw-r--r--src/w32heap.c3
-rw-r--r--src/w32heap.h5
-rw-r--r--src/w32inevt.c20
-rw-r--r--src/w32inevt.h5
-rw-r--r--src/w32menu.c43
-rw-r--r--src/w32proc.c62
-rw-r--r--src/w32reg.c5
-rw-r--r--src/w32select.c14
-rw-r--r--src/w32term.c56
-rw-r--r--src/w32term.h14
-rw-r--r--src/w32uniscribe.c4
-rw-r--r--src/w32xfns.c5
-rw-r--r--src/widget.c8
-rw-r--r--src/widget.h5
-rw-r--r--src/widgetprv.h5
-rw-r--r--src/window.c173
-rw-r--r--src/window.h37
-rw-r--r--src/xdisp.c500
-rw-r--r--src/xfaces.c98
-rw-r--r--src/xfns.c177
-rw-r--r--src/xfont.c13
-rw-r--r--src/xftfont.c6
-rw-r--r--src/xgselect.c6
-rw-r--r--src/xgselect.h6
-rw-r--r--src/xmenu.c28
-rw-r--r--src/xml.c4
-rw-r--r--src/xrdb.c18
-rw-r--r--src/xselect.c58
-rw-r--r--src/xsettings.c14
-rw-r--r--src/xsettings.h8
-rw-r--r--src/xsmfns.c53
-rw-r--r--src/xterm.c159
-rw-r--r--src/xterm.h88
-rw-r--r--test/ChangeLog26
-rw-r--r--test/automated/Makefile.in158
-rw-r--r--test/automated/ert-tests.el949
-rw-r--r--test/automated/ert-x-tests.el273
-rw-r--r--test/automated/font-parse-tests.el163
-rw-r--r--test/bytecomp-testsuite.el3
-rw-r--r--test/cedet/cedet-utests.el3
-rw-r--r--test/cedet/ede-tests.el3
-rw-r--r--test/cedet/semantic-ia-utest.el3
-rw-r--r--test/cedet/semantic-tests.el3
-rw-r--r--test/cedet/semantic-utest-c.el3
-rw-r--r--test/cedet/semantic-utest.el3
-rw-r--r--test/cedet/srecode-tests.el3
-rw-r--r--test/cedet/tests/test.c5
-rw-r--r--test/cedet/tests/test.el5
-rw-r--r--test/cedet/tests/test.make2
-rw-r--r--test/cedet/tests/testdoublens.cpp3
-rw-r--r--test/cedet/tests/testdoublens.hpp3
-rw-r--r--test/cedet/tests/testfriends.cpp1
-rw-r--r--test/cedet/tests/testjavacomp.java2
-rw-r--r--test/cedet/tests/testnsp.cpp1
-rw-r--r--test/cedet/tests/testpolymorph.cpp3
-rw-r--r--test/cedet/tests/testspp.c4
-rw-r--r--test/cedet/tests/testsppcomplete.c2
-rw-r--r--test/cedet/tests/testsppreplace.c4
-rw-r--r--test/cedet/tests/testsppreplaced.c4
-rw-r--r--test/cedet/tests/testsubclass.cpp3
-rw-r--r--test/cedet/tests/testsubclass.hh3
-rw-r--r--test/cedet/tests/testtypedefs.cpp3
-rw-r--r--test/cedet/tests/testvarnames.c4
-rw-r--r--test/comint-testsuite.el2
-rw-r--r--test/icalendar-testsuite.el3
-rw-r--r--test/indent/prolog.prolog17
-rw-r--r--test/newsticker-testsuite.el4
-rw-r--r--test/occur-testsuite.el2
-rw-r--r--test/redisplay-testsuite.el3
-rwxr-xr-xupdate-subdirs6
-rw-r--r--vpath.sed1
-rw-r--r--warn-on-use.h109
2420 files changed, 53853 insertions, 27060 deletions
diff --git a/ChangeLog b/ChangeLog
index 0bf18e2386..20d9e4dbc5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,410 @@
+2011-01-31 Paul Eggert <[email protected]>
+
+ src/emacs.c now gets version number from configure.in
+ * configure.in (version): Set this from $PACKAGE_VERSION,
+ which is set from AC_INIT, rather than scouting through src/emacs.c.
+ * configure: Regenerate.
+ * make-dist (version): Get it from configure.in, not src/emacs.c.
+
+2011-01-30 Paul Eggert <[email protected]>
+
+ strftime: import from gnulib
+ * Makefile.in (GNULIB_MODULES): Add strftime.
+ * configure.in (AC_FUNC_STRFTIME, my_strftime): Remove; no longer
+ needed.
+ * aclocal.m4, configure, lib/Makefile.in, lib/gnulib.mk, m4/gl-comp.m4:
+ Regenerate.
+ * lib/strftime.c, lib/strftime.h, lib/stdbool.in.h: New files,
+ imported from gnulib.
+ * m4/strftime.m4, m4/stdbool.m4, m4/tm_gmtoff.m4: Likewise.
+ This incorporates many changes from gnulib, including simpler
+ handling of multibyte formats, porting to mingw32 and other
+ platforms, and support for higher-resolution time stamps.
+ Emacs does not yet use the higher-resolution interface.
+
+2011-01-30 Paul Eggert <[email protected]>
+
+ gnulib: import mktime and move-if-change fixes from gnulib
+
+ * configure: Regenerate from the following.
+
+ 2011-01-30 Paul Eggert <[email protected]>
+
+ mktime: clarify long_int width checking
+ * lib/mktime.c (long_int_is_wide_enough): Move this assertion to
+ the top level, to make it clearer that the assumption about
+ long_int width is being checked. See
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-01/msg00554.html>.
+
+ 2011-01-29 Paul Eggert <[email protected]>
+
+ TYPE_MAXIMUM: avoid theoretically undefined behavior
+ * lib/intprops.h (TYPE_MINIMUM, TYPE_MAXIMUM): Do not shift a
+ negative number, which the C Standard says has undefined behavior.
+ In practice this is not a problem, but might as well do it by the book.
+ Reported by Rich Felker and Eric Blake; see
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-01/msg00493.html>.
+ * m4/mktime.m4 (AC_FUNC_MKTIME): Likewise.
+ * lib/mktime.c (TYPE_MAXIMUM): Redo slightly to match the others.
+
+ mktime: #undef mktime before #defining it
+ * lib/mktime.c (mktime) [DEBUG]: #undef mktime before #defining it.
+
+ mktime: systematically normalize tm_isdst comparisons
+ * lib/mktime.c (isdst_differ): New function.
+ (__mktime_internal): Use it systematically for all isdst comparisons.
+ This completes the fix for libc BZ #6723, and removes the need for
+ normalizing tm_isdst. See
+ <http://sourceware.org/bugzilla/show_bug.cgi?id=6723>
+ (not_equal_tm) [DEBUG]: Use isdst_differ here, too.
+
+ mktime: fix some integer overflow issues and sidestep the rest
+
+ This was prompted by a bug report by Benjamin Lindner for MinGW
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-01/msg00472.html>.
+ His bug is due to signed integer overflow (0 - INT_MIN), and I
+ I scanned through mktime.c looking for other integer overflow
+ problems, fixing all the bugs I found.
+
+ Although the C Standard says the resulting code is still not safe
+ in the presence of integer overflow, in practice it should be good
+ enough for all real-world two's-complement implementations, except
+ for debugging environments that deliberately trap on integer
+ overflow (e.g., gcc -ftrapv).
+
+ * lib/mktime.c (WRAPV): New macro.
+ (SHR): Also check that long_int and time_t shift right in the
+ usual way, before using the fast-but-unportable method.
+ (TYPE_ONES_COMPLEMENT, TYPE_SIGNED_MAGNITUDE): Remove, no longer
+ used. The code already assumed two's complement, so there's
+ no need to test for alternatives. All uses removed.
+ (TYPE_MAXIMUM): Don't rely here on overflow behavior not defined by
+ the C standard. Problem reported by Rich Felker in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-01/msg00488.html>.
+ (twos_complement_arithmetic): Also check long_int and time_t.
+ (time_t_avg, time_t_add_ok, time_t_int_add_ok): New functions.
+ (guess_time_tm, ranged_convert, __mktime_internal): Use them.
+ (__mktime_internal): Avoid integer overflow with unary subtraction
+ in two instances where -1 - X is an adequate replacement for -X,
+ since the calculations are approximate.
+
+ 2011-01-29 Eric Blake <[email protected]>
+
+ mktime: avoid infinite loop
+ * m4/mktime.m4 (AC_FUNC_MKTIME): Avoid overflow on possibly-signed
+ type; behavior is still undefined but portable to all known targets.
+ Reported by Rich Felker.
+
+ 2011-01-28 Paul Eggert <[email protected]>
+
+ mktime: avoid problems on NetBSD 5 / i386
+ * lib/mktime.c (long_int): New type. This works around a problem
+ on NetBSD 5 / i386, where 'long int' and 'int' are both 32 bits
+ but time_t is 64 bits, and where I expect the existing code is
+ wrong in some cases.
+ (leapyear, ydhms_diff, guess_time_tm, __mktime_internal): Use it.
+ (ydhms_diff): Bring back the compile-time check for wide-enough
+ year and yday.
+
+ mktime: fix misspelling in comment
+ * lib/mktime.c (__mktime_internal): Fix misspelling in comment.
+ This merges all recent glibc changes of importance.
+
+ 2011-01-28 Ralf Wildenhues <[email protected]>
+
+ move-if-change: cope with concurrent mv of identical file.
+ * move-if-change (CMPPROG): Accept environment
+ variable as an override for `cmp'.
+ (usage): Document CMPPROG.
+ Adjust comparison to drop stdout. Cope with failure of mv if
+ the target file exists and is identical to the source, for
+ parallel builds.
+ Report from H.J. Lu against binutils in PR binutils/12283.
+
+2011-01-29 Eli Zaretskii <[email protected]>
+
+ * lib/makefile.w32-in:
+ * lib/getopt_.h: New files.
+
+2011-01-28 Paul Eggert <[email protected]>
+
+ improve fix for MS-DOS file name clash
+ * Makefile.in (DOS_gnulib_comp.m4): Renamed from DOS-gnulib-comp.m4,
+ for portability to POSIX make. Reported by Bruno Haible.
+ (sync-from-gnulib): Copy gl-comp.m4 (if present) back to
+ gnulib-comp.m4 before running gnulib-tool, to prevent old gnulib
+ files from accumulating as garbage. Also reported by Bruno Haible.
+
+2011-01-27 Paul Eggert <[email protected]>
+
+ fix two m4/gnulib-*.m4 file names that clashed under MS-DOS
+ * Makefile.in (DOS-gnulib-comp.m4): New macro.
+ (sync-from-gnulib): Rename m4/gnulib-comp.m4 to m4/gl-comp.m4 to avoid
+ problems with MS-DOS 8+3 file name restrictions.
+ Remove m4/gnulib-cache.m4, as we can live without it. If we kept
+ it, it would also cause problems when extracting Emacs distribution
+ tarballs on MS-DOS hosts.
+ (ACLOCAL_INPUTS): Adjust to file renaming.
+ * aclocal.m4, configure, lib/Makefile.in, src/config.in: Regenerate.
+ * config.guess, config.sub: Sync from gnulib.
+ * m4/gnulib-cache.m4: Remove from repository.
+ * m4/gl-comp.m4: Rename from m4/gnulib-comp.m4.
+
+2011-01-25 Glenn Morris <[email protected]>
+
+ * README: Add a note about ranges in copyright years.
+
+ * configure.in: Set CANNOT_DUMP on ia64 hpux (port from emacs-23).
+
+2011-01-25 Peter O'Gorman <[email protected]> (tiny change)
+
+ * configure.in: Add HP-UX on IA64 (Bug#6811).
+
+2011-01-24 Paul Eggert <[email protected]>
+
+ Remove HAVE_RAW_DECL_CHOWN etc. from config.h
+ * Makefile.in (sync-from-gnulib): Remove m4/warn-on-use.m4,
+ as it is no longer needed.
+ * aclocal.m4, configure, lib/Makefile.in, src/config.in: Regenerate.
+ * configure.in: Invoke the new gnulib macro
+ gl_ASSERT_NO_GNULIB_POSIXCHECK, which removes the need for
+ warn-on-use.m4 and for the HAVE_RAW_DECL_* symbols in config.h.
+ * m4/getopt.m4: Sync from gnulib; this removes the need for
+ HAVE_DECL_OPTRESET and HAVE_DECL_GETOPT_CLIP from config.h.
+ * m4/gnulib-common.m4 (gl_ASSERT_NO_GNULIB_POSIXCHECK):
+ New macro, synced from gnulib.
+ * m4/warn-on-use.m4: Remove.
+
+2011-01-22 Paul Eggert <[email protected]>
+
+ aclocal.m4: put this file back into repository
+ This way, we don't have to assume that the maintainer has
+ the automake package installed. See
+ <http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00746.html>.
+ * .bzrignore: Remove aclocal.m4, undoing the previous change.
+ * Makefile.in (top_maintainer_clean): Do not remove aclocal.m4,
+ undoing the previous change.
+ * aclocal.m4: New file (actually, resurrected).
+
+2011-01-22 Miles Bader <[email protected]>
+
+ * configure.in: Don't zero-out FONTCONFIG_CFLAGS and
+ FONTCONFIG_LIBS when building with XFT (doing so is incorrect, as
+ Emacs directly uses fontconfig, and breaks building when using a
+ strict linker).
+
+2011-01-21 Paul Eggert <[email protected]>
+
+ src/config.in: shrink slightly
+ * configure.in: Invoke the new gnulib macro gl_ASSERT_NO_GNULIB_TESTS.
+ This makes src/config.in a bit smaller, by removing identifiers
+ like GNULIB_TEST_MKTIME that Emacs does not need.
+ * m4/getopt.m4, m4/gnulib-common.m4, m4/include_next.m4:
+ * m4/multiarch.m4, m4/stddef_h.m4, m4/time_h.m4, m4/unistd_h.m4:
+ Sync from gnulib. This removes a few more unnecessary symbols from
+ src/config.in, such as AA_APPLE_UNIVERSAL_BUILD and HAVE_STDDEF_H.
+ * configure, src/config.in: Regenerate.
+
+ aclocal.m4: tweaks to regenerate more conveniently
+ This attempts to act better when the source is in a weird state. See
+ <http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00734.html>.
+ * Makefile.in (am--refresh): Add aclocal.m4, configure, config.in.
+ * .bzrignore: Add aclocal.m4.
+
+2011-01-20 Paul Eggert <[email protected]>
+
+ aclocal.m4: omit auto-generated file from repository
+ * Makefile.in (top_maintainer_clean): Remove aclocal.m4; this undoes
+ the most recent change here.
+ * aclocal.m4: Remove from bzr repository. This file is
+ auto-generated and isn't needed to run 'configure'. See
+ <http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00698.html>.
+
+2011-01-19 Paul Eggert <[email protected]>
+
+ Minor Makefile.in tweaks to build from gnulib better.
+ <http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00673.html>
+ * Makefile.in (sync-from-gnulib): Also run autoreconf -I m4.
+ (top_maintainer_clean): Don't remove aclocal.m4.
+
+2011-01-18 Paul Eggert <[email protected]>
+
+ Minor cleanups for 'bzr status'
+ * .bzrignore: Add emacs-*/, the output of make-dist, and stamp-h1,
+ the output of config.guess.
+ * Makefile.in (top_distclean): Remove stamp-h1 too.
+
+ * configure.in (HAVE_ATTRIBUTE_ALIGNED): Arrange for this to be
+ defined if the compiler supports GCC-style __attribute__
+ ((__aligned__ ...)). IBM AIX and Oracle Solaris Studio support
+ this syntax.
+
+2011-01-17 Paul Eggert <[email protected]>
+
+ Makefile.in: tidy up the building of lib
+ * Makefile.in (am--refresh): Mark as .PHONY.
+ (top_maintainer_clean): Don't remove lib/gnulib.mk m4/gnulib-cache.m4,
+ as they're not rebuilt unless you do a "make sync-from-gnulib"
+ and the former is needed for "configure".
+ (maintainer-clean): Don't recurse into lib, as "make bootstrap-clean"
+ has already removed lib/Makefile.
+
+ * Makefile.in (GNULIB_MODULES): Change ftoastr to dtoastr.
+ This avoids building ftoastr and ldtoastr, which aren't needed. See
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-01/msg00199.html>.
+
+ * .bzrignore: Add .h files that are host-dependent.
+ Add lib/.deps/, lib/arg-nonnull.h, lib/c++defs.h, lib/getopt.h,
+ lib/time.h, lib/unistd.h, lib/warn-on-use.h. These are
+ host-dependent and are built as part of an ordinary 'make', and
+ should not be checked in.
+
+ * lib/Makefile.in: Regenerate.
+ * lib/COPYING: New file, a copy of COPYING.
+
+ * configure: Regenerate.
+ * configure.in (AC_USE_SYSTEM_EXTENSIONS): Remove: gnulib does this.
+
+ Regenerate.
+ * lib/getopt.c, lib/getopt.in.h, lib/getopt1.c, lib/getopt_int.h:
+ * lib/gettext.h, lib/unistd.in.h, m4/unistd_h.m4:
+ New files, copied from gnulib by gnulib-tool.
+ * aclocal.m4, configure, lib/Makefile.in, m4/getopt.m4:
+ * m4/gnulib-cache.m4, m4/gnulib-comp.m4, src/config.in:
+ Regenerate.
+
+ Use gnulib's getopt-gnu module.
+ * Makefile.in (GNULIB_MODULES): Add getopt-gnu.
+ (AUTOCONF_INPUTS): Remove getopt.m4; aclocal.m4 is a good-enough
+ representative of the dependencies.
+ * configure.in: Do not configure getopt, as gnulib does that now.
+ * make-dist: Do not worry about lib-src/getopt.h, as gnulib handles
+ getopt now, in lib.
+
+ Regenerate.
+ * arg-nonnull.h, c++defs.h, lib/mktime-internal.h, lib/mktime.c:
+ * lib/stddef.in.h, lib/time.h, lib/time.in.h, lib/time_r.c:
+ * m4/extensions.m4, m4/include_next.m4, m4/mktime.m4:
+ * m4/multiarch.m4, m4/stddef_h.m4, m4/time_h.m4, m4/time_r.m4:
+ * m4/extensions.m4, m4/include_next.m4, m4/mktime.m4, m4/multiarch.m4:
+ * m4/stddef_h.m4, m4/time_h.m4, m4/time_r.m4, m4/warn-on-use.m4:
+ * m4/wchar_t.m4, warn-on-use.h:
+ New files, copied from gnulib by gnulib-tool.
+ * aclocal.m4, configure, lib/Makefile.in, lib/gnulib.mk:
+ * m4/gnulib-cache.m4, m4/gnulib-comp.m4, src/config.in:
+ Regenerate.
+
+ Use gnulib's mktime module.
+ * Makefile.in (GNULIB_MODULES): Add mktime.
+ * configure.in: Remove code no longer needed, as gnulib now does it.
+ (AC_CHECK_FUNCS): Remove mktime.
+ (AC_FUNC_MKTIME, BROKEN_MKTIME): Remove.
+ (__restrict): Remove, as this now gets in the way of the C99
+ support for 'restrict' pulled in by the gnulib mktime module.
+ Code should now use 'restrict' and not '__restrict".
+ (mktime): Remove.
+ * make-dist: Put gnulib-generated files arg-nonnull.h, c++defs.h,
+ and warn-on-use.h into the distribution.
+
+ Regenerate.
+ * lib/dtoastr.c, lib/ftoastr.c, lib/ftoastr.h, lib/intprops.h:
+ * lib/ldtoastr.c, m4/c-strtod.m4:
+ New files, copied from gnulib by gnulib-tool.
+ * lib/dummy.c: Remove.
+ * aclocal.m4, configure, lib/Makefile.in, lib/gnulib.mk:
+ * m4/gnulib-cache.m4, m4/gnulib-comp.m4, src/config.in:
+ Regenerate.
+
+ Use gnulib's ftoastr module.
+ * Makefile.in (GNULIB_MODULES): Add ftoastr. Remove dummy.
+
+ Regenerate.
+ * aclocal.m4, compile, depcomp, lib/Makefile.in, lib/dummy.c:
+ * lib/gnulib.mk, m4/00gnulib.m4, m4/gnulib-cache.m4:
+ * m4/gnulib-common.m4, m4/gnulib-comp.m4, m4/gnulib-tool.m4, missing:
+ New files, generated automatically, with 'make sync-from-gnulib'
+ followed by 'make'.
+ * configure, lisp/dired.el, src/config.in: Regenerate.
+
+ Automate syncing from gnulib.
+ * INSTALL, README: Document new subdirectory 'lib'.
+ * Makefile.in (SUBDIR): Add lib.
+ (SUBDIR_MAKEFILES): Add lib/Makefile.
+ (lib-src, src, TAGS, tags): Depend on lib.
+ (gnulib_srcdir, GNULIB_MODULES, GNULIB_TOOL_FLAGS): New macros.
+ ($(gnulib_srcdir)): New rule.
+ (sync-from-gnulib): New rule, which is .PHONY.
+ (lib): New rule, which is like lib-src.
+ (Makefile): Depend on lib/Makefile.in.
+ (AUTOCONF_INPUTS): Depend on aclocal.m4.
+ (ACLOCAL_INPUTS, AUTOMAKE_INPUTS): New macros.
+ ($(srcdir)/aclocal.m4, $(srcdir)/lib/Makefile.in): New rules.
+ (am--refresh): New rule, to pacify Automake.
+ (mostlyclean, clean, distclean, bootstrap-clean, maintainer-clean):
+ Clean lib, too.
+ (top_maintainer_clean): New macro, to remove gnulib-tool and Automake
+ droppings.
+ (maintainer-clean, extraclean): Use it.
+ * configure.in: Initialize for automake and gnulib, by invoking
+ AM_INIT_AUTOMAKE, AM_PROG_CC_C_O, gl_EARLY, and gl_INIT. Output
+ lib/Makefile, too. Use automake to build gnulib, as gnulib works
+ more conveniently with automake.
+ * lib/Makefile.am: New file.
+ * make-dist: Also put into the distribution aclocal.m4,
+ compile, depcomp, missing, and the files under lib/.
+
+2011-01-15 Glenn Morris <[email protected]>
+
+ * Makefile.in (epaths-force): No more arch-tag to edit.
+
+2011-01-15 Chong Yidong <[email protected]>
+
+ * configure.in: Bump min libxml2 version to 2.6.17 (Bug#7603).
+
+2011-01-14 Paul Eggert <[email protected]>
+
+ * make-dist: Distribute test/ files too.
+ Distribute every file under test/ that is under version control,
+ using patterns like *.el to capture files that are added later.
+ Without this change, "configure" would fail, because it would
+ attempt to build from a Makefile.in that was not distributed.
+
+2011-01-13 Christian Ohler <[email protected]>
+
+ * Makefile.in (INFO_FILES): Add ERT.
+
+ * Makefile.in (check): Run tests in test/automated.
+
+ * Makefile.in:
+ * configure.in: Add test/automated/Makefile.
+
+2011-01-07 Paul Eggert <[email protected]>
+
+ * install-sh, mkinstalldirs, move-if-change: Update from master
+ source in gnulib.
+
+ * config.guess, config.sub: Updated from master source.
+
+2011-01-05 Andreas Schwab <[email protected]>
+
+ * configure.in: Check for __builtin_unwind_init.
+
+2011-01-05 Glenn Morris <[email protected]>
+
+ * configure.in (HAVE_MAKEINFO): New output variable.
+ (MAKEINFO): Reset to "makeinfo" if not found.
+ * Makefile.in (install-arch-indep, info):
+ Replace MAKEINFO = off with HAVE_MAKEINFO = no.
+
+2010-12-29 Ulrich Mueller <[email protected]>
+
+ * configure.in: Make gameuser configurable (Bug#7717).
+
+2010-12-15 Glenn Morris <[email protected]>
+
+ * Makefile.in (install-arch-dep, uninstall): Remove code relating to the
+ long absent lib-src/fns-*.el.
+
2010-12-11 Glenn Morris <[email protected]>
* make-dist: Exclude etc/*.pyc.
@@ -8661,11 +9068,9 @@
;; Local Variables:
;; coding: utf-8
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993-1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -8681,5 +9086,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: ac61a779-1480-4884-b292-d0c39c127a73
diff --git a/INSTALL b/INSTALL
index 542cf96f12..27a148a32d 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,6 +1,5 @@
GNU Emacs Installation Guide
-Copyright (C) 1992, 1994, 1996, 1997, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010
+Copyright (C) 1992, 1994, 1996-1997, 2000-2011
Free Software Foundation, Inc.
See the end of the file for license conditions.
@@ -675,12 +674,15 @@ the following steps.
`./src/epaths.h' from the template file `./src/epaths.in', changing
the paths to the values specified in `./Makefile'.
-2) Go to directory `./lib-src' and run `make'. This creates
+2) Go to directory `./lib' and run `make'. This creates include files
+and libraries used in later steps.
+
+3) Go to directory `./lib-src' and run `make'. This creates
executables named `etags', `make-docfile', and others.
-3) Go to directory `./src' and run `make'. This refers to files in
-the `./lisp' and `./lib-src' subdirectories using names `../lisp' and
-`../lib-src'.
+4) Go to directory `./src' and run `make'. This refers to files in
+the `./lisp', `./lib', and `./lib-src' subdirectories using names
+`../lisp', `../lib', and `../lib-src'.
This creates a file `./src/emacs' which is the runnable Emacs,
which has another name that contains a version number.
diff --git a/INSTALL.BZR b/INSTALL.BZR
index dafd0b8108..c5e1e62a32 100644
--- a/INSTALL.BZR
+++ b/INSTALL.BZR
@@ -1,5 +1,4 @@
-Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2002-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/Makefile.in b/Makefile.in
index 5466193a7f..e3d2849940 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -2,9 +2,7 @@
# DIST: make most of the changes to this file you might want, so try
# DIST: that first.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-# 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 1992-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -73,7 +71,6 @@ CFLAGS=@CFLAGS@
LDFLAGS=@LDFLAGS@
CPPFLAGS=@CPPFLAGS@
EXEEXT=@EXEEXT@
-MAKEINFO=@MAKEINFO@
### These help us choose version- and architecture-specific directories
### to install files in.
@@ -135,11 +132,14 @@ MAN_PAGES=ctags.1 ebrowse.1 emacs.1 emacsclient.1 etags.1 \
infodir=@infodir@
INFO_FILES=ada-mode auth autotype calc ccmode cl dbus dired-x ebrowse \
ede ediff edt eieio efaq eintr elisp emacs emacs-mime epa erc \
- eshell eudc flymake forms gnus idlwave info mairix-el \
+ ert eshell eudc flymake forms gnus idlwave info mairix-el \
message mh-e newsticker nxml-mode org pcl-cvs pgg rcirc \
reftex remember sasl sc semantic ses sieve smtpmail speedbar \
tramp url vip viper widget woman
+# If no makeinfo was found and configured --without-makeinfo, "no"; else "yes".
+HAVE_MAKEINFO=@HAVE_MAKEINFO@
+
# Directory for local state files for all programs.
localstatedir=@localstatedir@
@@ -258,14 +258,14 @@ EMACSFULL = `echo emacs-${version}${EXEEXT} | sed '$(TRANSFORM)'`
# Subdirectories to make recursively. `lisp' is not included
# because the compiled lisp files are part of the distribution.
# leim is not included because it needs special handling.
-#
+#
# Actually, we now include `lisp' as well, since the compiled files
# are not included any more in case of bootstrap or in case Emacs was
# checked out from a VCS.
-SUBDIR = lib-src src lisp
+SUBDIR = lib lib-src src lisp
# The subdir makefiles created by config.status.
-SUBDIR_MAKEFILES = lib-src/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispref/Makefile doc/lispintro/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile leim/Makefile lisp/Makefile
+SUBDIR_MAKEFILES = lib/Makefile lib-src/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispref/Makefile doc/lispintro/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile leim/Makefile lisp/Makefile test/automated/Makefile
# Subdirectories to install, and where they'll go.
# lib-src's makefile knows how to install it, so we don't do that here.
@@ -298,8 +298,7 @@ epaths-force: FRC
-e 's;\(#.*PATH_BITMAPS\).*$$;\1 "${bitmapdir}";' \
-e 's;\(#.*PATH_X_DEFAULTS\).*$$;\1 "${x_default_search_path}";' \
-e 's;\(#.*PATH_GAME\).*$$;\1 "${gamedir}";' \
- -e 's;\(#.*PATH_DOC\).*$$;\1 "${docdir}";' \
- -e 's;/[*] *arch-tag:.*;/*;') && \
+ -e 's;\(#.*PATH_DOC\).*$$;\1 "${docdir}";') && \
${srcdir}/move-if-change epaths.h.$$$$ src/epaths.h
# For parallel make, src should be built before leim.
@@ -311,6 +310,8 @@ leim: src Makefile FRC
CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
LDFLAGS='${LDFLAGS}' MAKE='${MAKE}')
+lib-src src: lib
+
src: lib-src FRC
.RECURSIVE: ${SUBDIR} leim
@@ -318,8 +319,39 @@ src: lib-src FRC
# We need to build `emacs' in `src' to compile the *.elc files in `lisp'.
lisp: src
+# Maintainers can put a copy of gnulib into $(gnulib_srcdir).
+gnulib_srcdir = ../gnulib
+$(gnulib_srcdir):
+ git clone git://git.savannah.gnu.org/gnulib.git $@
+
+# A shorter name that satisfies MS-DOS 8+3 constraints.
+DOS_gnulib_comp.m4 = gl-comp.m4
+
+# Update modules from gnulib, for maintainers, who should have it in
+# $(gnulib_srcdir) (relative to $(srcdir) and should have build tools
+# as per $(gnulib_srcdir)/DEPENDENCIES.
+GNULIB_MODULES = dtoastr getopt-gnu mktime strftime
+GNULIB_TOOL_FLAGS = \
+ --import --no-changelog --no-vc-files --makefile-name=gnulib.mk
+sync-from-gnulib: $(gnulib_srcdir)
+ -cd $(srcdir)/m4 && cp $(DOS_gnulib_comp.m4) gnulib-comp.m4
+ cd $(srcdir) && \
+ $(gnulib_srcdir)/gnulib-tool $(GNULIB_TOOL_FLAGS) $(GNULIB_MODULES)
+ cd $(srcdir)/m4 && rm gnulib-cache.m4 warn-on-use.m4
+ cd $(srcdir)/m4 && mv gnulib-comp.m4 $(DOS_gnulib_comp.m4)
+ cp $(gnulib_srcdir)/build-aux/texinfo.tex $(srcdir)/doc/misc
+ cp \
+ $(gnulib_srcdir)/build-aux/config.sub \
+ $(gnulib_srcdir)/build-aux/config.guess \
+ $(gnulib_srcdir)/build-aux/install-sh \
+ $(gnulib_srcdir)/build-aux/mkinstalldirs \
+ $(gnulib_srcdir)/build-aux/move-if-change \
+ $(srcdir)
+ cd $(srcdir) && autoreconf -I m4
+.PHONY: sync-from-gnulib
+
# These targets should be "${SUBDIR} without `src'".
-lib-src lisp: Makefile FRC
+lib lib-src lisp: Makefile FRC
cd $@; $(MAKE) all $(MFLAGS) \
CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
LDFLAGS='${LDFLAGS}' MAKE='${MAKE}'
@@ -358,6 +390,7 @@ blessmail: Makefile src FRC
Makefile: config.status $(srcdir)/src/config.in \
$(srcdir)/Makefile.in \
$(srcdir)/src/Makefile.in \
+ $(srcdir)/lib/Makefile.in \
$(srcdir)/lib-src/Makefile.in \
$(srcdir)/doc/emacs/Makefile.in \
$(srcdir)/doc/misc/Makefile.in \
@@ -366,17 +399,28 @@ Makefile: config.status $(srcdir)/src/config.in \
$(srcdir)/oldXMenu/Makefile.in \
$(srcdir)/lwlib/Makefile.in \
$(srcdir)/leim/Makefile.in \
- $(srcdir)/lisp/Makefile.in
+ $(srcdir)/lisp/Makefile.in \
+ $(srcdir)/test/automated/Makefile.in
./config.status
config.status: ${srcdir}/configure ${srcdir}/lisp/version.el
./config.status --recheck
-AUTOCONF_INPUTS = @MAINT@ $(srcdir)/configure.in $(srcdir)/m4/getopt.m4
+AUTOCONF_INPUTS = @MAINT@ $(srcdir)/configure.in $(srcdir)/aclocal.m4
$(srcdir)/configure: $(AUTOCONF_INPUTS)
cd ${srcdir} && autoconf
+ACLOCAL_INPUTS = @MAINT@ $(srcdir)/m4/$(DOS_gnulib_comp.m4)
+$(srcdir)/aclocal.m4: $(ACLOCAL_INPUTS)
+ cd $(srcdir) && aclocal -I m4
+
+AUTOMAKE_INPUTS = @MAINT@ $(srcdir)/aclocal.m4 $(srcdir)/lib/Makefile.am
+$(srcdir)/lib/Makefile.in: $(AUTOMAKE_INPUTS)
+ cd $(srcdir) && automake --gnu -a -c lib/Makefile
+am--refresh: $(srcdir)/aclocal.m4 $(srcdir)/configure $(srcdir)/src/config.in
+.PHONY: am--refresh
+
$(srcdir)/src/config.in: $(srcdir)/src/stamp-h.in
@ # Usually, there's no need to rebuild src/config.in just
@ # because stamp-h.in has changed (since building stamp-h.in
@@ -424,12 +468,6 @@ install-arch-dep: mkdir
-chmod 1755 $(DESTDIR)${bindir}/$(EMACSFULL)
rm -f $(DESTDIR)${bindir}/$(EMACS)
-ln $(DESTDIR)${bindir}/$(EMACSFULL) $(DESTDIR)${bindir}/$(EMACS)
- -unset CDPATH; \
- for f in `cd lib-src && echo fns-*.el`; do \
- if test -r lib-src/$$f ; then \
- ${INSTALL_DATA} lib-src/$$f $(DESTDIR)${archlibdir}/$$f; \
- else true; fi ; \
- done
if test "${ns_appresdir}" != ""; then \
( cd ${ns_appresdir} ; \
if test -d share/emacs ; then dir=share/emacs/*/*; $(MV_DIRS); fi;\
@@ -578,7 +616,7 @@ install-arch-indep: mkdir info install-etc
fi; \
cd ${srcdir}/info ; \
for elt in $(INFO_FILES); do \
- test "$(MAKEINFO)" = "off" && ! test -e $$elt && continue; \
+ test "$(HAVE_MAKEINFO)" = "no" && ! test -e $$elt && continue; \
for f in `ls $$elt $$elt-[1-9] $$elt-[1-9][0-9] 2>/dev/null`; do \
${INSTALL_DATA} $$f $(DESTDIR)${infodir}/$$f; \
chmod a+r $(DESTDIR)${infodir}/$$f; \
@@ -594,7 +632,7 @@ install-arch-indep: mkdir info install-etc
if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd $(DESTDIR)${infodir} && /bin/pwd)` ]; \
then \
for elt in $(INFO_FILES); do \
- test "$(MAKEINFO)" = "off" && ! test -e $$elt && continue; \
+ test "$(HAVE_MAKEINFO)" = "no" && ! test -e $$elt && continue; \
(cd $${thisdir}; \
${INSTALL_INFO} --info-dir=$(DESTDIR)${infodir} $(DESTDIR)${infodir}/$$elt); \
done; \
@@ -682,9 +720,6 @@ uninstall:
esac ; \
fi ; \
done
- if [ -d $(DESTDIR)${archlibdir} ]; then \
- (cd $(DESTDIR)${archlibdir} && rm -f fns-*) \
- fi
-rm -rf $(DESTDIR)${libexecdir}/emacs/${version}
(cd $(DESTDIR)${infodir} && \
for elt in $(INFO_FILES); do \
@@ -717,6 +752,7 @@ mostlyclean: FRC
(cd src; $(MAKE) $(MFLAGS) mostlyclean)
(cd oldXMenu; $(MAKE) $(MFLAGS) mostlyclean)
(cd lwlib; $(MAKE) $(MFLAGS) mostlyclean)
+ (cd lib; $(MAKE) $(MFLAGS) mostlyclean)
(cd lib-src; $(MAKE) $(MFLAGS) mostlyclean)
-(cd doc/emacs && $(MAKE) $(MFLAGS) mostlyclean)
-(cd doc/misc && $(MAKE) $(MFLAGS) mostlyclean)
@@ -736,6 +772,7 @@ clean: FRC
(cd src; $(MAKE) $(MFLAGS) clean)
(cd oldXMenu; $(MAKE) $(MFLAGS) clean)
(cd lwlib; $(MAKE) $(MFLAGS) clean)
+ (cd lib; $(MAKE) $(MFLAGS) clean)
(cd lib-src; $(MAKE) $(MFLAGS) clean)
-(cd doc/emacs && $(MAKE) $(MFLAGS) clean)
-(cd doc/misc && $(MAKE) $(MFLAGS) clean)
@@ -755,11 +792,12 @@ top_bootclean=\
### distribution.
top_distclean=\
${top_bootclean}; \
- rm -f config.status Makefile ${SUBDIR_MAKEFILES}
+ rm -f config.status Makefile stamp-h1 ${SUBDIR_MAKEFILES}
distclean: FRC
(cd src; $(MAKE) $(MFLAGS) distclean)
(cd oldXMenu; $(MAKE) $(MFLAGS) distclean)
(cd lwlib; $(MAKE) $(MFLAGS) distclean)
+ (cd lib; $(MAKE) $(MFLAGS) distclean)
(cd lib-src; $(MAKE) $(MFLAGS) distclean)
(cd doc/emacs && $(MAKE) $(MFLAGS) distclean)
(cd doc/misc && $(MAKE) $(MFLAGS) distclean)
@@ -776,6 +814,7 @@ bootstrap-clean: FRC
(cd src; $(MAKE) $(MFLAGS) bootstrap-clean)
(cd oldXMenu; $(MAKE) $(MFLAGS) maintainer-clean)
(cd lwlib; $(MAKE) $(MFLAGS) maintainer-clean)
+ (cd lib; $(MAKE) $(MFLAGS) maintainer-clean)
(cd lib-src; $(MAKE) $(MFLAGS) maintainer-clean)
-(cd doc/emacs && $(MAKE) $(MFLAGS) maintainer-clean)
-(cd doc/misc && $(MAKE) $(MFLAGS) maintainer-clean)
@@ -796,10 +835,13 @@ bootstrap-clean: FRC
### Makefile. More generally, `make maintainer-clean' should not delete
### anything that needs to exist in order to run `configure' and then
### begin to build the program.
+top_maintainer_clean=\
+ ${top_distclean}; \
+ rm -fr autom4te.cache
maintainer-clean: bootstrap-clean FRC
(cd src; $(MAKE) $(MFLAGS) maintainer-clean)
(cd lisp; $(MAKE) $(MFLAGS) maintainer-clean)
- ${top_distclean}
+ ${top_maintainer_clean}
### This doesn't actually appear in the coding standards, but Karl
### says GCC supports it, and that's where the configuration part of
@@ -807,24 +849,24 @@ maintainer-clean: bootstrap-clean FRC
### it deletes backup and autosave files too.
extraclean:
for i in ${SUBDIR} leim; do (cd $$i; $(MAKE) $(MFLAGS) extraclean); done
- ${top_distclean}
+ ${top_maintainer_clean}
-rm -f config-tmp-*
-rm -f *~ \#*
# The src subdir knows how to do the right thing
# even when the build directory and source dir are different.
-TAGS tags: lib-src src
+TAGS tags: lib lib-src src
cd src; $(MAKE) tags
check:
- @echo "We don't have any tests for GNU Emacs yet."
+ cd test/automated; $(MAKE) check
dist:
cd ${srcdir}; ./make-dist
.PHONY: info dvi dist check html
-info-real:
+info-real:
(cd doc/emacs; $(MAKE) $(MFLAGS) info)
(cd doc/misc; $(MAKE) $(MFLAGS) info)
(cd doc/lispref; $(MAKE) $(MFLAGS) info)
@@ -843,7 +885,7 @@ force-info:
# and it's not worth it. This case is only relevant if you download a
# release, then change the .texi files.
info: force-info
- @if test "$(MAKEINFO)" = "off"; then \
+ @if test "$(HAVE_MAKEINFO)" = "no"; then \
echo "Configured --without-makeinfo, not building manuals" ; \
else \
$(MAKE) $(MFLAGS) info-real ; \
diff --git a/README b/README
index 1dba713231..4897deb348 100644
--- a/README
+++ b/README
@@ -1,5 +1,4 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
@@ -63,6 +62,7 @@ There are several subdirectories:
`leim' holds the library of Emacs input methods, Lisp code and
auxiliary data files required to type international characters
which can't be directly produced by your keyboard.
+`lib' holds source code for libraries used by Emacs and its utilities
`lib-src' holds the source code for some utility programs for use by or
with Emacs, like movemail and etags.
`etc' holds miscellaneous architecture-independent data files Emacs
@@ -89,6 +89,14 @@ of the standard distribution of the OS. The platform-specific README
files and installation instructions should list the required tools.
+NOTE ON COPYRIGHT YEARS
+
+In copyright notices where the copyright holder is the Free Software
+Foundation, then where a range of years appears, this is an inclusive
+range that applies to every year in the range. For example: 2005-2008
+represents the years 2005, 2006, 2007, and 2008.
+
+
This file is part of GNU Emacs.
GNU Emacs is free software: you can redistribute it and/or modify
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000000..62d57bb59f
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,1003 @@
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
+[m4_warning([this file was generated for autoconf 2.68.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.11.1], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 10
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 16
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+ [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([m4/00gnulib.m4])
+m4_include([m4/c-strtod.m4])
+m4_include([m4/extensions.m4])
+m4_include([m4/getopt.m4])
+m4_include([m4/gl-comp.m4])
+m4_include([m4/gnulib-common.m4])
+m4_include([m4/include_next.m4])
+m4_include([m4/mktime.m4])
+m4_include([m4/multiarch.m4])
+m4_include([m4/stdbool.m4])
+m4_include([m4/stddef_h.m4])
+m4_include([m4/strftime.m4])
+m4_include([m4/time_h.m4])
+m4_include([m4/time_r.m4])
+m4_include([m4/tm_gmtoff.m4])
+m4_include([m4/unistd_h.m4])
+m4_include([m4/wchar_t.m4])
diff --git a/admin/CPP-DEFINES b/admin/CPP-DEFINES
index 0346bb2e62..7febc93bb3 100644
--- a/admin/CPP-DEFINES
+++ b/admin/CPP-DEFINES
@@ -382,4 +382,3 @@ wait
write
xfree
-# arch-tag: bc80061a-1168-4911-9766-46aaf2640250
diff --git a/admin/ChangeLog b/admin/ChangeLog
index f5c52f0937..6f2ac5d67d 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,3 +1,85 @@
+2011-01-31 Paul Eggert <[email protected]>
+
+ src/emacs.c now gets version number from configure.in
+ * admin.el (set-version): Don't update src/emacs.c.
+ * quick-install-emacs (VERSION): Get it from configure.in, not from
+ src/emacs.c.
+
+2011-01-30 Paul Eggert <[email protected]>
+
+ strftime: import from gnulib
+ * notes/copyright: strftime.c moved from src to lib.
+
+2011-01-25 Glenn Morris <[email protected]>
+
+ * bzrmerge.el (bzrmerge-skip-regexp): New variable.
+ (bzrmerge-missing): Use it.
+
+2011-01-19 Paul Eggert <[email protected]>
+
+ * make-tarball.txt: Suggest 'autoreconf -I m4 --force'
+ rather than doing rm and autoconf by hand. See
+ <http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00673.html>.
+
+2011-01-17 Paul Eggert <[email protected]>
+
+ * notes/bzr (Installing changes from gnulib): New section.
+ Need for this suggested by Stefan Monnier.
+
+2011-01-17 Stefan Monnier <[email protected]>
+
+ * bzrmerge.el (bzrmerge-apply): Warn the user when the tree might be in
+ an inconsistent state.
+
+2011-01-17 Paul Eggert <[email protected]>
+
+ Update copyright notes to match recent gnulib-related changes.
+ * notes/copyright: Add aclocal.m4, m4/*.m4, lib/Makefile.in,
+ arg-nonnull.h, c++defs.h, compile, depcomp, missing,
+ warn-on-use.h, lib/*.[ch], lib/gnulib.mk. Remove src/mktime.c,
+ lib-src/getopt1.c, lib-src/getopt_int.h (files are now in lib and
+ are subsumed by the lib/*.[ch] rule). Remove m4/getopt.m4 (now
+ subsumed by m4/*.m4 rule). config.guess, config.sub, and
+ doc/man/texinfo.tex are now copied in from gnulib.
+
+2011-01-15 Glenn Morris <[email protected]>
+
+ * charsets/cp51932.awk, charsets/eucjp-ms.awk: No longer print arch-tag.
+
+ * bzrmerge.el (bzrmerge-missing): Add another skip indicator.
+ (bzrmerge-resolve): Also ignore cl-loaddefs.el.
+
+2011-01-14 Glenn Morris <[email protected]>
+
+ * admin.el (set-copyright): Also handle \year in refcards/*.tex.
+
+2011-01-14 Glenn Morris <[email protected]>
+
+ * bzrmerge.el: Require cl when compiling.
+ (bzrmerge-merges): Doc fix.
+
+2011-01-07 Paul Eggert <[email protected]>
+
+ * notes/copyright: There's only one install-sh, not two, so fix a
+ typo claiming that there's two. Add move-if-change to the list of
+ GPL files imported from gnulib.
+
+2011-01-07 Paul Eggert <[email protected]>
+
+ * notes/copyright: Report status more accurately for non-GPL files.
+ Report copyright status more accurately for mkinstalldirs,
+ configure, m4/getopt.m4, and msdos/sed*.inp.
+
+2011-01-02 Eli Zaretskii <[email protected]>
+
+ * nt/README.W32: Update the information about PNG support libraries.
+ (Bug#7716)
+
+2010-12-27 Stefan Monnier <[email protected]>
+
+ * bzrmerge.el: New file to help merge branches while skipping
+ some revisions (e.g. from emacs-23 to trunk).
+
2010-12-03 Andreas Schwab <[email protected]>
* CPP-DEFINES (EXPLICIT_SIGN_EXTEND): Remove.
@@ -967,11 +1049,9 @@
;; Local Variables:
;; coding: utf-8
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -987,5 +1067,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: 97728c77-77c0-4156-b669-0e8c07d94e5a
diff --git a/admin/MAINTAINERS b/admin/MAINTAINERS
index 432e4f5cf9..1d988a2562 100644
--- a/admin/MAINTAINERS
+++ b/admin/MAINTAINERS
@@ -216,4 +216,3 @@ src/xrdb.c
src/xselect.c
src/xterm.c
-;;; arch-tag: 869126d4-4851-41b2-8470-14dd492a3c98
diff --git a/admin/README b/admin/README
index 694f206baa..4dd1705fe7 100644
--- a/admin/README
+++ b/admin/README
@@ -1,5 +1,4 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
@@ -90,4 +89,3 @@ mode: outline
paragraph-separate: "[ ]*$"
end:
-# arch-tag: 812b9461-bc0a-46a7-925e-24bd41118463
diff --git a/admin/admin.el b/admin/admin.el
index 7cd2c02fb5..739c769b35 100644
--- a/admin/admin.el
+++ b/admin/admin.el
@@ -1,7 +1,6 @@
;;; admin.el --- utilities for Emacs administration
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -60,9 +59,6 @@ Root must be the root of an Emacs source tree."
(interactive "DEmacs root directory: \nsVersion number: ")
(unless (file-exists-p (expand-file-name "src/emacs.c" root))
(error "%s doesn't seem to be the root of an Emacs source tree" root))
- (set-version-in-file root "src/emacs.c" version
- (rx (and "emacs_version" (0+ (not (in ?\")))
- ?\" (submatch (1+ (not (in ?\")))) ?\")))
(set-version-in-file root "README" version
(rx (and "version" (1+ space)
(submatch (1+ (in "0-9."))))))
@@ -160,7 +156,6 @@ Root must be the root of an Emacs source tree."
version (rx (and "Version=" (submatch (1+ (in "0-9.")))))))
;; Note this makes some assumptions about form of short copyright.
-;; FIXME add the \year in the refcards/*.tex files.
(defun set-copyright (root copyright)
"Set Emacs short copyright to COPYRIGHT in relevant files under ROOT.
Root must be the root of an Emacs source tree."
@@ -174,16 +169,16 @@ Root must be the root of an Emacs source tree."
(error "%s doesn't seem to be the root of an Emacs source tree" root))
(set-version-in-file root "src/emacs.c" copyright
(rx (and "emacs_copyright" (0+ (not (in ?\")))
- ?\" (submatch (1+ (not (in ?\")))) ?\")))
+ ?\" (submatch (1+ (not (in ?\")))) ?\")))
(set-version-in-file root "lib-src/ebrowse.c" copyright
(rx (and "emacs_copyright" (0+ (not (in ?\")))
- ?\" (submatch (1+ (not (in ?\")))) ?\")))
+ ?\" (submatch (1+ (not (in ?\")))) ?\")))
(set-version-in-file root "lib-src/etags.c" copyright
(rx (and "emacs_copyright" (0+ (not (in ?\")))
- ?\" (submatch (1+ (not (in ?\")))) ?\")))
+ ?\" (submatch (1+ (not (in ?\")))) ?\")))
(set-version-in-file root "lib-src/rcs2log" copyright
- (rx (and "Copyright" (0+ space) ?= (0+ space)
- ?\' (submatch (1+ nonl)))))
+ (rx (and "Copyright" (0+ space) ?= (0+ space)
+ ?\' (submatch (1+ nonl)))))
;; This one is a nuisance, as it needs to be split over two lines.
(string-match "\\(.*[0-9]\\{4\\} *\\)\\(.*\\)" copyright)
;; nextstep.
@@ -199,7 +194,18 @@ Root must be the root of an Emacs source tree."
(set-version-in-file
root "nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist"
copyright (rx (and "Copyright" (0+ space) ?\= (0+ space)
- ?\" (submatch (1+ (not (in ?\"))))))))
+ ?\" (submatch (1+ (not (in ?\")))))))
+ (when (string-match "\\([0-9]\\{4\\}\\)" copyright)
+ (setq copyright (match-string 1 copyright))
+ (dolist (file (directory-files (expand-file-name "etc/refcards" root)
+ t "\\.tex\\'"))
+ (unless (string-match "gnus-refcard\\.tex" file)
+ (set-version-in-file
+ root file copyright
+ (concat (if (string-match "ru-refcard\\.tex" file)
+ "\\\\newcommand{\\\\cyear}\\[0\\]{"
+ "\\\\def\\\\year{")
+ "\\([0-9]\\{4\\}\\)}.+%.+copyright year"))))))
(provide 'admin)
diff --git a/admin/alloc-colors.c b/admin/alloc-colors.c
index 8ff699382a..e09ddd62b9 100644
--- a/admin/alloc-colors.c
+++ b/admin/alloc-colors.c
@@ -1,6 +1,6 @@
/* Allocate X colors. Used for testing with dense colormaps.
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -112,5 +112,3 @@ main (int argc, char **argv)
return 0;
}
-/* arch-tag: f1be90ac-5b70-43c2-835e-5a6432a25145
- (do not change this comment) */
diff --git a/admin/build-configs b/admin/build-configs
index e20024ff66..79ba58aeec 100755
--- a/admin/build-configs
+++ b/admin/build-configs
@@ -1,8 +1,7 @@
#! /usr/bin/perl
# Build Emacs in several different configurations.
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 2001-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -97,4 +96,3 @@ foreach $config (@configs)
# mode: cperl
# End:
-# arch-tag: 20a4452d-610a-4e54-9abc-ffe79f5c0d30
diff --git a/admin/bzrmerge.el b/admin/bzrmerge.el
new file mode 100644
index 0000000000..e9fd0ea00f
--- /dev/null
+++ b/admin/bzrmerge.el
@@ -0,0 +1,316 @@
+;;; bzrmerge.el ---
+
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+;; Author: Stefan Monnier <[email protected]>
+;; Keywords:
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+(eval-when-compile
+ (require 'cl)) ; assert
+
+(defvar bzrmerge-skip-regexp
+ "back[- ]?port\\|merge\\|sync\\|re-?generate\\|bump version"
+ "Regexp matching logs of revisions that might be skipped.
+`bzrmerge-missing' will ask you if it should skip any matches.")
+
+(defun bzrmerge-merges ()
+ "Return the list of already merged (not yet committed) revisions.
+The list returned is sorted by oldest-first."
+ (with-current-buffer (get-buffer-create "*bzrmerge*")
+ (erase-buffer)
+ ;; We generally want to make sure we start with a clean tree, but we also
+ ;; want to allow restarts (i.e. with some part of FROM already merged but
+ ;; not yet committed).
+ (call-process "bzr" nil t nil "status" "-v")
+ (goto-char (point-min))
+ (when (re-search-forward "^conflicts:\n" nil t)
+ (error "You still have unresolved conflicts"))
+ (let ((merges ()))
+ (if (not (re-search-forward "^pending merges:\n" nil t))
+ (when (save-excursion
+ (goto-char (point-min))
+ (re-search-forward "^[a-z ]*:\n" nil t))
+ (error "You still have uncommitted changes"))
+ ;; This is really stupid, but it seems there's no easy way to figure
+ ;; out which revisions have been merged already. The only info I can
+ ;; find is the "pending merges" from "bzr status -v", which is not
+ ;; very machine-friendly.
+ (while (not (eobp))
+ (skip-chars-forward " ")
+ (push (buffer-substring (point) (line-end-position)) merges)
+ (forward-line 1)))
+ merges)))
+
+(defun bzrmerge-check-match (merge)
+ ;; Make sure the MERGES match the revisions on the FROM branch.
+ ;; Stupidly the best form of MERGES I can find is the one from
+ ;; "bzr status -v" which is very machine non-friendly, so I have
+ ;; to do some fuzzy matching.
+ (let ((author
+ (or
+ (save-excursion
+ (if (re-search-forward "^author: *\\([^<]*[^ ]\\) +<.*"
+ nil t)
+ (match-string 1)))
+ (save-excursion
+ (if (re-search-forward
+ "^committer: *\\([^<]*[^< ]\\) +<" nil t)
+ (match-string 1)))))
+ (timestamp
+ (save-excursion
+ (if (re-search-forward
+ "^timestamp:[^0-9]*\\([-0-9]+\\)" nil t)
+ (match-string 1))))
+ (line1
+ (save-excursion
+ (if (re-search-forward "^message:[ \n]*" nil t)
+ (buffer-substring (point) (line-end-position))))))
+ ;; The `merge' may have a truncated line1 with "...", so get
+ ;; rid of any "..." and then look for a prefix match.
+ (when (string-match "\\.+\\'" merge)
+ (setq merge (substring merge 0 (match-beginning 0))))
+ (or (string-prefix-p
+ merge (concat author " " timestamp " " line1))
+ (string-prefix-p
+ merge (concat author " " timestamp " [merge] " line1)))))
+
+(defun bzrmerge-missing (from merges)
+ "Return the list of revisions that need to be merged.
+MERGES is the revisions already merged but not yet committed.
+Asks about skipping revisions with logs matching `bzrmerge-skip-regexp'.
+The result is of the form (TOMERGE . TOSKIP) where TOMERGE and TOSKIP
+are both lists of revnos, in oldest-first order."
+ (with-current-buffer (get-buffer-create "*bzrmerge*")
+ (erase-buffer)
+ (call-process "bzr" nil t nil "missing" "--theirs-only"
+ (expand-file-name from))
+ (let ((revnos ()) (skipped ()))
+ (pop-to-buffer (current-buffer))
+ (goto-char (point-max))
+ (while (re-search-backward "^------------------------------------------------------------\nrevno: \\([0-9.]+\\).*" nil t)
+ (save-excursion
+ (if merges
+ (while (not (bzrmerge-check-match (pop merges)))
+ (unless merges
+ (error "Unmatched tip of merged revisions")))
+ (let ((case-fold-search t)
+ (revno (match-string 1))
+ (skip nil))
+ (if (string-match "\\." revno)
+ (error "Unexpected dotted revno!")
+ (setq revno (string-to-number revno)))
+ (re-search-forward "^message:\n")
+ (while (and (not skip)
+ (re-search-forward bzrmerge-skip-regexp nil t))
+ (let ((str (buffer-substring (line-beginning-position)
+ (line-end-position))))
+ (when (string-match "\\` *" str)
+ (setq str (substring str (match-end 0))))
+ (when (string-match "[.!;, ]+\\'" str)
+ (setq str (substring str 0 (match-beginning 0))))
+ (if (save-excursion (y-or-n-p (concat str ": Skip? ")))
+ (setq skip t))))
+ (if skip
+ (push revno skipped)
+ (push revno revnos)))))
+ (delete-region (point) (point-max)))
+ (cons (nreverse revnos) (nreverse skipped)))))
+
+(defun bzrmerge-resolve (file)
+ (unless (file-exists-p file) (error "Bzrmerge-resolve: Can't find %s" file))
+ (with-demoted-errors
+ (let ((exists (find-buffer-visiting file)))
+ (with-current-buffer (find-file-noselect file)
+ (if (buffer-modified-p)
+ (error "Unsaved changes in %s" (current-buffer)))
+ (save-excursion
+ (cond
+ ((derived-mode-p 'change-log-mode)
+ ;; Fix up dates before resolving the conflicts.
+ (goto-char (point-min))
+ (let ((diff-auto-refine-mode nil))
+ (while (re-search-forward smerge-begin-re nil t)
+ (smerge-match-conflict)
+ (smerge-ensure-match 3)
+ (let ((start1 (match-beginning 1))
+ (end1 (match-end 1))
+ (start3 (match-beginning 3))
+ (end3 (copy-marker (match-end 3) t)))
+ (goto-char start3)
+ (while (re-search-forward change-log-start-entry-re end3 t)
+ (let* ((str (match-string 0))
+ (newstr (save-match-data
+ (concat (add-log-iso8601-time-string)
+ (when (string-match " *\\'" str)
+ (match-string 0 str))))))
+ (replace-match newstr t t)))
+ ;; change-log-resolve-conflict prefers to put match-1's
+ ;; elements first (for equal dates), whereas we want to put
+ ;; match-3's first.
+ (let ((match3 (buffer-substring start3 end3))
+ (match1 (buffer-substring start1 end1)))
+ (delete-region start3 end3)
+ (goto-char start3)
+ (insert match1)
+ (delete-region start1 end1)
+ (goto-char start1)
+ (insert match3)))))
+ ;; (pop-to-buffer (current-buffer)) (debug 'before-resolve)
+ ))
+ ;; Try to resolve the conflicts.
+ (cond
+ ((member file '("configure" "lisp/ldefs-boot.el"
+ "lisp/emacs-lisp/cl-loaddefs.el"))
+ (call-process "bzr" nil t nil "revert" file)
+ (revert-buffer nil 'noconfirm))
+ (t
+ (goto-char (point-max))
+ (while (re-search-backward smerge-begin-re nil t)
+ (save-excursion
+ (ignore-errors
+ (smerge-match-conflict)
+ (smerge-resolve))))
+ ;; (when (derived-mode-p 'change-log-mode)
+ ;; (pop-to-buffer (current-buffer)) (debug 'after-resolve))
+ (save-buffer)))
+ (goto-char (point-min))
+ (prog1 (re-search-forward smerge-begin-re nil t)
+ (unless exists (kill-buffer))))))))
+
+(defun bzrmerge-add-metadata (from endrevno)
+ "Add the metadata for a merge of FROM upto ENDREVNO.
+Does not make other difference."
+ (if (with-temp-buffer
+ (call-process "bzr" nil t nil "status")
+ (goto-char (point-min))
+ (re-search-forward "^conflicts:\n" nil t))
+ (error "Don't know how to add metadata in the presence of conflicts")
+ (call-process "bzr" nil t nil "shelve" "--all"
+ "-m" "Bzrmerge shelved merge during skipping")
+ (call-process "bzr" nil t nil "revert")
+ (call-process "bzr" nil t nil
+ "merge" "-r" (format "%s" endrevno) from)
+ (call-process "bzr" nil t nil "revert" ".")
+ (call-process "bzr" nil t nil "unshelve")))
+
+(defvar bzrmerge-already-done nil)
+
+(defun bzrmerge-apply (missing from)
+ (setq from (expand-file-name from))
+ (with-current-buffer (get-buffer-create "*bzrmerge*")
+ (erase-buffer)
+ (when (equal (cdr bzrmerge-already-done) (list from missing))
+ (setq missing (car bzrmerge-already-done)))
+ (setq bzrmerge-already-done nil)
+ (let ((merge (car missing))
+ (skip (cdr missing))
+ (unsafe nil)
+ beg end)
+ (when (or merge skip)
+ (cond
+ ((and skip (or (null merge) (< (car skip) (car merge))))
+ ;; Do a "skip" (i.e. merge the meta-data only).
+ (setq beg (1- (car skip)))
+ (while (and skip (or (null merge) (< (car skip) (car merge))))
+ (assert (> (car skip) (or end beg)))
+ (setq end (pop skip)))
+ (message "Skipping %s..%s" beg end)
+ (bzrmerge-add-metadata from end))
+
+ (t
+ ;; Do a "normal" merge.
+ (assert (or (null skip) (< (car merge) (car skip))))
+ (setq beg (1- (car merge)))
+ (while (and merge (or (null skip) (< (car merge) (car skip))))
+ (assert (> (car merge) (or end beg)))
+ (setq end (pop merge)))
+ (message "Merging %s..%s" beg end)
+ (if (with-temp-buffer
+ (call-process "bzr" nil t nil "status")
+ (zerop (buffer-size)))
+ (call-process "bzr" nil t nil
+ "merge" "-r" (format "%s" end) from)
+ ;; Stupidly, "bzr merge --force -r A..B" dos not maintain the
+ ;; metadata properly except when the checkout is clean.
+ (call-process "bzr" nil t nil "merge"
+ "--force" "-r" (format "%s..%s" beg end) from)
+ ;; The merge did not update the metadata, so force the next time
+ ;; around to update it (as a "skip").
+ (setq unsafe t)
+ (push end skip))
+ (pop-to-buffer (current-buffer))
+ (sit-for 1)
+ ;; (debug 'after-merge)
+ ;; Check the conflicts.
+ (let ((conflicted nil)
+ (files ()))
+ (goto-char (point-min))
+ (when (re-search-forward "bzr: ERROR:" nil t)
+ (error "Internal Bazaar error!!"))
+ (while (re-search-forward "^Text conflict in " nil t)
+ (push (buffer-substring (point) (line-end-position)) files))
+ (if (re-search-forward "^\\([0-9]+\\) conflicts encountered" nil t)
+ (if (/= (length files) (string-to-number (match-string 1)))
+ (setq conflicted t))
+ (if files (setq conflicted t)))
+ (dolist (file files)
+ (if (bzrmerge-resolve file)
+ (setq conflicted t)))
+ (when conflicted
+ (setq bzrmerge-already-done
+ (list (cons merge skip) from missing))
+ (if unsafe
+ ;; FIXME: Obviously, we'd rather make it right rather
+ ;; than output such a warning. But I don't know how to add
+ ;; the metadata to bzr's since the technique used in
+ ;; bzrmerge-add-metadata does not work when there
+ ;; are conflicts.
+ (display-warning 'bzrmerge "Resolve conflicts manually.
+¡BEWARE! Important metadata is kept in this Emacs session!
+Do not commit without re-running `M-x bzrmerge' first!"))
+ (error "Resolve conflicts manually")))))
+ (cons merge skip)))))
+
+(defun bzrmerge (from)
+ "Merge from branch FROM into `default-directory'."
+ (interactive
+ (list
+ (let ((def
+ (with-temp-buffer
+ (call-process "bzr" nil t nil "info")
+ (goto-char (point-min))
+ (when (re-search-forward "submit branch: *" nil t)
+ (buffer-substring (point) (line-end-position))))))
+ (read-file-name "From branch: " nil nil nil def))))
+ (message "Merging from %s..." from)
+ (require 'vc-bzr)
+ (let ((default-directory (or (vc-bzr-root default-directory)
+ (error "Not in a Bzr tree"))))
+ ;; First, check the status.
+ (let* ((merges (bzrmerge-merges))
+ ;; OK, we have the status, now check the missing data.
+ (missing (bzrmerge-missing from merges)))
+ (while missing
+ (setq missing (bzrmerge-apply missing from))))))
+
+(provide 'bzrmerge)
+;;; bzrmerge.el ends here
diff --git a/admin/charsets/Makefile b/admin/charsets/Makefile
index a93b18b63c..b16e7ccd74 100644
--- a/admin/charsets/Makefile
+++ b/admin/charsets/Makefile
@@ -1,5 +1,5 @@
# Makefile -- Makefile to generate charset maps in etc/charsets.
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
#
@@ -307,4 +307,3 @@ install:
clean:
rm -f ${CHARSETS} ${TRANS_TABLE}
-# arch-tag: 90b3bf30-1fef-45bf-b30c-665c30c22310
diff --git a/admin/charsets/big5.awk b/admin/charsets/big5.awk
index a0113a6677..7482d11a2d 100644
--- a/admin/charsets/big5.awk
+++ b/admin/charsets/big5.awk
@@ -1,4 +1,4 @@
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
@@ -70,4 +70,3 @@ function decode_big5(big5) {
}
-# arch-tag: 36f08d21-0d24-4b67-852d-a9a51299586d
diff --git a/admin/charsets/compact.awk b/admin/charsets/compact.awk
index f84715e1d8..b7d1fd19d8 100644
--- a/admin/charsets/compact.awk
+++ b/admin/charsets/compact.awk
@@ -1,5 +1,5 @@
# compact.awk -- Make charset map compact.
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
@@ -120,4 +120,3 @@ END {
}
}
-# arch-tag: 7e6f57c3-8e62-4af3-8916-ca67bca3a0ce
diff --git a/admin/charsets/cp51932.awk b/admin/charsets/cp51932.awk
index 387f314fe3..39ccc1c7dc 100644
--- a/admin/charsets/cp51932.awk
+++ b/admin/charsets/cp51932.awk
@@ -1,5 +1,5 @@
# cp51932.awk -- Generate a translation table for CP51932.
-# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
@@ -52,8 +52,4 @@ END {
print " (setcar x (cdr x)) (setcdr x tmp)))";
print " map)";
print " (define-translation-table 'cp51932-encode map))";
- print "";
- print ";; arch-tag: d21c06e5-a548-4dda-8802-c2922ff19da3";
}
-
-# arch-tag: bbae996b-2d1c-4e85-bb55-ac30146d7504
diff --git a/admin/charsets/cp932.awk b/admin/charsets/cp932.awk
index 397f025ace..acba033337 100644
--- a/admin/charsets/cp932.awk
+++ b/admin/charsets/cp932.awk
@@ -1,5 +1,5 @@
# cp932.awk -- Add sort keys and append user defined area to CP932-2BYTE.map.
-# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
@@ -114,4 +114,3 @@ END {
}
}
-# arch-tag: 998dc444-759d-43ef-87e3-2ab205011394
diff --git a/admin/charsets/eucjp-ms.awk b/admin/charsets/eucjp-ms.awk
index f5876777b0..18c19f5fb5 100644
--- a/admin/charsets/eucjp-ms.awk
+++ b/admin/charsets/eucjp-ms.awk
@@ -1,5 +1,5 @@
# eucjp-ms.awk -- Generate a translation table for eucJP-ms.
-# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
@@ -106,8 +106,5 @@ END {
print " (setcar x (cdr x)) (setcdr x tmp)))";
print " map)";
print " (define-translation-table 'eucjp-ms-encode map))";
- print "";
- print ";; arch-tag: c4191096-288a-4f13-9b2a-ee7a1f11eb4a";
}
-# arch-tag: d9cc7af7-2d6e-48cd-8eed-a6d25226de7c
diff --git a/admin/charsets/gb180302.awk b/admin/charsets/gb180302.awk
index fd8748f50b..6cd9521ce9 100644
--- a/admin/charsets/gb180302.awk
+++ b/admin/charsets/gb180302.awk
@@ -1,4 +1,4 @@
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
@@ -98,4 +98,3 @@ END {
index_to_gb(from_gb), index_to_gb(to_gb), from_unicode;
}
-# arch-tag: d7dbad89-a512-41a4-8ee0-ba1a4505b8c1
diff --git a/admin/charsets/gb180304.awk b/admin/charsets/gb180304.awk
index 43e2b47484..3c16cb556e 100644
--- a/admin/charsets/gb180304.awk
+++ b/admin/charsets/gb180304.awk
@@ -1,4 +1,4 @@
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
@@ -120,4 +120,3 @@ END {
}
}
-# arch-tag: 8e5a22ae-610e-411f-ae17-d6e528b30d71
diff --git a/admin/charsets/kuten.awk b/admin/charsets/kuten.awk
index 9d43f2e0e8..2bc58c438d 100644
--- a/admin/charsets/kuten.awk
+++ b/admin/charsets/kuten.awk
@@ -4,4 +4,3 @@
printf "0x%02X%02X %s\n", ku, ten, $2;
}
-# arch-tag: dade6b45-b4c5-42ab-9d49-d6bf23a710b6
diff --git a/admin/charsets/mapconv b/admin/charsets/mapconv
index 8994307493..4f7a8b96f5 100755
--- a/admin/charsets/mapconv
+++ b/admin/charsets/mapconv
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
@@ -143,4 +143,3 @@ else
exit 1
fi
-# arch-tag: c33acb47-7eb6-4872-b871-15e1447e8f0e
diff --git a/admin/charsets/mapfiles/README b/admin/charsets/mapfiles/README
index 3e09cfd098..c1804af98c 100644
--- a/admin/charsets/mapfiles/README
+++ b/admin/charsets/mapfiles/README
@@ -1,5 +1,5 @@
-Copyright (C) 2009, 2010 Free Software Foundation, Inc.
-Copyright (C) 2009, 2010
+Copyright (C) 2009-2011 Free Software Foundation, Inc.
+Copyright (C) 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H13PRO009
See the end of the file for license conditions.
diff --git a/admin/charsets/mule-charsets.el b/admin/charsets/mule-charsets.el
index 07708bcd5a..59969c3df2 100644
--- a/admin/charsets/mule-charsets.el
+++ b/admin/charsets/mule-charsets.el
@@ -1,5 +1,5 @@
;; mule-charsets.el -- Generate Mule-orignal charset maps.
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H13PRO009
@@ -54,4 +54,3 @@
(map-charset-chars 'func (cdr elt))
(write-file (car elt))))
-;;; arch-tag: 515989d7-2e2d-41cc-9163-05ad472fede4
diff --git a/admin/check-doc-strings b/admin/check-doc-strings
index daed2926b2..ef4b203cd7 100755
--- a/admin/check-doc-strings
+++ b/admin/check-doc-strings
@@ -301,4 +301,3 @@ foreach my $fun (sort keys %texi_funtype) {
}
}
-# arch-tag: e75331f5-5d1b-4393-ad5b-b0f87b5d47b0
diff --git a/admin/cus-test.el b/admin/cus-test.el
index 35d0412cc4..b254fedccc 100644
--- a/admin/cus-test.el
+++ b/admin/cus-test.el
@@ -1,7 +1,6 @@
;;; cus-test.el --- tests for custom types and load problems
-;; Copyright (C) 1998, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2000, 2002-2011 Free Software Foundation, Inc.
;; Author: Markus Rost <[email protected]>
;; Maintainer: Markus Rost <[email protected]>
@@ -525,5 +524,4 @@ in the Emacs source directory."
(provide 'cus-test)
-;;; arch-tag: a4991a31-548d-48fb-8ba1-1ebbe68eb2e7
;;; cus-test.el ends here
diff --git a/admin/diff-tar-files b/admin/diff-tar-files
index 9858fc0036..59ae1a6f26 100755
--- a/admin/diff-tar-files
+++ b/admin/diff-tar-files
@@ -1,7 +1,6 @@
#! /bin/sh
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 2001-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -40,6 +39,3 @@ tar tzf $old_tar | sed -e 's,^[^/]*,,' | sort > $old_tmp
tar tzf $new_tar | sed -e 's,^[^/]*,,' | sort > $new_tmp
diff -u $old_tmp $new_tmp
rm -f $new_tmp $old_tmp
-
-
-# arch-tag: ef2c96e2-ea67-4668-925c-d9a6f3d205cf
diff --git a/admin/emacs-pretesters b/admin/emacs-pretesters
index 2e1ee64b24..3b1270b477 100644
--- a/admin/emacs-pretesters
+++ b/admin/emacs-pretesters
@@ -215,4 +215,3 @@ Local Variables:
mode: text
End:
-# arch-tag: caf47b2c-b56b-44f7-a760-b5bfbed15fd3
diff --git a/admin/make-announcement b/admin/make-announcement
index 37ab76c0f0..dcfd55e837 100755
--- a/admin/make-announcement
+++ b/admin/make-announcement
@@ -1,7 +1,6 @@
#! /bin/bash
-## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-## 2010 Free Software Foundation, Inc.
+## Copyright (C) 2002-2011 Free Software Foundation, Inc.
## Author: Francesco Potorti` <[email protected]>
@@ -86,4 +85,3 @@ make-changelog-diff $oldtag $newtag
echo " announcement created in $outfile" >&2
-# arch-tag: 605e00c7-7330-4c45-81e1-2ed53a13c39f
diff --git a/admin/make-changelog-diff b/admin/make-changelog-diff
index 5ab468c8f5..88461131a3 100755
--- a/admin/make-changelog-diff
+++ b/admin/make-changelog-diff
@@ -27,4 +27,3 @@ cvs -q diff -b -r $1 -r $2 $(find -name ChangeLog|sort) |
s/^\n//
p"
-# arch-tag: 7604a259-40b4-4f97-86b2-496a9c546f0a
diff --git a/admin/make-emacs b/admin/make-emacs
index 1fecaa33a6..b21dcad5f3 100755
--- a/admin/make-emacs
+++ b/admin/make-emacs
@@ -2,8 +2,7 @@
# Build Emacs with various options for profiling, debugging,
# with and without warnings enabled etc.
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 2001-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -184,5 +183,3 @@ exit system "$make CC=\"$cc\" CFLAGS=\"$opts\" @ARGV";
# Local Variables:
# mode: cperl
# End:
-
-# arch-tag: 5c3f9713-9ece-4a12-b3f8-deaff15974ba
diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt
index 6ff7a815cb..6a8072de06 100644
--- a/admin/make-tarball.txt
+++ b/admin/make-tarball.txt
@@ -28,7 +28,7 @@ For each step, check for possible errors.
refer to a newer release of Emacs. (This is probably needed only
when preparing a major Emacs release, or branching for it.)
-5. rm configure src/config.in; autoconf; autoheader
+5. autoreconf -I m4 --force
make bootstrap
6. Commit configure, src/config.in, etc/AUTHORS, all the files changed
@@ -107,4 +107,3 @@ For each step, check for possible errors.
13. For a pretest, announce it on emacs-devel and BCC the pretesters.
For a release, announce it on [email protected],
[email protected], and emacs-devel.
-
diff --git a/admin/notes/bzr b/admin/notes/bzr
index c66cdd98a3..cb2a1bd4e4 100644
--- a/admin/notes/bzr
+++ b/admin/notes/bzr
@@ -38,3 +38,84 @@ Or use shelves; or rebase; or do something else. See the thread for
yet another fun excursion into the exciting world of version control.
http://lists.gnu.org/archive/html/emacs-devel/2010-04/msg00086.html
+
+* Installing changes from gnulib
+Some of the files in Emacs are copied from gnulib. To synchronize
+these files from the version of gnulib that you have checked out into
+a sibling directory of your branch, type "make sync-from-gnulib"; this
+will check out the latest version of gnulib if there is no sibling
+directory already. It is a good idea to run "bzr status" afterwards,
+so that if a gnulib module added a file, you can record the new file
+using "bzr add". After synchronizing from gnulib, do a "make" in the
+usual way.
+
+To change the set of gnulib modules, change the GNULIB_MODULES
+variable in the top-level Makefile.in, and then run:
+
+ ./config.status
+ make sync-from-gnulib
+ bzr status
+
+The last command will mention files that may need to be added using
+"bzr add". If you remove a gnulib module, or if a gnulib module
+removes a file, then remove the corresponding files by hand.
+
+* How to merge changes from emacs-23 to trunk
+
+The following description uses bound branches, presumably it works in
+a similar way with unbound ones.
+
+1) Get clean, up-to-date copies of the emacs-23 and trunk branches.
+Check for any uncommitted changes with bzr status.
+
+2) M-x cd /path/to/trunk
+
+3) load admin/bzrmerge.el
+
+4) M-x bzrmerge RET /path/to/emacs-23 RET
+
+It will prompt about revisions that should be skipped, based on the
+regexp in bzrmerge-missing. If there are more revisions that you know
+need skipping, you'll have to do that by hand.
+
+5) It will stop if there are any conflicts. Resolve them.
+Using smerge-mode, there are menu items to skip to the next conflict,
+and to take either the trunk, branch, or both copies.
+
+6) After resolving all conflicts, you might need to run the bzmerge
+command again if there are more revisions still to merge.
+
+Do not commit (or exit Emacs) until you have run bzrmerge to completion.
+
+Before committing, check bzr status and bzr diff output.
+If you have run bzrmerge enough times, the "pending merge tip" in bzr
+status should be the last revision from the emacs-23 branch, and
+bzr status -v should show all the revisions you expect to merge.
+
+(Note that it will also show "skipped" revisions. This is expected,
+and is due to a technical limitation of bzr. The log data for those
+revisions gets merged, the actual changes themselves do not.
+http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00609.html )
+
+Note that ChangeLog entries are automatically merged to the top with
+today's date, but you still might want to check them to see that too
+much is not being included, or whitespace between entries is not missing.
+
+Notes:
+
+1) A lot that was in tramp.el in emacs-23 has moved to tramp-sh.el in
+the trunk. If you end up with a conflict in tramp.el, the changes may
+need to go to tramp-sh.el instead. Remember to update the file name in
+the ChangeLog.
+
+2) If a file is modified in emacs-23, and deleted in the trunk, you
+get a "contents conflict". Assuming the changes don't need to be in
+the trunk at all, use `bzr resolve path/to/file --take-this' to keep the
+trunk version. Prior to bzr 2.2.3, this may fail. You can just
+delete the .OTHER etc files by hand and use bzr resolve path/to/file.
+
+3) Conflicts in autoload md5sums in comments. Strictly speaking, the
+right thing to do is merge everything else, resolve the conflict by
+choosing either the trunk or branch version, then run `make -C lisp
+autoloads' to update the md5sums to the correct trunk value before
+committing.
diff --git a/admin/notes/copyright b/admin/notes/copyright
index e038921230..e4077caf77 100644
--- a/admin/notes/copyright
+++ b/admin/notes/copyright
@@ -1,4 +1,4 @@
-Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2007-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
@@ -132,10 +132,18 @@ Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings
GNUstep/Emacs.base/Resources/Info-gnustep.plist
`set-copyright' in admin.el will do all the above.
-<top-level>/install-sh
-lispintro/install-sh
+aclocal.m4
+configure
+m4/*.m4
+ - copyright FSF, with unlimited permission to copy, distribute and modify
+
+lib/Makefile.in
+ - copyright FSF, with MIT-like license
+
+install-sh
- this file is copyright MIT, which is OK. Leave the copyright alone.
+mkinstalldirs
src/m/news-r6.h
public domain, leave alone.
@@ -218,9 +226,6 @@ lib-src/etags.c
--version output just says "Copyright <year> FSF" is apparently OK
from a legal point of view.
-lib-src/getopt1.c, getopt_int.h
- - these are from the GNU C library. Leave the copyrights alone.
-
lisp/cedet/semantic/imenu.el
- See http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg00410.html
in which Eric Ludlam established that the remaining contributions
@@ -329,6 +334,9 @@ Leave the copyrights alone. Leave the Eli Zaretskii copyright in
is_exec.c alone. See the msdos/README file for the legal history of
these files.
+msdos/sed*.inp - These files are copyright FSF and distributed under
+an MIT-like license.
+
oldXMenu/
Keep the "copyright.h" method used by X11, rather than moving the
@@ -611,20 +619,25 @@ of writing) GPL >= 2. rms says may as well leave the licenses of these
alone (may import them from Gnulib again). These are:
Gnulib:
+ arg-nonnull.h
+ c++defs.h
+ compile
+ config.guess
+ config.sub
+ depcomp
+ doc/man/texinfo.tex
+ missing
+ move-if-change
+ warn-on-use.h
+ lib/*.[ch]
+ lib/gnulib.mk
src/getloadavg.c
src/gmalloc.c
src/md5.c
src/md5.h
- src/mktime.c
- src/strftime.c
src/termcap.c
src/tparam.c
- Others:
- config.guess
- config.sub
- doc/man/texinfo.tex
-
Note _not_ included in the above are src/regex.{c,h} (rms: "That
forked version is only in Emacs, so definitely relicense that."), and
oldXMenu/insque.c (rms: "We wrote that specifically for Emacs, so
diff --git a/admin/notes/font-backend b/admin/notes/font-backend
index d3fb56a2ba..d51d3ec1c3 100644
--- a/admin/notes/font-backend
+++ b/admin/notes/font-backend
@@ -1,5 +1,4 @@
-Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2002-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/admin/notes/iftc b/admin/notes/iftc
index e8dcdd3a6d..983b148668 100644
--- a/admin/notes/iftc
+++ b/admin/notes/iftc
@@ -24,4 +24,3 @@ it from other casting. We commit the changes and can now go about modifying
LOW and HIGH separately. When HIGH is ready to handle the type change, the
cast can be removed.
-;;; arch-tag: 3309cc41-5d59-421b-b7be-c94b04083bb5
diff --git a/admin/notes/lel-TODO b/admin/notes/lel-TODO
index 2e45344427..c03d0f6fdf 100644
--- a/admin/notes/lel-TODO
+++ b/admin/notes/lel-TODO
@@ -1,6 +1,6 @@
Some lisp/emacs-lisp/ Features and Where They Are Documented
-Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2007-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/admin/notes/multi-tty b/admin/notes/multi-tty
index d7f6893020..85babb903b 100644
--- a/admin/notes/multi-tty
+++ b/admin/notes/multi-tty
@@ -1,6 +1,6 @@
-*- coding: utf-8; mode: text; -*-
-Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2007-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
From README.multi-tty in the multi-tty branch.
@@ -1360,4 +1360,3 @@ 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/>.
-;;; arch-tag: 8da1619e-2e79-41a8-9ac9-a0485daad17d
diff --git a/admin/notes/trailing-whitespace b/admin/notes/trailing-whitespace
index e29456b3a2..8c85b8984d 100644
--- a/admin/notes/trailing-whitespace
+++ b/admin/notes/trailing-whitespace
@@ -5,4 +5,3 @@ there was a mass-change to remove such from various branches in cvs. probably
it's a good idea to avoid adding trailing whitespace in new code/docs and in
changes.
-;;; arch-tag: de441379-c345-4826-a784-352b5413a698
diff --git a/admin/notes/unicode b/admin/notes/unicode
index a9176377da..ce7d3732f0 100644
--- a/admin/notes/unicode
+++ b/admin/notes/unicode
@@ -1,7 +1,6 @@
-*-mode: text; coding: latin-1;-*-
-Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2002-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
Problems, fixmes and other unicode-related issues
diff --git a/admin/nt/README-UNDUMP.W32 b/admin/nt/README-UNDUMP.W32
index 4ab34d3234..8c7d1510a0 100644
--- a/admin/nt/README-UNDUMP.W32
+++ b/admin/nt/README-UNDUMP.W32
@@ -1,5 +1,4 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
Emacs for Windows
diff --git a/admin/nt/README-ftp-server b/admin/nt/README-ftp-server
index 6b6c592eab..4310ac13dd 100644
--- a/admin/nt/README-ftp-server
+++ b/admin/nt/README-ftp-server
@@ -1,5 +1,4 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
Precompiled Distributions of
diff --git a/admin/nt/dump.bat b/admin/nt/dump.bat
index c0e95426cc..97ed396f20 100755
--- a/admin/nt/dump.bat
+++ b/admin/nt/dump.bat
@@ -18,6 +18,3 @@ copy temacs.exe obj\i386
obj\i386\temacs -batch -l loadup dump
copy obj\i386\emacs.exe .
-goto skipArchTag
- arch-tag: 0ca3036d-3a1e-47ea-87c6-9c0845253496
-:skipArchTag
diff --git a/admin/quick-install-emacs b/admin/quick-install-emacs
index 24972e655b..841a895248 100755
--- a/admin/quick-install-emacs
+++ b/admin/quick-install-emacs
@@ -1,8 +1,7 @@
#!/bin/sh
### quick-install-emacs --- do a halfway-decent job of installing emacs quickly
-## Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-## 2010 Free Software Foundation, Inc.
+## Copyright (C) 2001-2011 Free Software Foundation, Inc.
## Author: Miles Bader <[email protected]>
@@ -171,8 +170,10 @@ test x"$SRC" = x && { SRC="`get_config_var srcdir`" || exit 4 ; }
test x"$prefix" = x && { prefix="`get_config_var prefix`" || exit 4 ; }
test x"$ARCH" = x && { ARCH="`get_config_var host`" || exit 4 ; }
-VERSION=`grep 'char emacs_version' $SRC/src/emacs.c \
- | sed -e 's/^[^"]*"\([^"]*\)".*$/\1/'`
+VERSION=`
+ sed -n 's/^AC_INIT(emacs,[ ]*\([^ )]*\).*/\1/p' <$SRC/configure.in
+` || exit 4
+test -n "$VERSION" || { echo >&2 "$me: no version in configure.in"; exit 4; }
DST_SHARE="$prefix/share/emacs/$VERSION"
DST_BIN="$prefix/bin"
diff --git a/admin/unidata/.gitignore b/admin/unidata/.gitignore
index 4f759a363d..3f2d8ca551 100644
--- a/admin/unidata/.gitignore
+++ b/admin/unidata/.gitignore
@@ -1,4 +1,3 @@
*.elc
unidata.txt
-# arch-tag: 1b0c916f-3060-47b4-a8c9-cff5c3598adf
diff --git a/admin/unidata/Makefile.in b/admin/unidata/Makefile.in
index e7b0fbe4bf..04f2f1d438 100644
--- a/admin/unidata/Makefile.in
+++ b/admin/unidata/Makefile.in
@@ -1,5 +1,5 @@
# Makefile -- Makefile to generate character property tables.
-# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
#
diff --git a/admin/unidata/bidimirror.awk b/admin/unidata/bidimirror.awk
index 7965f36ad0..fc3e8afaac 100644
--- a/admin/unidata/bidimirror.awk
+++ b/admin/unidata/bidimirror.awk
@@ -1,6 +1,6 @@
# Generate data for bidi_mirroring_table, see src/bidi.c:bidi_initialize.
-# Copyright (C) 2010, Free Software Foundation, Inc.
+# Copyright (C) 2010-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
diff --git a/admin/unidata/biditype.awk b/admin/unidata/biditype.awk
index 6e57884a87..bb1aaad197 100644
--- a/admin/unidata/biditype.awk
+++ b/admin/unidata/biditype.awk
@@ -1,6 +1,6 @@
# Generate data for filling bidi_type_table, see src/bidi.c:bidi_initialize.
-# Copyright (C) 2010, Free Software Foundation, Inc.
+# Copyright (C) 2010-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
diff --git a/admin/unidata/copyright.html b/admin/unidata/copyright.html
index 57a6d3945c..f414ca461f 100644
--- a/admin/unidata/copyright.html
+++ b/admin/unidata/copyright.html
@@ -340,6 +340,3 @@ PERFORMANCE OF THE DATA FILES OR SOFTWARE.</p>
</html>
-
-<!-- arch-tag: 359e3efa-6eb2-4b4e-841c-f002d7924c5e
- (do not change this comment) -->
diff --git a/admin/unidata/makefile.w32-in b/admin/unidata/makefile.w32-in
index 58cea29db8..1f9f276a35 100644
--- a/admin/unidata/makefile.w32-in
+++ b/admin/unidata/makefile.w32-in
@@ -1,5 +1,5 @@
# makefile.w32-in -- W32 -*- Makefile -*- to generate character property tables.
-# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
#
diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el
index 211c6f0a53..9f89866852 100644
--- a/admin/unidata/unidata-gen.el
+++ b/admin/unidata/unidata-gen.el
@@ -1,5 +1,5 @@
;; unidata-gen.el -- Create files containing character property data.
-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H13PRO009
@@ -1241,7 +1241,7 @@ Property value is a character."
(byte-compile describer)
(setq describer (symbol-function describer)))
(set-char-table-extra-slot table 3 describer))
- (insert ";; Copyright (C) 1991-2009, 2010 Unicode, Inc.
+ (insert ";; Copyright (C) 1991-2009 Unicode, Inc.
;; This file was generated from the Unicode data file at
;; http://www.unicode.org/Public/UNIDATA/UnicodeData.txt.
;; See lisp/international/README for the copyright and permission notice.\n"
@@ -1261,5 +1261,4 @@ Property value is a character."
-;; arch-tag: 961c862e-b821-447e-9b8a-bfbab9c2d525
;;; unidata-gen.el ends here
diff --git a/arg-nonnull.h b/arg-nonnull.h
new file mode 100644
index 0000000000..226d1a8699
--- /dev/null
+++ b/arg-nonnull.h
@@ -0,0 +1,26 @@
+/* A C macro for declaring that specific arguments must not be NULL.
+ Copyright (C) 2009-2011 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
+ Lesser 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/>. */
+
+/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
+ that the values passed as arguments n, ..., m must be non-NULL pointers.
+ n = 1 stands for the first argument, n = 2 for the second argument etc. */
+#ifndef _GL_ARG_NONNULL
+# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
+# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
+# else
+# define _GL_ARG_NONNULL(params)
+# endif
+#endif
diff --git a/autogen.sh b/autogen.sh
index 6eb8f98208..52184c46f5 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -5,5 +5,3 @@ echo "Please read INSTALL.BZR for instructions on how to build Emacs from Bazaar
# Exit with failure, since people may have generic build scripts that
# try things like "autogen.sh && ./configure && make".
exit 1
-
-# arch-tag: a123408c-fada-4bf7-98a0-a786cff918f0
diff --git a/c++defs.h b/c++defs.h
new file mode 100644
index 0000000000..d521417069
--- /dev/null
+++ b/c++defs.h
@@ -0,0 +1,271 @@
+/* C++ compatible function declaration macros.
+ Copyright (C) 2010-2011 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
+ Lesser 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/>. */
+
+#ifndef _GL_CXXDEFS_H
+#define _GL_CXXDEFS_H
+
+/* The three most frequent use cases of these macros are:
+
+ * For providing a substitute for a function that is missing on some
+ platforms, but is declared and works fine on the platforms on which
+ it exists:
+
+ #if @GNULIB_FOO@
+ # if !@HAVE_FOO@
+ _GL_FUNCDECL_SYS (foo, ...);
+ # endif
+ _GL_CXXALIAS_SYS (foo, ...);
+ _GL_CXXALIASWARN (foo);
+ #elif defined GNULIB_POSIXCHECK
+ ...
+ #endif
+
+ * For providing a replacement for a function that exists on all platforms,
+ but is broken/insufficient and needs to be replaced on some platforms:
+
+ #if @GNULIB_FOO@
+ # if @REPLACE_FOO@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+ # undef foo
+ # define foo rpl_foo
+ # endif
+ _GL_FUNCDECL_RPL (foo, ...);
+ _GL_CXXALIAS_RPL (foo, ...);
+ # else
+ _GL_CXXALIAS_SYS (foo, ...);
+ # endif
+ _GL_CXXALIASWARN (foo);
+ #elif defined GNULIB_POSIXCHECK
+ ...
+ #endif
+
+ * For providing a replacement for a function that exists on some platforms
+ but is broken/insufficient and needs to be replaced on some of them and
+ is additionally either missing or undeclared on some other platforms:
+
+ #if @GNULIB_FOO@
+ # if @REPLACE_FOO@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+ # undef foo
+ # define foo rpl_foo
+ # endif
+ _GL_FUNCDECL_RPL (foo, ...);
+ _GL_CXXALIAS_RPL (foo, ...);
+ # else
+ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@
+ _GL_FUNCDECL_SYS (foo, ...);
+ # endif
+ _GL_CXXALIAS_SYS (foo, ...);
+ # endif
+ _GL_CXXALIASWARN (foo);
+ #elif defined GNULIB_POSIXCHECK
+ ...
+ #endif
+*/
+
+/* _GL_EXTERN_C declaration;
+ performs the declaration with C linkage. */
+#if defined __cplusplus
+# define _GL_EXTERN_C extern "C"
+#else
+# define _GL_EXTERN_C extern
+#endif
+
+/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
+ declares a replacement function, named rpl_func, with the given prototype,
+ consisting of return type, parameters, and attributes.
+ Example:
+ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
+ _GL_ARG_NONNULL ((1)));
+ */
+#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
+ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
+#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
+ _GL_EXTERN_C rettype rpl_func parameters_and_attributes
+
+/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
+ declares the system function, named func, with the given prototype,
+ consisting of return type, parameters, and attributes.
+ Example:
+ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
+ _GL_ARG_NONNULL ((1)));
+ */
+#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
+ _GL_EXTERN_C rettype func parameters_and_attributes
+
+/* _GL_CXXALIAS_RPL (func, rettype, parameters);
+ declares a C++ alias called GNULIB_NAMESPACE::func
+ that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
+ Example:
+ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
+ */
+#define _GL_CXXALIAS_RPL(func,rettype,parameters) \
+ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
+ namespace GNULIB_NAMESPACE \
+ { \
+ rettype (*const func) parameters = ::rpl_func; \
+ } \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
+ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
+ except that the C function rpl_func may have a slightly different
+ declaration. A cast is used to silence the "invalid conversion" error
+ that would otherwise occur. */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
+ namespace GNULIB_NAMESPACE \
+ { \
+ rettype (*const func) parameters = \
+ reinterpret_cast<rettype(*)parameters>(::rpl_func); \
+ } \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIAS_SYS (func, rettype, parameters);
+ declares a C++ alias called GNULIB_NAMESPACE::func
+ that redirects to the system provided function func, if GNULIB_NAMESPACE
+ is defined.
+ Example:
+ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
+ */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+ /* If we were to write
+ rettype (*const func) parameters = ::func;
+ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls
+ better (remove an indirection through a 'static' pointer variable),
+ but then the _GL_CXXALIASWARN macro below would cause a warning not only
+ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */
+# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
+ namespace GNULIB_NAMESPACE \
+ { \
+ static rettype (*func) parameters = ::func; \
+ } \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
+ is like _GL_CXXALIAS_SYS (func, rettype, parameters);
+ except that the C function func may have a slightly different declaration.
+ A cast is used to silence the "invalid conversion" error that would
+ otherwise occur. */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
+ namespace GNULIB_NAMESPACE \
+ { \
+ static rettype (*func) parameters = \
+ reinterpret_cast<rettype(*)parameters>(::func); \
+ } \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
+ is like _GL_CXXALIAS_SYS (func, rettype, parameters);
+ except that the C function is picked among a set of overloaded functions,
+ namely the one with rettype2 and parameters2. Two consecutive casts
+ are used to silence the "cannot find a match" and "invalid conversion"
+ errors that would otherwise occur. */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+ /* The outer cast must be a reinterpret_cast.
+ The inner cast: When the function is defined as a set of overloaded
+ functions, it works as a static_cast<>, choosing the designated variant.
+ When the function is defined as a single variant, it works as a
+ reinterpret_cast<>. The parenthesized cast syntax works both ways. */
+# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
+ namespace GNULIB_NAMESPACE \
+ { \
+ static rettype (*func) parameters = \
+ reinterpret_cast<rettype(*)parameters>( \
+ (rettype2(*)parameters2)(::func)); \
+ } \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIASWARN (func);
+ causes a warning to be emitted when ::func is used but not when
+ GNULIB_NAMESPACE::func is used. func must be defined without overloaded
+ variants. */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIASWARN(func) \
+ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
+# define _GL_CXXALIASWARN_1(func,namespace) \
+ _GL_CXXALIASWARN_2 (func, namespace)
+/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
+ we enable the warning only when not optimizing. */
+# if !__OPTIMIZE__
+# define _GL_CXXALIASWARN_2(func,namespace) \
+ _GL_WARN_ON_USE (func, \
+ "The symbol ::" #func " refers to the system function. " \
+ "Use " #namespace "::" #func " instead.")
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+# define _GL_CXXALIASWARN_2(func,namespace) \
+ extern __typeof__ (func) func
+# else
+# define _GL_CXXALIASWARN_2(func,namespace) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+# endif
+#else
+# define _GL_CXXALIASWARN(func) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
+ causes a warning to be emitted when the given overloaded variant of ::func
+ is used but not when GNULIB_NAMESPACE::func is used. */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
+ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
+ GNULIB_NAMESPACE)
+# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
+ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
+/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
+ we enable the warning only when not optimizing. */
+# if !__OPTIMIZE__
+# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
+ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
+ "The symbol ::" #func " refers to the system function. " \
+ "Use " #namespace "::" #func " instead.")
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
+ extern __typeof__ (func) func
+# else
+# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+# endif
+#else
+# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+#endif /* _GL_CXXDEFS_H */
diff --git a/compile b/compile
new file mode 100755
index 0000000000..c0096a7b56
--- /dev/null
+++ b/compile
@@ -0,0 +1,143 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand `-c -o'.
+
+scriptversion=2009-10-06.20; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software
+# Foundation, Inc.
+# Written by Tom Tromey <[email protected]>.
+#
+# 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 2, 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/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <[email protected]> or send patches to
+
+case $1 in
+ '')
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand `-c -o'.
+Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file `INSTALL'.
+
+Report bugs to <[email protected]>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+ exit $?
+ ;;
+esac
+
+ofile=
+cfile=
+eat=
+
+for arg
+do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as `compile cc -o foo foo.c'.
+ # So we strip `-o arg' only if arg is an object.
+ eat=1
+ case $2 in
+ *.o | *.obj)
+ ofile=$2
+ ;;
+ *)
+ set x "$@" -o "$2"
+ shift
+ ;;
+ esac
+ ;;
+ *.c)
+ cfile=$1
+ set x "$@" "$1"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+ # If no `-o' option was seen then we might have been invoked from a
+ # pattern rule where we don't need one. That is ok -- this is a
+ # normal compilation that the losing compiler can handle. If no
+ # `.c' file was seen then we are probably linking. That is also
+ # ok.
+ exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use `[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file. Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+ if mkdir "$lockdir" >/dev/null 2>&1; then
+ break
+ fi
+ sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+ test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+ test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/config.bat b/config.bat
index 63f9c5d586..f87bcd13a5 100644
--- a/config.bat
+++ b/config.bat
@@ -2,7 +2,7 @@
rem ----------------------------------------------------------------------
rem Configuration script for MSDOS
rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003
-rem 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+rem 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
rem This file is part of GNU Emacs.
@@ -316,6 +316,3 @@ set djgpp_ver=
set sys_malloc=
set libxml=
-goto skipArchTag
- arch-tag: 2d2fed23-4dc6-4006-a2e4-49daf0031f33
-:skipArchTag
diff --git a/config.guess b/config.guess
index e792aac608..78553c4ea0 100755
--- a/config.guess
+++ b/config.guess
@@ -1,10 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-# Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011 Free Software Foundation, Inc.
-timestamp='2009-09-18'
+timestamp='2011-01-23'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -56,8 +56,9 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
+Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -269,7 +270,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit ;;
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
@@ -333,6 +337,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux${UNAME_RELEASE}
+ exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
eval $set_cc_for_build
SUN_ARCH="i386"
@@ -548,7 +555,7 @@ EOF
echo rs6000-ibm-aix3.2
fi
exit ;;
- *:AIX:*:[456])
+ *:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
@@ -807,12 +814,12 @@ EOF
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
- *:Interix*:[3456]*)
+ *:Interix*:*)
case ${UNAME_MACHINE} in
x86)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
- EM64T | authenticamd | genuineintel)
+ authenticamd | genuineintel | EM64T)
echo x86_64-unknown-interix${UNAME_RELEASE}
exit ;;
IA64)
@@ -891,7 +898,15 @@ EOF
echo frv-unknown-linux-gnu
exit ;;
i*86:Linux:*:*)
- echo ${UNAME_MACHINE}-pc-linux-gnu
+ LIBC=gnu
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
@@ -918,11 +933,7 @@ EOF
#endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
or32:Linux:*:*)
@@ -960,6 +971,9 @@ EOF
sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
+ tile*:Linux:*:*)
+ echo ${UNAME_MACHINE}-tilera-linux-gnu
+ exit ;;
vax:Linux:*:*)
echo ${UNAME_MACHINE}-dec-linux-gnu
exit ;;
@@ -1223,6 +1237,9 @@ EOF
*:QNX:*:4*)
echo i386-pc-qnx
exit ;;
+ NEO-?:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk${UNAME_RELEASE}
+ exit ;;
NSE-?:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
diff --git a/config.sub b/config.sub
index 5ecc18b6ad..2d8169626d 100755
--- a/config.sub
+++ b/config.sub
@@ -1,10 +1,10 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-# Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011 Free Software Foundation, Inc.
-timestamp='2009-10-07'
+timestamp='2011-01-01'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -75,8 +75,9 @@ Report bugs and patches to <[email protected]>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -123,8 +124,9 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
@@ -281,6 +283,7 @@ case $basic_machine in
| moxie \
| mt \
| msp430 \
+ | nds32 | nds32le | nds32be \
| nios | nios2 \
| ns16k | ns32k \
| or32 \
@@ -294,13 +297,23 @@ case $basic_machine in
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
| spu | strongarm \
- | tahoe | thumb | tic4x | tic80 | tron \
+ | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+ | ubicom32 \
| v850 | v850e \
| we32k \
| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
+ c54x)
+ basic_machine=tic54x-unknown
+ ;;
+ c55x)
+ basic_machine=tic55x-unknown
+ ;;
+ c6x)
+ basic_machine=tic6x-unknown
+ ;;
m6811 | m68hc11 | m6812 | m68hc12 | picochip)
# Motorola 68HC11/12.
basic_machine=$basic_machine-unknown
@@ -332,7 +345,7 @@ case $basic_machine in
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
| bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
| clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
@@ -366,6 +379,7 @@ case $basic_machine in
| mmix-* \
| mt-* \
| msp430-* \
+ | nds32-* | nds32le-* | nds32be-* \
| nios-* | nios2-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| orion-* \
@@ -379,8 +393,10 @@ case $basic_machine in
| sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tile-* | tilegx-* \
| tron-* \
+ | ubicom32-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
@@ -478,6 +494,15 @@ case $basic_machine in
basic_machine=powerpc-ibm
os=-cnk
;;
+ c54x-*)
+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c55x-*)
+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c6x-*)
+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
c90)
basic_machine=c90-cray
os=-unicos
@@ -514,7 +539,7 @@ case $basic_machine in
basic_machine=craynv-cray
os=-unicosmp
;;
- cr16)
+ cr16 | cr16-*)
basic_machine=cr16-unknown
os=-elf
;;
@@ -837,6 +862,12 @@ case $basic_machine in
np1)
basic_machine=np1-gould
;;
+ neo-tandem)
+ basic_machine=neo-tandem
+ ;;
+ nse-tandem)
+ basic_machine=nse-tandem
+ ;;
nsr-tandem)
basic_machine=nsr-tandem
;;
@@ -1071,17 +1102,10 @@ case $basic_machine in
basic_machine=t90-cray
os=-unicos
;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tic55x | c55x*)
- basic_machine=tic55x-unknown
- os=-coff
- ;;
- tic6x | c6x*)
- basic_machine=tic6x-unknown
- os=-coff
+ # This must be matched before tile*.
+ tilegx*)
+ basic_machine=tilegx-unknown
+ os=-linux-gnu
;;
tile*)
basic_machine=tile-unknown
@@ -1254,6 +1278,9 @@ case $os in
# First match some system type aliases
# that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
+ -auroraux)
+ os=-auroraux
+ ;;
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
@@ -1275,8 +1302,8 @@ case $os in
# -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -kopensolaris* \
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+ | -sym* | -kopensolaris* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
@@ -1289,7 +1316,8 @@ case $os in
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+ | -mingw32* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1430,6 +1458,8 @@ case $os in
-dicos*)
os=-dicos
;;
+ -nacl*)
+ ;;
-none)
;;
*)
@@ -1470,6 +1500,15 @@ case $basic_machine in
c4x-* | tic4x-*)
os=-coff
;;
+ tic54x-*)
+ os=-coff
+ ;;
+ tic55x-*)
+ os=-coff
+ ;;
+ tic6x-*)
+ os=-coff
+ ;;
# This must come before the *-dec entry.
pdp10-*)
os=-tops20
diff --git a/configure b/configure
index 404b7ff363..bf79cecf5b 100755
--- a/configure
+++ b/configure
@@ -601,8 +601,16 @@ ac_includes_default="\
ac_config_libobj_dir=src
ac_header_list=
+gl_getopt_required=POSIX
+gl_getopt_required=POSIX
ac_func_list=
-ac_subst_vars='LTLIBOBJS
+ac_subst_vars='gltests_LTLIBOBJS
+gltests_LIBOBJS
+gl_LTLIBOBJS
+gl_LIBOBJS
+am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
WINDOW_SUPPORT
TOOLTIP_SUPPORT
MOUSE_SUPPORT
@@ -658,8 +666,155 @@ LIBRESOLV
LIBHESIOD
TERMCAP_OBJ
LIBS_TERMCAP
-GETOPTOBJS
+LIBGNU_LTLIBDEPS
+LIBGNU_LIBDEPS
+gltests_WITNESS
+HAVE_UNISTD_H
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H
+NEXT_UNISTD_H
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC
+TIME_H_DEFINES_STRUCT_TIMESPEC
+NEXT_AS_FIRST_DIRECTIVE_TIME_H
+NEXT_TIME_H
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H
+NEXT_STDDEF_H
+STDDEF_H
+HAVE_WCHAR_T
+REPLACE_NULL
+HAVE__BOOL
+STDBOOL_H
+APPLE_UNIVERSAL_BUILD
+REPLACE_TIMEGM
+REPLACE_NANOSLEEP
+REPLACE_MKTIME
+REPLACE_LOCALTIME_R
+HAVE_TIMEGM
+HAVE_STRPTIME
+HAVE_NANOSLEEP
+HAVE_DECL_LOCALTIME_R
+GNULIB_TIME_R
+GNULIB_TIMEGM
+GNULIB_STRPTIME
+GNULIB_NANOSLEEP
+GNULIB_MKTIME
+LTLIBINTL
+LIBINTL
GETOPT_H
+HAVE_GETOPT_H
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H
+NEXT_GETOPT_H
+PRAGMA_COLUMNS
+PRAGMA_SYSTEM_HEADER
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE
+INCLUDE_NEXT
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS
+UNISTD_H_HAVE_WINSOCK2_H
+REPLACE_WRITE
+REPLACE_USLEEP
+REPLACE_UNLINKAT
+REPLACE_UNLINK
+REPLACE_TTYNAME_R
+REPLACE_SYMLINK
+REPLACE_SLEEP
+REPLACE_RMDIR
+REPLACE_READLINK
+REPLACE_PWRITE
+REPLACE_PREAD
+REPLACE_LSEEK
+REPLACE_LINKAT
+REPLACE_LINK
+REPLACE_LCHOWN
+REPLACE_GETPAGESIZE
+REPLACE_GETGROUPS
+REPLACE_GETLOGIN_R
+REPLACE_GETDOMAINNAME
+REPLACE_GETCWD
+REPLACE_FCHOWNAT
+REPLACE_DUP2
+REPLACE_DUP
+REPLACE_CLOSE
+REPLACE_CHOWN
+HAVE_SYS_PARAM_H
+HAVE_OS_H
+HAVE_DECL_TTYNAME_R
+HAVE_DECL_GETUSERSHELL
+HAVE_DECL_GETPAGESIZE
+HAVE_DECL_GETLOGIN_R
+HAVE_DECL_GETDOMAINNAME
+HAVE_DECL_FCHDIR
+HAVE_DECL_ENVIRON
+HAVE_USLEEP
+HAVE_UNLINKAT
+HAVE_SYMLINKAT
+HAVE_SYMLINK
+HAVE_SLEEP
+HAVE_READLINKAT
+HAVE_READLINK
+HAVE_PWRITE
+HAVE_PREAD
+HAVE_PIPE2
+HAVE_PIPE
+HAVE_LINKAT
+HAVE_LINK
+HAVE_LCHOWN
+HAVE_GETPAGESIZE
+HAVE_GETLOGIN
+HAVE_GETHOSTNAME
+HAVE_GETGROUPS
+HAVE_GETDTABLESIZE
+HAVE_FTRUNCATE
+HAVE_FSYNC
+HAVE_FCHOWNAT
+HAVE_FCHDIR
+HAVE_FACCESSAT
+HAVE_EUIDACCESS
+HAVE_DUP3
+HAVE_DUP2
+HAVE_CHOWN
+GNULIB_WRITE
+GNULIB_USLEEP
+GNULIB_UNLINKAT
+GNULIB_UNLINK
+GNULIB_UNISTD_H_SIGPIPE
+GNULIB_UNISTD_H_GETOPT
+GNULIB_TTYNAME_R
+GNULIB_SYMLINKAT
+GNULIB_SYMLINK
+GNULIB_SLEEP
+GNULIB_RMDIR
+GNULIB_READLINKAT
+GNULIB_READLINK
+GNULIB_PWRITE
+GNULIB_PREAD
+GNULIB_PIPE2
+GNULIB_PIPE
+GNULIB_LSEEK
+GNULIB_LINKAT
+GNULIB_LINK
+GNULIB_LCHOWN
+GNULIB_GETUSERSHELL
+GNULIB_GETPAGESIZE
+GNULIB_GETLOGIN_R
+GNULIB_GETLOGIN
+GNULIB_GETHOSTNAME
+GNULIB_GETGROUPS
+GNULIB_GETDTABLESIZE
+GNULIB_GETDOMAINNAME
+GNULIB_GETCWD
+GNULIB_FTRUNCATE
+GNULIB_FSYNC
+GNULIB_FCHOWNAT
+GNULIB_FCHDIR
+GNULIB_FACCESSAT
+GNULIB_EUIDACCESS
+GNULIB_ENVIRON
+GNULIB_DUP3
+GNULIB_DUP2
+GNULIB_CLOSE
+GNULIB_CHOWN
+GL_COND_LIBTOOL_FALSE
+GL_COND_LIBTOOL_TRUE
GETLOADAVG_LIBS
KMEM_GROUP
NEED_SETGID
@@ -716,7 +871,6 @@ LD_SWITCH_X_SITE_AUX
XMKMF
DEPFLAGS
MKDEPDIR
-SET_MAKE
CFLAGS_SOUND
ALSA_LIBS
ALSA_CFLAGS
@@ -731,17 +885,23 @@ UNEXEC_OBJ
C_SWITCH_MACHINE
LD_SWITCH_SYSTEM
CANNOT_DUMP
-MAKEINFO
+HAVE_MAKEINFO
GZIP_PROG
INSTALL_INFO
-RANLIB
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
C_WARNINGS_SWITCH
EGREP
GREP
CPP
+RANLIB
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
OBJEXT
EXEEXT
ac_ct_CC
@@ -760,6 +920,29 @@ build
PROFILING_CFLAGS
MAINT
GZIP_INFO
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
target_alias
host_alias
build_alias
@@ -836,6 +1019,7 @@ with_makeinfo
with_compress_info
with_pkg_config_prog
with_crt_dir
+with_gameuser
with_gnustep_conf
enable_ns_self_contained
enable_asserts
@@ -845,6 +1029,7 @@ enable_checking
enable_use_lisp_union_type
enable_profiling
enable_autodepend
+enable_dependency_tracking
enable_largefile
with_x
'
@@ -857,6 +1042,9 @@ LDFLAGS
LIBS
CPPFLAGS
CPP
+CPPFLAGS
+CPP
+CPPFLAGS
XMKMF'
@@ -1505,6 +1693,8 @@ Optional Features:
--enable-autodepend automatically generate dependencies to .h-files.
Requires GNU Make and Gcc. Enabled if GNU Make and
Gcc is found
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
--disable-largefile omit support for large files
Optional Packages:
@@ -1550,6 +1740,7 @@ Optional Packages:
path to pkg-config for finding GTK and librsvg
--with-crt-dir=DIR directory containing crtn.o etc. The default is
/usr/lib, or /usr/lib64 on some platforms.
+ --with-gameuser=USER user for shared game score files
--with-gnustep-conf=PATH
path to GNUstep.conf; default $GNUSTEP_CONFIG_FILE,
or /etc/GNUstep/GNUstep.conf
@@ -1684,52 +1875,6 @@ fi
} # ac_fn_c_try_compile
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
- # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
- # interfere with the next link command; also delete a directory that is
- # left behind by Apple's compiler. We do this before executing the actions.
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
# ac_fn_c_try_cpp LINENO
# ----------------------
# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
@@ -1927,6 +2072,52 @@ $as_echo "$ac_res" >&6; }
} # ac_fn_c_check_header_compile
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
# ---------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
@@ -2466,8 +2657,12 @@ fi
as_fn_append ac_header_list " stdlib.h"
as_fn_append ac_header_list " unistd.h"
as_fn_append ac_header_list " sys/param.h"
-as_fn_append ac_header_list " sys/time.h"
+gl_getopt_required=GNU
+as_fn_append ac_header_list " getopt.h"
as_fn_append ac_func_list " alarm"
+as_fn_append ac_func_list " tzset"
+as_fn_append ac_header_list " sys/time.h"
+as_fn_append ac_func_list " localtime_r"
# Check that the precious variables saved in the cache have kept the same
# value.
ac_cache_corrupted=false
@@ -2539,7 +2734,182 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_config_headers="$ac_config_headers src/config.h:src/config.in"
+am__api_version='1.11'
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
test "$program_prefix" != NONE &&
program_transform_name="s&^&$program_prefix&;$program_transform_name"
# Use a double $ so make ignores it.
@@ -2550,6 +2920,330 @@ test "$program_suffix" != NONE &&
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if ${ac_cv_path_mkdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='emacs'
+ VERSION='24.0.50'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+
+
lispdir='${datadir}/emacs/${version}/lisp'
locallisppath='${datadir}/emacs/${version}/site-lisp:'\
@@ -2560,8 +3254,6 @@ archlibdir='${libexecdir}/emacs/${version}/${configuration}'
docdir='${datadir}/emacs/${version}/etc'
gamedir='${localstatedir}/games/emacs'
-gameuser=games
-
@@ -2921,6 +3613,16 @@ fi
CRT_DIR="${with_crt_dir}"
+# Check whether --with-gameuser was given.
+if test "${with_gameuser+set}" = set; then :
+ withval=$with_gameuser;
+fi
+
+test "X${with_gameuser}" != X && test "${with_gameuser}" != yes \
+ && gameuser="${with_gameuser}"
+test "X$gameuser" = X && gameuser=games
+
+
# Check whether --with-gnustep-conf was given.
if test "${with_gnustep_conf+set}" = set; then :
withval=$with_gnustep_conf;
@@ -3113,35 +3815,6 @@ fi
### Canonicalize the configuration name.
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
- if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-
-
# Make sure we can run config.sub.
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
@@ -3337,6 +4010,17 @@ case "${canonical}" in
CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
;;
+ ia64*-hp-hpux1[1-9]* )
+ machine=hp800 opsys=hpux11
+ ## FIXME. Peter O'Gorman reports that dumping using unexelf.o doesn't
+ ## work either: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6811
+ CANNOT_DUMP=yes
+ ;;
+
+ hppa*-*-linux-gnu* )
+ machine=hp800 opsys=gnu-linux
+ ;;
+
## IBM machines
rs6000-ibm-aix4.[23]* )
machine=ibmrs6000 opsys=aix4-2
@@ -4247,21 +4931,206 @@ ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+ enableval=$enable_dependency_tracking;
fi
-## If not using gcc, and on Solaris, and no CPP specified, see if
-## using a Sun compiler, which needs -Xs to prevent whitespace.
-if test x"$GCC" != xyes && test x"$emacs_check_sunpro_c" = xyes && \
- test x"$CPP" = x; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using a Sun C compiler" >&5
-$as_echo_n "checking whether we are using a Sun C compiler... " >&6; }
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+
+depcc="$CC" am_compiler_list=
-if ${emacs_cv_sunpro_c+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+if test "x$CC" != xcc; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
+fi
+set dummy $CC; ac_cc=`$as_echo "$2" |
+ sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -4270,54 +5139,209 @@ else
int
main ()
{
-#ifndef __SUNPRO_C
-fail;
-#endif
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- emacs_cv_sunpro_c=yes
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ test -f conftest2.$ac_objext && { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; };
+then
+ eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+ if test "x$CC" != xcc; then
+ # Test first that cc exists at all.
+ if { ac_try='cc -c conftest.$ac_ext >&5'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+ rm -f conftest2.*
+ if { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ test -f conftest2.$ac_objext && { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; };
+ then
+ # cc works too.
+ :
+ else
+ # cc exists but doesn't like -o.
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+ fi
+ fi
+ fi
else
- emacs_cv_sunpro_c=no
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest*
+
fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $emacs_cv_sunpro_c" >&5
-$as_echo "$emacs_cv_sunpro_c" >&6; }
+$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
- if test x"$emacs_cv_sunpro_c" = xyes; then
- NON_GNU_CPP="$CC -E -Xs"
+fi
+
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+
+
+
+# Initialize gnulib right after verifying that the C compiler works.
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
-#### Some systems specify a CPP to use unless we are using GCC.
-#### Now that we know whether we are using GCC, we can decide whether
-#### to use that one.
-if test "x$NON_GNU_CPP" != x && test x$GCC != xyes && test "x$CPP" = x
-then
- CPP="$NON_GNU_CPP"
+
fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
-#### Some systems specify a CC to use unless we are using GCC.
-#### Now that we know whether we are using GCC, we can decide whether
-#### to use that one.
-if test "x$NON_GNU_CC" != x && test x$GCC != xyes &&
- test x$cc_specified != xyes
-then
- CC="$NON_GNU_CC"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
-if test x$GCC = xyes; then
- test "x$GCC_TEST_OPTIONS" != x && CC="$CC $GCC_TEST_OPTIONS"
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
else
- test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS"
+ RANLIB="$ac_cv_prog_RANLIB"
fi
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -4716,6 +5740,8 @@ done
+
+
ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
if test "x$ac_cv_header_minix_config_h" = xyes; then :
MINIX=yes
@@ -4736,6 +5762,14 @@ $as_echo "#define _MINIX 1" >>confdefs.h
fi
+ case "$host_os" in
+ hpux*)
+
+$as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h
+
+ ;;
+ esac
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
@@ -4745,8 +5779,8 @@ else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-# define __EXTENSIONS__ 1
- $ac_includes_default
+# define __EXTENSIONS__ 1
+ $ac_includes_default
int
main ()
{
@@ -4777,6 +5811,102 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+
+
+
+
+
+
+
+ # Code from module arg-nonnull:
+ # Code from module c++defs:
+ # Code from module dtoastr:
+ # Code from module extensions:
+
+ # Code from module getopt-gnu:
+ # Code from module getopt-posix:
+ # Code from module gettext-h:
+ # Code from module include_next:
+ # Code from module intprops:
+ # Code from module mktime:
+ # Code from module multiarch:
+ # Code from module stdbool:
+ # Code from module stddef:
+ # Code from module strftime:
+ # Code from module time:
+ # Code from module time_r:
+ # Code from module unistd:
+ # Code from module warn-on-use:
+
+
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+
+## If not using gcc, and on Solaris, and no CPP specified, see if
+## using a Sun compiler, which needs -Xs to prevent whitespace.
+if test x"$GCC" != xyes && test x"$emacs_check_sunpro_c" = xyes && \
+ test x"$CPP" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using a Sun C compiler" >&5
+$as_echo_n "checking whether we are using a Sun C compiler... " >&6; }
+ if ${emacs_cv_sunpro_c+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __SUNPRO_C
+fail;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ emacs_cv_sunpro_c=yes
+else
+ emacs_cv_sunpro_c=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $emacs_cv_sunpro_c" >&5
+$as_echo "$emacs_cv_sunpro_c" >&6; }
+
+ if test x"$emacs_cv_sunpro_c" = xyes; then
+ NON_GNU_CPP="$CC -E -Xs"
+ fi
+fi
+
+#### Some systems specify a CPP to use unless we are using GCC.
+#### Now that we know whether we are using GCC, we can decide whether
+#### to use that one.
+if test "x$NON_GNU_CPP" != x && test x$GCC != xyes && test "x$CPP" = x
+then
+ CPP="$NON_GNU_CPP"
+fi
+
+#### Some systems specify a CC to use unless we are using GCC.
+#### Now that we know whether we are using GCC, we can decide whether
+#### to use that one.
+if test "x$NON_GNU_CC" != x && test x$GCC != xyes &&
+ test x$cc_specified != xyes
+then
+ CC="$NON_GNU_CC"
+fi
+
+if test x$GCC = xyes; then
+ test "x$GCC_TEST_OPTIONS" != x && CC="$CC $GCC_TEST_OPTIONS"
+else
+ test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS"
+fi
+
### Use -Wno-pointer-sign if the compiler supports it
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gcc understands -Wno-pointer-sign" >&5
$as_echo_n "checking whether gcc understands -Wno-pointer-sign... " >&6; }
@@ -5044,98 +6174,6 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
- ./ | .// | /[cC]/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
- ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- rm -rf conftest.one conftest.two conftest.dir
- echo one > conftest.one
- echo two > conftest.two
- mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
- test -s conftest.one && test -s conftest.two &&
- test -s conftest.dir/conftest.one &&
- test -s conftest.dir/conftest.two
- then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
- fi
- done
- done
- ;;
-esac
-
- done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- INSTALL=$ac_install_sh
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
if test "x$RANLIB" = x; then
if test -n "$ac_tool_prefix"; then
@@ -5468,9 +6506,12 @@ fi
## should test for it as it does for any other build requirement.
## We use the presence of $srcdir/info/emacs to distinguish a release,
## with pre-built manuals, from a Bazaar checkout.
+HAVE_MAKEINFO=yes
+
if test "$MAKEINFO" = "no"; then
+ MAKEINFO=makeinfo
if test "x${with_makeinfo}" = "xno"; then
- MAKEINFO=off
+ HAVE_MAKEINFO=no
elif test ! -e $srcdir/info/emacs; then
as_fn_error $? "You do not seem to have makeinfo >= 4.6, and your
source tree does not seem to have pre-built manuals in the \`info' directory.
@@ -5480,6 +6521,7 @@ with the \`--without-makeinfo' option to build without the manuals. " "$LINENO"
fi
+
if test x$GCC = xyes; then
test "x$GCC_LINK_TEST_OPTIONS" != x && \
ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
@@ -5526,15 +6568,16 @@ rm -f core conftest.err conftest.$ac_objext \
CPP=`eval "echo $CPP"`
-CANNOT_DUMP=no
+test "x$CANNOT_DUMP" = "x" && CANNOT_DUMP=no
case "$opsys" in
- your-opsys-here)
- CANNOT_DUMP=yes
+ your-opsys-here) CANNOT_DUMP=yes ;;
+esac
+
+test "$CANNOT_DUMP" = "yes" && \
$as_echo "#define CANNOT_DUMP 1" >>confdefs.h
- ;;
-esac
+
@@ -7250,6 +8293,37 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__ ((__aligned__ (expr)))" >&5
+$as_echo_n "checking for __attribute__ ((__aligned__ (expr)))... " >&6; }
+if ${emacs_cv_attribute_aligned+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+char __attribute__ ((__aligned__ (1 << 3))) c;
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ emacs_cv_attribute_aligned=yes
+else
+ emacs_cv_attribute_aligned=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $emacs_cv_attribute_aligned" >&5
+$as_echo "$emacs_cv_attribute_aligned" >&6; }
+if test $emacs_cv_attribute_aligned = yes; then
+
+$as_echo "#define HAVE_ATTRIBUTE_ALIGNED 1" >>confdefs.h
+
+fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
set x ${MAKE-make}
@@ -10288,15 +11362,9 @@ $as_echo "#define HAVE_XFT 1" >>confdefs.h
HAVE_XFT=no
fi
-
- HAVE_FREETYPE=no
## We used to allow building with FreeType and without Xft.
## However, the ftx font backend driver is not in good shape.
- if test "${HAVE_XFT}" = "yes"; then
- HAVE_FREETYPE=yes
- FONTCONFIG_CFLAGS=
- FONTCONFIG_LIBS=
- fi
+ HAVE_FREETYPE=$HAVE_XFT
HAVE_LIBOTF=no
if test "${HAVE_FREETYPE}" = "yes"; then
@@ -11234,23 +12302,23 @@ fi
else
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 > 2.2.0" >&5
-$as_echo_n "checking for libxml-2.0 > 2.2.0... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 > 2.6.17" >&5
+$as_echo_n "checking for libxml-2.0 > 2.6.17... " >&6; }
- if $PKG_CONFIG --exists "libxml-2.0 > 2.2.0" 2>&5; then
+ if $PKG_CONFIG --exists "libxml-2.0 > 2.6.17" 2>&5; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
succeeded=yes
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LIBXML2_CFLAGS" >&5
$as_echo_n "checking LIBXML2_CFLAGS... " >&6; }
- LIBXML2_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0 > 2.2.0"|sed -e 's,///*,/,g'`
+ LIBXML2_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0 > 2.6.17"|sed -e 's,///*,/,g'`
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBXML2_CFLAGS" >&5
$as_echo "$LIBXML2_CFLAGS" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LIBXML2_LIBS" >&5
$as_echo_n "checking LIBXML2_LIBS... " >&6; }
- LIBXML2_LIBS=`$PKG_CONFIG --libs "libxml-2.0 > 2.2.0"|sed -e 's,///*,/,g'`
+ LIBXML2_LIBS=`$PKG_CONFIG --libs "libxml-2.0 > 2.6.17"|sed -e 's,///*,/,g'`
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBXML2_LIBS" >&5
$as_echo "$LIBXML2_LIBS" >&6; }
else
@@ -11260,7 +12328,7 @@ $as_echo "no" >&6; }
LIBXML2_LIBS=""
## If we have a custom action on failure, don't print errors, but
## do set a variable so people can do so.
- LIBXML2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libxml-2.0 > 2.2.0"`
+ LIBXML2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libxml-2.0 > 2.6.17"`
fi
@@ -11845,7 +12913,7 @@ esac
for ac_func in gethostname getdomainname dup2 \
rename closedir mkdir rmdir sysinfo getrusage get_current_dir_name \
random lrand48 logb frexp fmod rint cbrt ftime setsid \
-strerror fpathconf select mktime euidaccess getpagesize tzset setlocale \
+strerror fpathconf select euidaccess getpagesize tzset setlocale \
utimes getrlimit setrlimit setpgid getcwd getwd shutdown getaddrinfo \
__fpending mblen mbrlen mbsinit strsignal setitimer ualarm strchr strrchr \
sendto recvfrom getsockopt setsockopt getsockname getpeername \
@@ -11864,269 +12932,51 @@ fi
done
-for ac_header in sys/un.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "sys/un.h" "ac_cv_header_sys_un_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_un_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_UN_H 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-
-
- for ac_func in $ac_func_list
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5
-$as_echo_n "checking for working mktime... " >&6; }
-if ${ac_cv_func_working_mktime+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_unwind_init" >&5
+$as_echo_n "checking for __builtin_unwind_init... " >&6; }
+if ${emacs_cv_func___builtin_unwind_init+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test "$cross_compiling" = yes; then :
- ac_cv_func_working_mktime=no
-else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-/* Test program from Paul Eggert and Tony Leneis. */
-#ifdef TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# ifdef HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-
-#include <limits.h>
-#include <stdlib.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#ifndef HAVE_ALARM
-# define alarm(X) /* empty */
-#endif
-
-/* Work around redefinition to rpl_putenv by other config tests. */
-#undef putenv
-
-static time_t time_t_max;
-static time_t time_t_min;
-
-/* Values we'll use to set the TZ environment variable. */
-static const char *tz_strings[] = {
- (const char *) 0, "TZ=GMT0", "TZ=JST-9",
- "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00"
-};
-#define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0]))
-
-/* Return 0 if mktime fails to convert a date in the spring-forward gap.
- Based on a problem report from Andreas Jaeger. */
-static int
-spring_forward_gap ()
-{
- /* glibc (up to about 1998-10-07) failed this test. */
- struct tm tm;
-
- /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0"
- instead of "TZ=America/Vancouver" in order to detect the bug even
- on systems that don't support the Olson extension, or don't have the
- full zoneinfo tables installed. */
- putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0");
-
- tm.tm_year = 98;
- tm.tm_mon = 3;
- tm.tm_mday = 5;
- tm.tm_hour = 2;
- tm.tm_min = 0;
- tm.tm_sec = 0;
- tm.tm_isdst = -1;
- return mktime (&tm) != (time_t) -1;
-}
-
-static int
-mktime_test1 (time_t now)
-{
- struct tm *lt;
- return ! (lt = localtime (&now)) || mktime (lt) == now;
-}
-
-static int
-mktime_test (time_t now)
-{
- return (mktime_test1 (now)
- && mktime_test1 ((time_t) (time_t_max - now))
- && mktime_test1 ((time_t) (time_t_min + now)));
-}
-
-static int
-irix_6_4_bug ()
-{
- /* Based on code from Ariel Faigon. */
- struct tm tm;
- tm.tm_year = 96;
- tm.tm_mon = 3;
- tm.tm_mday = 0;
- tm.tm_hour = 0;
- tm.tm_min = 0;
- tm.tm_sec = 0;
- tm.tm_isdst = -1;
- mktime (&tm);
- return tm.tm_mon == 2 && tm.tm_mday == 31;
-}
-
-static int
-bigtime_test (int j)
-{
- struct tm tm;
- time_t now;
- tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j;
- now = mktime (&tm);
- if (now != (time_t) -1)
- {
- struct tm *lt = localtime (&now);
- if (! (lt
- && lt->tm_year == tm.tm_year
- && lt->tm_mon == tm.tm_mon
- && lt->tm_mday == tm.tm_mday
- && lt->tm_hour == tm.tm_hour
- && lt->tm_min == tm.tm_min
- && lt->tm_sec == tm.tm_sec
- && lt->tm_yday == tm.tm_yday
- && lt->tm_wday == tm.tm_wday
- && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst)
- == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst))))
- return 0;
- }
- return 1;
-}
-
-static int
-year_2050_test ()
-{
- /* The correct answer for 2050-02-01 00:00:00 in Pacific time,
- ignoring leap seconds. */
- unsigned long int answer = 2527315200UL;
-
- struct tm tm;
- time_t t;
- tm.tm_year = 2050 - 1900;
- tm.tm_mon = 2 - 1;
- tm.tm_mday = 1;
- tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
- tm.tm_isdst = -1;
-
- /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0"
- instead of "TZ=America/Vancouver" in order to detect the bug even
- on systems that don't support the Olson extension, or don't have the
- full zoneinfo tables installed. */
- putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0");
-
- t = mktime (&tm);
-
- /* Check that the result is either a failure, or close enough
- to the correct answer that we can assume the discrepancy is
- due to leap seconds. */
- return (t == (time_t) -1
- || (0 < t && answer - 120 <= t && t <= answer + 120));
-}
int
main ()
{
- time_t t, delta;
- int i, j;
-
- /* This test makes some buggy mktime implementations loop.
- Give up after 60 seconds; a mktime slower than that
- isn't worth using anyway. */
- alarm (60);
-
- for (;;)
- {
- t = (time_t_max << 1) + 1;
- if (t <= time_t_max)
- break;
- time_t_max = t;
- }
- time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max;
-
- delta = time_t_max / 997; /* a suitable prime number */
- for (i = 0; i < N_STRINGS; i++)
- {
- if (tz_strings[i])
- putenv ((char*) tz_strings[i]);
-
- for (t = 0; t <= time_t_max - delta; t += delta)
- if (! mktime_test (t))
- return 1;
- if (! (mktime_test ((time_t) 1)
- && mktime_test ((time_t) (60 * 60))
- && mktime_test ((time_t) (60 * 60 * 24))))
- return 1;
-
- for (j = 1; ; j <<= 1)
- if (! bigtime_test (j))
- return 1;
- else if (INT_MAX / 2 < j)
- break;
- if (! bigtime_test (INT_MAX))
- return 1;
- }
- return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ());
+__builtin_unwind_init ();
+ ;
+ return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ac_cv_func_working_mktime=yes
+if ac_fn_c_try_link "$LINENO"; then :
+ emacs_cv_func___builtin_unwind_init=yes
else
- ac_cv_func_working_mktime=no
+ emacs_cv_func___builtin_unwind_init=no
fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $emacs_cv_func___builtin_unwind_init" >&5
+$as_echo "$emacs_cv_func___builtin_unwind_init" >&6; }
+if test $emacs_cv_func___builtin_unwind_init = yes; then
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5
-$as_echo "$ac_cv_func_working_mktime" >&6; }
-if test $ac_cv_func_working_mktime = no; then
- case " $LIBOBJS " in
- *" mktime.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS mktime.$ac_objext"
- ;;
-esac
+$as_echo "#define HAVE___BUILTIN_UNWIND_INIT 1" >>confdefs.h
fi
-if test "$ac_cv_func_working_mktime" = no; then
-
-$as_echo "#define BROKEN_MKTIME 1" >>confdefs.h
+for ac_header in sys/un.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "sys/un.h" "ac_cv_header_sys_un_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_un_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_UN_H 1
+_ACEOF
fi
+done
+
+
ac_have_func=no # yes means we've found a way to get the load average.
# Make sure getloadavg.c is where it belongs, at configure-time.
@@ -12690,12 +13540,322 @@ $as_echo "#define HAVE_FSEEKO 1" >>confdefs.h
fi
-# Configure getopt.
-# getopt.m4 serial 10
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5
+$as_echo_n "checking whether getpgrp requires zero arguments... " >&6; }
+if ${ac_cv_func_getpgrp_void+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Use it with a single arg.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+getpgrp (0);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_func_getpgrp_void=no
+else
+ ac_cv_func_getpgrp_void=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpgrp_void" >&5
+$as_echo "$ac_cv_func_getpgrp_void" >&6; }
+if test $ac_cv_func_getpgrp_void = yes; then
+
+$as_echo "#define GETPGRP_VOID 1" >>confdefs.h
+
+fi
+
+
+# Configure gnulib.
+
+
+
+
+
+
+
+
+
+
+ LIBC_FATAL_STDERR_=1
+ export LIBC_FATAL_STDERR_
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strtold conforms to C99" >&5
+$as_echo_n "checking whether strtold conforms to C99... " >&6; }
+if ${gl_cv_func_c99_strtold+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* On HP-UX before 11.23, strtold returns a struct instead of
+ long double. Reject implementations like that, by requiring
+ compatibility with the C99 prototype. */
+ #include <stdlib.h>
+ static long double (*p) (char const *, char **) = strtold;
+ static long double
+ test (char const *nptr, char **endptr)
+ {
+ long double r;
+ r = strtold (nptr, endptr);
+ return r;
+ }
+int
+main ()
+{
+return test ("1.0", NULL) != 1 || p ("1.0", NULL) != 1;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_func_c99_strtold=yes
+else
+ gl_cv_func_c99_strtold=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_c99_strtold" >&5
+$as_echo "$gl_cv_func_c99_strtold" >&6; }
+ if test $gl_cv_func_c99_strtold = yes; then
+
+$as_echo "#define HAVE_C99_STRTOLD 1" >>confdefs.h
+
+ fi
+
+
+ GNULIB_CHOWN=0;
+ GNULIB_CLOSE=0;
+ GNULIB_DUP2=0;
+ GNULIB_DUP3=0;
+ GNULIB_ENVIRON=0;
+ GNULIB_EUIDACCESS=0;
+ GNULIB_FACCESSAT=0;
+ GNULIB_FCHDIR=0;
+ GNULIB_FCHOWNAT=0;
+ GNULIB_FSYNC=0;
+ GNULIB_FTRUNCATE=0;
+ GNULIB_GETCWD=0;
+ GNULIB_GETDOMAINNAME=0;
+ GNULIB_GETDTABLESIZE=0;
+ GNULIB_GETGROUPS=0;
+ GNULIB_GETHOSTNAME=0;
+ GNULIB_GETLOGIN=0;
+ GNULIB_GETLOGIN_R=0;
+ GNULIB_GETPAGESIZE=0;
+ GNULIB_GETUSERSHELL=0;
+ GNULIB_LCHOWN=0;
+ GNULIB_LINK=0;
+ GNULIB_LINKAT=0;
+ GNULIB_LSEEK=0;
+ GNULIB_PIPE=0;
+ GNULIB_PIPE2=0;
+ GNULIB_PREAD=0;
+ GNULIB_PWRITE=0;
+ GNULIB_READLINK=0;
+ GNULIB_READLINKAT=0;
+ GNULIB_RMDIR=0;
+ GNULIB_SLEEP=0;
+ GNULIB_SYMLINK=0;
+ GNULIB_SYMLINKAT=0;
+ GNULIB_TTYNAME_R=0;
+ GNULIB_UNISTD_H_GETOPT=0;
+ GNULIB_UNISTD_H_SIGPIPE=0;
+ GNULIB_UNLINK=0;
+ GNULIB_UNLINKAT=0;
+ GNULIB_USLEEP=0;
+ GNULIB_WRITE=0;
+ HAVE_CHOWN=1;
+ HAVE_DUP2=1;
+ HAVE_DUP3=1;
+ HAVE_EUIDACCESS=1;
+ HAVE_FACCESSAT=1;
+ HAVE_FCHDIR=1;
+ HAVE_FCHOWNAT=1;
+ HAVE_FSYNC=1;
+ HAVE_FTRUNCATE=1;
+ HAVE_GETDTABLESIZE=1;
+ HAVE_GETGROUPS=1;
+ HAVE_GETHOSTNAME=1;
+ HAVE_GETLOGIN=1;
+ HAVE_GETPAGESIZE=1;
+ HAVE_LCHOWN=1;
+ HAVE_LINK=1;
+ HAVE_LINKAT=1;
+ HAVE_PIPE=1;
+ HAVE_PIPE2=1;
+ HAVE_PREAD=1;
+ HAVE_PWRITE=1;
+ HAVE_READLINK=1;
+ HAVE_READLINKAT=1;
+ HAVE_SLEEP=1;
+ HAVE_SYMLINK=1;
+ HAVE_SYMLINKAT=1;
+ HAVE_UNLINKAT=1;
+ HAVE_USLEEP=1;
+ HAVE_DECL_ENVIRON=1;
+ HAVE_DECL_FCHDIR=1;
+ HAVE_DECL_GETDOMAINNAME=1;
+ HAVE_DECL_GETLOGIN_R=1;
+ HAVE_DECL_GETPAGESIZE=1;
+ HAVE_DECL_GETUSERSHELL=1;
+ HAVE_DECL_TTYNAME_R=1;
+ HAVE_OS_H=0;
+ HAVE_SYS_PARAM_H=0;
+ REPLACE_CHOWN=0;
+ REPLACE_CLOSE=0;
+ REPLACE_DUP=0;
+ REPLACE_DUP2=0;
+ REPLACE_FCHOWNAT=0;
+ REPLACE_GETCWD=0;
+ REPLACE_GETDOMAINNAME=0;
+ REPLACE_GETLOGIN_R=0;
+ REPLACE_GETGROUPS=0;
+ REPLACE_GETPAGESIZE=0;
+ REPLACE_LCHOWN=0;
+ REPLACE_LINK=0;
+ REPLACE_LINKAT=0;
+ REPLACE_LSEEK=0;
+ REPLACE_PREAD=0;
+ REPLACE_PWRITE=0;
+ REPLACE_READLINK=0;
+ REPLACE_RMDIR=0;
+ REPLACE_SLEEP=0;
+ REPLACE_SYMLINK=0;
+ REPLACE_TTYNAME_R=0;
+ REPLACE_UNLINK=0;
+ REPLACE_UNLINKAT=0;
+ REPLACE_USLEEP=0;
+ REPLACE_WRITE=0;
+ UNISTD_H_HAVE_WINSOCK2_H=0;
+ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0;
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the preprocessor supports include_next" >&5
+$as_echo_n "checking whether the preprocessor supports include_next... " >&6; }
+if ${gl_cv_have_include_next+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ rm -rf conftestd1a conftestd1b conftestd2
+ mkdir conftestd1a conftestd1b conftestd2
+ cat <<EOF > conftestd1a/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+ cat <<EOF > conftestd1b/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include <stdio.h>
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+ cat <<EOF > conftestd2/conftest.h
+#ifndef DEFINED_IN_CONFTESTD1
+#error "include_next test doesn't work"
+#endif
+#define DEFINED_IN_CONFTESTD2
+EOF
+ gl_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <conftest.h>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_have_include_next=yes
+else
+ CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <conftest.h>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_have_include_next=buggy
+else
+ gl_cv_have_include_next=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS="$gl_save_CPPFLAGS"
+ rm -rf conftestd1a conftestd1b conftestd2
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_include_next" >&5
+$as_echo "$gl_cv_have_include_next" >&6; }
+ PRAGMA_SYSTEM_HEADER=
+ if test $gl_cv_have_include_next = yes; then
+ INCLUDE_NEXT=include_next
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+ if test -n "$GCC"; then
+ PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
+ fi
+ else
+ if test $gl_cv_have_include_next = buggy; then
+ INCLUDE_NEXT=include
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+ else
+ INCLUDE_NEXT=include
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
+ fi
+ fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system header files limit the line length" >&5
+$as_echo_n "checking whether system header files limit the line length... " >&6; }
+if ${gl_cv_pragma_columns+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef __TANDEM
+choke me
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "choke me" >/dev/null 2>&1; then :
+ gl_cv_pragma_columns=yes
+else
+ gl_cv_pragma_columns=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_pragma_columns" >&5
+$as_echo "$gl_cv_pragma_columns" >&6; }
+ if test $gl_cv_pragma_columns = yes; then
+ PRAGMA_COLUMNS="#pragma COLUMNS 10000"
+ else
+ PRAGMA_COLUMNS=
+ fi
+
+
+
-# The getopt module assume you want GNU getopt, with getopt_long etc,
-# rather than vanilla POSIX getopt. This means your your code should
-# always include <getopt.h> for the getopt prototypes.
@@ -12707,13 +13867,70 @@ fi
-# Prerequisites of lib/getopt*.
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_getopt_h='<'getopt.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <getopt.h>" >&5
+$as_echo_n "checking absolute name of <getopt.h>... " >&6; }
+if ${gl_cv_next_getopt_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_getopt_h = yes; then
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <getopt.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ gl_cv_next_getopt_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n '\#/getopt.h#{
+ s#.*"\(.*/getopt.h\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'
+ else
+ gl_cv_next_getopt_h='<'getopt.h'>'
+ fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_getopt_h" >&5
+$as_echo "$gl_cv_next_getopt_h" >&6; }
+ fi
+ NEXT_GETOPT_H=$gl_cv_next_getopt_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'getopt.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_getopt_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H=$gl_next_as_first_directive
+
- GETOPT_H=
- for ac_header in getopt.h
+
+ if test $ac_cv_header_getopt_h = yes; then
+ HAVE_GETOPT_H=1
+ else
+ HAVE_GETOPT_H=0
+ fi
+
+
+ gl_replace_getopt=
+
+ if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+ for ac_header in getopt.h
do :
ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default"
if test "x$ac_cv_header_getopt_h" = xyes; then :
@@ -12722,12 +13939,14 @@ if test "x$ac_cv_header_getopt_h" = xyes; then :
_ACEOF
else
- GETOPT_H=getopt.h
+ gl_replace_getopt=yes
fi
done
- if test -z "$GETOPT_H"; then
+ fi
+
+ if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
for ac_func in getopt_long_only
do :
ac_fn_c_check_func "$LINENO" "getopt_long_only" "ac_cv_func_getopt_long_only"
@@ -12737,74 +13956,302 @@ if test "x$ac_cv_func_getopt_long_only" = xyes; then :
_ACEOF
else
- GETOPT_H=getopt.h
+ gl_replace_getopt=yes
fi
done
fi
- if test -z "$GETOPT_H"; then
- ac_fn_c_check_decl "$LINENO" "optreset" "ac_cv_have_decl_optreset" "#include <getopt.h>
-"
-if test "x$ac_cv_have_decl_optreset" = xyes; then :
- GETOPT_H=getopt.h
+ if test -z "$gl_replace_getopt"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getopt is POSIX compatible" >&5
+$as_echo_n "checking whether getopt is POSIX compatible... " >&6; }
+if ${gl_cv_func_getopt_posix+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <unistd.h>
+int
+main ()
+{
+int *p = &optreset; return optreset;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_optind_min=1
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <getopt.h>
+int
+main ()
+{
+return !getopt_clip;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_optind_min=1
+else
+ gl_optind_min=0
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+ gl_save_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS -DOPTIND_MIN=$gl_optind_min"
+ if test "$cross_compiling" = yes; then :
+ case "$host_os" in
+ mingw*) gl_cv_func_getopt_posix="guessing no";;
+ darwin* | aix*) gl_cv_func_getopt_posix="guessing no";;
+ *) gl_cv_func_getopt_posix="guessing yes";;
+ esac
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+
+int
+main ()
+{
+ {
+ int argc = 0;
+ char *argv[10];
+ int c;
+
+ argv[argc++] = "program";
+ argv[argc++] = "-a";
+ argv[argc++] = "foo";
+ argv[argc++] = "bar";
+ argv[argc] = NULL;
+ optind = OPTIND_MIN;
+ opterr = 0;
+
+ c = getopt (argc, argv, "ab");
+ if (!(c == 'a'))
+ return 1;
+ c = getopt (argc, argv, "ab");
+ if (!(c == -1))
+ return 2;
+ if (!(optind == 2))
+ return 3;
+ }
+ /* Some internal state exists at this point. */
+ {
+ int argc = 0;
+ char *argv[10];
+ int c;
+
+ argv[argc++] = "program";
+ argv[argc++] = "donald";
+ argv[argc++] = "-p";
+ argv[argc++] = "billy";
+ argv[argc++] = "duck";
+ argv[argc++] = "-a";
+ argv[argc++] = "bar";
+ argv[argc] = NULL;
+ optind = OPTIND_MIN;
+ opterr = 0;
+
+ c = getopt (argc, argv, "+abp:q:");
+ if (!(c == -1))
+ return 4;
+ if (!(strcmp (argv[0], "program") == 0))
+ return 5;
+ if (!(strcmp (argv[1], "donald") == 0))
+ return 6;
+ if (!(strcmp (argv[2], "-p") == 0))
+ return 7;
+ if (!(strcmp (argv[3], "billy") == 0))
+ return 8;
+ if (!(strcmp (argv[4], "duck") == 0))
+ return 9;
+ if (!(strcmp (argv[5], "-a") == 0))
+ return 10;
+ if (!(strcmp (argv[6], "bar") == 0))
+ return 11;
+ if (!(optind == 1))
+ return 12;
+ }
+ /* Detect MacOS 10.5, AIX 7.1 bug. */
+ {
+ char *argv[3] = { "program", "-ab", NULL };
+ optind = OPTIND_MIN;
+ opterr = 0;
+ if (getopt (2, argv, "ab:") != 'a')
+ return 13;
+ if (getopt (2, argv, "ab:") != '?')
+ return 14;
+ if (optopt != 'b')
+ return 15;
+ if (optind != 2)
+ return 16;
+ }
+
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gl_cv_func_getopt_posix=yes
+else
+ gl_cv_func_getopt_posix=no
fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ CPPFLAGS=$gl_save_CPPFLAGS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getopt_posix" >&5
+$as_echo "$gl_cv_func_getopt_posix" >&6; }
+ case "$gl_cv_func_getopt_posix" in
+ *no) gl_replace_getopt=yes ;;
+ esac
fi
- if test -z "$GETOPT_H"; then
+ if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working GNU getopt function" >&5
$as_echo_n "checking for working GNU getopt function... " >&6; }
-if ${gl_cv_func_gnu_getopt+:} false; then :
+if ${gl_cv_func_getopt_gnu+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test "$cross_compiling" = yes; then :
- ac_fn_c_check_decl "$LINENO" "getopt_clip" "ac_cv_have_decl_getopt_clip" "#include <getopt.h>
-"
-if test "x$ac_cv_have_decl_getopt_clip" = xyes; then :
- gl_cv_func_gnu_getopt=no
-else
- gl_cv_func_gnu_getopt=yes
-fi
+ # Even with POSIXLY_CORRECT, the GNU extension of leading '-' in the
+ # optstring is necessary for programs like m4 that have POSIX-mandated
+ # semantics for supporting options interspersed with files.
+ # Also, since getopt_long is a GNU extension, we require optind=0.
+ # Bash ties 'set -o posix' to a non-exported POSIXLY_CORRECT;
+ # so take care to revert to the correct (non-)export state.
+ gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }'
+ case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" </dev/null` in
+ xx) gl_had_POSIXLY_CORRECT=exported ;;
+ x) gl_had_POSIXLY_CORRECT=yes ;;
+ *) gl_had_POSIXLY_CORRECT= ;;
+ esac
+ POSIXLY_CORRECT=1
+ export POSIXLY_CORRECT
+ if test "$cross_compiling" = yes; then :
+ case $host_os:$ac_cv_have_decl_optreset in
+ *-gnu*:* | mingw*:*) gl_cv_func_getopt_gnu=no;;
+ *:yes) gl_cv_func_getopt_gnu=no;;
+ *) gl_cv_func_getopt_gnu=yes;;
+ esac
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <getopt.h>
+ #include <stddef.h>
+ #include <string.h>
+
int
main ()
{
- char *myargv[3];
- myargv[0] = "conftest";
- myargv[1] = "-+";
- myargv[2] = 0;
- return getopt (2, myargv, "+a") != '?';
+ int result = 0;
+ /* This code succeeds on glibc 2.8, OpenBSD 4.0, Cygwin, mingw,
+ and fails on MacOS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5,
+ OSF/1 5.1, Solaris 10. */
+ {
+ char *myargv[3];
+ myargv[0] = "conftest";
+ myargv[1] = "-+";
+ myargv[2] = 0;
+ opterr = 0;
+ if (getopt (2, myargv, "+a") != '?')
+ result |= 1;
+ }
+ /* This code succeeds on glibc 2.8, mingw,
+ and fails on MacOS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11,
+ IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x. */
+ {
+ char *argv[] = { "program", "-p", "foo", "bar", NULL };
+
+ optind = 1;
+ if (getopt (4, argv, "p::") != 'p')
+ result |= 2;
+ else if (optarg != NULL)
+ result |= 4;
+ else if (getopt (4, argv, "p::") != -1)
+ result |= 6;
+ else if (optind != 2)
+ result |= 8;
+ }
+ /* This code succeeds on glibc 2.8 and fails on Cygwin 1.7.0. */
+ {
+ char *argv[] = { "program", "foo", "-p", NULL };
+ optind = 0;
+ if (getopt (3, argv, "-p") != 1)
+ result |= 16;
+ else if (getopt (3, argv, "-p") != 'p')
+ result |= 32;
+ }
+ /* This code fails on glibc 2.11. */
+ {
+ char *argv[] = { "program", "-b", "-a", NULL };
+ optind = opterr = 0;
+ if (getopt (3, argv, "+:a:b") != 'b')
+ result |= 64;
+ else if (getopt (3, argv, "+:a:b") != ':')
+ result |= 64;
+ }
+ return result;
;
return 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
- gl_cv_func_gnu_getopt=yes
+ gl_cv_func_getopt_gnu=yes
else
- gl_cv_func_gnu_getopt=no
+ gl_cv_func_getopt_gnu=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+ case $gl_had_POSIXLY_CORRECT in
+ exported) ;;
+ yes) { POSIXLY_CORRECT=; unset POSIXLY_CORRECT;}; POSIXLY_CORRECT=1 ;;
+ *) { POSIXLY_CORRECT=; unset POSIXLY_CORRECT;} ;;
+ esac
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_gnu_getopt" >&5
-$as_echo "$gl_cv_func_gnu_getopt" >&6; }
- if test "$gl_cv_func_gnu_getopt" = "no"; then
- GETOPT_H=getopt.h
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getopt_gnu" >&5
+$as_echo "$gl_cv_func_getopt_gnu" >&6; }
+ if test "$gl_cv_func_getopt_gnu" = "no"; then
+ gl_replace_getopt=yes
fi
fi
+ac_fn_c_check_decl "$LINENO" "getenv" "ac_cv_have_decl_getenv" "$ac_includes_default"
+if test "x$ac_cv_have_decl_getenv" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETENV $ac_have_decl
+_ACEOF
+
+
+
+
- if test -n "$GETOPT_H"; then :
+ if test -n "$gl_replace_getopt"; then :
+
GETOPT_H=getopt.h
@@ -12813,101 +14260,1190 @@ $as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h
- :
- GETOPTOBJS='getopt.o getopt1.o'
+ GNULIB_UNISTD_H_GETOPT=1
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext"
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext"
+
+
+
+
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5
-$as_echo_n "checking whether getpgrp requires zero arguments... " >&6; }
-if ${ac_cv_func_getpgrp_void+:} false; then :
+ GNULIB_MKTIME=0;
+ GNULIB_NANOSLEEP=0;
+ GNULIB_STRPTIME=0;
+ GNULIB_TIMEGM=0;
+ GNULIB_TIME_R=0;
+ HAVE_DECL_LOCALTIME_R=1;
+ HAVE_NANOSLEEP=1;
+ HAVE_STRPTIME=1;
+ HAVE_TIMEGM=1;
+ REPLACE_LOCALTIME_R=GNULIB_PORTCHECK;
+ REPLACE_MKTIME=GNULIB_PORTCHECK;
+ REPLACE_NANOSLEEP=GNULIB_PORTCHECK;
+ REPLACE_TIMEGM=GNULIB_PORTCHECK;
+
+
+
+
+ for ac_func in $ac_func_list
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+ gl_cv_c_multiarch=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+ arch=
+ prev=
+ for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
+ if test -n "$prev"; then
+ case $word in
+ i?86 | x86_64 | ppc | ppc64)
+ if test -z "$arch" || test "$arch" = "$word"; then
+ arch="$word"
+ else
+ gl_cv_c_multiarch=yes
+ fi
+ ;;
+ esac
+ prev=
+ else
+ if test "x$word" = "x-arch"; then
+ prev=arch
+ fi
+ fi
+ done
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test $gl_cv_c_multiarch = yes; then
+ APPLE_UNIVERSAL_BUILD=1
+ else
+ APPLE_UNIVERSAL_BUILD=0
+ fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
$as_echo_n "(cached) " >&6
else
- # Use it with a single arg.
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-$ac_includes_default
+#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 for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if ${ac_cv_header_stdbool_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <stdbool.h>
+ #ifndef bool
+ "error: bool is not defined"
+ #endif
+ #ifndef false
+ "error: false is not defined"
+ #endif
+ #if false
+ "error: false is not 0"
+ #endif
+ #ifndef true
+ "error: true is not defined"
+ #endif
+ #if true != 1
+ "error: true is not 1"
+ #endif
+ #ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+ #endif
+
+ struct s { _Bool s: 1; _Bool t; } s;
+
+ char a[true == 1 ? 1 : -1];
+ char b[false == 0 ? 1 : -1];
+ char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+ char d[(bool) 0.5 == true ? 1 : -1];
+ /* See body of main program for 'e'. */
+ char f[(_Bool) 0.0 == false ? 1 : -1];
+ char g[true];
+ char h[sizeof (_Bool)];
+ char i[sizeof s.t];
+ enum { j = false, k = true, l = false * true, m = true * 256 };
+ /* The following fails for
+ HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+ _Bool n[m];
+ char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+ char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+ /* Catch a bug in an HP-UX C compiler. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ */
+ _Bool q = true;
+ _Bool *pq = &q;
+
int
main ()
{
-getpgrp (0);
+
+ bool e = &s;
+ *pq |= q;
+ *pq |= ! q;
+ /* Refer to every declared value, to avoid compiler optimizations. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ + !m + !n + !o + !p + !q + !pq);
+
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_func_getpgrp_void=no
+ ac_cv_header_stdbool_h=yes
else
- ac_cv_func_getpgrp_void=yes
+ ac_cv_header_stdbool_h=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+ ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpgrp_void" >&5
-$as_echo "$ac_cv_func_getpgrp_void" >&6; }
-if test $ac_cv_func_getpgrp_void = yes; then
-$as_echo "#define GETPGRP_VOID 1" >>confdefs.h
+ if test $ac_cv_header_stdbool_h = yes; then
+$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
+
+ fi
+
+ REPLACE_NULL=0;
+ HAVE_WCHAR_T=1;
+ STDDEF_H='';
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5
+$as_echo_n "checking for wchar_t... " >&6; }
+if ${gt_cv_c_wchar_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stddef.h>
+ wchar_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gt_cv_c_wchar_t=yes
+else
+ gt_cv_c_wchar_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5
+$as_echo "$gt_cv_c_wchar_t" >&6; }
+ if test $gt_cv_c_wchar_t = yes; then
+$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
-for ac_func in strftime
-do :
- ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime"
-if test "x$ac_cv_func_strftime" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_STRFTIME 1
+ fi
+
+
+ ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "#include <time.h>
+"
+if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then :
+
+$as_echo "#define HAVE_TM_GMTOFF 1" >>confdefs.h
+
+fi
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
+$as_echo_n "checking for C/C++ restrict keyword... " >&6; }
+if ${ac_cv_c_restrict+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_restrict=no
+ # The order here caters to the fact that C++ does not require restrict.
+ for ac_kw in __restrict __restrict__ _Restrict restrict; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+typedef int * int_ptr;
+ int foo (int_ptr $ac_kw ip) {
+ return ip[0];
+ }
+int
+main ()
+{
+int s[1];
+ int * $ac_kw t = s;
+ t[0] = 0;
+ return foo(t)
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_restrict=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$ac_cv_c_restrict" != no && break
+ done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5
+$as_echo "$ac_cv_c_restrict" >&6; }
+
+ case $ac_cv_c_restrict in
+ restrict) ;;
+ no) $as_echo "#define restrict /**/" >>confdefs.h
+ ;;
+ *) cat >>confdefs.h <<_ACEOF
+#define restrict $ac_cv_c_restrict
+_ACEOF
+ ;;
+ esac
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in <time.h>" >&5
+$as_echo_n "checking for struct timespec in <time.h>... " >&6; }
+if ${gl_cv_sys_struct_timespec_in_time_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <time.h>
+
+int
+main ()
+{
+static struct timespec x; x.tv_sec = x.tv_nsec;
+ ;
+ return 0;
+}
_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_sys_struct_timespec_in_time_h=yes
+else
+ gl_cv_sys_struct_timespec_in_time_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timespec_in_time_h" >&5
+$as_echo "$gl_cv_sys_struct_timespec_in_time_h" >&6; }
+ TIME_H_DEFINES_STRUCT_TIMESPEC=0
+ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0
+ PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0
+ if test $gl_cv_sys_struct_timespec_in_time_h = yes; then
+ TIME_H_DEFINES_STRUCT_TIMESPEC=1
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in <sys/time.h>" >&5
+$as_echo_n "checking for struct timespec in <sys/time.h>... " >&6; }
+if ${gl_cv_sys_struct_timespec_in_sys_time_h+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- # strftime is in -lintl on SCO UNIX.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5
-$as_echo_n "checking for strftime in -lintl... " >&6; }
-if ${ac_cv_lib_intl_strftime+:} false; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/time.h>
+
+int
+main ()
+{
+static struct timespec x; x.tv_sec = x.tv_nsec;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_sys_struct_timespec_in_sys_time_h=yes
+else
+ gl_cv_sys_struct_timespec_in_sys_time_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timespec_in_sys_time_h" >&5
+$as_echo "$gl_cv_sys_struct_timespec_in_sys_time_h" >&6; }
+ if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then
+ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in <pthread.h>" >&5
+$as_echo_n "checking for struct timespec in <pthread.h>... " >&6; }
+if ${gl_cv_sys_struct_timespec_in_pthread_h+:} false; then :
$as_echo_n "(cached) " >&6
else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lintl $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+#include <pthread.h>
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
+int
+main ()
+{
+static struct timespec x; x.tv_sec = x.tv_nsec;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_sys_struct_timespec_in_pthread_h=yes
+else
+ gl_cv_sys_struct_timespec_in_pthread_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timespec_in_pthread_h" >&5
+$as_echo "$gl_cv_sys_struct_timespec_in_pthread_h" >&6; }
+ if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then
+ PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1
+ fi
+ fi
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_time_h='<'time.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <time.h>" >&5
+$as_echo_n "checking absolute name of <time.h>... " >&6; }
+if ${gl_cv_next_time_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <time.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ gl_cv_next_time_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n '\#/time.h#{
+ s#.*"\(.*/time.h\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_time_h" >&5
+$as_echo "$gl_cv_next_time_h" >&6; }
+ fi
+ NEXT_TIME_H=$gl_cv_next_time_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'time.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_time_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_TIME_H=$gl_next_as_first_directive
+
+
+
+
+
+
+ac_fn_c_check_decl "$LINENO" "localtime_r" "ac_cv_have_decl_localtime_r" "$ac_includes_default"
+if test "x$ac_cv_have_decl_localtime_r" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_LOCALTIME_R $ac_have_decl
+_ACEOF
+
+
+
+
+ if false; then
+ GL_COND_LIBTOOL_TRUE=
+ GL_COND_LIBTOOL_FALSE='#'
+else
+ GL_COND_LIBTOOL_TRUE='#'
+ GL_COND_LIBTOOL_FALSE=
+fi
+
+ gl_cond_libtool=false
+ gl_libdeps=
+ gl_ltlibdeps=
+ gl_m4_base='m4'
+
+
+
+
+
+
+
+
+
+ gl_source_base='lib'
+ # Code from module arg-nonnull:
+ # Code from module c++defs:
+ # Code from module dtoastr:
+
+ # Code from module extensions:
+ # Code from module getopt-gnu:
+
+
+
+
+
+
+ # Code from module getopt-posix:
+
+
+
+
+
+ if test -n "$gl_replace_getopt"; then :
+
+
+
+ GETOPT_H=getopt.h
+
+$as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h
+
+
+
+ GNULIB_UNISTD_H_GETOPT=1
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext"
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext"
+
+
+
+
+
+
+fi
+
+
+ # Code from module gettext-h:
+
+
+ # Code from module include_next:
+ # Code from module intprops:
+ # Code from module mktime:
+
+
+
+
+
+if test $APPLE_UNIVERSAL_BUILD = 1; then
+ # A universal build on Apple MacOS X platforms.
+ # The test result would be 'yes' in 32-bit mode and 'no' in 64-bit mode.
+ # But we need a configuration result that is valid in both modes.
+ ac_cv_func_working_mktime=no
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5
+$as_echo_n "checking for working mktime... " >&6; }
+if ${ac_cv_func_working_mktime+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ ac_cv_func_working_mktime=no
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Test program from Paul Eggert and Tony Leneis. */
+#include <limits.h>
+#include <stdlib.h>
+#include <time.h>
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
#endif
-char strftime ();
+
+#ifndef HAVE_ALARM
+# define alarm(X) /* empty */
+#endif
+
+/* Work around redefinition to rpl_putenv by other config tests. */
+#undef putenv
+
+static time_t time_t_max;
+static time_t time_t_min;
+
+/* Values we'll use to set the TZ environment variable. */
+static char *tz_strings[] = {
+ (char *) 0, "TZ=GMT0", "TZ=JST-9",
+ "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00"
+};
+#define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0]))
+
+/* Return 0 if mktime fails to convert a date in the spring-forward gap.
+ Based on a problem report from Andreas Jaeger. */
+static int
+spring_forward_gap ()
+{
+ /* glibc (up to about 1998-10-07) failed this test. */
+ struct tm tm;
+
+ /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0"
+ instead of "TZ=America/Vancouver" in order to detect the bug even
+ on systems that don't support the Olson extension, or don't have the
+ full zoneinfo tables installed. */
+ putenv ("TZ=PST8PDT,M4.1.0,M10.5.0");
+
+ tm.tm_year = 98;
+ tm.tm_mon = 3;
+ tm.tm_mday = 5;
+ tm.tm_hour = 2;
+ tm.tm_min = 0;
+ tm.tm_sec = 0;
+ tm.tm_isdst = -1;
+ return mktime (&tm) != (time_t) -1;
+}
+
+static int
+mktime_test1 (time_t now)
+{
+ struct tm *lt;
+ return ! (lt = localtime (&now)) || mktime (lt) == now;
+}
+
+static int
+mktime_test (time_t now)
+{
+ return (mktime_test1 (now)
+ && mktime_test1 ((time_t) (time_t_max - now))
+ && mktime_test1 ((time_t) (time_t_min + now)));
+}
+
+static int
+irix_6_4_bug ()
+{
+ /* Based on code from Ariel Faigon. */
+ struct tm tm;
+ tm.tm_year = 96;
+ tm.tm_mon = 3;
+ tm.tm_mday = 0;
+ tm.tm_hour = 0;
+ tm.tm_min = 0;
+ tm.tm_sec = 0;
+ tm.tm_isdst = -1;
+ mktime (&tm);
+ return tm.tm_mon == 2 && tm.tm_mday == 31;
+}
+
+static int
+bigtime_test (int j)
+{
+ struct tm tm;
+ time_t now;
+ tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j;
+ now = mktime (&tm);
+ if (now != (time_t) -1)
+ {
+ struct tm *lt = localtime (&now);
+ if (! (lt
+ && lt->tm_year == tm.tm_year
+ && lt->tm_mon == tm.tm_mon
+ && lt->tm_mday == tm.tm_mday
+ && lt->tm_hour == tm.tm_hour
+ && lt->tm_min == tm.tm_min
+ && lt->tm_sec == tm.tm_sec
+ && lt->tm_yday == tm.tm_yday
+ && lt->tm_wday == tm.tm_wday
+ && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst)
+ == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst))))
+ return 0;
+ }
+ return 1;
+}
+
+static int
+year_2050_test ()
+{
+ /* The correct answer for 2050-02-01 00:00:00 in Pacific time,
+ ignoring leap seconds. */
+ unsigned long int answer = 2527315200UL;
+
+ struct tm tm;
+ time_t t;
+ tm.tm_year = 2050 - 1900;
+ tm.tm_mon = 2 - 1;
+ tm.tm_mday = 1;
+ tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
+ tm.tm_isdst = -1;
+
+ /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0"
+ instead of "TZ=America/Vancouver" in order to detect the bug even
+ on systems that don't support the Olson extension, or don't have the
+ full zoneinfo tables installed. */
+ putenv ("TZ=PST8PDT,M4.1.0,M10.5.0");
+
+ t = mktime (&tm);
+
+ /* Check that the result is either a failure, or close enough
+ to the correct answer that we can assume the discrepancy is
+ due to leap seconds. */
+ return (t == (time_t) -1
+ || (0 < t && answer - 120 <= t && t <= answer + 120));
+}
+
+int
+main ()
+{
+ int result = 0;
+ time_t t, delta;
+ int i, j;
+ int time_t_signed_magnitude = (time_t) ~ (time_t) 0 < (time_t) -1;
+ int time_t_signed = ! ((time_t) 0 < (time_t) -1);
+
+ /* This test makes some buggy mktime implementations loop.
+ Give up after 60 seconds; a mktime slower than that
+ isn't worth using anyway. */
+ alarm (60);
+
+ time_t_max = (! time_t_signed
+ ? (time_t) -1
+ : ((((time_t) 1 << (sizeof (time_t) * CHAR_BIT - 2)) - 1)
+ * 2 + 1));
+ time_t_min = (! time_t_signed
+ ? (time_t) 0
+ : time_t_signed_magnitude
+ ? ~ (time_t) 0
+ : ~ time_t_max);
+
+ delta = time_t_max / 997; /* a suitable prime number */
+ for (i = 0; i < N_STRINGS; i++)
+ {
+ if (tz_strings[i])
+ putenv (tz_strings[i]);
+
+ for (t = 0; t <= time_t_max - delta; t += delta)
+ if (! mktime_test (t))
+ result |= 1;
+ if (! (mktime_test ((time_t) 1)
+ && mktime_test ((time_t) (60 * 60))
+ && mktime_test ((time_t) (60 * 60 * 24))))
+ result |= 2;
+
+ for (j = 1; ; j <<= 1)
+ if (! bigtime_test (j))
+ result |= 4;
+ else if (INT_MAX / 2 < j)
+ break;
+ if (! bigtime_test (INT_MAX))
+ result |= 8;
+ }
+ if (! irix_6_4_bug ())
+ result |= 16;
+ if (! spring_forward_gap ())
+ result |= 32;
+ if (! year_2050_test ())
+ result |= 64;
+ return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ ac_cv_func_working_mktime=yes
+else
+ ac_cv_func_working_mktime=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5
+$as_echo "$ac_cv_func_working_mktime" >&6; }
+if test $ac_cv_func_working_mktime = no; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS mktime.$ac_objext"
+
+fi
+
+ if test $ac_cv_func_working_mktime = no; then
+ REPLACE_MKTIME=1
+
+
+
+ else
+ REPLACE_MKTIME=0
+ fi
+
+
+
+
+ GNULIB_MKTIME=1
+
+
+
+ # Code from module multiarch:
+
+ # Code from module stdbool:
+
+
+
+ # Define two additional variables used in the Makefile substitution.
+
+ if test "$ac_cv_header_stdbool_h" = yes; then
+ STDBOOL_H=''
+ else
+ STDBOOL_H='stdbool.h'
+ fi
+
+
+ if test "$ac_cv_type__Bool" = yes; then
+ HAVE__BOOL=1
+ else
+ HAVE__BOOL=0
+ fi
+
+
+ # Code from module stddef:
+
+
+
+ if test $gt_cv_c_wchar_t = no; then
+ HAVE_WCHAR_T=0
+ STDDEF_H=stddef.h
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5
+$as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; }
+if ${gl_cv_decl_null_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stddef.h>
+ int test[2 * (sizeof NULL == sizeof (void *)) -1];
+
int
main ()
{
-return strftime ();
+
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_intl_strftime=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_decl_null_works=yes
else
- ac_cv_lib_intl_strftime=no
+ gl_cv_decl_null_works=no
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5
+$as_echo "$gl_cv_decl_null_works" >&6; }
+ if test $gl_cv_decl_null_works = no; then
+ REPLACE_NULL=1
+ STDDEF_H=stddef.h
+ fi
+ if test -n "$STDDEF_H"; then
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_stddef_h='<'stddef.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stddef.h>" >&5
+$as_echo_n "checking absolute name of <stddef.h>... " >&6; }
+if ${gl_cv_next_stddef_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stddef.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ gl_cv_next_stddef_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n '\#/stddef.h#{
+ s#.*"\(.*/stddef.h\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5
+$as_echo "$gl_cv_next_stddef_h" >&6; }
+ fi
+ NEXT_STDDEF_H=$gl_cv_next_stddef_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'stddef.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_stddef_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive
+
+
+
+
+ fi
+
+ # Code from module strftime:
+
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS strftime.$ac_objext"
+
+
+ # This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE.
+
+
+
+
+
+
+
+$as_echo "#define my_strftime nstrftime" >>confdefs.h
+
+
+
+ # Code from module time:
+
+
+
+ # Code from module time_r:
+
+
+
+
+
+
+
+ if test $ac_cv_have_decl_localtime_r = no; then
+ HAVE_DECL_LOCALTIME_R=0
+ fi
+
+
+ if test $ac_cv_func_localtime_r = yes; then
+ HAVE_LOCALTIME_R=1
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether localtime_r is compatible with its POSIX signature" >&5
+$as_echo_n "checking whether localtime_r is compatible with its POSIX signature... " >&6; }
+if ${gl_cv_time_r_posix+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <time.h>
+int
+main ()
+{
+/* We don't need to append 'restrict's to the argument types,
+ even though the POSIX signature has the 'restrict's,
+ since C99 says they can't affect type compatibility. */
+ struct tm * (*ptr) (time_t const *, struct tm *) = localtime_r;
+ if (ptr) return 0;
+ /* Check the return type is a pointer.
+ On HP-UX 10 it is 'int'. */
+ *localtime_r (0, 0);
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_time_r_posix=yes
+else
+ gl_cv_time_r_posix=no
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5
-$as_echo "$ac_cv_lib_intl_strftime" >&6; }
-if test "x$ac_cv_lib_intl_strftime" = xyes; then :
- $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-LIBS="-lintl $LIBS"
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_time_r_posix" >&5
+$as_echo "$gl_cv_time_r_posix" >&6; }
+ if test $gl_cv_time_r_posix = yes; then
+ REPLACE_LOCALTIME_R=0
+ else
+ REPLACE_LOCALTIME_R=1
+ fi
+ else
+ HAVE_LOCALTIME_R=0
+ fi
+ if test $HAVE_LOCALTIME_R = 0 || test $REPLACE_LOCALTIME_R = 1; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS time_r.$ac_objext"
+
+
+ :
+
+ fi
+
+
+
+
+ GNULIB_TIME_R=1
+
+
+
+ # Code from module unistd:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_unistd_h='<'unistd.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <unistd.h>" >&5
+$as_echo_n "checking absolute name of <unistd.h>... " >&6; }
+if ${gl_cv_next_unistd_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_unistd_h = yes; then
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <unistd.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ gl_cv_next_unistd_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n '\#/unistd.h#{
+ s#.*"\(.*/unistd.h\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'
+ else
+ gl_cv_next_unistd_h='<'unistd.h'>'
+ fi
+
fi
-done
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_unistd_h" >&5
+$as_echo "$gl_cv_next_unistd_h" >&6; }
+ fi
+ NEXT_UNISTD_H=$gl_cv_next_unistd_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'unistd.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_unistd_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H=$gl_next_as_first_directive
+
+
+
+
+ if test $ac_cv_header_unistd_h = yes; then
+ HAVE_UNISTD_H=1
+ else
+ HAVE_UNISTD_H=0
+ fi
+
+
+
+
+ # Code from module warn-on-use:
+ # End of code from modules
+
+
+
+
+
+
+
+
+
+ gltests_libdeps=
+ gltests_ltlibdeps=
+
+
+
+
+
+
+
+
+
+ gl_source_base='tests'
+ gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
+
+ gl_module_indicator_condition=$gltests_WITNESS
+
+
+
+
+
+
+
+
+
+ LIBGNU_LIBDEPS="$gl_libdeps"
+
+ LIBGNU_LTLIBDEPS="$gl_ltlibdeps"
+
# UNIX98 PTYs.
@@ -14405,60 +16941,6 @@ $as_echo "#define mbstate_t int" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C restrict keyword" >&5
-$as_echo_n "checking for C restrict keyword... " >&6; }
-if ${emacs_cv_c_restrict+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-void fred (int *restrict x);
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- emacs_cv_c_restrict=yes
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-void fred (int *__restrict x);
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- emacs_cv_c_restrict=__restrict
-else
- emacs_cv_c_restrict=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $emacs_cv_c_restrict" >&5
-$as_echo "$emacs_cv_c_restrict" >&6; }
-case "$emacs_cv_c_restrict" in
- yes) emacs_restrict=restrict;;
- no) emacs_restrict="";;
- *) emacs_restrict="$emacs_cv_c_restrict";;
-esac
-if test "$emacs_restrict" != __restrict; then
-
-cat >>confdefs.h <<_ACEOF
-#define __restrict $emacs_restrict
-_ACEOF
-
-fi
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C restricted array declarations" >&5
$as_echo_n "checking for C restricted array declarations... " >&6; }
if ${emacs_cv_c_restrict_arr+:} false; then :
@@ -14504,16 +16986,7 @@ if test "x$GCC" = xyes \
as_fn_error $? "GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'." "$LINENO" 5
fi
-#### Find out which version of Emacs this is.
-version=`grep 'const char emacs_version' ${srcdir}/src/emacs.c \
- | sed -e 's/^[^"]*"\([^"]*\)".*$/\1/'`
-if test x"${version}" = x; then
- as_fn_error $? "can't find current emacs version in \`${srcdir}/src/emacs.c'." "$LINENO" 5
-fi
-if test x"${version}" != x"$PACKAGE_VERSION"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: version mismatch between \`${srcdir}/configure.in' and \`${srcdir}/src/emacs.c'." >&5
-$as_echo "$as_me: WARNING: version mismatch between \`${srcdir}/configure.in' and \`${srcdir}/src/emacs.c'." >&2;}
-fi
+version=$PACKAGE_VERSION
### Specify what sort of things we'll be editing into Makefile and config.h.
### Use configuration here uncanonicalized to avoid exceeding size limits.
@@ -14992,7 +17465,7 @@ test "${prefix}" != NONE &&
test "${exec_prefix}" != NONE &&
exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`
-ac_config_files="$ac_config_files Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile"
+ac_config_files="$ac_config_files Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile test/automated/Makefile"
ac_config_commands="$ac_config_commands default"
@@ -15105,6 +17578,58 @@ LIBOBJS=$ac_libobjs
LTLIBOBJS=$ac_ltlibobjs
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then
+ as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+ gl_libobjs=
+ gl_ltlibobjs=
+ if test -n "$gl_LIBOBJS"; then
+ # Remove the extension.
+ sed_drop_objext='s/\.o$//;s/\.obj$//'
+ for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
+ gl_libobjs="$gl_libobjs $i.$ac_objext"
+ gl_ltlibobjs="$gl_ltlibobjs $i.lo"
+ done
+ fi
+ gl_LIBOBJS=$gl_libobjs
+
+ gl_LTLIBOBJS=$gl_ltlibobjs
+
+
+
+ gltests_libobjs=
+ gltests_ltlibobjs=
+ if test -n "$gltests_LIBOBJS"; then
+ # Remove the extension.
+ sed_drop_objext='s/\.o$//;s/\.obj$//'
+ for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
+ gltests_libobjs="$gltests_libobjs $i.$ac_objext"
+ gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
+ done
+ fi
+ gltests_LIBOBJS=$gltests_libobjs
+
+ gltests_LTLIBOBJS=$gltests_ltlibobjs
+
: "${CONFIG_STATUS=./config.status}"
@@ -15592,6 +18117,8 @@ gives unlimited permission to copy, distribute and modify it."
ac_pwd='$ac_pwd'
srcdir='$srcdir'
INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
test -n "\$AWK" || AWK=awk
_ACEOF
@@ -15698,6 +18225,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
#
# INIT-COMMANDS
#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPPFLAGS="$CPPFLAGS"
_ACEOF
@@ -15709,7 +18237,9 @@ for ac_config_target in $ac_config_targets
do
case $ac_config_target in
"src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h:src/config.in" ;;
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
"lib-src/Makefile") CONFIG_FILES="$CONFIG_FILES lib-src/Makefile" ;;
"oldXMenu/Makefile") CONFIG_FILES="$CONFIG_FILES oldXMenu/Makefile" ;;
"doc/emacs/Makefile") CONFIG_FILES="$CONFIG_FILES doc/emacs/Makefile" ;;
@@ -15720,6 +18250,7 @@ do
"lwlib/Makefile") CONFIG_FILES="$CONFIG_FILES lwlib/Makefile" ;;
"lisp/Makefile") CONFIG_FILES="$CONFIG_FILES lisp/Makefile" ;;
"leim/Makefile") CONFIG_FILES="$CONFIG_FILES leim/Makefile" ;;
+ "test/automated/Makefile") CONFIG_FILES="$CONFIG_FILES test/automated/Makefile" ;;
"default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
@@ -16203,6 +18734,11 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
[\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
*) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -16257,6 +18793,7 @@ s&@builddir@&$ac_builddir&;t t
s&@abs_builddir@&$ac_abs_builddir&;t t
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
$ac_datarootdir_hack
"
eval sed \"\$ac_sed_extra\" "$ac_file_inputs" |
@@ -16306,6 +18843,40 @@ $as_echo "$as_me: $ac_file is unchanged" >&6;}
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
|| as_fn_error $? "could not create -" "$LINENO" 5
fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$_am_arg" : 'X\(//\)[^/]' \| \
+ X"$_am_arg" : 'X\(//\)$' \| \
+ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
;;
:C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
@@ -16315,6 +18886,101 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir=$dirpart/$fdir; as_fn_mkdir_p
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
"default":C)
### Make the necessary directories, if they don't exist.
@@ -16369,4 +19035,3 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi
-
diff --git a/configure.in b/configure.in
index dbced95093..315840e014 100644
--- a/configure.in
+++ b/configure.in
@@ -4,9 +4,7 @@ dnl autoconf
dnl in the directory containing this script.
dnl If you changed any AC_DEFINES, also run autoheader.
dnl
-dnl Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2003, 2004,
-dnl 2005, 2006, 2007, 2008, 2009, 2010
-dnl Free Software Foundation, Inc.
+dnl Copyright (C) 1994-1996, 1999-2011 Free Software Foundation, Inc.
dnl
dnl This file is part of GNU Emacs.
dnl
@@ -27,6 +25,7 @@ AC_PREREQ(2.65)
AC_INIT(emacs, 24.0.50)
AC_CONFIG_HEADER(src/config.h:src/config.in)
AC_CONFIG_SRCDIR(src/lisp.h)
+AM_INIT_AUTOMAKE
dnl Support for --program-prefix, --program-suffix and
dnl --program-transform-name options
@@ -45,8 +44,6 @@ archlibdir='${libexecdir}/emacs/${version}/${configuration}'
docdir='${datadir}/emacs/${version}/etc'
gamedir='${localstatedir}/games/emacs'
-gameuser=games
-
dnl OPTION_DEFAULT_OFF(NAME, HELP-STRING)
dnl Create a new --with option that defaults to being disabled.
dnl NAME is the base name of the option. The shell variable with_NAME
@@ -203,6 +200,12 @@ AC_ARG_WITH([crt-dir],dnl
The default is /usr/lib, or /usr/lib64 on some platforms.])])
CRT_DIR="${with_crt_dir}"
+AC_ARG_WITH(gameuser,dnl
+[AS_HELP_STRING([--with-gameuser=USER],[user for shared game score files])])
+test "X${with_gameuser}" != X && test "${with_gameuser}" != yes \
+ && gameuser="${with_gameuser}"
+test "X$gameuser" = X && gameuser=games
+
AC_ARG_WITH([gnustep-conf],dnl
[AS_HELP_STRING([--with-gnustep-conf=PATH],[path to GNUstep.conf; default $GNUSTEP_CONFIG_FILE, or /etc/GNUstep/GNUstep.conf])])
test "X${with_gnustep_conf}" != X && test "${with_gnustep_conf}" != yes && \
@@ -510,6 +513,17 @@ case "${canonical}" in
CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
;;
+ ia64*-hp-hpux1[1-9]* )
+ machine=hp800 opsys=hpux11
+ ## FIXME. Peter O'Gorman reports that dumping using unexelf.o doesn't
+ ## work either: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6811
+ CANNOT_DUMP=yes
+ ;;
+
+ hppa*-*-linux-gnu* )
+ machine=hp800 opsys=gnu-linux
+ ;;
+
## IBM machines
rs6000-ibm-aix4.[23]* )
machine=ibmrs6000 opsys=aix4-2
@@ -634,6 +648,10 @@ SPECIFIED_CFLAGS="$CFLAGS"
dnl Sets GCC=yes if using gcc.
AC_PROG_CC
+AM_PROG_CC_C_O
+
+# Initialize gnulib right after verifying that the C compiler works.
+gl_EARLY
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
@@ -681,9 +699,6 @@ else
test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS"
fi
-dnl checks for Unix variants
-AC_USE_SYSTEM_EXTENSIONS
-
### Use -Wno-pointer-sign if the compiler supports it
AC_MSG_CHECKING([whether gcc understands -Wno-pointer-sign])
SAVE_CFLAGS="$CFLAGS"
@@ -787,9 +802,12 @@ fi
## should test for it as it does for any other build requirement.
## We use the presence of $srcdir/info/emacs to distinguish a release,
## with pre-built manuals, from a Bazaar checkout.
+HAVE_MAKEINFO=yes
+
if test "$MAKEINFO" = "no"; then
+ MAKEINFO=makeinfo
if test "x${with_makeinfo}" = "xno"; then
- MAKEINFO=off
+ HAVE_MAKEINFO=no
elif test ! -e $srcdir/info/emacs; then
AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.6, and your
source tree does not seem to have pre-built manuals in the `info' directory.
@@ -797,6 +815,7 @@ Either install a suitable version of makeinfo, or re-run configure
with the `--without-makeinfo' option to build without the manuals.] )
fi
fi
+AC_SUBST(HAVE_MAKEINFO)
dnl Add our options to ac_link now, after it is set up.
@@ -833,16 +852,16 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
CPP=`eval "echo $CPP"`
-dnl Not used by any currently supported platform.
dnl The function dump-emacs will not be defined and temacs will do
dnl (load "loadup") automatically unless told otherwise.
-CANNOT_DUMP=no
+test "x$CANNOT_DUMP" = "x" && CANNOT_DUMP=no
case "$opsys" in
- your-opsys-here)
- CANNOT_DUMP=yes
- AC_DEFINE(CANNOT_DUMP, 1, [Define if Emacs cannot be dumped on your system.])
- ;;
+ your-opsys-here) CANNOT_DUMP=yes ;;
esac
+
+test "$CANNOT_DUMP" = "yes" && \
+ AC_DEFINE(CANNOT_DUMP, 1, [Define if Emacs cannot be dumped on your system.])
+
AC_SUBST(CANNOT_DUMP)
@@ -867,11 +886,11 @@ case "$opsys" in
# emacs, instead of the generic ELF dump code found in unexelf.c.
# The resulting binary has a complete symbol table, and is better
# for debugging and other observability tools (debuggers, pstack, etc).
- #
+ #
# If you encounter a problem using dldump(), please consider sending
# a message to the OpenSolaris tools-linking mailing list:
# http://mail.opensolaris.org/mailman/listinfo/tools-linking
- #
+ #
# It is likely that dldump() works with older Solaris too, but this has
# not been tested, so for now this change is for Solaris 10 or newer.
UNEXEC_OBJ=unexsol.o
@@ -938,7 +957,7 @@ if test "$machine" = "alpha"; then
AC_MSG_ERROR([What gives? Fix me if DEC Unix supports ELF now.])
fi
else
- UNEXEC_OBJ=unexalpha.o
+ UNEXEC_OBJ=unexalpha.o
fi
fi
AC_SUBST(C_SWITCH_MACHINE)
@@ -1120,7 +1139,7 @@ AC_DEFUN([PKG_CHECK_MODULES], [
if test "${with_sound}" != "no"; then
# Sound support for GNU/Linux and the free BSDs.
- AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h soundcard.h,
+ AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h soundcard.h,
have_sound_header=yes)
# Emulation library used on NetBSD.
AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
@@ -1313,6 +1332,19 @@ AH_TEMPLATE(POINTER_TYPE,
dnl Check for endianess
AC_C_BIGENDIAN
+AC_CACHE_CHECK([for __attribute__ ((__aligned__ (expr)))],
+ [emacs_cv_attribute_aligned],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[char __attribute__ ((__aligned__ (1 << 3))) c;]],
+ [[]])],
+ [emacs_cv_attribute_aligned=yes],
+ [emacs_cv_attribute_aligned=no])])
+if test $emacs_cv_attribute_aligned = yes; then
+ AC_DEFINE([HAVE_ATTRIBUTE_ALIGNED], 1,
+ [Define to 1 if GCC-style __attribute__ ((__aligned__ (expr))) works.])
+fi
+
dnl check for Make feature
AC_PROG_MAKE_SET
@@ -1794,7 +1826,7 @@ if test "${HAVE_X11}" = "yes"; then
PKG_CHECK_MODULES(IMAGEMAGICK, $IMAGEMAGICK_MODULE, HAVE_IMAGEMAGICK=yes, :)
AC_SUBST(IMAGEMAGICK_CFLAGS)
AC_SUBST(IMAGEMAGICK_LIBS)
-
+
if test $HAVE_IMAGEMAGICK = yes; then
AC_DEFINE(HAVE_IMAGEMAGICK, 1, [Define to 1 if using imagemagick.])
CFLAGS="$CFLAGS $IMAGEMAGICK_CFLAGS"
@@ -2229,17 +2261,9 @@ if test "${HAVE_X11}" = "yes"; then
HAVE_XFT=no
fi
-
- HAVE_FREETYPE=no
## We used to allow building with FreeType and without Xft.
## However, the ftx font backend driver is not in good shape.
- if test "${HAVE_XFT}" = "yes"; then
- dnl As we use Xft, we anyway use freetype.
- dnl There's no need for additional CFLAGS and LIBS.
- HAVE_FREETYPE=yes
- FONTCONFIG_CFLAGS=
- FONTCONFIG_LIBS=
- fi
+ HAVE_FREETYPE=$HAVE_XFT
HAVE_LIBOTF=no
if test "${HAVE_FREETYPE}" = "yes"; then
@@ -2502,7 +2526,7 @@ AC_SUBST(LIBXSM)
### Use libxml (-lxml2) if available
if test "${with_xml2}" != "no"; then
### I'm not sure what the version number should be, so I just guessed.
- PKG_CHECK_MODULES(LIBXML2, libxml-2.0 > 2.2.0, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
+ PKG_CHECK_MODULES(LIBXML2, libxml-2.0 > 2.6.17, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
if test "${HAVE_LIBXML2}" = "yes"; then
LIBS="$LIBXML2_LIBS $LIBS"
AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
@@ -2619,7 +2643,7 @@ AC_SUBST(BLESSMAIL_TARGET)
AC_CHECK_FUNCS(gethostname getdomainname dup2 \
rename closedir mkdir rmdir sysinfo getrusage get_current_dir_name \
random lrand48 logb frexp fmod rint cbrt ftime setsid \
-strerror fpathconf select mktime euidaccess getpagesize tzset setlocale \
+strerror fpathconf select euidaccess getpagesize tzset setlocale \
utimes getrlimit setrlimit setpgid getcwd getwd shutdown getaddrinfo \
__fpending mblen mbrlen mbsinit strsignal setitimer ualarm strchr strrchr \
sendto recvfrom getsockopt setsockopt getsockname getpeername \
@@ -2627,29 +2651,29 @@ gai_strerror mkstemp getline getdelim mremap memmove fsync sync \
memset memcmp difftime memcpy mempcpy mblen mbrlen posix_memalign \
cfmakeraw cfsetspeed isnan copysign __executable_start)
-AC_CHECK_HEADERS(sys/un.h)
-
-AC_FUNC_MKTIME
-if test "$ac_cv_func_working_mktime" = no; then
- AC_DEFINE(BROKEN_MKTIME, 1, [Define to 1 if the mktime function is broken.])
+dnl Cannot use AC_CHECK_FUNCS
+AC_CACHE_CHECK([for __builtin_unwind_init],
+ emacs_cv_func___builtin_unwind_init,
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([], [__builtin_unwind_init ();])],
+ emacs_cv_func___builtin_unwind_init=yes,
+ emacs_cv_func___builtin_unwind_init=no)])
+if test $emacs_cv_func___builtin_unwind_init = yes; then
+ AC_DEFINE(HAVE___BUILTIN_UNWIND_INIT, 1,
+ [Define to 1 if you have the `__builtin_unwind_init' function.])
fi
+AC_CHECK_HEADERS(sys/un.h)
+
AC_FUNC_GETLOADAVG
AC_FUNC_FSEEKO
-# Configure getopt.
-m4_include([m4/getopt.m4])
-gl_GETOPT_IFELSE([
- gl_GETOPT_SUBSTITUTE_HEADER
- gl_PREREQ_GETOPT
- GETOPTOBJS='getopt.o getopt1.o'
-])
-AC_SUBST(GETOPTOBJS)
-
AC_FUNC_GETPGRP
-AC_FUNC_STRFTIME
+# Configure gnulib.
+gl_ASSERT_NO_GNULIB_POSIXCHECK
+gl_ASSERT_NO_GNULIB_TESTS
+gl_INIT
# UNIX98 PTYs.
AC_CHECK_FUNCS(grantpt)
@@ -3012,24 +3036,6 @@ AC_CHECK_TYPES(size_t)
AC_TYPE_MBSTATE_T
-dnl Restrict could probably be used effectively other than in regex.c.
-AC_CACHE_CHECK([for C restrict keyword], emacs_cv_c_restrict,
- [AC_TRY_COMPILE([void fred (int *restrict x);], [],
- emacs_cv_c_restrict=yes,
- [AC_TRY_COMPILE([void fred (int *__restrict x);], [],
- emacs_cv_c_restrict=__restrict,
- emacs_cv_c_restrict=no)])])
-case "$emacs_cv_c_restrict" in
- yes) emacs_restrict=restrict;;
- no) emacs_restrict="";;
- *) emacs_restrict="$emacs_cv_c_restrict";;
-esac
-if test "$emacs_restrict" != __restrict; then
- AC_DEFINE_UNQUOTED(__restrict, $emacs_restrict,
- [Define to compiler's equivalent of C99 restrict keyword.
- Don't define if equivalent is `__restrict'.])
-fi
-
AC_CACHE_CHECK([for C restricted array declarations], emacs_cv_c_restrict_arr,
[AC_TRY_COMPILE([void fred (int x[__restrict]);], [],
emacs_cv_c_restrict_arr=yes, emacs_cv_c_restrict_arr=no)])
@@ -3064,15 +3070,7 @@ if test "x$GCC" = xyes \
AC_MSG_ERROR([GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'.])
fi
-#### Find out which version of Emacs this is.
-[version=`grep 'const char emacs_version' ${srcdir}/src/emacs.c \
- | sed -e 's/^[^"]*"\([^"]*\)".*$/\1/'`]
-if test x"${version}" = x; then
- AC_MSG_ERROR([can't find current emacs version in `${srcdir}/src/emacs.c'.])
-fi
-if test x"${version}" != x"$PACKAGE_VERSION"; then
- AC_MSG_WARN([version mismatch between `${srcdir}/configure.in' and `${srcdir}/src/emacs.c'.])
-fi
+version=$PACKAGE_VERSION
### Specify what sort of things we'll be editing into Makefile and config.h.
### Use configuration here uncanonicalized to avoid exceeding size limits.
@@ -3236,7 +3234,7 @@ fi
if test "$HAVE_GTK" = "yes" || test "$HAVE_MENUS" != "yes"; then
OLDXMENU_TARGET=
- OLDXMENU=nothing
+ OLDXMENU=nothing
LIBXMENU=
OLDXMENU_DEPS=
fi
@@ -3300,7 +3298,7 @@ case "$opsys" in
headerpad_extra=690
fi
LD_SWITCH_SYSTEM_TEMACS="-prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra"
-
+
## This is here because src/Makefile.in did some extra fiddling around
## with LD_SWITCH_SYSTEM. The cpp logic was:
## #ifndef LD_SWITCH_SYSTEM
@@ -3436,8 +3434,9 @@ AC_SUBST(WINDOW_SUPPORT)
AH_TOP([/* GNU Emacs site configuration template file.
- Copyright (C) 1988, 1993, 1994, 1999, 2000, 2001, 2002, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2011
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -3519,13 +3518,6 @@ AH_BOTTOM([
#endif
#endif
-/* Avoid link-time collision with system mktime if we will use our own. */
-#if ! HAVE_MKTIME || BROKEN_MKTIME
-#define mktime emacs_mktime
-#endif
-
-#define my_strftime nstrftime /* for strftime.c */
-
/* These default definitions are good for almost all machines.
The exceptions override them in m/MACHINE.h. */
@@ -3728,10 +3720,10 @@ dnl Secondly, the GNU Coding standards require that one should be able
dnl to run `make prefix=/some/where/else' and override the values set
dnl by configure. This also explains the `move-if-change' test and
dnl the use of force in the `epaths-force' rule in Makefile.in.
-AC_OUTPUT(Makefile lib-src/Makefile oldXMenu/Makefile \
+AC_OUTPUT(Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile \
doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
doc/lispref/Makefile src/Makefile \
- lwlib/Makefile lisp/Makefile leim/Makefile, [
+ lwlib/Makefile lisp/Makefile leim/Makefile test/automated/Makefile, [
### Make the necessary directories, if they don't exist.
for dir in etc lisp ; do
@@ -3747,4 +3739,3 @@ if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then
fi
], [GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPPFLAGS="$CPPFLAGS"])
-
diff --git a/depcomp b/depcomp
new file mode 100755
index 0000000000..df8eea7e4c
--- /dev/null
+++ b/depcomp
@@ -0,0 +1,630 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 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 2, 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/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <[email protected]>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+ depmode Dependency tracking mode.
+ source Source file read by `PROGRAMS ARGS'.
+ object Object file output by `PROGRAMS ARGS'.
+ DEPDIR directory where to store dependencies.
+ depfile Dependency file to output.
+ tmpdepfile Temporary file to use when outputing dependencies.
+ libtool Whether libtool is used (yes/no).
+
+Report bugs to <[email protected]>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "depcomp $scriptversion"
+ exit $?
+ ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
+ exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags. We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write. Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+ # HP compiler uses -M and no extra arg.
+ gccflag=-M
+ depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+ # This is just like msvisualcpp but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u="sed s,\\\\\\\\,/,g"
+ depmode=msvisualcpp
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want. Yay! Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff. Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am. Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+ for arg
+ do
+ case $arg in
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+ *) set fnord "$@" "$arg" ;;
+ esac
+ shift # fnord
+ shift # $arg
+ done
+ "$@"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ mv "$tmpdepfile" "$depfile"
+ ;;
+
+gcc)
+## There are various ways to get dependency output from gcc. Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+## up in a subdir. Having to rename by hand is ugly.
+## (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+## -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+## than renaming).
+ if test -z "$gccflag"; then
+ gccflag=-MD,
+ fi
+ "$@" -Wp,"$gccflag$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+ sed -e 's/^[^:]*: / /' \
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header). We avoid this by adding
+## dummy dependencies for each header file. Too bad gcc doesn't do
+## this for us directly.
+ tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'. On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+sgi)
+ if test "$libtool" = yes; then
+ "$@" "-Wp,-MDupdate,$tmpdepfile"
+ else
+ "$@" -MDupdate "$tmpdepfile"
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
+ echo "$object : \\" > "$depfile"
+
+ # Clip off the initial element (the dependent). Don't try to be
+ # clever and replace this with sed code, as IRIX sed won't handle
+ # lines with more than a fixed number of characters (4096 in
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
+ # the IRIX cc adds comments like `#:fec' to the end of the
+ # dependency line.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+ tr '
+' ' ' >> "$depfile"
+ echo >> "$depfile"
+
+ # The second pass generates a dummy entry for each header file.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+aix)
+ # The C for AIX Compiler uses -M and outputs the dependencies
+ # in a .u file. In older versions, this file always lives in the
+ # current directory. Also, the AIX compiler puts `$object:' at the
+ # start of each line; $object doesn't have directory information.
+ # Version 6 uses the directory in both cases.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$base.u
+ tmpdepfile3=$dir.libs/$base.u
+ "$@" -Wc,-M
+ else
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$dir$base.u
+ tmpdepfile3=$dir$base.u
+ "$@" -M
+ fi
+ stat=$?
+
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form `foo.o: dependent.h'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+icc)
+ # Intel's C compiler understands `-MD -MF file'. However on
+ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+ # ICC 7.0 will fill foo.d with something like
+ # foo.o: sub/foo.c
+ # foo.o: sub/foo.h
+ # which is wrong. We want:
+ # sub/foo.o: sub/foo.c
+ # sub/foo.o: sub/foo.h
+ # sub/foo.c:
+ # sub/foo.h:
+ # ICC 7.1 will output
+ # foo.o: sub/foo.c sub/foo.h
+ # and will wrap long lines using \ :
+ # foo.o: sub/foo.c ... \
+ # sub/foo.h ... \
+ # ...
+
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ # Each line is of the form `foo.o: dependent.h',
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+ sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp2)
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+ # compilers, which have integrated preprocessors. The correct option
+ # to use with these is +Maked; it writes dependencies to a file named
+ # 'foo.d', which lands next to the object file, wherever that
+ # happens to be.
+ # Much of this is similar to the tru64 case; see comments there.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir.libs/$base.d
+ "$@" -Wc,+Maked
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ "$@" +Maked
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+ # Add `dependent.h:' lines.
+ sed -ne '2,${
+ s/^ *//
+ s/ \\*$//
+ s/$/:/
+ p
+ }' "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile" "$tmpdepfile2"
+ ;;
+
+tru64)
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in `foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+ if test "$libtool" = yes; then
+ # With Tru64 cc, shared objects can also be used to make a
+ # static library. This mechanism is used in libtool 1.4 series to
+ # handle both shared and static libraries in a single compilation.
+ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+ #
+ # With libtool 1.5 this exception was removed, and libtool now
+ # generates 2 separate objects for the 2 libraries. These two
+ # compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
+ tmpdepfile2=$dir$base.o.d # libtool 1.5
+ tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
+ tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.o.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ tmpdepfile4=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+#nosideeffect)
+ # This comment above is used by automake to tell side-effect
+ # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ test -z "$dashmflag" && dashmflag=-M
+ # Require at least two characters before searching for `:'
+ # in the target name. This is to cope with DOS-style filenames:
+ # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+ "$@" $dashmflag |
+ sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+dashXmstdout)
+ # This case only exists to satisfy depend.m4. It is never actually
+ # run, as this mode is specially recognized in the preamble.
+ exit 1
+ ;;
+
+makedepend)
+ "$@" || exit $?
+ # Remove any Libtool call
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+ # X makedepend
+ shift
+ cleared=no eat=no
+ for arg
+ do
+ case $cleared in
+ no)
+ set ""; shift
+ cleared=yes ;;
+ esac
+ if test $eat = yes; then
+ eat=no
+ continue
+ fi
+ case "$arg" in
+ -D*|-I*)
+ set fnord "$@" "$arg"; shift ;;
+ # Strip any option that makedepend may not understand. Remove
+ # the object too, otherwise makedepend will parse it as a source file.
+ -arch)
+ eat=yes ;;
+ -*|$object)
+ ;;
+ *)
+ set fnord "$@" "$arg"; shift ;;
+ esac
+ done
+ obj_suffix=`echo "$object" | sed 's/^.*\././'`
+ touch "$tmpdepfile"
+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
+ ;;
+
+cpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ "$@" -E |
+ sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ sed '$ s: \\$::' > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ cat < "$tmpdepfile" >> "$depfile"
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvisualcpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ IFS=" "
+ for arg
+ do
+ case "$arg" in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E 2>/dev/null |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
+ echo " " >> "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvcmsys)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+none)
+ exec "$@"
+ ;;
+
+*)
+ echo "Unknown depmode $depmode" 1>&2
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index e390c6cbc1..c5b31d7013 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,105 @@
+2011-01-29 Eli Zaretskii <[email protected]>
+
+ * makefile.w32-in (MAKEINFO): Remove options, leave only program name.
+ (MAKEINFO_OPTS): New variable.
+ (ENVADD, $(infodir)/emacs): Use $(MAKEINFO_OPTS).
+ (emacs.html): New target.
+ (clean): Remove emacs.html.
+
+2011-01-23 Werner Lemberg <[email protected]>
+
+ * Makefile.in (MAKEINFO): Now controlled by `configure'.
+ (MAKEINFO_OPTS): New variable. Use it where appropriate.
+ (ENVADD): Updated.
+
+2011-01-18 Glenn Morris <[email protected]>
+
+ * ack.texi, emacs.texi (Acknowledgments): Update for ERT addition.
+
+ * ack.texi (Acknowledgments): Remove mention of replaced prolog.el.
+
+2011-01-15 Chong Yidong <[email protected]>
+
+ * building.texi (Compilation): Improve instructions for running two
+ compilations (Bug#7573).
+
+ * files.texi (Backup Names): Document the new location of the
+ last-resort backup file.
+
+ * files.texi (File Aliases): Move directory-abbrev-alist doc from Lisp
+ manual. Explain why directory-abbrev-alist elements should be anchored
+ (Bug#7777).
+
+2011-01-15 Eli Zaretskii <[email protected]>
+
+ * msdog.texi (Windows Startup): Correct inaccurate description of
+ differences between emacsclient.exe and emacsclientw.exe.
+
+2011-01-02 Chong Yidong <[email protected]>
+
+ * rmail.texi (Rmail Display): Edit for grammar and conciseness.
+
+2011-01-02 Kenichi Handa <[email protected]>
+
+ * rmail.texi (Rmail Display): Describe new features of Rmail in Info.
+
+2011-01-02 Eli Zaretskii <[email protected]>
+
+ * frames.texi (Cut and Paste): Modify the section's name and text:
+ don't mix "cut/paste" with "kill/yank".
+ (Cut/Paste Other App): Describe the per-session emulation of PRIMARY.
+ (Bug#7702)
+
+ * trouble.texi (Checklist): Mention debug-on-quit. (Bug#7667)
+
+2011-01-02 Glenn Morris <[email protected]>
+
+ * maintaining.texi: Move inclusion of emerge after EDE, so that it
+ matches its position in the menu. (Bug#7674)
+
+2011-01-02 Glenn Morris <[email protected]>
+
+ * trouble.texi (Checklist): Mention not replying via news either.
+
+2010-12-30 Tassilo Horn <[email protected]>
+
+ * misc.texi (Document View): Update DocView section with newly
+ supported document formats.
+
+2010-12-21 Chong Yidong <[email protected]>
+
+ * killing.texi: Resection the Info version to conform to the
+ printed manual, to avoid making sections on Accumulating Text, CUA
+ and Rectangles into full chapters.
+
+2010-12-13 Eli Zaretskii <[email protected]>
+
+ * custom.texi (Init Syntax): Add index entries for "character syntax".
+ (Bug#7576)
+
+2010-12-13 Karel Klíč <[email protected]>
+
+ * text.texi (HTML Mode): Small fixes. (Bug#7607)
+
+2010-12-13 Glenn Morris <[email protected]>
+
+ * trouble.texi (Checklist): Fix typo in newsgroup name.
+
+2010-12-13 Chong Yidong <[email protected]>
+
+ * search.texi (Word Search): Note that the lazy highlight always
+ matches to whole words (Bug#7470).
+
+2010-12-13 Eli Zaretskii <[email protected]>
+
+ * display.texi (Optional Mode Line): Make the description of
+ load-average more accurate.
+
+ * msdog.texi (Windows HOME): Mention that HOME can also be set in the
+ registry, with a cross-reference.
+ (Windows Startup): New node. Move the stuff about the current
+ directory from "Windows HOME".
+
2010-11-27 Bob Rogers <[email protected]>
* maintaining.texi (VC With A Locking VCS, VC Directory Commands):
@@ -7474,9 +7576,7 @@
;; coding: utf-8
;; End:
- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1993-1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/doc/emacs/Makefile.in b/doc/emacs/Makefile.in
index cdbd718a58..0ba396e642 100644
--- a/doc/emacs/Makefile.in
+++ b/doc/emacs/Makefile.in
@@ -1,8 +1,6 @@
#### Makefile for the Emacs Manual
-# Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-# 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 1994, 1996-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -39,14 +37,16 @@ texinfodir = $(srcdir)/../misc
# The makeinfo program is part of the Texinfo distribution.
# Use --force so that it generates output even if there are errors.
-MAKEINFO = makeinfo --force -I $(srcdir)
+MAKEINFO = @MAKEINFO@
+MAKEINFO_OPTS = --force -I $(srcdir)
TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
DVIPS = dvips
-ENVADD = TEXINPUTS="$(srcdir):$(texinfodir):$(TEXINPUTS)" MAKEINFO="$(MAKEINFO) -I$(srcdir)"
+ENVADD = TEXINPUTS="$(srcdir):$(texinfodir):$(TEXINPUTS)" \
+ MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)"
EMACS_XTRA= \
@@ -129,7 +129,7 @@ ps: emacs.ps
$(infodir)/emacs: ${EMACSSOURCES}
$(mkinfodir)
- $(MAKEINFO) -o $@ $<
+ $(MAKEINFO) $(MAKEINFO_OPTS) -o $@ $<
emacs.dvi: ${EMACSSOURCES}
$(ENVADD) $(TEXI2DVI) $<
@@ -141,7 +141,7 @@ emacs.pdf: ${EMACSSOURCES}
$(ENVADD) $(TEXI2PDF) $<
emacs.html: ${EMACSSOURCES}
- $(MAKEINFO) --html -o $@ $<
+ $(MAKEINFO) $(MAKEINFO_OPTS) --html -o $@ $<
emacs-xtra.dvi: $(EMACS_XTRA)
$(ENVADD) $(TEXI2DVI) $<
diff --git a/doc/emacs/abbrevs.texi b/doc/emacs/abbrevs.texi
index 9039ca662a..d0833ea085 100644
--- a/doc/emacs/abbrevs.texi
+++ b/doc/emacs/abbrevs.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Abbrevs
@chapter Abbrevs
@@ -455,7 +455,3 @@ customize dynamic abbrev expansion to handle optional prefixes by setting
the variable @code{dabbrev-abbrev-skip-leading-regexp}. Its value
should be a regular expression that matches the optional prefix that
dynamic abbrev expression should ignore.
-
-@ignore
- arch-tag: 638e0079-9540-48ec-9166-414083e16445
-@end ignore
diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi
index 3b22392b12..d49fd7b7c6 100644
--- a/doc/emacs/ack.texi
+++ b/doc/emacs/ack.texi
@@ -1,7 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 1994-1997, 1999-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@node Acknowledgments, Screen, Concept Index, Top
@@ -870,6 +868,10 @@ generating JSON files.
Kentaro Ohkouchi created the Emacs icons used beginning with Emacs 23.
@item
+Christian Ohler wrote @file{ert.el}, a library for automated regression
+testing.
+
+@item
Alexandre Oliva wrote @file{gnus-mlspl.el}, a group params-based mail
splitting mechanism.
@@ -1239,12 +1241,12 @@ package, for GnuPG and PGP support.
@item
Masanobu Umeda wrote GNUS, a feature-rich reader for Usenet news that
was the ancestor of the current Gnus package. He also wrote
-@file{prolog.el}, a mode for editing Prolog code; @file{rmailsort.el}, a
-package for sorting messages in RMAIL folders; @file{metamail.el}, an
-interface to the Metamail program; @file{gnus-kill.el}, the Kill File
-mode for Gnus; @file{gnus-mh.el}, an mh-e interface for Gnus;
-@file{gnus-msg.el}, a mail and post interface for Gnus; and
-@file{timezone.el}, providing functions for dealing with time zones.
+@file{rmailsort.el}, a package for sorting messages in RMAIL folders;
+@file{metamail.el}, an interface to the Metamail program;
+@file{gnus-kill.el}, the Kill File mode for Gnus; @file{gnus-mh.el}, an
+mh-e interface for Gnus; @file{gnus-msg.el}, a mail and post interface
+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.
diff --git a/doc/emacs/anti.texi b/doc/emacs/anti.texi
index 748b43a17d..1ee93362ae 100644
--- a/doc/emacs/anti.texi
+++ b/doc/emacs/anti.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 2005-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Antinews, Mac OS / GNUstep, X Resources, Top
@@ -135,7 +135,3 @@ Support for Sun windows has been added.
To keep up with decreasing computer memory capacity and disk space, many
other functions and files have been eliminated in Emacs 22.3.
@end itemize
-
-@ignore
- arch-tag: 32932bd9-46f5-41b2-8a0e-fb0cc4caeb29
-@end ignore
diff --git a/doc/emacs/arevert-xtra.texi b/doc/emacs/arevert-xtra.texi
index 098d0483e9..374886cd95 100644
--- a/doc/emacs/arevert-xtra.texi
+++ b/doc/emacs/arevert-xtra.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the
@@ -186,7 +185,3 @@ should at the very least make clear whether enabling auto-reverting
for the buffer reliably assures that all information in the buffer is
completely up to date (or will be after @code{auto-revert-interval}
seconds).
-
-@ignore
- arch-tag: 2983e613-a272-45f6-9593-3010ad7f865e
-@end ignore
diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi
index 35c41a0109..edf07859e5 100644
--- a/doc/emacs/basic.texi
+++ b/doc/emacs/basic.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Basic, Minibuffer, Exiting, Top
@@ -744,4 +743,3 @@ characters. You can repeat that command (including its argument) three
additional times, to delete a total of 80 characters, by typing @kbd{C-x
z z z}. The first @kbd{C-x z} repeats the command once, and each
subsequent @kbd{z} repeats it once again.
-
diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi
index ca9279a9df..ae0d85f249 100644
--- a/doc/emacs/buffers.texi
+++ b/doc/emacs/buffers.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Buffers, Windows, Files, Top
@@ -674,7 +673,3 @@ provides a different and customizable mouse buffer menu which you may
prefer. It replaces the bindings of @code{mouse-buffer-menu},
normally on @kbd{C-Down-Mouse-1}, and the menu bar buffer menu. You
can customize the menu in the @code{msb} Custom group.
-
-@ignore
- arch-tag: 08c43460-f4f4-4b43-9cb5-1ea9ad991695
-@end ignore
diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi
index dca76407e2..1a02e92b67 100644
--- a/doc/emacs/building.texi
+++ b/doc/emacs/building.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Building, Maintaining, Programs, Top
@@ -122,10 +121,10 @@ confirmation before actually killing a compilation that is running.
You can also kill the compilation process with @kbd{M-x
kill-compilation}.
- If you want to run two compilations at once, you should start the
-first one, then rename the @samp{*compilation*} buffer (perhaps using
-@code{rename-uniquely}; @pxref{Misc Buffer}), and start the other
-compilation. That will create a new @samp{*compilation*} buffer.
+ To run two compilations at once, start the first one, then rename
+the @samp{*compilation*} buffer (perhaps using @code{rename-uniquely};
+@pxref{Misc Buffer}), then switch buffers and start the other
+compilation. This will create a new @samp{*compilation*} buffer.
Emacs does not expect a compiler process to launch asynchronous
subprocesses; if it does, and they keep running after the main
@@ -1640,8 +1639,3 @@ editing Lisp programs to be run in Emacs; see @pxref{Lisp Eval}): in
both modes it has the effect of installing the function definition
that point is in, but the way of doing so is different according to
where the relevant Lisp environment is found.
-
-
-@ignore
- arch-tag: 9c3c2f71-b332-4144-8500-3ff9945a50ed
-@end ignore
diff --git a/doc/emacs/cal-xtra.texi b/doc/emacs/cal-xtra.texi
index de36ccc4f5..b936636403 100644
--- a/doc/emacs/cal-xtra.texi
+++ b/doc/emacs/cal-xtra.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the
@@ -900,7 +899,3 @@ for example in the European style to @var{day}, @var{month}, @var{year}.)
@var{mark} which specifies how to mark the date in the calendar display.
If one of these functions decides that it applies to a certain date,
it returns a value that contains @var{mark}, as described above.
-
-@ignore
- arch-tag: 52cb299f-fd1f-4616-bfe6-91b988669431
-@end ignore
diff --git a/doc/emacs/calendar.texi b/doc/emacs/calendar.texi
index 89504764d7..757dc3b4ac 100644
--- a/doc/emacs/calendar.texi
+++ b/doc/emacs/calendar.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Calendar/Diary, Document View, Dired, Top
@@ -1709,7 +1708,3 @@ data in Emacs from the file.
@ifnottex
@include cal-xtra.texi
@end ifnottex
-
-@ignore
- arch-tag: 4531ef09-9df3-449d-9c52-2b5a4a337f92
-@end ignore
diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi
index ff8e4f84ab..12c1d9a8bf 100644
--- a/doc/emacs/cmdargs.texi
+++ b/doc/emacs/cmdargs.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Emacs Invocation, X Resources, GNU Free Documentation License, Top
@appendix Command Line Arguments for Emacs Invocation
@@ -1163,7 +1163,3 @@ test case that simplifies debugging of display problems.
The @samp{--xrm} option (@pxref{Resources}) specifies additional
X resource values.
-
-@ignore
- arch-tag: fffecd9e-7329-4a51-a3cc-dd4a9889340e
-@end ignore
diff --git a/doc/emacs/commands.texi b/doc/emacs/commands.texi
index 5fdd4ce42a..5f44e7cd07 100644
--- a/doc/emacs/commands.texi
+++ b/doc/emacs/commands.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@iftex
@chapter Characters, Keys and Commands
@@ -195,7 +195,3 @@ specific variables will make sense.
@ifnottex
@lowersections
@end ifnottex
-
-@ignore
- arch-tag: 9be43eef-d1f4-4d03-a916-c741ea713a45
-@end ignore
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index 18fdb58121..3bce186b38 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Customization, Quitting, Amusements, Top
@@ -2234,6 +2233,8 @@ a Meta character, as in @samp{\M-a} for @kbd{Meta-A} or @samp{\M-\C-a} for
non-@acronym{ASCII} in your init file.
@item Characters:
+@cindex Lisp character syntax
+@cindex character syntax
Lisp character constant syntax consists of a @samp{?} followed by
either a character or an escape sequence starting with @samp{\}.
Examples: @code{?x}, @code{?\n}, @code{?\"}, @code{?\)}. Note that
@@ -2250,6 +2251,7 @@ keys which send non-@acronym{ASCII} characters.
@code{nil} stands for `false'.
@item Other Lisp objects:
+@cindex Lisp object syntax
Write a single-quote (@code{'}) followed by the Lisp object you want.
@end table
@@ -2602,7 +2604,3 @@ stop working. It is therefore advisable to use one and only one
coding system, for your init file as well as the files you edit. For
example, don't mix the @samp{latin-1} and @samp{latin-9} coding
systems.
-
-@ignore
- arch-tag: c68abddb-4410-4fb5-925f-63394e971d93
-@end ignore
diff --git a/doc/emacs/dired-xtra.texi b/doc/emacs/dired-xtra.texi
index ce49b4d078..efb05226ba 100644
--- a/doc/emacs/dired-xtra.texi
+++ b/doc/emacs/dired-xtra.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the
@@ -42,7 +41,3 @@ without explicitly assigned switches.)
You can make Dired forget about all subdirectory switches and relist
all subdirectories with the buffer's default switches using
@kbd{M-x dired-reset-subdir-switches}. This also reverts the Dired buffer.
-
-@ignore
- arch-tag: e3865701-9179-4ffb-bc34-d321111c688d
-@end ignore
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index 4a5d52b64a..914c9984c1 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Dired, Calendar/Diary, Rmail, Top
@@ -1404,7 +1403,3 @@ it onto a Dired buffer; this either moves, copies, or creates a link
to the file in that directory. Precisely which action is taken is
determined by the originating program. Dragging files out of a Dired
buffer is currently not supported.
-
-@ignore
- arch-tag: d105f9b9-fc1b-4c5f-a949-9b2cf3ca2fc1
-@end ignore
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
index cd08a524f5..a21b660ee2 100644
--- a/doc/emacs/display.texi
+++ b/doc/emacs/display.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@@ -1010,11 +1009,12 @@ their parentheses. It looks like this:
@noindent
@vindex display-time-24hr-format
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 of running
-processes in the whole system recently. (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}.
+@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
+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}.
@cindex mail (on mode line)
@vindex display-time-use-mail-icon
@@ -1400,7 +1400,3 @@ page for other output. On such terminals, you might want to set the variable
@code{no-redraw-on-reenter} non-@code{nil}; this tells Emacs to
assume, when resumed, that the screen page it is using still contains
what Emacs last wrote there.
-
-@ignore
- arch-tag: 2219f910-2ff0-4521-b059-1bd231a536c4
-@end ignore
diff --git a/doc/emacs/doclicense.texi b/doc/emacs/doclicense.texi
index 6e9f5a144b..51342e96d6 100644
--- a/doc/emacs/doclicense.texi
+++ b/doc/emacs/doclicense.texi
@@ -506,7 +506,3 @@ to permit their use in free software.
@c ispell-local-pdict: "ispell-dict"
@c End:
-@ignore
- arch-tag: d68e7b7a-0c7c-4c15-905b-a9482214e25a
-@end ignore
-
diff --git a/doc/emacs/emacs-xtra.texi b/doc/emacs/emacs-xtra.texi
index f0c1ffb240..f9d1c27fe5 100644
--- a/doc/emacs/emacs-xtra.texi
+++ b/doc/emacs/emacs-xtra.texi
@@ -11,7 +11,7 @@
@copying
This manual describes specialized features of Emacs.
-Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009, 2010
+Copyright @copyright{} 2004-2011
Free Software Foundation, Inc.
@quotation
@@ -136,7 +136,3 @@ the Emacs manual.
@printindex cp
@bye
-
-@ignore
- arch-tag: 75c33f13-32c6-41b6-9537-847a312e2e49
-@end ignore
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 65a565dbe8..cd9a4602bf 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -11,9 +11,7 @@
This is the @value{EDITION} edition of the @cite{GNU Emacs Manual},@*
updated for Emacs version @value{EMACSVER}.
-Copyright @copyright{} 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997,
-1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1985-1987, 1993-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1192,6 +1190,7 @@ Emacs and Mac OS / GNUstep
Emacs and Microsoft Windows/MS-DOS
+* Windows Startup:: How to start Emacs on Windows.
* Text and Binary:: Text files use CRLF to terminate lines.
* Windows Files:: File-name conventions on Windows.
* ls in Lisp:: Emulation of @code{ls} for Dired.
@@ -1394,15 +1393,15 @@ Miller, Lawrence Mitchell, Richard Mlynarik, Gerd Moellmann, Stefan
Monnier, Morioka Tomohiko, Keith Moore, Jan Moringen, Glenn Morris,
Diane Murray, Sen Nagata, Erik Naggum, Thomas Neumann, Thien-Thi Nguyen,
Mike Newton, Jurgen Nickelsen, Dan Nicolaescu, Hrvoje Niksic, Jeff
-Norden, Andrew Norman, Alexandre Oliva, Bob Olson, Michael Olson,
-Takaaki Ota, Pieter E.@: J.@: Pareit, Ross Patterson, David Pearson,
-Jeff Peck, Damon Anton Permezel, Tom Perrine, William M.@: Perry, Per
-Persson, Jens Petersen, Daniel Pfeiffer, Richard L.@: Pieri, Fred
-Pierresteguy, Christian Plaunt, David Ponce, Francesco A.@: Potorti,
-Michael D. Prange, Mukesh Prasad, Ken Raeburn, Marko Rahamaa, Ashwin
-Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, Alex Rezinsky,
-Rob Riepel, David Reitter, Adrian Robert, Nick Roberts, Roland B.@:
-Roberts, John Robinson, Danny Roozendaal, Sebastian Rose, William
+Norden, Andrew Norman, Christian Ohler, Alexandre Oliva, Bob Olson,
+Michael Olson, Takaaki Ota, Pieter E.@: J.@: Pareit, Ross Patterson,
+David Pearson, Jeff Peck, Damon Anton Permezel, Tom Perrine, William
+M.@: Perry, Per Persson, Jens Petersen, Daniel Pfeiffer, Richard L.@:
+Pieri, Fred Pierresteguy, Christian Plaunt, David Ponce, Francesco A.@:
+Potorti, Michael D. Prange, Mukesh Prasad, Ken Raeburn, Marko Rahamaa,
+Ashwin Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, Alex
+Rezinsky, Rob Riepel, David Reitter, Adrian Robert, Nick Roberts, Roland
+B.@: Roberts, John Robinson, Danny Roozendaal, Sebastian Rose, William
Rosenblatt, Guillermo J.@: Rozas, Martin Rudalics, Ivar Rummelhoff,
Jason Rumney, Wolfgang Rupprecht, Kevin Ryde, James B. Salem, Masahiko
Sato, Jorgen Schaefer, Holger Schauer, William Schelter, Ralph
diff --git a/doc/emacs/emerge-xtra.texi b/doc/emacs/emerge-xtra.texi
index f502d3f472..b46868cf52 100644
--- a/doc/emacs/emerge-xtra.texi
+++ b/doc/emacs/emerge-xtra.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the
@@ -412,7 +411,3 @@ commands.
@ifnottex
@xref{Hooks}.
@end ifnottex
-
-@ignore
- arch-tag: cda63f09-9c5f-4ea1-adb9-4a820fdfb24e
-@end ignore
diff --git a/doc/emacs/entering.texi b/doc/emacs/entering.texi
index 743688f303..3c4a74c02b 100644
--- a/doc/emacs/entering.texi
+++ b/doc/emacs/entering.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@iftex
@chapter Entering and Exiting Emacs
@@ -181,7 +181,3 @@ keys to run any commands of your choice (@pxref{Keymaps}).
@ifnottex
@lowersections
@end ifnottex
-
-@ignore
- arch-tag: df798d8b-f253-4113-b585-f528f078a944
-@end ignore
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index 73c10ac834..0ebf59a9f3 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
-@c 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Files, Buffers, Keyboard Macros, Top
@@ -568,10 +567,10 @@ another from the newly saved contents if you save again.
appending @samp{~} to the file name being edited; thus, the backup
file for @file{eval.c} would be @file{eval.c~}.
- If access control stops Emacs from writing backup files under the usual
-names, it writes the backup file as @file{%backup%~} in your home
-directory. Only one such file can exist, so only the most recently
-made such backup is available.
+ If access control stops Emacs from writing backup files under the
+usual names, it writes the backup file as @file{~/.emacs.d/%backup%~}.
+Only one such file can exist, so only the most recently made such
+backup is available.
Emacs can also make @dfn{numbered backup files}. Numbered backup
file names contain @samp{.~}, the number, and another @samp{~} after
@@ -1160,7 +1159,6 @@ links point to directories.
@vindex find-file-existing-other-name
@vindex find-file-suppress-same-file-warnings
-
Normally, if you visit a file which Emacs is already visiting under
a different name, Emacs displays a message in the echo area and uses
the existing buffer visiting that file. This can happen on systems
@@ -1182,6 +1180,31 @@ then the file name recorded for a buffer is the file's @dfn{truename}
than the name you specify. Setting @code{find-file-visit-truename} also
implies the effect of @code{find-file-existing-other-name}.
+@cindex directory name abbreviation
+@vindex directory-abbrev-alist
+ Sometimes, a directory is ordinarily accessed through a symbolic
+link, and you may want Emacs to preferentially display its ``linked''
+name instead of its truename. To do this, customize the variable
+@code{directory-abbrev-alist}. Each element in this list should have
+the form @code{(@var{from} . @var{to})}, which says to replace
+@var{from} with @var{to} when it appears in a directory name. For
+this feature to work properly, @var{from} and @var{to} should point to
+the same file. The @var{from} string is actually a regular expression
+(@pxref{Regexps}); it should always start with @samp{\`}, to avoid
+matching to an incorrect part of the original directory name. The
+@var{to} string should be an ordinary absolute directory name. Do not
+use @samp{~} to stand for a home directory in the @var{to} string;
+Emacs performs these substitutions separately.
+
+ Here's an example, from a system on which file system
+@file{/home/fsf} and so on are normally accessed through symbolic
+links named @file{/fsf} and so on.
+
+@example
+(("\\`/home/fsf" . "/fsf")
+ ("\\`/home/gd" . "/gd"))
+@end example
+
@node Directories
@section File Directories
@@ -1974,7 +1997,3 @@ menu, where each existing fileset is represented by a submenu.
Control} to describe sets of files to be treated as a group for
purposes of version control operations. Those filesets are unnamed
and do not persist across Emacs sessions.
-
-@ignore
- arch-tag: 768d32cb-e15a-4cc1-b7bf-62c00ee12250
-@end ignore
diff --git a/doc/emacs/fixit.texi b/doc/emacs/fixit.texi
index e7b633769b..72100f8caf 100644
--- a/doc/emacs/fixit.texi
+++ b/doc/emacs/fixit.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Fixit, Keyboard Macros, Search, Top
@chapter Commands for Fixing Typos
@@ -423,7 +423,3 @@ that it only checks words in comments and string constants. This
feature is useful for editing programs. Type @kbd{M-x
flyspell-prog-mode} to enable or disable this mode in the current
buffer.
-
-@ignore
- arch-tag: 3359a443-96ed-448f-9f05-c8111ba8eac0
-@end ignore
diff --git a/doc/emacs/fortran-xtra.texi b/doc/emacs/fortran-xtra.texi
index d875ed4681..8f92df3f3a 100644
--- a/doc/emacs/fortran-xtra.texi
+++ b/doc/emacs/fortran-xtra.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the
@@ -582,7 +581,3 @@ to @samp{continue}, provided Abbrev mode is enabled.@refill
Type @samp{;?} or @samp{;C-h} to display a list of all the built-in
Fortran abbrevs and what they stand for.
-
-@ignore
- arch-tag: 23ed7c36-1517-4646-9235-2d5ade5f06f6
-@end ignore
diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi
index df4f0beff9..b952ef15af 100644
--- a/doc/emacs/frames.texi
+++ b/doc/emacs/frames.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
-@c 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Frames, International, Windows, Top
@@ -58,10 +57,10 @@ so that you can use many of the features described in this chapter.
@end menu
@node Cut and Paste
-@section Killing and Yanking on Graphical Displays
+@section Cutting and Pasting on Graphical Displays
- This section describes commands for selecting a region, killing, and
-yanking using the mouse.
+ This section describes commands for selecting a region, cutting, and
+pasting using the mouse.
@menu
* Mouse Commands:: Moving, cutting, and pasting, with the mouse.
@@ -248,6 +247,14 @@ has no ``memory'': each time you save something in the primary
selection, either in Emacs or in another X application, the previous
contents of the primary selection are lost.
+@cindex MS-Windows, and primary selection
+ MS-Windows provides no primary selection, but Emacs emulates it
+within a single Emacs session, by storing the selected text
+internally. Therefore, all the features and commands related to the
+primary selection work on Windows as they do on X, for cutting and
+pasting within the same session, but not across Emacs sessions or with
+other applications.
+
Whenever you kill some text using a command such as @kbd{C-w}
(@code{kill-region}), or copy it into the kill ring using a command
such as @kbd{M-w} (@code{kill-ring-save}), that text is also saved in
@@ -1431,7 +1438,3 @@ again.
In the console on GNU/Linux, you can use @kbd{M-x gpm-mouse-mode} to
enable terminal mouse support. You must have the gpm package
installed and running on your system in order for this to work.
-
-@ignore
- arch-tag: 7dcf3a31-a43b-45d4-a900-445b10d77e49
-@end ignore
diff --git a/doc/emacs/glossary.texi b/doc/emacs/glossary.texi
index 2d6b7f295b..3cf1cc522b 100644
--- a/doc/emacs/glossary.texi
+++ b/doc/emacs/glossary.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Glossary, Key Index, Intro, Top
@unnumbered Glossary
@@ -1372,7 +1372,3 @@ 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
-
-@ignore
- arch-tag: 0dd53ce1-5f09-4ac2-b13b-cf22b0f28d23
-@end ignore
diff --git a/doc/emacs/gnu.texi b/doc/emacs/gnu.texi
index 8c2f0a740e..dfdeedd65e 100644
--- a/doc/emacs/gnu.texi
+++ b/doc/emacs/gnu.texi
@@ -1,5 +1,5 @@
-@c Copyright (C) 1985, 1986, 1987, 1993, 1995, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993, 1995, 2001-2011
+@c Free Software Foundation, Inc.
@c
@c Permission is granted to anyone to make or distribute verbatim copies
@c of this document, in any medium, provided that the copyright notice and
@@ -549,7 +549,3 @@ this are bureaucracy and isometric struggles against competition. Free
software will greatly reduce these drains in the area of software
production. We must do this, in order for technical gains in productivity
to translate into less work for us.
-
-@ignore
- arch-tag: 21eb38f8-6fa0-480a-91cd-f3dab7148542
-@end ignore
diff --git a/doc/emacs/gpl.texi b/doc/emacs/gpl.texi
index 7fe5c3ebe4..1908d1f8f9 100644
--- a/doc/emacs/gpl.texi
+++ b/doc/emacs/gpl.texi
@@ -715,7 +715,3 @@ library, you may consider it more useful to permit linking proprietary
applications with the library. If this is what you want to do, use
the GNU Lesser General Public License instead of this License. But
first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}.
-
-@ignore
- arch-tag: 8b9947e1-c830-4d70-8907-a97e556731ba
-@end ignore
diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi
index 3e298bb0f9..8c0d768939 100644
--- a/doc/emacs/help.texi
+++ b/doc/emacs/help.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Help, Mark, M-x, Top
@@ -677,7 +676,3 @@ help text for active buffer text using the keyboard. @kbd{C-h .}
character after point, using the echo area. To display help text
automatically whenever it is available on the character after point, set
the variable @code{help-at-pt-display-when-idle} to @code{t}.
-
-@ignore
- arch-tag: 6f33ab62-bc75-4367-8057-fd67cc15c3a1
-@end ignore
diff --git a/doc/emacs/indent.texi b/doc/emacs/indent.texi
index 7ba3909e49..c4ef4781aa 100644
--- a/doc/emacs/indent.texi
+++ b/doc/emacs/indent.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Indentation, Text, Major Modes, Top
@chapter Indentation
@@ -258,7 +258,3 @@ preserving the columns of all nonblank text. @kbd{M-x tabify} scans the
region for sequences of spaces, and converts sequences of at least two
spaces to tabs if that can be done without changing indentation. @kbd{M-x
untabify} changes all tabs in the region to appropriate numbers of spaces.
-
-@ignore
- arch-tag: acc07de7-ae11-4ee8-a159-cb59c473f0fb
-@end ignore
diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi
index 150f05b599..41262e9c2d 100644
--- a/doc/emacs/killing.texi
+++ b/doc/emacs/killing.texi
@@ -1,16 +1,11 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
-@node Killing, Yanking, Mark, Top
+@node Killing, Registers, Mark, Top
@chapter Killing and Moving Text
-@ifnottex
-@raisesections
-@end ifnottex
-
@dfn{Killing} means erasing text and copying it into the @dfn{kill
ring}, from which you can bring it back into the buffer by
@dfn{yanking} it. (Some applications use the terms ``cutting'' and
@@ -19,9 +14,16 @@ moving or copying text within Emacs. It is very versatile, because
there are commands for killing many different types of syntactic
units.
-@iftex
+@menu
+* Deletion and Killing:: Commands that remove text.
+* Yanking:: Commands that insert text.
+* Accumulating Text:: Other methods to add text to the buffer.
+* Rectangles:: Operating on text in rectangular areas.
+* CUA Bindings:: Using C-x/C-c/C-v to kill and yank.
+@end menu
+
+@node Deletion and Killing
@section Deletion and Killing
-@end iftex
@cindex killing text
@cindex cutting text
@@ -233,7 +235,7 @@ explain why the text has not been erased.
non-@code{nil} value, identical subsequent kills yield a single
kill-ring entry, without duplication.
-@node Yanking, Accumulating Text, Killing, Top
+@node Yanking
@section Yanking
@cindex moving text
@cindex copying text
@@ -416,7 +418,7 @@ saved.
@code{kill-ring}; you can view the entire contents of the kill ring with
the command @kbd{C-h v kill-ring}.
-@node Accumulating Text, Rectangles, Yanking, Top
+@node Accumulating Text
@section Accumulating Text
@findex append-to-buffer
@findex prepend-to-buffer
@@ -487,7 +489,7 @@ can lead to losing some of your editing.
Another way to move text around is to store it in a register.
@xref{Registers}.
-@node Rectangles, CUA Bindings, Accumulating Text, Top
+@node Rectangles
@section Rectangles
@cindex rectangle
@cindex columns (and rectangles)
@@ -613,7 +615,7 @@ rectangle shifts right.
@code{string-rectangle}, but inserts the string on each line,
shifting the original text to the right.
-@node CUA Bindings, Registers, Rectangles, Top
+@node CUA Bindings
@section CUA Bindings
@findex cua-mode
@vindex cua-mode
@@ -664,11 +666,3 @@ 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}.
-
-@ifnottex
-@lowersections
-@end ifnottex
-
-@ignore
- arch-tag: d8da8f96-0928-449a-816e-ff2d3497866c
-@end ignore
diff --git a/doc/emacs/kmacro.texi b/doc/emacs/kmacro.texi
index daab7abd16..c52381a663 100644
--- a/doc/emacs/kmacro.texi
+++ b/doc/emacs/kmacro.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Keyboard Macros, Files, Fixit, Top
@chapter Keyboard Macros
@@ -569,7 +569,3 @@ including the final @kbd{C-j}), and appends them at the end of the
keyboard macro; it then terminates the step-editing and replaces the
original keyboard macro with the edited macro.
@end itemize
-
-@ignore
- arch-tag: c1b0dd3b-3159-4c08-928f-52e763953e9c
-@end ignore
diff --git a/doc/emacs/m-x.texi b/doc/emacs/m-x.texi
index 393eb78a14..cf55631e14 100644
--- a/doc/emacs/m-x.texi
+++ b/doc/emacs/m-x.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node M-x, Help, Minibuffer, Top
@chapter Running Commands by Name
@@ -69,7 +69,3 @@ the command is followed by arguments.
@kbd{M-x} works by running the command
@code{execute-extended-command}, which is responsible for reading the
name of another command and invoking it.
-
-@ignore
- arch-tag: b67bff53-9628-4666-b94e-eda972a7ba56
-@end ignore
diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi
index 044a722a07..5d5705456f 100644
--- a/doc/emacs/macos.texi
+++ b/doc/emacs/macos.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-@c 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 2000-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Mac OS / GNUstep, Microsoft Windows, Antinews, Top
@appendix Emacs and Mac OS / GNUstep
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index cf504b6be2..e1b8eef382 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
-@c 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Maintaining, Abbrevs, Building, Top
@@ -2288,10 +2287,6 @@ details.
You can also use the collection of tag names to complete a symbol
name in the buffer. @xref{Symbol Completion}.
-@ifnottex
-@include emerge-xtra.texi
-@end ifnottex
-
@node EDE
@section Emacs Development Environment
@cindex EDE (Emacs Development Environment)
@@ -2355,6 +2350,6 @@ To build all the targets in the project, type @kbd{C-c . C}
(@code{ede-compile-project}). EDE uses the file types to guess how
the target should be built.
-@ignore
- arch-tag: b9d83dfb-82ea-4ff6-bab5-05a3617091fb
-@end ignore
+@ifnottex
+@include emerge-xtra.texi
+@end ifnottex
diff --git a/doc/emacs/major.texi b/doc/emacs/major.texi
index d67bc4a13d..9256c712f0 100644
--- a/doc/emacs/major.texi
+++ b/doc/emacs/major.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Major Modes, Indentation, International, Top
@chapter Major Modes
@@ -235,7 +235,3 @@ However, this does not happen if the buffer contents specify a major
mode, and certain ``special'' major modes do not allow the mode to
change. You can turn off this mode-changing feature by setting
@code{change-major-mode-with-file-name} to @code{nil}.
-
-@ignore
- arch-tag: f2558800-cf32-4839-8acb-7d3b4df2a155
-@end ignore
diff --git a/doc/emacs/makefile.w32-in b/doc/emacs/makefile.w32-in
index 213077cbc8..bbbcaf0528 100644
--- a/doc/emacs/makefile.w32-in
+++ b/doc/emacs/makefile.w32-in
@@ -1,7 +1,6 @@
#### -*- Makefile -*- for the Emacs Manual
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 2003-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -28,7 +27,8 @@ srcdir=.
infodir = $(srcdir)/../../info
# The makeinfo program is part of the Texinfo distribution.
-MAKEINFO = makeinfo --force
+MAKEINFO = makeinfo
+MAKEINFO_OPTS = --force -I$(srcdir)
MULTI_INSTALL_INFO = $(srcdir)\..\..\nt\multi-install-info.bat
INFO_TARGETS = $(infodir)/emacs
DVI_TARGETS = emacs.dvi
@@ -41,7 +41,7 @@ INFOSOURCES = info.texi
TEXI2DVI = texi2dvi
ENVADD = $(srcdir)\..\..\nt\envadd.bat "TEXINPUTS=$(srcdir);$(TEXINPUTS)" \
- "MAKEINFO=$(MAKEINFO) -I$(srcdir)" /C
+ "MAKEINFO=$(MAKEINFO) $(MAKEINFO_OPTS)" /C
EMACS_XTRA=\
$(srcdir)/arevert-xtra.texi \
@@ -114,11 +114,14 @@ $(infodir)/dir:
$(MULTI_INSTALL_INFO) --info-dir=$(infodir) $(INFO_TARGETS)
$(infodir)/emacs: $(EMACSSOURCES)
- $(MAKEINFO) emacs.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) emacs.texi
emacs.dvi: $(EMACSSOURCES)
$(ENVADD) $(TEXI2DVI) $(srcdir)/emacs.texi
+emacs.html: $(EMACSSOURCES)
+ $(MAKEINFO) $(MAKEINFO_OPTS) --html -o $@ emacs.texi
+
emacs-xtra.dvi: emacs-xtra.texi $(EMACS_XTRA)
$(ENVADD) $(TEXI2DVI) $(srcdir)/emacs-xtra.texi
@@ -128,6 +131,7 @@ mostlyclean:
clean: mostlyclean
- $(DEL) *.dvi
- $(DEL) $(infodir)/emacs*
+ - $(DEL_TREE) emacs.html
distclean: clean
- $(DEL) makefile
diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi
index 2ebab1daae..b426020b7c 100644
--- a/doc/emacs/mark.texi
+++ b/doc/emacs/mark.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Mark, Killing, Help, Top
@@ -447,7 +446,3 @@ mode only until the mark is deactivated. One reason you may want to
use them is that some commands operate on the entire buffer instead of
the region when Transient Mark mode is off. Enabling Transient Mark
mode momentarily gives you a way to use these commands on the region.
-
-@ignore
- arch-tag: f35e4d82-911b-4cfc-a3d7-3c87b2abba20
-@end ignore
diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi
index 3750e1d49e..20086bd5e4 100644
--- a/doc/emacs/mini.texi
+++ b/doc/emacs/mini.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Minibuffer, M-x, Basic, Top
@@ -654,7 +653,3 @@ password (@pxref{Killing}). You may type either @key{RET} or
@key{ESC} to submit the password. Any other self-inserting character
key inserts the associated character into the password, and all other
input is ignored.
-
-@ignore
- arch-tag: ba913cfd-b70e-400f-b663-22b2c309227f
-@end ignore
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index 11d6ad70e6..d7143d1498 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@iftex
@@ -27,28 +26,39 @@ other editors, and various diversions and amusements.
@cindex PDF file
@cindex PS file
@cindex Postscript file
+@cindex OpenDocument file
+@cindex Microsoft Office file
@cindex DocView mode
@cindex mode, DocView
@cindex document viewer (DocView)
@findex doc-view-mode
DocView mode (@code{doc-view-mode}) is a viewer for DVI, Postscript
-(PS), and PDF documents. It provides features such as slicing,
-zooming, and searching inside documents. It works by converting the
-document to a set of images using the @command{gs} (GhostScript)
-command, and displaying those images.
+(PS), PDF, OpenDocument, and Microsoft Office documents. It provides
+features such as slicing, zooming, and searching inside documents. It
+works by converting the document to a set of images using the
+@command{gs} (GhostScript) command and other external tools
+@footnote{@code{gs} is a hard requirement. For DVI files,
+@code{dvipdf} or @code{dvipdfm} is needed. For OpenDocument and
+Microsoft Office documents, the @code{unoconv} tool is needed.}, and
+displaying those images.
@findex doc-view-toggle-display
@findex doc-view-toggle-display
@cindex doc-view-minor-mode
- When you visit a PDF or DVI file, Emacs automatically switches to
-DocView mode. When you visit a Postscript file, Emacs switches to PS
-mode, a major mode for editing Postscript files as text; however, it
-also enables DocView minor mode, so you can type @kbd{C-c C-c} to view
-the document with DocView. (PDF and DVI files, unlike Postscript
-files, are not usually human-editable.) In either case, repeating
-@kbd{C-c C-c} (@code{doc-view-toggle-display}) toggles between DocView
-and the file text.
+ When you visit a document file with the exception of Postscript
+files, Emacs automatically switches to DocView mode if possible
+@footnote{The needed external tools for this document type have to be
+available, emacs needs to run in a graphical frame, and PNG image
+support has to be compiled into emacs. If any of these requirements
+is not fulfilled, DocView falls back to an appropriate mode.}. When
+you visit a Postscript file, Emacs switches to PS mode, a major mode
+for editing Postscript files as text; however, it also enables DocView
+minor mode, so you can type @kbd{C-c C-c} to view the document with
+DocView. (PDF and DVI files, unlike Postscript files, are not usually
+human-editable.) In either case, repeating @kbd{C-c C-c}
+(@code{doc-view-toggle-display}) toggles between DocView and the file
+text.
You can explicitly toggle DocView mode with the command @code{M-x
doc-view-mode}, and DocView minor mode with the command @code{M-x
@@ -2872,7 +2882,3 @@ idle.
@ifnottex
@lowersections
@end ifnottex
-
-@ignore
- arch-tag: 8f094220-c0d5-4e9e-af7d-3e0da8187474
-@end ignore
diff --git a/doc/emacs/msdog-xtra.texi b/doc/emacs/msdog-xtra.texi
index 54b7e5d210..095a0cdacb 100644
--- a/doc/emacs/msdog-xtra.texi
+++ b/doc/emacs/msdog-xtra.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the
@@ -613,7 +613,3 @@ MS-DOS supports only some of the possible options you can mention in
the @code{dired-listing-switches} variable. The options that work are
@samp{-A}, @samp{-a}, @samp{-c}, @samp{-i}, @samp{-r}, @samp{-S},
@samp{-s}, @samp{-t}, and @samp{-u}.
-
-@ignore
- arch-tag: 868d50ff-07f8-4a13-a807-dab6f1cdb431
-@end ignore
diff --git a/doc/emacs/msdog.texi b/doc/emacs/msdog.texi
index 4be67aa31d..7358773485 100644
--- a/doc/emacs/msdog.texi
+++ b/doc/emacs/msdog.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Microsoft Windows, Manifesto, Mac OS / GNUstep, Top
@@ -28,6 +27,7 @@ However, a few special considerations apply, and they are described
here.
@menu
+* Windows Startup:: How to start Emacs on Windows.
* Text and Binary:: Text files use CRLF to terminate lines.
* Windows Files:: File-name conventions on Windows.
* ls in Lisp:: Emulation of @code{ls} for Dired.
@@ -44,6 +44,72 @@ here.
@end ifnottex
@end menu
+@node Windows Startup
+@section How to Start Emacs on MS-Windows
+@cindex starting Emacs on MS-Windows
+
+ There are several ways of starting Emacs on MS-Windows:
+
+@enumerate
+@item
+@pindex runemacs.exe
+@cindex desktop shortcut, MS-Windows
+@cindex start directory, MS-Windows
+@cindex directory where Emacs starts on MS-Windows
+From the desktop shortcut icon: either double-click the left mouse
+button on the icon, or click once, then press @key{RET}. The desktop
+shortcut should specify as its ``Target'' (in the ``Properties'' of
+the shortcut) the full absolute file name of @file{runemacs.exe},
+@emph{not} of @file{emacs.exe}. This is because @file{runemacs.exe}
+hides the console window that would have been created if the target of
+the shortcut were @file{emacs.exe} (which is a console program, as far
+as Windows is concerned). If you use this method, Emacs starts in the
+directory specified by the shortcut. To control where that is,
+right-click on the shortcut, select ``Properties'', and in the
+``Shortcut'' tab modify the ``Start in'' field to your liking.
+
+@item
+From the Command Prompt window, by typing @kbd{emacs @key{RET}} at the
+prompt. The Command Prompt window where you did that will not be
+available for invoking other commands until Emacs exits. In this
+case, Emacs will start in the current directory of the Windows shell.
+
+@item
+From the Command Prompt window, by typing @kbd{runemacs @key{RET}} at
+the prompt. The Command Prompt window where you did that will be
+immediately available for invoking other commands. In this case,
+Emacs will start in the current directory of the Windows shell.
+
+@item
+@cindex invoking Emacs from Windows Explorer
+@pindex emacsclient.exe
+@pindex emacsclientw.exe
+Via the Emacs client program, @file{emacsclient.exe} or
+@file{emacsclientw.exe}. This allows to invoke Emacs from other
+programs, and to reuse a running Emacs process for serving editing
+jobs required by other programs. @xref{Emacs Server}. The difference
+between @file{emacsclient.exe} and @file{emacsclientw.exe} is that the
+former is a console program, while the latter is a Windows GUI
+program. Both programs wait for Emacs to signal that the editing job
+is finished, before they exit and return control to the program that
+invoked them. Which one of them to use in each case depends on the
+expectations of the program that needs editing services. If that
+program is itself a console (text-mode) program, you should use
+@file{emacsclient.exe}, so that any of its messages and prompts appear
+in the same command window as those of the invoking program. By
+contrast, if the invoking program is a GUI program, you will be better
+off using @file{emacsclientw.exe}, because @file{emacsclient.exe} will
+pop up a command window if it is invoked from a GUI program. A
+notable situation where you would want @file{emacsclientw.exe} is when
+you right-click on a file in the Windows Explorer and select ``Open
+With'' from the pop-up menu. Use the @samp{--alternate-editor=} or
+@samp{-a} options if Emacs might not be running (or not running as a
+server) when @command{emacsclient} is invoked---that will always give
+you an editor. When invoked via @command{emacsclient}, Emacs will
+start in the current directory of the program that invoked
+@command{emacsclient}.
+@end enumerate
+
@node Text and Binary
@section Text Files and Binary Files
@cindex text and binary files on MS-DOS/MS-Windows
@@ -342,6 +408,9 @@ Windows 2K/XP and later, and either @file{C:\WINDOWS\Application Data}
or @file{C:\WINDOWS\Profiles\@var{username}\Application Data} on the
older Windows 9X/ME systems.
+ @code{HOME} can also be set in the system registry, for details see
+@ref{MS-Windows Registry}.
+
@cindex init file @file{.emacs} on MS-Windows
The home directory is where your init file @file{.emacs} is stored.
When Emacs starts, it first checks whether the environment variable
@@ -373,13 +442,6 @@ names, the Windows port of Emacs supports an alternative name
@file{_emacs} as a fallback, if such a file exists in the home
directory, whereas @file{.emacs} does not.
-@cindex start directory, MS-Windows
-@cindex directory where Emacs starts on MS-Windows
- If you use a Windows desktop shortcut to start Emacs, it starts in
-the directory specified by the shortcut. To control where that is,
-right-click on the shortcut, select ``Properties'', and in the
-``Shortcut'' tab modify the ``Start in'' field to your liking.
-
@node Windows Keyboard
@section Keyboard Usage on MS-Windows
@cindex keyboard, MS-Windows
@@ -925,4 +987,3 @@ click-to-focus policy.
@ifnottex
@include msdog-xtra.texi
@end ifnottex
-
diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi
index c8846b35e4..f0facec86c 100644
--- a/doc/emacs/mule.texi
+++ b/doc/emacs/mule.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1997, 1999-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node International, Major Modes, Frames, Top
@chapter International Character Set Support
@@ -1745,7 +1744,3 @@ highlighted region covering a contiguous range of character positions
may look discontinuous if the region spans reordered text. This is
normal and similar to behavior of other programs that support
bidirectional text.
-
-@ignore
- arch-tag: 310ba60d-31ef-4ce7-91f1-f282dd57b6b3
-@end ignore
diff --git a/doc/emacs/picture-xtra.texi b/doc/emacs/picture-xtra.texi
index 283bdea093..7e72fb0acb 100644
--- a/doc/emacs/picture-xtra.texi
+++ b/doc/emacs/picture-xtra.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the
@@ -285,7 +285,3 @@ other modes. @kbd{C-c C-y} (@code{picture-yank-rectangle}) inserts
(by overwriting) the rectangle that was most recently killed, while
@kbd{C-c C-x} (@code{picture-yank-rectangle-from-register}) does
likewise for the rectangle found in a specified register.
-
-@ignore
- arch-tag: 10e423ad-d896-42f2-a7e8-7018adeaf8c2
-@end ignore
diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi
index b729df105e..5b7322f214 100644
--- a/doc/emacs/programs.texi
+++ b/doc/emacs/programs.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
-@c 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Programs, Building, Text, Top
@@ -1839,7 +1838,3 @@ starts comments in assembler syntax.
@ifnottex
@include fortran-xtra.texi
@end ifnottex
-
-@ignore
- arch-tag: c7ee7409-40a4-45c7-bfb7-ae7f2c74d0c0
-@end ignore
diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi
index 0303d3a829..42ce85c7ee 100644
--- a/doc/emacs/regs.texi
+++ b/doc/emacs/regs.texi
@@ -1,8 +1,8 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
-@node Registers, Display, CUA Bindings, Top
+@node Registers, Display, Killing, Top
@chapter Registers
@cindex registers
@@ -330,7 +330,3 @@ points to.
Insert in the buffer the @emph{contents} of the file that bookmark
@var{bookmark} points to.
@end table
-
-@ignore
- arch-tag: b00af991-ebc3-4b3a-8e82-a3ac81ff2e64
-@end ignore
diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi
index ddf68e62bb..f1bb1f7aa9 100644
--- a/doc/emacs/rmail.texi
+++ b/doc/emacs/rmail.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Rmail, Dired, Sending Mail, Top
@@ -1101,57 +1100,90 @@ buffer before sorting it.
@node Rmail Display
@section Display of Messages
- Rmail reformats the header of each message before displaying it for
-the first time. Reformatting hides uninteresting header fields to
-reduce clutter. You can use the @kbd{t} command to show the entire
-header or to repeat the header reformatting operation.
+ This section describes how Rmail displays mail headers,
+@acronym{MIME} sections and attachments, and URLs.
@table @kbd
@item t
Toggle display of complete header (@code{rmail-toggle-header}).
@end table
-@vindex rmail-ignored-headers
-@vindex rmail-nonignored-headers
- Reformatting the header involves deleting most header fields, on the
-grounds that they are not interesting. The variable
-@code{rmail-ignored-headers} holds a regular expression that specifies
-which header fields to hide in this way---if it matches the beginning
-of a header field, that whole field is hidden. However, the variable
-@code{rmail-nonignored-headers} provides a further override: a header
-matching that regular expression is shown even if it matches
-@code{rmail-ignored-headers} too.
-
-@vindex rmail-displayed-headers
- As an alternative to the previous two variables, you can set
-@code{rmail-displayed-headers} instead. If non-@code{nil}, this should
-be a regular expression specifying which headers to display.
-
@kindex t @r{(Rmail)}
@findex rmail-toggle-header
- To see the complete, original header, use the @kbd{t} command
-(@code{rmail-toggle-header}). This discards the reformatted headers of
-the current message and displays it with the original header. Repeating
-@kbd{t} reformats the message again, which shows only the interesting
-headers according to the current values of the above variables.
-Selecting the message again also reformats it if necessary.
+ Before displaying each message for the first time, Rmail reformats
+its header, hiding uninteresting header fields to reduce clutter. The
+@kbd{t} (@code{rmail-toggle-header}) command toggles this, switching
+between showing the reformatted header fields and showing the
+complete, original header. With a positive prefix argument, the
+command shows the reformatted header; with a zero or negative prefix
+argument, it shows the full header. Selecting the message again also
+reformats it if necessary.
- When the @kbd{t} command has a prefix argument, a positive argument
-means to show the reformatted header, and a zero or negative argument
-means to show the full header.
+@vindex rmail-ignored-headers
+@vindex rmail-displayed-headers
+@vindex rmail-nonignored-headers
+ The variable @code{rmail-ignored-headers} holds a regular expression
+specifying the header fields to hide; any matching header line will be
+hidden. The variable @code{rmail-nonignored-headers} overrides this:
+any header field matching that regular expression is shown even if it
+matches @code{rmail-ignored-headers} too. The variable
+@code{rmail-displayed-headers} is an alternative to these two
+variables; if non-@code{nil}, this should be a regular expression
+specifying which headers to display (the default is @code{nil}).
@vindex rmail-highlighted-headers
Rmail highlights certain header fields that are especially
interesting---by default, the @samp{From} and @samp{Subject} fields.
-The variable @code{rmail-highlighted-headers} holds a regular expression
-that specifies the header fields to highlight; if it matches the
-beginning of a header field, that whole field is highlighted. To turn
-off this feature, set @code{rmail-highlighted-headers} to @code{nil}.
-Customize the face @code{rmail-highlight} to adjust the style of the
-highlighting.
+This highlighting uses the @code{rmail-highlight} face. The variable
+@code{rmail-highlighted-headers} holds a regular expression specifying
+the header fields to highlight; if it matches the beginning of a
+header field, that whole field is highlighted. To disable this
+feature, set @code{rmail-highlighted-headers} to @code{nil}.
+
+@cindex MIME messages (Rmail)
+@vindex rmail-enable-mime
+ By default, Rmail automatically decodes @acronym{MIME} (Multipurpose
+Internet Mail Extensions) messages. If the message contains multiple
+parts (@acronym{MIME} entities), each part is represented by a tagline
+in the Rmail buffer. The tagline summarizes the part's depth, index,
+and type, and may also contain a button for handling it, e.g. saving
+it to a file or displaying it as an image in the Rmail buffer.
- You can highlight and activate URLs in incoming messages using
-Goto Address mode:
+@table @kbd
+@findex rmail-mime-toggle-hidden
+@item @key{RET}
+Hide or show the @acronym{MIME} part at point
+(@code{rmail-mime-toggle-hidden}).
+
+@findex rmail-mime-next-item
+@item @key{TAB}
+Move point to the next @acronym{MIME} part
+(@code{rmail-mime-next-item}).
+
+@findex rmail-mime-previous-item
+@item @key{BackTab}
+Move point to the previous @acronym{MIME} part
+(@code{rmail-mime-previous-item}).
+
+@findex rmail-mime
+@item v
+@kindex v @r{(Rmail)}
+Toggle between @acronym{MIME} display and raw message
+(@code{rmail-mime}).
+@end table
+
+ The @kbd{v} (@code{rmail-mime}) command toggles between the default
+@acronym{MIME} display described above, and a ``raw'' display showing
+the undecoded @acronym{MIME} data. With a prefix argument, this
+command toggles the display of only an entity at point.
+
+ To prevent Rmail from handling MIME decoded messages, change the
+variable @code{rmail-enable-mime} to @code{nil}. When this is the
+case, the @kbd{v} (@code{rmail-mime}) command instead creates a
+temporary buffer to display the current @acronym{MIME} message.
+
+ You can highlight and activate URLs in the Rmail buffer using Goto
+Address mode:
@c FIXME goto-addr.el commentary says to use goto-address instead.
@smallexample
@@ -1163,13 +1195,6 @@ Then you can browse these URLs by clicking on them with @kbd{Mouse-2}
(or @kbd{Mouse-1} quickly) or by moving to one and typing @kbd{C-c
@key{RET}}. @xref{Goto Address mode, Activating URLs, Activating URLs}.
-@cindex MIME messages (Rmail)
-@findex rmail-mime
-@kindex v @r{(Rmail)}
- The @kbd{v} (@code{rmail-mime}) command creates a temporary buffer
-displaying the current MIME message. By default, it displays plain text
-and multipart messages, and offers buttons to save attachments.
-
@node Rmail Coding
@section Rmail and Coding Systems
@@ -1480,7 +1505,3 @@ include the following in the Rmail inbox list:
@smallexample
maildir://var/spool/mail/in
@end smallexample
-
-@ignore
- arch-tag: 034965f6-38df-47a2-a9f1-b8bc8ab37e23
-@end ignore
diff --git a/doc/emacs/screen.texi b/doc/emacs/screen.texi
index 88d248a93b..45cbdac4b4 100644
--- a/doc/emacs/screen.texi
+++ b/doc/emacs/screen.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Screen, User Input, Acknowledgments, Top
@@ -320,7 +319,3 @@ items, and then you can type @key{RET} to select the item.
that item; it is usually the initial of some word in the item's name.
This letter or digit is separated from the item name by @samp{=>}. You
can type the item's letter or digit to select the item.
-
-@ignore
- arch-tag: 104ba40e-d972-4866-a542-a98be94bdf2f
-@end ignore
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index 69532e6083..99fde1d7a0 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Search, Fixit, Display, Top
@@ -459,11 +458,13 @@ for a forward search, or @kbd{M-s w C-r @key{RET}} for a backward search.
These run the commands @code{word-search-forward} and
@code{word-search-backward} respectively.
- A nonincremental word search differs slightly from the incremental
-version in the way it finds a match: the last word in the search
-string must be an exact match for a whole word. In an incremental
-word search, the last word in the search string can match part of a
-word; this allows the matching to proceed incrementally as you type.
+ Incremental and nonincremental word searches differ slightly in the
+way they find a match. In a nonincremental word search, the last word
+in the search string must exactly match a whole word. In an
+incremental word search, the matching is more lax: the last word in
+the search string can match part of a word, so that the matching
+proceeds incrementally as you type. This additional laxity does not
+apply to the lazy highlight, which always matches whole words.
@node Regexp Search
@section Regular Expression Search
@@ -1376,7 +1377,3 @@ it never deletes lines that are only partially contained in the region
If a match is split across lines, this command keeps all those lines.
@end table
-
-@ignore
- arch-tag: fd9d8e77-66af-491c-b212-d80999613e3e
-@end ignore
diff --git a/doc/emacs/sending.texi b/doc/emacs/sending.texi
index 95bf5873eb..02857459cc 100644
--- a/doc/emacs/sending.texi
+++ b/doc/emacs/sending.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Sending Mail
@@ -713,7 +712,3 @@ buffer, and their commands are different as well.
Similarly, to specify your preferred method for reading mail,
customize the variable @code{read-mail-command}. The default is
@code{rmail} (@pxref{Rmail}).
-
-@ignore
- arch-tag: d8a3dfc3-5d87-45c5-a7f2-69871b8e4fd6
-@end ignore
diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi
index a9faa42096..48f3bd1558 100644
--- a/doc/emacs/text.texi
+++ b/doc/emacs/text.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Text, Programs, Indentation, Top
@@ -1765,7 +1764,7 @@ variant of SGML mode.
@kindex C-c C-n @r{(SGML mode)}
@findex sgml-name-char
Interactively specify a special character and insert the SGML
-@samp{&}-command for that character.
+@samp{&}-command for that character (@code{sgml-name-char}).
@item C-c C-t
@kindex C-c C-t @r{(SGML mode)}
@@ -1799,7 +1798,7 @@ A numeric argument acts as a repeat count.
@findex sgml-skip-tag-backward
Skip backward across a balanced tag group (which extends from an
opening tag through its corresponding closing tag)
-(@code{sgml-skip-tag-forward}). A numeric argument acts as a repeat
+(@code{sgml-skip-tag-backward}). A numeric argument acts as a repeat
count.
@item C-c C-d
@@ -1841,7 +1840,7 @@ buffer as SGML (@code{sgml-validate}).
@kindex C-c TAB @r{(SGML mode)}
@findex sgml-tags-invisible
Toggle the visibility of existing tags in the buffer. This can be
-used as a cheap preview.
+used as a cheap preview (@code{sgml-tags-invisible}).
@end table
@cindex nXML mode
@@ -2925,7 +2924,3 @@ then inserts the generated table in the proper syntax into the
destination buffer. The default destination buffer is
@code{table.@var{lang}}, where @var{lang} is the language you
specified.
-
-@ignore
- arch-tag: 8db54ed8-2036-49ca-b0df-23811d03dc70
-@end ignore
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index 2f90b30bf8..a2b9b16bae 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@iftex
@@ -629,10 +628,11 @@ read the tracker's online documentation to see the various features
you can use.
All mail sent to the @samp{bug-gnu-emacs} mailing list is also
-gatewayed to the @samp{bug.gnu.emacs} newsgroup. The reverse is also
-true, but we ask you not to post bug reports via the newsgroup. It
-can make it much harder to contact you if we need to ask for more
-information, and it does not integrate well with the bug tracker.
+gatewayed to the @samp{gnu.emacs.bug} newsgroup. The reverse is also
+true, but we ask you not to post bug reports (or replies) via the
+newsgroup. It can make it much harder to contact you if we need to ask
+for more information, and it does not integrate well with the bug
+tracker.
If your data is more than 500,000 bytes, please don't include it
directly in the bug report; instead, offer to send it on request, or
@@ -805,6 +805,13 @@ This use of the debugger is possible only if you know how to make the
bug happen again. If you can't make it happen again, at least copy
the whole error message.
+@vindex debug-on-quit
+If Emacs appears to be stuck in an infinite loop or in a very long
+operation, typing @kbd{C-g} with the variable @code{debug-on-quit}
+non-@code{nil} will start the Lisp debugger and show a backtrace.
+This backtrace is useful for debugging such long loops, so if you can
+produce it, copy it into the bug report.
+
@item
Check whether any programs you have loaded into the Lisp world,
including your @file{.emacs} file, set any variables that may affect the
@@ -1126,7 +1133,3 @@ Emacs distribution.
@ifnottex
@lowersections
@end ifnottex
-
-@ignore
- arch-tag: c9cba76d-b2cb-4e0c-ae3f-19d5ef35817c
-@end ignore
diff --git a/doc/emacs/vc-xtra.texi b/doc/emacs/vc-xtra.texi
index 8b874e309c..978a2a31a2 100644
--- a/doc/emacs/vc-xtra.texi
+++ b/doc/emacs/vc-xtra.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included in emacs-xtra.texi when producing the printed
@@ -24,7 +23,3 @@ the Emacs Manual}). This chapter describes more advanced VC usage.
@iftex
@include vc1-xtra.texi
@end iftex
-
-@ignore
- arch-tag: 11a18d0e-1baf-49da-8e38-f61195ae4dc3
-@end ignore
diff --git a/doc/emacs/vc1-xtra.texi b/doc/emacs/vc1-xtra.texi
index 04d3771901..05e89e69f0 100644
--- a/doc/emacs/vc1-xtra.texi
+++ b/doc/emacs/vc1-xtra.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in vc-xtra.texi (when producing the
@@ -787,7 +786,3 @@ only for repositories from hosts that match the pattern.
operations in the variable @code{vc-cvs-global-switches}. These
switches are inserted immediately after the @code{cvs} command, before
the name of the operation to invoke.
-
-@ignore
- arch-tag: 8e8c2a01-ad41-4e61-a89a-60131ad67263
-@end ignore
diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi
index e161a23ca6..ae9b69ef3f 100644
--- a/doc/emacs/windows.texi
+++ b/doc/emacs/windows.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Windows, Frames, Buffers, Top
@chapter Multiple Windows
@@ -397,7 +397,3 @@ windows together. You can also turn it on by customizing the variable
scroll-all-scroll-down-all}, @kbd{M-x scroll-all-page-down-all} and
their corresponding ``up'' equivalents. To make this mode useful,
you should bind these commands to appropriate keys.
-
-@ignore
- arch-tag: 8bea7453-d4b1-49b1-9bf4-cfe4383e1113
-@end ignore
diff --git a/doc/emacs/xresources.texi b/doc/emacs/xresources.texi
index ecf5c02f32..1482bbd046 100644
--- a/doc/emacs/xresources.texi
+++ b/doc/emacs/xresources.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1987, 1993, 1994, 1995, 1997, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node X Resources, Antinews, Emacs Invocation, Top
@appendix X Options and Resources
@@ -1219,7 +1219,3 @@ family. It corresponds to the fifth part of an X font name. It is one of
@noindent
@var{size} is a decimal number that describes the font size in points.
@end ifnottex
-
-@ignore
- arch-tag: 9b6ff773-48b6-41f6-b2f9-f114b8bdd97f
-@end ignore
diff --git a/doc/lispintro/ChangeLog b/doc/lispintro/ChangeLog
index d75bb00327..a6897fc4ec 100644
--- a/doc/lispintro/ChangeLog
+++ b/doc/lispintro/ChangeLog
@@ -1,3 +1,9 @@
+2011-01-23 Werner Lemberg <[email protected]>
+
+ * Makefile.in (MAKEINFO): Now controlled by `configure'.
+ (MAKEINFO_OPTS): New variable. Use it where appropriate.
+ (ENVADD): New variable to control texi2dvi and texi2pdf.
+
2010-11-13 Glenn Morris <[email protected]>
* emacs-lisp-intro.texi: Rename the `count-words-region' example,
@@ -449,8 +455,7 @@
;; coding: utf-8
;; End:
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/doc/lispintro/Makefile.in b/doc/lispintro/Makefile.in
index 366a0a10e5..df356f1b13 100644
--- a/doc/lispintro/Makefile.in
+++ b/doc/lispintro/Makefile.in
@@ -1,8 +1,6 @@
#### Makefile for the Emacs Lisp Introduction manual
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003,
-# 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 1994-1999, 2001-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -28,11 +26,15 @@ infodir = $(srcdir)/../../info
# Directory with the (customized) texinfo.tex file.
texinfodir = $(srcdir)/../misc
-MAKEINFO = makeinfo --force -I $(srcdir)
+MAKEINFO = @MAKEINFO@
+MAKEINFO_OPTS = --force -I $(srcdir)
TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
DVIPS = dvips
+ENVADD = TEXINPUTS="$(srcdir):$(texinfodir):$(TEXINPUTS)" \
+ MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)"
+
mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir}
.PHONY: info dvi html pdf ps
@@ -48,19 +50,19 @@ ps: emacs-lisp-intro.ps
# -NN extensions to fit into DOS 8+3 limits without clashing.
${infodir}/eintr: ${srcdir}/emacs-lisp-intro.texi
$(mkinfodir)
- $(MAKEINFO) -o $@ $<
+ $(MAKEINFO) $(MAKEINFO_OPTS) -o $@ $<
emacs-lisp-intro.dvi: ${srcdir}/emacs-lisp-intro.texi
- $(TEXI2DVI) -I $(srcdir) -I $(texinfodir) $<
+ $(ENVADD) $(TEXI2DVI) $<
emacs-lisp-intro.ps: emacs-lisp-intro.dvi
$(DVIPS) -o $@ $<
emacs-lisp-intro.pdf: ${srcdir}/emacs-lisp-intro.texi
- $(TEXI2PDF) -I $(srcdir) -I $(texinfodir) $<
+ $(ENVADD) $(TEXI2PDF) $<
emacs-lisp-intro.html: ${srcdir}/emacs-lisp-intro.texi
- $(MAKEINFO) --html -o $@ $<
+ $(MAKEINFO) $(MAKEINFO_OPTS) --html -o $@ $<
.PHONY: mostlyclean clean distclean maintainer-clean infoclean
diff --git a/doc/lispintro/README b/doc/lispintro/README
index 3135af6427..ba4e727cc8 100644
--- a/doc/lispintro/README
+++ b/doc/lispintro/README
@@ -1,5 +1,4 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/doc/lispintro/cons-1.eps b/doc/lispintro/cons-1.eps
index 42c350139d..a1fb08463b 100644
--- a/doc/lispintro/cons-1.eps
+++ b/doc/lispintro/cons-1.eps
@@ -4,8 +4,7 @@
%%CreationDate: Wed Mar 8 14:26:58 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/cons-2.eps b/doc/lispintro/cons-2.eps
index 8ae9d8a919..a711b66ca2 100644
--- a/doc/lispintro/cons-2.eps
+++ b/doc/lispintro/cons-2.eps
@@ -4,8 +4,7 @@
%%CreationDate: Wed Mar 8 14:26:39 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/cons-2a.eps b/doc/lispintro/cons-2a.eps
index 916417adf9..5612caa071 100644
--- a/doc/lispintro/cons-2a.eps
+++ b/doc/lispintro/cons-2a.eps
@@ -4,8 +4,7 @@
%%CreationDate: Tue Mar 14 15:09:30 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/cons-3.eps b/doc/lispintro/cons-3.eps
index f6fddf0a32..a1de449373 100644
--- a/doc/lispintro/cons-3.eps
+++ b/doc/lispintro/cons-3.eps
@@ -4,8 +4,7 @@
%%CreationDate: Wed Mar 8 14:25:41 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/cons-4.eps b/doc/lispintro/cons-4.eps
index 77389632df..45882e815a 100644
--- a/doc/lispintro/cons-4.eps
+++ b/doc/lispintro/cons-4.eps
@@ -4,8 +4,7 @@
%%CreationDate: Wed Mar 8 14:25:06 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/cons-5.eps b/doc/lispintro/cons-5.eps
index 67423d5354..b8bff1da57 100644
--- a/doc/lispintro/cons-5.eps
+++ b/doc/lispintro/cons-5.eps
@@ -4,8 +4,7 @@
%%CreationDate: Wed Mar 8 14:27:28 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/doclicense.texi b/doc/lispintro/doclicense.texi
index 1aa7613611..51342e96d6 100644
--- a/doc/lispintro/doclicense.texi
+++ b/doc/lispintro/doclicense.texi
@@ -506,7 +506,3 @@ to permit their use in free software.
@c ispell-local-pdict: "ispell-dict"
@c End:
-@ignore
- arch-tag: 839f250e-4800-4bc9-bd28-49ec7968331f
-@end ignore
-
diff --git a/doc/lispintro/drawers.eps b/doc/lispintro/drawers.eps
index 218eedfeaa..99e3581f38 100644
--- a/doc/lispintro/drawers.eps
+++ b/doc/lispintro/drawers.eps
@@ -9,8 +9,7 @@
%%EndComments
%%BeginProlog
-% Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-% Free Software Foundation, Inc.
+% Copyright (C) 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi
index 50b11a62fa..7b9ec75446 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -228,9 +228,7 @@ people who are not programmers.
@sp 1
Edition @value{edition-number}, @value{update-date}
@sp 1
-Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1997, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright @copyright{} 1990-1995, 1997, 2001-2011 Free Software Foundation, Inc.
@sp 1
@iftex
diff --git a/doc/lispintro/lambda-1.eps b/doc/lispintro/lambda-1.eps
index 3510c40e00..a9c3c53064 100644
--- a/doc/lispintro/lambda-1.eps
+++ b/doc/lispintro/lambda-1.eps
@@ -4,8 +4,7 @@
%%CreationDate: Wed Mar 8 14:31:53 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/lambda-2.eps b/doc/lispintro/lambda-2.eps
index f60c2b56ad..44238a1ad7 100644
--- a/doc/lispintro/lambda-2.eps
+++ b/doc/lispintro/lambda-2.eps
@@ -4,8 +4,7 @@
%%CreationDate: Wed Mar 8 14:33:09 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/lambda-3.eps b/doc/lispintro/lambda-3.eps
index 67c55093e7..1c5cda046e 100644
--- a/doc/lispintro/lambda-3.eps
+++ b/doc/lispintro/lambda-3.eps
@@ -4,8 +4,7 @@
%%CreationDate: Wed Mar 8 14:33:49 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/makefile.w32-in b/doc/lispintro/makefile.w32-in
index 7e51a441fd..7294d46b69 100644
--- a/doc/lispintro/makefile.w32-in
+++ b/doc/lispintro/makefile.w32-in
@@ -1,7 +1,6 @@
#### -*- Makefile -*- for the Emacs Lisp Introduction manual.
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 2003-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 36d85bc98b..be8803d4cb 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,99 @@
+2011-01-29 Eli Zaretskii <[email protected]>
+
+ * makefile.w32-in (texinfodir): New variable.
+ (usermanualdir): Remove as redundant with $(emacsdir).
+ (MAKEINFO): Remove options, leave only program name.
+ (MAKEINFO_OPTS): New variable.
+ (texinputdir, $(infodir)/elisp): Use $(MAKEINFO_OPTS).
+
+2011-01-25 Chong Yidong <[email protected]>
+ Richard Kim <[email protected]>
+
+ * loading.texi (Library Search): Document list-load-path-shadows
+ (Bug#7757).
+
+2011-01-25 Chong Yidong <[email protected]>
+
+ * searching.texi (Regexp Special): Remove outdated discussion of
+ character sets (Bug#7780).
+
+ * frames.texi (Pop-Up Menus): Document where menu title comes
+ from (Bug#7684).
+
+2011-01-25 Glenn Morris <[email protected]>
+
+ * display.texi (Making Buttons): Mention limitation of text buttons.
+
+2011-01-23 Werner Lemberg <[email protected]>
+
+ * Makefile.in (MAKEINFO): Now controlled by `configure'.
+ (MAKEINFO_OPTS): New variable. Use it where appropriate.
+ (ENVADD): New variable to control texi2dvi and texi2pdf.
+
+2011-01-15 Chong Yidong <[email protected]>
+
+ * files.texi (Directory Names): Move directory-abbrev-alist doc to
+ Emacs manual.
+
+2011-01-15 Eli Zaretskii <[email protected]>
+
+ * files.texi (Directory Names): Explain why FROM in
+ directory-abbrev-alist should begin with \`. (Bug#7777)
+
+2011-01-11 Stefan Monnier <[email protected]>
+
+ * loading.texi (Hooks for Loading): Adjust doc of eval-after-load.
+
+2011-01-02 Eli Zaretskii <[email protected]>
+
+ * modes.texi (Emulating Mode Line): Fix last change.
+
+2011-01-02 Eli Zaretskii <[email protected]>
+
+ * modes.texi (Emulating Mode Line): Update documentation of
+ format-mode-line according to changes that fixed bug #7587.
+
+2010-12-18 Stefan Monnier <[email protected]>
+
+ * modes.texi (Derived Modes): Mention prog-mode.
+
+ * keymaps.texi (Simple Menu Items, Extended Menu Items): Remove mention
+ of the key-binding-data cache since we don't use it any more.
+
+2010-12-13 Eli Zaretskii <[email protected]>
+
+ * processes.texi (Shell Arguments):
+ * strings.texi (Creating Strings): Don't mention "shell commands";
+ make it explicit that `split-string-and-unquote' and
+ `combine-and-quote-strings' are mainly for working with arguments
+ to call-process and start-process.
+
+ * processes.texi (Shell Arguments): Fix documentation of
+ `split-string-and-unquote'. Add indexing. (Bug#7563)
+
+2010-12-13 Stefan Monnier <[email protected]>
+
+ * modes.texi (Auto-Indentation): New section to document SMIE.
+ (Major Mode Conventions):
+ * text.texi (Mode-Specific Indent): Refer to it.
+
+2010-12-13 Eli Zaretskii <[email protected]>
+
+ * display.texi (Other Display Specs): Document left-fringe and
+ right-fringe display specs.
+
+2010-12-13 Stefan Monnier <[email protected]>
+
+ * backups.texi (Making Backups):
+ * modes.texi (Example Major Modes): Use recommended coding style.
+ (Major Mode Basics, Derived Modes): Encourge more strongly use of
+ define-derived-mode. Mention completion-at-point-functions.
+
+2010-12-13 Chong Yidong <[email protected]>
+
+ * nonascii.texi (Converting Representations):
+ Document byte-to-string.
+
2010-12-08 Glenn Morris <[email protected]>
* buffers.texi (Modification Time):
@@ -42,8 +138,8 @@
* customize.texi (Composite Types): Lower-case index entry.
- * loading.texi (How Programs Do Loading): Document
- load-file-name. (Bug#7346)
+ * loading.texi (How Programs Do Loading):
+ Document load-file-name. (Bug#7346)
2010-11-17 Glenn Morris <[email protected]>
@@ -484,8 +580,8 @@
* minibuf.texi (Basic Completion): 4th arg to all-completions is
obsolete.
- * processes.texi (Process Buffers): Document
- process-kill-buffer-query-function.
+ * processes.texi (Process Buffers):
+ Document process-kill-buffer-query-function.
2009-12-05 Glenn Morris <[email protected]>
@@ -932,8 +1028,8 @@
(Suspending Emacs): Mark suspend-emacs as a command.
(Processor Run Time): Mark emacs-uptime and emacs-init-time as
commands.
- (Terminal Output): Remove obsolete function baud-rate. Document
- TERMINAL arg for send-string-to-terminal.
+ (Terminal Output): Remove obsolete function baud-rate.
+ Document TERMINAL arg for send-string-to-terminal.
* nonascii.texi (Terminal I/O Encoding): Document TERMINAL arg for
terminal-coding-system and set-terminal-coding-system.
@@ -1037,8 +1133,8 @@
2009-05-09 Eli Zaretskii <[email protected]>
* nonascii.texi (Default Coding Systems): Document
- find-auto-coding, set-auto-coding, and auto-coding-alist. Add
- indexing.
+ find-auto-coding, set-auto-coding, and auto-coding-alist.
+ Add indexing.
(Lisp and Coding Systems): Add index entries.
2009-05-09 Martin Rudalics <[email protected]>
@@ -1080,8 +1176,8 @@
2009-04-22 Chong Yidong <[email protected]>
- * os.texi (Command-Line Arguments): Document
- command-line-args-left.
+ * os.texi (Command-Line Arguments):
+ Document command-line-args-left.
(Suspending Emacs): Adapt text to multi-tty case. Document use of
terminal objects for tty arguments.
(Startup Summary): Add xref to Session Management.
@@ -1157,13 +1253,13 @@
2009-04-09 Chong Yidong <[email protected]>
* text.texi (Yank Commands): Note that yank uses push-mark.
- (Filling): Clarify REGION argument of fill-paragraph. Document
- fill-forward-paragraph-function.
+ (Filling): Clarify REGION argument of fill-paragraph.
+ Document fill-forward-paragraph-function.
(Special Properties): Remove "new in Emacs 22" declaration.
(Clickable Text): Merge with Links and Mouse-1 node.
- * display.texi (Button Properties, Button Buffer Commands): Change
- xref to Clickable Text.
+ * display.texi (Button Properties, Button Buffer Commands):
+ Change xref to Clickable Text.
* tips.texi (Key Binding Conventions): Change xref to Clickable
Text.
@@ -1225,8 +1321,8 @@
2009-03-29 Chong Yidong <[email protected]>
- * help.texi (Accessing Documentation, Help Functions): Remove
- information about long-obsolete Emacs versions.
+ * help.texi (Accessing Documentation, Help Functions):
+ Remove information about long-obsolete Emacs versions.
* modes.texi (Mode Line Variables): The default values of the mode
line variables are now more complicated.
@@ -1269,8 +1365,8 @@
2009-03-23 Chong Yidong <[email protected]>
* minibuf.texi (Intro to Minibuffers): Remove long-obsolete info
- about minibuffers in old Emacs versions. Copyedits. Emphasize
- that enable-recursive-minibuffers defaults to nil.
+ about minibuffers in old Emacs versions. Copyedits.
+ Emphasize that enable-recursive-minibuffers defaults to nil.
(Text from Minibuffer): Simplify introduction.
2009-03-22 Alan Mackenzie <[email protected]>
@@ -1324,8 +1420,8 @@
* customize.texi (Common Keywords): It's not necessary to use :tag
to remove hyphens, as custom-unlispify-tag-name does it
automatically.
- (Variable Definitions): Link to File Local Variables. Document
- customized-value symbol property.
+ (Variable Definitions): Link to File Local Variables.
+ Document customized-value symbol property.
(Customization Types): Move menu to end of node.
2009-03-10 Chong Yidong <[email protected]>
@@ -1436,8 +1532,8 @@
* text.texi (Commands for Insertion):
* commands.texi (Event Mod):
* keymaps.texi (Searching Keymaps):
- * nonascii.texi (Translation of Characters): Reinstate
- documentation of translation-table-for-input.
+ * nonascii.texi (Translation of Characters):
+ Reinstate documentation of translation-table-for-input.
(Explicit Encoding): Document the `charset' text property produced
by decode-coding-region and decode-coding-string.
@@ -1466,8 +1562,8 @@
2009-01-22 Chong Yidong <[email protected]>
* files.texi (Format Conversion Piecemeal): Clarify behavior of
- write-region-annotate-functions. Document
- write-region-post-annotation-function.
+ write-region-annotate-functions.
+ Document write-region-post-annotation-function.
2009-01-19 Chong Yidong <[email protected]>
@@ -1534,8 +1630,8 @@
* processes.texi (Serial Ports): Improve wording, suggested by RMS.
- * nonascii.texi (Lisp and Coding Systems): Document
- inhibit-null-byte-detection and inhibit-iso-escape-detection.
+ * nonascii.texi (Lisp and Coding Systems):
+ Document inhibit-null-byte-detection and inhibit-iso-escape-detection.
(Character Properties): Improve wording.
2009-01-09 Chong Yidong <[email protected]>
@@ -1543,8 +1639,8 @@
* display.texi (Font Lookup): Remove obsolete function
x-font-family-list. x-list-fonts accepts Fontconfig/GTK syntax.
(Low-Level Font): Rename from Fonts, move to end of Faces section.
- (Font Selection): Reorder order of variable descriptions. Minor
- clarifications.
+ (Font Selection): Reorder order of variable descriptions.
+ Minor clarifications.
* elisp.texi (Top): Update node listing.
@@ -1565,8 +1661,8 @@
* elisp.texi: Update node listing.
* display.texi (Faces): Put Font Selection node after Auto Faces.
- (Face Attributes): Don't link to Font Lookup. Document
- font-family-list.
+ (Face Attributes): Don't link to Font Lookup.
+ Document font-family-list.
(Fonts): New node.
2009-01-08 Jason Rumney <[email protected]>
@@ -1794,8 +1890,8 @@
* windows.texi (Window Hooks): Remove *-end-trigger-functions
vars, which are obsolete. Mention jit-lock-register.
- * modes.texi (Other Font Lock Variables): Document
- jit-lock-register and jit-lock-unregister.
+ * modes.texi (Other Font Lock Variables):
+ Document jit-lock-register and jit-lock-unregister.
* frames.texi (Color Parameters): Document alpha parameter.
@@ -1867,8 +1963,8 @@
2008-11-01 Eli Zaretskii <[email protected]>
* nonascii.texi (Text Representations): Rewrite to make consistent
- with Emacs 23 internal representation of characters. Document
- `unibyte-string'.
+ with Emacs 23 internal representation of characters.
+ Document `unibyte-string'.
2008-10-28 Chong Yidong <[email protected]>
@@ -1981,8 +2077,8 @@
* processes.texi (Synchronous Processes): Document `process-lines'.
- * customize.texi (Variable Definitions): Document
- `custom-reevaluate-setting'.
+ * customize.texi (Variable Definitions):
+ Document `custom-reevaluate-setting'.
2008-10-18 Martin Rudalics <[email protected]>
@@ -1998,13 +2094,13 @@
* maps.texi (Standard Keymaps): Document `multi-query-replace-map'
and `search-map'.
- * searching.texi (Search and Replace): Document
- `replace-search-function' and `replace-re-search-function'.
+ * searching.texi (Search and Replace):
+ Document `replace-search-function' and `replace-re-search-function'.
Document `multi-query-replace-map'.
* minibuf.texi (Text from Minibuffer): Document `read-regexp'.
- (Completion Commands, Reading File Names): Rename
- `minibuffer-local-must-match-filename-map' to
+ (Completion Commands, Reading File Names):
+ Rename `minibuffer-local-must-match-filename-map' to
`minibuffer-local-filename-must-match-map'.
(Minibuffer Completion): The `require-match' argument to
`completing-read' can now have the value `confirm-only'.
@@ -2349,7 +2445,7 @@
2007-12-30 Richard Stallman <[email protected]>
- * commands.texi (Accessing Mouse): Renamed from Accessing Events.
+ * commands.texi (Accessing Mouse): Rename from Accessing Events.
(Accessing Scroll): New node broken out of Accessing Mouse.
2007-12-28 Richard Stallman <[email protected]>
@@ -2393,8 +2489,8 @@
2007-11-29 Glenn Morris <[email protected]>
- * functions.texi (Declaring Functions): Add findex. Mention
- `external' files.
+ * functions.texi (Declaring Functions): Add findex.
+ Mention `external' files.
2007-11-26 Juanma Barranquero <[email protected]>
@@ -2521,8 +2617,8 @@
* display.texi (Display Property): Explain some display specs
don't let you move point in.
- * frames.texi (Cursor Parameters): Describe
- cursor-in-non-selected-windows here. Explain more values.
+ * frames.texi (Cursor Parameters):
+ Describe cursor-in-non-selected-windows here. Explain more values.
* windows.texi (Basic Windows): Don't describe
cursor-in-non-selected-windows here.
@@ -2601,8 +2697,8 @@
2007-08-16 Richard Stallman <[email protected]>
- * processes.texi (Asynchronous Processes): Clarify
- doc of start-file-process.
+ * processes.texi (Asynchronous Processes):
+ Clarify doc of start-file-process.
2007-08-08 Martin Rudalics <[email protected]>
@@ -2669,8 +2765,8 @@
2007-06-27 Richard Stallman <[email protected]>
- * files.texi (Format Conversion Piecemeal): Clarify
- `after-insert-file-functions' calling convention.
+ * files.texi (Format Conversion Piecemeal):
+ Clarify `after-insert-file-functions' calling convention.
2007-06-27 Michael Albinus <[email protected]>
@@ -2725,8 +2821,8 @@
2007-05-30 Nick Roberts <[email protected]>
- * commands.texi (Click Events): Layout more logically. Describe
- width and height.
+ * commands.texi (Click Events): Layout more logically.
+ Describe width and height.
(Drag Events, Motion Events): Update to new format for position.
2007-06-02 Richard Stallman <[email protected]>
@@ -3132,8 +3228,8 @@
2007-03-05 Richard Stallman <[email protected]>
- * variables.texi (File Local Variables): Update
- enable-local-variables values.
+ * variables.texi (File Local Variables):
+ Update enable-local-variables values.
2007-03-04 Richard Stallman <[email protected]>
@@ -3204,8 +3300,8 @@
2007-02-03 Eli Zaretskii <[email protected]>
* elisp.texi (Top): Make the detailed menu headers compliant with
- Texinfo guidelines and with what texnfo-upd.el expects. Add
- comments to prevent people from inadvertently modifying the key
+ Texinfo guidelines and with what texnfo-upd.el expects.
+ Add comments to prevent people from inadvertently modifying the key
parts needed by `texinfo-multiple-files-update'.
2007-02-02 Eli Zaretskii <[email protected]>
@@ -3292,8 +3388,8 @@
2006-12-24 Richard Stallman <[email protected]>
- * customize.texi (Variable Definitions): Document
- new name custom-add-frequent-value.
+ * customize.texi (Variable Definitions):
+ Document new name custom-add-frequent-value.
2006-12-19 Kim F. Storm <[email protected]>
@@ -3592,8 +3688,8 @@
2006-09-01 Chong Yidong <[email protected]>
- * buffers.texi (Buffer Modification): Document
- buffer-chars-modified-tick.
+ * buffers.texi (Buffer Modification):
+ Document buffer-chars-modified-tick.
2006-08-31 Richard Stallman <[email protected]>
@@ -3655,7 +3751,7 @@
2006-08-12 Chong Yidong <[email protected]>
* text.texi (Near Point): Say "cursor" not "terminal cursor".
- (Commands for Insertion): Removed split-line since it's not
+ (Commands for Insertion): Remove split-line since it's not
relevant for Lisp programming.
(Yank Commands): Rewrite introduction.
(Undo): Clarify.
@@ -3686,7 +3782,7 @@
(Major Mode Basics): Mention define-derived-mode explicitly.
(Major Mode Conventions): Rebinding RET is OK for some modes.
Mention change-major-mode-hook and after-change-major-mode-hook.
- (Example Major Modes): Moved to end of Modes section.
+ (Example Major Modes): Move to end of Modes section.
(Mode Line Basics): Clarify.
(Mode Line Data): Mention help-echo and local-map in strings.
Explain reason for treatment of non-risky variables.
@@ -4185,7 +4281,7 @@
2006-05-25 Chong Yidong <[email protected]>
- * keymaps.texi (Key Sequences): Renamed from Keymap Terminology.
+ * keymaps.texi (Key Sequences): Rename from Keymap Terminology.
Explain string and vector representations of key sequences.
* keymaps.texi (Changing Key Bindings):
@@ -4234,8 +4330,8 @@
2006-05-15 Oliver Scholz <[email protected]> (tiny change)
- * nonascii.texi (Explicit Encoding): Fix
- typo (encoding<->decoding).
+ * nonascii.texi (Explicit Encoding):
+ Fix typo (encoding<->decoding).
2006-05-14 Richard Stallman <[email protected]>
@@ -4285,8 +4381,8 @@
2006-05-09 Richard Stallman <[email protected]>
- * variables.texi (File Local Variables): Document
- safe-local-eval-forms and safe-local-eval-function.
+ * variables.texi (File Local Variables):
+ Document safe-local-eval-forms and safe-local-eval-function.
2006-05-07 Kim F. Storm <[email protected]>
@@ -4770,8 +4866,8 @@
2005-12-03 Eli Zaretskii <[email protected]>
- * hooks.texi (Standard Hooks): Add index entries. Mention
- `compilation-finish-functions'.
+ * hooks.texi (Standard Hooks): Add index entries.
+ Mention `compilation-finish-functions'.
2005-11-27 Richard M. Stallman <[email protected]>
@@ -4994,8 +5090,8 @@
buffer-local.
(Undo): Note that buffer-undo-list is buffer-local.
- * windows.texi (Buffers and Windows): Document
- buffer-display-count.
+ * windows.texi (Buffers and Windows):
+ Document buffer-display-count.
2005-09-06 Richard M. Stallman <[email protected]>
@@ -5236,7 +5332,7 @@
* display.texi (Displaying Messages): New node, with most
of what was in The Echo Area.
- (Progress): Moved under The Echo Area.
+ (Progress): Move under The Echo Area.
(Logging Messages): New node with new text.
(Echo Area Customization): New node, the rest of what was
in The Echo Area. Document message-truncate-lines with @defvar.
@@ -6551,8 +6647,8 @@
(Scroll Bars): Add scroll-bar-mode and scroll-bar-width.
(Usual Display): Move tab-width up.
- * customize.texi (Variable Definitions): Replace
- show-paren-mode example with tooltip-mode.
+ * customize.texi (Variable Definitions):
+ Replace show-paren-mode example with tooltip-mode.
(Simple Types, Composite Types, Defining New Types):
Minor cleanups.
@@ -6788,8 +6884,8 @@
(Display Fringe Bitmaps): New node.
(Images): Add 'Image Slices' to menu.
(Image Descriptors): Add `:pointer' and `:map' properties.
- (Showing Images): Add slice arg to `insert-image'. Add
- 'insert-sliced-image'.
+ (Showing Images): Add slice arg to `insert-image'.
+ Add 'insert-sliced-image'.
2004-09-20 Richard M. Stallman <[email protected]>
@@ -6802,8 +6898,8 @@
2004-09-07 Luc Teirlinck <[email protected]>
- * locals.texi (Standard Buffer-Local Variables): Add
- `buffer-auto-save-file-format'.
+ * locals.texi (Standard Buffer-Local Variables):
+ Add `buffer-auto-save-file-format'.
* internals.texi (Buffer Internals): Describe new
auto_save_file_format field of the buffer structure.
* files.texi (Format Conversion): `auto-save-file-format' has been
@@ -7191,8 +7287,8 @@
2004-04-05 Jesper Harder <[email protected]>
- * variables.texi (Variable Aliases): Mention
- cyclic-variable-indirection.
+ * variables.texi (Variable Aliases):
+ Mention cyclic-variable-indirection.
* errors.texi (Standard Errors): Ditto.
@@ -7371,7 +7467,7 @@
2004-02-07 Jan Djärv <[email protected]>
- * positions.texi (Text Lines): Added missing end defun.
+ * positions.texi (Text Lines): Add missing end defun.
2004-02-07 Kim F. Storm <[email protected]>
@@ -7394,12 +7490,12 @@
read-minibuffer.
(Minibuffer History): Clarify description of cons values for
HISTORY arguments.
- (Basic Completion): Various corrections and clarifications. Add
- completion-regexp-list.
+ (Basic Completion): Various corrections and clarifications.
+ Add completion-regexp-list.
(Minibuffer Completion): Correct and clarify description of
completing-read.
- (Completion Commands): Mention Partial Completion mode. Various
- other minor changes.
+ (Completion Commands): Mention Partial Completion mode.
+ Various other minor changes.
(High-Level Completion): Various corrections and clarifications.
(Reading File Names): Ditto.
(Minibuffer Misc): Ditto.
@@ -7474,8 +7570,8 @@
* functions.texi: Various small changes in addition to the
following.
- (What Is a Function): `functionp' returns nil for macros. Clarify
- behavior of this and following functions for symbol arguments.
+ (What Is a Function): `functionp' returns nil for macros.
+ Clarify behavior of this and following functions for symbol arguments.
(Function Documentation): Add `\' in front of (fn @var{arglist})
and explain why.
(Defining Functions): Mention DOCSTRING argument to `defalias'.
@@ -8271,7 +8367,7 @@
2003-01-31 Joe Buehler <[email protected]>
- * os.texi (System Environment): Added cygwin system-type.
+ * os.texi (System Environment): Add cygwin system-type.
2003-01-25 Richard M. Stallman <[email protected]>
@@ -8304,7 +8400,7 @@
* README: Target for Info file is `make info'.
- * files.texi (File Name Components): Fixed typos in
+ * files.texi (File Name Components): Fix typos in
`file-name-sans-extension'.
(Magic File Names): Complete list of operations for magic file
name handlers.
@@ -8320,7 +8416,7 @@
2002-08-05 Per Abrahamsen <[email protected]>
- * customize.texi (Splicing into Lists): Fixed example.
+ * customize.texi (Splicing into Lists): Fix example.
Reported by Fabrice Bauzac <[email protected]>.
2002-06-17 Juanma Barranquero <[email protected]>
@@ -8360,8 +8456,8 @@
2001-11-17 Eli Zaretskii <[email protected]>
- * permute-index: Don't depend on csh-specific features. Replace
- the interpreter name with /bin/sh.
+ * permute-index: Don't depend on csh-specific features.
+ Replace the interpreter name with /bin/sh.
* two-volume-cross-refs.txt: New file.
* two.el: New file.
@@ -8499,8 +8595,8 @@
* numbers.texi (Integer Basics): Document CL style read syntax for
integers in bases other than 10.
- * positions.texi (List Motion): Document
- open-paren-in-column-0-is-defun-start.
+ * positions.texi (List Motion):
+ Document open-paren-in-column-0-is-defun-start.
* lists.texi (Sets And Lists): Document member-ignore-case.
@@ -8695,7 +8791,7 @@
1995-06-19 Richard Stallman <[email protected]>
* Makefile (VERSION): Update version number.
- (maintainer-clean): Renamed from realclean.
+ (maintainer-clean): Rename from realclean.
1995-06-07 Karl Heuer <[email protected]>
@@ -8767,11 +8863,11 @@
1991-11-26 Richard Stallman ([email protected])
- * Makefile (srcs): Added index.perm.
+ * Makefile (srcs): Add index.perm.
(elisp.dvi): Remove erroneous shell comment.
Expect output of permute-index in permuted.fns.
Save old elisp.aux in elisp.oaux.
- (clean): Added index.texi to be deleted.
+ (clean): Add index.texi to be deleted.
1990-08-11 Richard Stallman ([email protected])
@@ -8833,8 +8929,7 @@
;; coding: utf-8
;; End:
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1998-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/doc/lispref/Makefile.in b/doc/lispref/Makefile.in
index be8b6ca2c9..a9664a4e19 100644
--- a/doc/lispref/Makefile.in
+++ b/doc/lispref/Makefile.in
@@ -1,8 +1,6 @@
# Makefile for the GNU Emacs Lisp Reference Manual.
-# Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
-# 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 1990-1996, 1998-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -32,11 +30,15 @@ texinfodir = $(srcdir)/../misc
# Directory with emacsver.texi.
emacsdir = $(srcdir)/../emacs
-MAKEINFO = makeinfo --force -I $(emacsdir) -I $(srcdir)
+MAKEINFO = @MAKEINFO@
+MAKEINFO_OPTS = --force -I $(emacsdir) -I $(srcdir)
TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
DVIPS = dvips
+ENVADD = TEXINPUTS="$(srcdir):$(texinfodir):$(TEXINPUTS)" \
+ MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)"
+
# List of all the texinfo files in the manual:
srcs = \
@@ -106,19 +108,19 @@ ps: elisp.ps
$(infodir)/elisp: $(srcs)
$(mkinfodir)
- $(MAKEINFO) -o $@ $<
+ $(MAKEINFO) $(MAKEINFO_OPTS) -o $@ $<
elisp.dvi: $(srcs)
- $(TEXI2DVI) -I $(srcdir) -I $(texinfodir) -I $(emacsdir) $<
+ $(ENVADD) $(TEXI2DVI) $<
elisp.html: $(srcs)
- $(MAKEINFO) --html -o $@ $<
+ $(MAKEINFO) $(MAKEINFO_OPTS) --html -o $@ $<
elisp.ps: elisp.dvi
$(DVIPS) -o $@ $<
elisp.pdf: $(srcs)
- $(TEXI2PDF) -I $(srcdir) -I $(texinfodir) -I $(emacsdir) $<
+ $(ENVADD) $(TEXI2PDF) $<
.PHONY: mostlyclean clean distclean maintainer-clean infoclean
diff --git a/doc/lispref/README b/doc/lispref/README
index 5b052b9d4b..a9c0922640 100644
--- a/doc/lispref/README
+++ b/doc/lispref/README
@@ -1,5 +1,4 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/doc/lispref/abbrevs.texi b/doc/lispref/abbrevs.texi
index 90da5aaa48..57030559d0 100644
--- a/doc/lispref/abbrevs.texi
+++ b/doc/lispref/abbrevs.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1999, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1994, 1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/abbrevs
@node Abbrevs, Processes, Syntax Tables, Top
@@ -511,8 +510,3 @@ This property holds a counter incremented each time a new abbrev is
added to the table.
@end table
-
-
-@ignore
- arch-tag: 5ffdbe08-2cd4-48ec-a5a8-080f95756eec
-@end ignore
diff --git a/doc/lispref/advice.texi b/doc/lispref/advice.texi
index 70aa22c347..2935638122 100644
--- a/doc/lispref/advice.texi
+++ b/doc/lispref/advice.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/advising
@node Advising Functions, Debugging, Byte Compilation, Top
@@ -777,7 +776,3 @@ pieces of advice is the same. The only difference is that
executed even if some previous piece of advice had an error or a
non-local exit. If any around-advice is protected, then the whole
around-advice onion is protected as a result.
-
-@ignore
- arch-tag: 80c135c2-f1c3-4f8d-aa85-f8d8770d307f
-@end ignore
diff --git a/doc/lispref/anti.texi b/doc/lispref/anti.texi
index 92e0432b84..bb1e42c930 100644
--- a/doc/lispref/anti.texi
+++ b/doc/lispref/anti.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1999, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-@c 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1999, 2002-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@c This node must have no pointers.
@@ -154,7 +153,3 @@ Many variables have been removed, including @code{read-circle},
@code{inhibit-changing-match-data}, @code{wrap-prefix}, and
@code{line-prefix},
@end itemize
-
-@ignore
- arch-tag: 1d0ef137-2bad-430e-ae8e-d820d569b5a6
-@end ignore
diff --git a/doc/lispref/back.texi b/doc/lispref/back.texi
index 639ad27fd3..3add7b174d 100644
--- a/doc/lispref/back.texi
+++ b/doc/lispref/back.texi
@@ -1,7 +1,6 @@
\input texinfo @c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@c
@c %**start of header
@@ -36,7 +35,3 @@ are peculiar to Emacs Lisp or relate specifically to editing.
@hfil
@bye
-
-@ignore
- arch-tag: ac7694c8-1f02-4b42-9531-33ba13b179e1
-@end ignore
diff --git a/doc/lispref/backups.texi b/doc/lispref/backups.texi
index 7d6ae233f2..aad0cbc146 100644
--- a/doc/lispref/backups.texi
+++ b/doc/lispref/backups.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/backups
@node Backups and Auto-Saving, Buffers, Files, Top
@@ -88,10 +87,8 @@ save disk space. (You would put this code in your init file.)
@smallexample
@group
(add-hook 'rmail-mode-hook
- (function (lambda ()
- (make-local-variable
- 'make-backup-files)
- (setq make-backup-files nil))))
+ (lambda ()
+ (set (make-local-variable 'make-backup-files) nil)))
@end group
@end smallexample
@end defopt
@@ -754,7 +751,3 @@ This normal hook is run by @code{revert-buffer} after inserting
the modified contents---but only if @code{revert-buffer-function} is
@code{nil}.
@end defvar
-
-@ignore
- arch-tag: 295a6321-e5ab-46d5-aef5-0bb4f447a67f
-@end ignore
diff --git a/doc/lispref/buffers.texi b/doc/lispref/buffers.texi
index 8811178fe9..07889cdbaa 100644
--- a/doc/lispref/buffers.texi
+++ b/doc/lispref/buffers.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/buffers
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index d83396750c..25fd50b159 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/commands
@@ -3386,7 +3385,3 @@ This normal hook (@pxref{Standard Hooks}) is run when a keyboard
macro terminates, regardless of what caused it to terminate (reaching
the macro end or an error which ended the macro prematurely).
@end defvar
-
-@ignore
- arch-tag: e34944ad-7d5c-4980-be00-36a5fe54d4b1
-@end ignore
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index 69b57f19ea..f9f0e6662c 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1994, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/compile
@node Byte Compilation, Advising Functions, Loading, Top
@@ -790,7 +789,3 @@ The @code{silly-loop} function is somewhat more complex:
@end group
@end example
-
-@ignore
- arch-tag: f78e3050-2f0a-4dee-be27-d9979a0a2289
-@end ignore
diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi
index 16564677f3..b6fdb9dbcb 100644
--- a/doc/lispref/control.texi
+++ b/doc/lispref/control.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/control
@node Control Structures, Variables, Evaluation, Top
@@ -1319,7 +1318,3 @@ quit, and the quit happens immediately after the function
@code{ftp-setup-buffer} returns but before the variable @code{process} is
set, the process will not be killed. There is no easy way to fix this bug,
but at least it is very unlikely.
-
-@ignore
- arch-tag: 8abc30d4-4d3a-47f9-b908-e9e971c18c6d
-@end ignore
diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi
index bfd45518bc..2f1ea055f8 100644
--- a/doc/lispref/customize.texi
+++ b/doc/lispref/customize.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1997-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/customize
@node Customization, Loading, Macros, Top
@@ -1282,7 +1281,3 @@ the inferior widgets will convert @emph{their} inferior widgets. If
the data structure is itself recursive, this conversion is an infinite
recursion. The @code{lazy} widget prevents the recursion: it convert
its @code{:type} argument only when needed.
-
-@ignore
- arch-tag: d1b8fad3-f48c-4ce4-a402-f73b5ef19bd2
-@end ignore
diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi
index 3d77a5fe0d..ed146453df 100644
--- a/doc/lispref/debugging.texi
+++ b/doc/lispref/debugging.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 1999, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1994, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/debugging
@node Debugging, Read and Print, Advising Functions, Top
@@ -817,7 +816,3 @@ the error.
successfully, then point is located at the end of the form. In this
case, this technique can't localize the error precisely, but can still
show you which function to check.
-
-@ignore
- arch-tag: ddc57378-b0e6-4195-b7b6-43f8777395a7
-@end ignore
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 6e872ad423..9bc80a7774 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -1,8 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/display
@node Display, System Interface, Processes, Top
@@ -3892,6 +3890,13 @@ position as that text. It is equivalent to using just @var{string},
but it is done as a special case of marginal display (@pxref{Display
Margins}).
+@item (left-fringe @var{bitmap} @r{[}@var{face}@r{]})
+@itemx (right-fringe @var{bitmap} @r{[}@var{face}@r{]})
+This display specification on any character of a line of text causes
+the specified @var{bitmap} be displayed in the left or right fringes
+for that line. The optional @var{face} specifies the colors to be
+used for the bitmap. @xref{Fringe Bitmaps}, for the details.
+
@item (space-width @var{factor})
This display specification affects all the space characters within the
text that has the specification. It displays all of these spaces
@@ -5005,8 +5010,9 @@ and returns it.
button actually part of the text instead of being a property of the
buffer. Buttons using text properties do not create markers into the
buffer, which is important for speed when you use extremely large
-numbers of buttons. Both functions return the position of the start
-of the new button:
+numbers of buttons. (However, if there is an existing face text
+property at the site of the button, the button face may not be visible.)
+Both functions return the position of the start of the new button:
@defun make-text-button beg end &rest properties
This makes a button from @var{beg} to @var{end} in the current buffer, using
@@ -5947,7 +5953,3 @@ This hook is used for internal purposes: setting up communication with
the window system, and creating the initial window. Users should not
interfere with it.
@end defvar
-
-@ignore
- arch-tag: ffdf5714-7ecf-415b-9023-fbc6b409c2c6
-@end ignore
diff --git a/doc/lispref/doclicense.texi b/doc/lispref/doclicense.texi
index 9adddffba9..0c2d47827a 100644
--- a/doc/lispref/doclicense.texi
+++ b/doc/lispref/doclicense.texi
@@ -508,7 +508,3 @@ to permit their use in free software.
@c Local Variables:
@c ispell-local-pdict: "ispell-dict"
@c End:
-
-@ignore
- arch-tag: 9014cf6e-f3c4-401d-b8da-4fe52723984c
-@end ignore
diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi
index 3733a8fb10..391c22ba09 100644
--- a/doc/lispref/edebug.texi
+++ b/doc/lispref/edebug.texi
@@ -1,7 +1,6 @@
@comment -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1992, 1993, 1994, 1998, 1999, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1992-1994, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@c This file can also be used by an independent Edebug User
@@ -1588,7 +1587,3 @@ If non-@code{nil}, an expression to test for at every stop point. If
the result is non-@code{nil}, then break. Errors are ignored.
@xref{Global Break Condition}.
@end defopt
-
-@ignore
- arch-tag: 74842db8-019f-4818-b5a4-b2de878e57fd
-@end ignore
diff --git a/doc/lispref/elisp-covers.texi b/doc/lispref/elisp-covers.texi
index 6efc3e3412..92dfb7a074 100644
--- a/doc/lispref/elisp-covers.texi
+++ b/doc/lispref/elisp-covers.texi
@@ -1,7 +1,6 @@
\input texinfo @c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@c
@comment %**start of header
@@ -251,7 +250,3 @@
@end titlepage
@bye
-
-@ignore
- arch-tag: 02d65d63-3b64-49bc-a5c0-bfd5eabb6c98
-@end ignore
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index 252c6afb1b..1f4409738e 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -44,8 +44,7 @@
This is edition @value{VERSION} of the GNU Emacs Lisp Reference Manual,@*
corresponding to Emacs version @value{EMACSVER}.
-Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
-1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+Copyright @copyright{} 1990-1996, 1998-2011 Free Software
Foundation, Inc.
@quotation
diff --git a/doc/lispref/errors.texi b/doc/lispref/errors.texi
index b1b1747d86..2c7549d044 100644
--- a/doc/lispref/errors.texi
+++ b/doc/lispref/errors.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1999, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1993, 1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/errors
@node Standard Errors, Standard Buffer-Local Variables, GNU Emacs Internals, Top
@@ -203,7 +202,3 @@ This is a subcategory of @code{domain-error}.@*
This is a subcategory of @code{domain-error}.@*
@xref{Math Functions}.
@end table
-
-@ignore
- arch-tag: 717c6048-5d9d-4c7d-9a62-df57390b6f19
-@end ignore
diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi
index 6ed38f45dc..d44fe5bb95 100644
--- a/doc/lispref/eval.texi
+++ b/doc/lispref/eval.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1994, 1998, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/eval
@node Evaluation, Control Structures, Symbols, Top
@@ -748,7 +747,3 @@ particular elements, like this:
@end group
@end example
@end defvar
-
-@ignore
- arch-tag: f723a4e0-31b3-453f-8afc-0bf8fd276d57
-@end ignore
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index 2b539f0097..46ebced7a3 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/files
@@ -1906,51 +1905,22 @@ Don't try concatenating a slash by hand, as in
because this is not portable. Always use
@code{file-name-as-directory}.
-@cindex directory name abbreviation
- Directory name abbreviations are useful for directories that are
-normally accessed through symbolic links. Sometimes the users recognize
-primarily the link's name as ``the name'' of the directory, and find it
-annoying to see the directory's ``real'' name. If you define the link
-name as an abbreviation for the ``real'' name, Emacs shows users the
-abbreviation instead.
-
-@defopt directory-abbrev-alist
-The variable @code{directory-abbrev-alist} contains an alist of
-abbreviations to use for file directories. Each element has the form
-@code{(@var{from} . @var{to})}, and says to replace @var{from} with
-@var{to} when it appears in a directory name. The @var{from} string is
-actually a regular expression; it should always start with @samp{\`}.
-The @var{to} string should be an ordinary absolute directory name. Do
-not use @samp{~} to stand for a home directory in that string. The
-function @code{abbreviate-file-name} performs these substitutions.
-
-You can set this variable in @file{site-init.el} to describe the
-abbreviations appropriate for your site.
-
-Here's an example, from a system on which file system @file{/home/fsf}
-and so on are normally accessed through symbolic links named @file{/fsf}
-and so on.
-
-@example
-(("\\`/home/fsf" . "/fsf")
- ("\\`/home/gp" . "/gp")
- ("\\`/home/gd" . "/gd"))
-@end example
-@end defopt
-
To convert a directory name to its abbreviation, use this
function:
@defun abbreviate-file-name filename
@anchor{Definition of abbreviate-file-name}
-This function applies abbreviations from @code{directory-abbrev-alist}
-to its argument, and also substitutes @samp{~} for the user's home
-directory if the argument names a file in the home directory or one of
-its subdirectories. (If the home directory is a root directory, it is
-not replaced with @samp{~}, because this does not make the result
-shorter on many systems.) You can use it for directory names and for
-file names, because it recognizes abbreviations even as part of the
-name.
+This function returns an abbreviated form of @var{filename}. It
+applies the abbreviations specified in @code{directory-abbrev-alist}
+(@pxref{File Aliases,,File Aliases, emacs, The GNU Emacs Manual}),
+then substitutes @samp{~} for the user's home directory if the
+argument names a file in the home directory or one of its
+subdirectories. If the home directory is a root directory, it is not
+replaced with @samp{~}, because this does not make the result shorter
+on many systems.
+
+You can use this function for directory names and for file names,
+because it recognizes abbreviations even as part of the name.
@end defun
@node File Name Expansion
@@ -3187,7 +3157,3 @@ will produce good, general extensions we can install in Emacs.
names or values---because a program that general is probably difficult
to write, and slow. Instead, choose a set of possible data types that
are reasonably flexible, and not too hard to encode.
-
-@ignore
- arch-tag: 141f74ce-6ae3-40dc-a6c4-ef83fc4ec35c
-@end ignore
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index 4c44d0a643..92969d8259 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/frames
@@ -1791,9 +1790,13 @@ without actually displaying or popping up the menu.
The argument @var{menu} says what to display in the menu. It can be a
keymap or a list of keymaps (@pxref{Menu Keymaps}). In this case, the
return value is the list of events corresponding to the user's choice.
-(This list has more than one element if the choice occurred in a
-submenu.) Note that @code{x-popup-menu} does not actually execute the
-command bound to that sequence of events.
+This list has more than one element if the choice occurred in a
+submenu. (Note that @code{x-popup-menu} does not actually execute the
+command bound to that sequence of events.) On toolkits that support
+menu titles, the title is taken from the prompt string of @var{menu}
+if @var{menu} is a keymap, or from the prompt string of the first
+keymap in @var{menu} if it is a list of keymaps (@pxref{Defining
+Menus}).
Alternatively, @var{menu} can have the following form:
@@ -2477,7 +2480,3 @@ The functions @code{x-pixel-width} and @code{x-pixel-height} return the
width and height of an X Window frame, measured in pixels.
@end ignore
-
-@ignore
- arch-tag: 94977df6-3dca-4730-b57b-c6329e9282ba
-@end ignore
diff --git a/doc/lispref/front-cover-1.texi b/doc/lispref/front-cover-1.texi
index 5c9f4351f4..56d0f2b1c2 100644
--- a/doc/lispref/front-cover-1.texi
+++ b/doc/lispref/front-cover-1.texi
@@ -50,7 +50,3 @@
@end titlepage
@bye
-
-@ignore
- arch-tag: 5182b306-c403-4e4f-ba24-e1911bc6da9d
-@end ignore
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index e900360151..fc56e806cf 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/functions
@@ -1578,7 +1577,3 @@ See @ref{Mapping Functions}.
@item undefined
See @ref{Functions for Key Lookup}.
@end table
-
-@ignore
- arch-tag: 39100cdf-8a55-4898-acba-595db619e8e2
-@end ignore
diff --git a/doc/lispref/gpl.texi b/doc/lispref/gpl.texi
index 163af4627b..244f3330d4 100644
--- a/doc/lispref/gpl.texi
+++ b/doc/lispref/gpl.texi
@@ -721,7 +721,3 @@ library, you may consider it more useful to permit linking proprietary
applications with the library. If this is what you want to do, use
the GNU Lesser General Public License instead of this License. But
first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}.
-
-@ignore
- arch-tag: d00ac830-e120-41fb-bbc5-7ca3eeaa227f
-@end ignore
diff --git a/doc/lispref/hash.texi b/doc/lispref/hash.texi
index 14e9accff7..0d77cba6fa 100644
--- a/doc/lispref/hash.texi
+++ b/doc/lispref/hash.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005,
-@c 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/hash
@node Hash Tables, Symbols, Sequences Arrays Vectors, Top
@@ -355,7 +354,3 @@ This returns the rehash threshold of @var{table}.
@defun hash-table-size table
This returns the current nominal size of @var{table}.
@end defun
-
-@ignore
- arch-tag: 3b5107f9-d2f0-47d5-ad61-3498496bea0e
-@end ignore
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index f21e16e104..e287e6fbad 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/help
diff --git a/doc/lispref/hooks.texi b/doc/lispref/hooks.texi
index 4ef3f93377..6e2cac9c06 100644
--- a/doc/lispref/hooks.texi
+++ b/doc/lispref/hooks.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1998, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1993, 1998, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/hooks
@node Standard Hooks, Index, Standard Keymaps, Top
@@ -343,7 +342,3 @@ Manual}.
@item write-region-annotate-functions
@xref{Format Conversion}.
@end table
-
-@ignore
- arch-tag: 55fd0296-d906-4551-b300-979d3846aa88
-@end ignore
diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi
index 2420e777fe..5cdd983f40 100644
--- a/doc/lispref/internals.texi
+++ b/doc/lispref/internals.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1998, 1999, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1993, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/internals
@node GNU Emacs Internals, Standard Errors, Tips, Top
@@ -1400,7 +1399,3 @@ Symbol indicating the type of process: @code{real}, @code{network},
@code{serial}
@end table
-
-@ignore
- arch-tag: 4b2c33bc-d7e4-43f5-bc20-27c0db52a53e
-@end ignore
diff --git a/doc/lispref/intro.texi b/doc/lispref/intro.texi
index a04dc93500..baa184004e 100644
--- a/doc/lispref/intro.texi
+++ b/doc/lispref/intro.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1994, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/intro
@@ -546,7 +545,3 @@ Friedrich Pukelsheim, Arnold D. Robbins, Raul Rockwell, Jason Rumney,
Per Starb@"ack, Shinichirou Sugou, Kimmo Suominen, Edward Tharp, Bill
Trost, Rickard Westman, Jean White, Eduard Wiebe, Matthew Wilding,
Carl Witty, Dale Worley, Rusty Wright, and David D. Zuhn.
-
-@ignore
- arch-tag: d156593f-82f8-4708-a844-204e48f7f2aa
-@end ignore
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index e1052a9912..a9a30abd1e 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -1,8 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 1999, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 1990-1994, 1998-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/keymaps
@node Keymaps, Modes, Command Loop, Top
@@ -2072,21 +2070,6 @@ look at a menu. This is because the X toolkit requires the whole tree
of menus in advance. To force recalculation of the menu bar, call
@code{force-mode-line-update} (@pxref{Mode Line Format}).
- You've probably noticed that menu items show the equivalent keyboard key
-sequence (if any) to invoke the same command. To save time on
-recalculation, menu display caches this information in a sublist in the
-binding, like this:
-
-@c This line is not too long--rms.
-@example
-(@var{item-string} @r{[}@var{help}@r{]} (@var{key-binding-data}) . @var{real-binding})
-@end example
-
-@noindent
-Don't put these sublists in the menu item yourself; menu display
-calculates them automatically. Don't mention keyboard equivalents in
-the item strings themselves, since that is redundant.
-
@node Extended Menu Items
@subsubsection Extended Menu Items
@kindex menu-item
@@ -2119,14 +2102,6 @@ string. Thus, the string need not be a constant. The third element,
@var{item-property-list}, has the form of a property list which contains
other information.
- When an equivalent keyboard key binding is cached, the extended menu
-item binding looks like this:
-
-@example
-(menu-item @var{item-name} @var{real-binding} (@var{key-binding-data})
- . @var{item-property-list})
-@end example
-
Here is a table of the properties that are supported:
@table @code
@@ -2819,7 +2794,3 @@ menu of Shell mode, after the item @code{break}:
[work] '("Work" . work-command) 'break)
@end example
@end defun
-
-@ignore
- arch-tag: cfb87287-9364-4e46-9e93-6c2f7f6ae794
-@end ignore
diff --git a/doc/lispref/lay-flat.texi b/doc/lispref/lay-flat.texi
index affb9b89df..55973adac5 100644
--- a/doc/lispref/lay-flat.texi
+++ b/doc/lispref/lay-flat.texi
@@ -1,7 +1,6 @@
\input texinfo @c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@c
@comment %**start of header
@@ -42,7 +41,3 @@ pushed or held down.
@end tex
@bye
-
-@ignore
- arch-tag: 9e03a1c7-6f62-4346-85d9-ed5b79386e07
-@end ignore
diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi
index 4eef54ba85..fa3fac814c 100644
--- a/doc/lispref/lists.texi
+++ b/doc/lispref/lists.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/lists
@node Lists, Sequences Arrays Vectors, Strings and Characters, Top
@@ -1888,7 +1887,3 @@ use the ring as a first-in-first-out queue. For example:
(ring-remove fifo)))
@result{} (0 t one t "two")
@end lisp
-
-@ignore
- arch-tag: 31fb8a4e-4aa8-4a74-a206-aa00451394d4
-@end ignore
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index 05d836140c..4e47647360 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/loading
@@ -363,6 +362,31 @@ interactively, the argument @var{interactive-call} is @code{t}, and this
tells @code{locate-library} to display the file name in the echo area.
@end deffn
+@cindex shadowed Lisp files
+@deffn Command list-load-path-shadows &optional stringp
+This command shows a list of @dfn{shadowed} Emacs Lisp files. A
+shadowed file is one that will not normally be loaded, despite being
+in a directory on @code{load-path}, due to the existence of another
+similarly-named file in a directory earlier on @code{load-path}.
+
+For instance, suppose @code{load-path} is set to
+
+@smallexample
+ ("/opt/emacs/site-lisp" "/usr/share/emacs/23.3/lisp")
+@end smallexample
+
+@noindent
+and that both these directories contain a file named @file{foo.el}.
+Then @code{(require 'foo)} never loads the file in the second
+directory. Such a situation might indicate a problem in the way Emacs
+was installed.
+
+When called from Lisp, this function prints a message listing the
+shadowed files, instead of displaying them in a buffer. If the
+optional argument @code{stringp} is non-@code{nil}, it instead returns
+the shadowed files as a string.
+@end deffn
+
@node Loading Non-ASCII
@section Loading Non-@acronym{ASCII} Characters
@@ -962,7 +986,8 @@ example, @file{my_inst.elc} or @file{my_inst.elc.gz} in some directory
@end example
@var{library} can also be a feature (i.e.@: a symbol), in which case
-@var{form} is evaluated when @code{(provide @var{library})} is called.
+@var{form} is evaluated at the end of any file where
+@code{(provide @var{library})} is called.
An error in @var{form} does not undo the load, but does prevent
execution of the rest of @var{form}.
@@ -993,7 +1018,3 @@ symbol, and the value is a list of forms. The forms are evaluated
when the key matches the absolute true name or feature name of the
library being loaded.
@end defvar
-
-@ignore
- arch-tag: df731f89-0900-4389-a436-9105241b6f7a
-@end ignore
diff --git a/doc/lispref/locals.texi b/doc/lispref/locals.texi
index 0bef9cb355..a196efc973 100644
--- a/doc/lispref/locals.texi
+++ b/doc/lispref/locals.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1999, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1993, 1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/locals
@node Standard Buffer-Local Variables, Standard Keymaps, Standard Errors, Top
@@ -216,8 +215,3 @@ Used for communication between mouse commands and scroll-bar commands.
@item write-contents-functions
@xref{Saving Buffers}.
@end table
-
-
-@ignore
- arch-tag: 6baae835-b667-4447-91e2-9829ae1cf543
-@end ignore
diff --git a/doc/lispref/macros.texi b/doc/lispref/macros.texi
index c7672b93a7..c66feec08b 100644
--- a/doc/lispref/macros.texi
+++ b/doc/lispref/macros.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/macros
@node Macros, Customization, Functions, Top
@@ -732,7 +731,3 @@ indentation is being computed by @kbd{C-M-q}; if the value is a
number, @kbd{C-M-q} need not recalculate indentation for the following
lines until the end of the list.
@end table
-
-@ignore
- arch-tag: d4cce66d-1047-45c3-bfde-db6719d6e82b
-@end ignore
diff --git a/doc/lispref/makefile.w32-in b/doc/lispref/makefile.w32-in
index 86a0de3309..e0bcd21f2c 100644
--- a/doc/lispref/makefile.w32-in
+++ b/doc/lispref/makefile.w32-in
@@ -1,7 +1,6 @@
# -*- Makefile -*- for the GNU Emacs Lisp Reference Manual.
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 2003-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -23,20 +22,24 @@
srcdir = .
infodir = $(srcdir)/../../info
-usermanualdir = $(srcdir)/../emacs
# Directory with emacsver.texi.
emacsdir = $(srcdir)/../emacs
+# Directory with the (customized) texinfo.tex file.
+texinfodir = $(srcdir)/../misc
# Redefine `TEX' if `tex' does not invoke plain TeX. For example:
# TEX=platex
TEX=tex
INSTALL_INFO = install-info
-MAKEINFO = makeinfo --force
+MAKEINFO = makeinfo
+MAKEINFO_OPTS = --force -I$(srcdir) -I$(emacsdir)
# The environment variable and its value to add $(srcdir) to the path
# searched for TeX input files.
-texinputdir = $(srcdir)\..\..\nt\envadd.bat "TEXINPUTS=$(srcdir);$(TEXINPUTS)" /C
+texinputdir = $(srcdir)\..\..\nt\envadd.bat \
+ "TEXINPUTS=$(srcdir);$(texinputdir);$(TEXINPUTS)" \
+ "MAKEINFO=$(MAKEINFO) $(MAKEINFO_OPTS)" /C
# The name of the manual:
VERSION=2.9
@@ -111,12 +114,10 @@ $(infodir)/dir:
$(INSTALL_INFO) --info-dir=$(infodir) $(infodir)/elisp
$(infodir)/elisp: $(srcs)
- $(MAKEINFO) -I. -I$(srcdir) -I$(emacsdir) \
- -o $(infodir)/elisp $(srcdir)/elisp.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) -o $(infodir)/elisp $(srcdir)/elisp.texi
elisp.dvi: $(srcs)
- $(texinputdir) $(TEX) -I $(usermanualdir) -I$(emacsdir) \
- $(srcdir)/elisp.texi
+ $(texinputdir) $(TEX) $(srcdir)/elisp.texi
clean:
- $(DEL) *.toc *.aux *.log *.cp *.cps *.fn *.fns *.tp *.tps \
diff --git a/doc/lispref/maps.texi b/doc/lispref/maps.texi
index 4b416a82d6..d235fee90e 100644
--- a/doc/lispref/maps.texi
+++ b/doc/lispref/maps.texi
@@ -1,8 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1999, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 1990-1993, 1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/maps
@node Standard Keymaps, Standard Hooks, Standard Buffer-Local Variables, Top
@@ -239,4 +237,3 @@ The keymap defining the contents of the tool bar.
@vindex view-mode-map
A full keymap used by View mode.
@end table
-
diff --git a/doc/lispref/markers.texi b/doc/lispref/markers.texi
index be546fc3d1..7b73c454c8 100644
--- a/doc/lispref/markers.texi
+++ b/doc/lispref/markers.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/markers
@node Markers, Text, Positions, Top
@@ -674,7 +673,3 @@ mark is active, and there's a valid region in the buffer. Commands
that operate on the region (instead of on text near point) when
there's an active mark should use this to test whether to do that.
@end defun
-
-@ignore
- arch-tag: b1ba2e7a-a0f3-4c5e-875c-7d8e22d73299
-@end ignore
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index 9bc6be432a..50324a91f5 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/minibuf
@@ -2202,7 +2201,3 @@ arrives, whichever comes first. If @var{args} is non-@code{nil}, the
actual message is obtained by passing @var{string} and @var{args}
through @code{format}. @xref{Formatting Strings}.
@end defun
-
-@ignore
- arch-tag: bba7f945-9078-477f-a2ce-18818a6e1218
-@end ignore
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index 12f16b6766..7cf319bc6c 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/modes
@node Modes, Documentation, Keymaps, Top
@@ -20,14 +19,15 @@ user. For related topics such as keymaps and syntax tables, see
@ref{Keymaps}, and @ref{Syntax Tables}.
@menu
-* Hooks:: How to use hooks; how to write code that provides hooks.
-* Major Modes:: Defining major modes.
-* Minor Modes:: Defining minor modes.
-* Mode Line Format:: Customizing the text that appears in the mode line.
-* Imenu:: How a mode can provide a menu
+* Hooks:: How to use hooks; how to write code that provides hooks.
+* Major Modes:: Defining major modes.
+* Minor Modes:: Defining minor modes.
+* Mode Line Format:: Customizing the text that appears in the mode line.
+* Imenu:: How a mode can provide a menu
of definitions in the buffer.
-* Font Lock Mode:: How modes can highlight text according to syntax.
-* Desktop Save Mode:: How modes can have buffer state saved between
+* Font Lock Mode:: How modes can highlight text according to syntax.
+* Auto-Indentation:: How to teach Emacs to indent for a major mode.
+* Desktop Save Mode:: How modes can have buffer state saved between
Emacs sessions.
@end menu
@@ -78,8 +78,8 @@ convention.
its value is just a single function, not a list of functions.
@menu
-* Running Hooks:: How to run a hook.
-* Setting Hooks:: How to put functions on a hook, or remove them.
+* Running Hooks:: How to run a hook.
+* Setting Hooks:: How to put functions on a hook, or remove them.
@end menu
@node Running Hooks
@@ -199,16 +199,16 @@ buffer, such as a local keymap. The effect lasts until you switch
to another major mode in the same buffer.
@menu
-* Major Mode Basics::
-* Major Mode Conventions:: Coding conventions for keymaps, etc.
-* Auto Major Mode:: How Emacs chooses the major mode automatically.
-* Mode Help:: Finding out how to use a mode.
-* Derived Modes:: Defining a new major mode based on another major
+* Major Mode Basics::
+* Major Mode Conventions:: Coding conventions for keymaps, etc.
+* Auto Major Mode:: How Emacs chooses the major mode automatically.
+* Mode Help:: Finding out how to use a mode.
+* Derived Modes:: Defining a new major mode based on another major
mode.
-* Generic Modes:: Defining a simple major mode that supports
+* Generic Modes:: Defining a simple major mode that supports
comment syntax and Font Lock mode.
-* Mode Hooks:: Hooks run at the end of major mode functions.
-* Example Major Modes:: Text mode and Lisp modes.
+* Mode Hooks:: Hooks run at the end of major mode functions.
+* Example Major Modes:: Text mode and Lisp modes.
@end menu
@node Major Mode Basics
@@ -238,9 +238,8 @@ mode except that it provides two additional commands. Its definition
is distinct from that of Text mode, but uses that of Text mode.
Even if the new mode is not an obvious derivative of any other mode,
-it is convenient to use @code{define-derived-mode} with a @code{nil}
-parent argument, since it automatically enforces the most important
-coding conventions for you.
+we recommend to use @code{define-derived-mode}, since it automatically
+enforces the most important coding conventions for you.
For a very simple programming language major mode that handles
comments and fontification, you can use @code{define-generic-mode}.
@@ -333,7 +332,7 @@ In a major mode for editing some kind of structured text, such as a
programming language, indentation of text according to structure is
probably useful. So the mode should set @code{indent-line-function}
to a suitable function, and probably customize other variables
-for indentation.
+for indentation. @xref{Auto-Indentation}.
@item
@cindex keymaps in modes
@@ -429,6 +428,10 @@ The mode can specify a local value for
this mode.
@item
+The mode can specify how to complete various keywords by adding
+to the special hook @code{completion-at-point-functions}.
+
+@item
Use @code{defvar} or @code{defcustom} to set mode-related variables, so
that they are not reinitialized if they already have a value. (Such
reinitialization could discard customizations made by the user.)
@@ -492,7 +495,7 @@ The @code{define-derived-mode} macro automatically marks the derived
mode as special if the parent mode is special. The special mode
@code{special-mode} provides a convenient parent for other special
modes to inherit from; it sets @code{buffer-read-only} to @code{t},
-and does nothing else.
+and does little else.
@item
If you want to make the new mode the default for files with certain
@@ -737,8 +740,11 @@ documentation of the major mode.
@subsection Defining Derived Modes
@cindex derived mode
- It's often useful to define a new major mode in terms of an existing
-one. An easy way to do this is to use @code{define-derived-mode}.
+ The recommended way to define a new major mode is to derive it
+from an existing one using @code{define-derived-mode}. If there is no
+closely related mode, you can inherit from @code{text-mode},
+@code{special-mode}, @code{prog-mode}, or in the worst case
+@code{fundamental-mode}.
@defmac define-derived-mode variant parent name docstring keyword-args@dots{} body@dots{}
This macro defines @var{variant} as a major mode command, using
@@ -979,8 +985,7 @@ You can thus get the full benefit of adaptive filling
Turning on Text mode runs the normal hook `text-mode-hook'."
@end group
@group
- (make-local-variable 'text-mode-variant)
- (setq text-mode-variant t)
+ (set (make-local-variable 'text-mode-variant) t)
;; @r{These two lines are a feature added recently.}
(set (make-local-variable 'require-final-newline)
mode-require-final-newline)
@@ -998,9 +1003,8 @@ the default value, and we'll delete it in a future version.)
@smallexample
@group
;; @r{This isn't needed nowadays, since @code{define-derived-mode} does it.}
-(defvar text-mode-abbrev-table nil
+(define-abbrev-table 'text-mode-abbrev-table ()
"Abbrev table used while in text mode.")
-(define-abbrev-table 'text-mode-abbrev-table ())
@end group
@group
@@ -1022,12 +1026,10 @@ Turning on text-mode runs the hook `text-mode-hook'."
;; @r{These four lines are absent from the current version}
;; @r{not because this is done some other way, but rather}
;; @r{because nowadays Text mode uses the normal definition of paragraphs.}
- (make-local-variable 'paragraph-start)
- (setq paragraph-start (concat "[ \t]*$\\|" page-delimiter))
- (make-local-variable 'paragraph-separate)
- (setq paragraph-separate paragraph-start)
- (make-local-variable 'indent-line-function)
- (setq indent-line-function 'indent-relative-maybe)
+ (set (make-local-variable 'paragraph-start)
+ (concat "[ \t]*$\\|" page-delimiter))
+ (set (make-local-variable 'paragraph-separate) paragraph-start)
+ (set (make-local-variable 'indent-line-function) 'indent-relative-maybe)
@end group
@group
(setq mode-name "Text")
@@ -1115,15 +1117,12 @@ modes should understand the Lisp conventions for comments. The rest of
@smallexample
@group
- (make-local-variable 'paragraph-start)
- (setq paragraph-start (concat page-delimiter "\\|$" ))
- (make-local-variable 'paragraph-separate)
- (setq paragraph-separate paragraph-start)
+ (set (make-local-variable 'paragraph-start) (concat page-delimiter "\\|$" ))
+ (set (make-local-variable 'paragraph-separate) paragraph-start)
@dots{}
@end group
@group
- (make-local-variable 'comment-indent-function)
- (setq comment-indent-function 'lisp-comment-indent))
+ (set (make-local-variable 'comment-indent-function) 'lisp-comment-indent))
@dots{}
@end group
@end smallexample
@@ -1135,16 +1134,13 @@ common. The following code sets up the common commands:
@smallexample
@group
-(defvar shared-lisp-mode-map ()
+(defvar shared-lisp-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key shared-lisp-mode-map "\e\C-q" 'indent-sexp)
+ (define-key shared-lisp-mode-map "\177"
+ 'backward-delete-char-untabify)
+ map)
"Keymap for commands shared by all sorts of Lisp modes.")
-
-;; @r{Putting this @code{if} after the @code{defvar} is an older style.}
-(if shared-lisp-mode-map
- ()
- (setq shared-lisp-mode-map (make-sparse-keymap))
- (define-key shared-lisp-mode-map "\e\C-q" 'indent-sexp)
- (define-key shared-lisp-mode-map "\177"
- 'backward-delete-char-untabify))
@end group
@end smallexample
@@ -1153,15 +1149,13 @@ And here is the code to set up the keymap for Lisp mode:
@smallexample
@group
-(defvar lisp-mode-map ()
+(defvar lisp-mode-map
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map shared-lisp-mode-map)
+ (define-key map "\e\C-x" 'lisp-eval-defun)
+ (define-key map "\C-c\C-z" 'run-lisp)
+ map)
"Keymap for ordinary Lisp mode...")
-
-(if lisp-mode-map
- ()
- (setq lisp-mode-map (make-sparse-keymap))
- (set-keymap-parent lisp-mode-map shared-lisp-mode-map)
- (define-key lisp-mode-map "\e\C-x" 'lisp-eval-defun)
- (define-key lisp-mode-map "\C-c\C-z" 'run-lisp))
@end group
@end smallexample
@@ -1192,11 +1186,9 @@ if that value is non-nil."
; @r{finds out what to describe.}
(setq mode-name "Lisp") ; @r{This goes into the mode line.}
(lisp-mode-variables t) ; @r{This defines various variables.}
- (make-local-variable 'comment-start-skip)
- (setq comment-start-skip
- "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\)\\(;+\\|#|\\) *")
- (make-local-variable 'font-lock-keywords-case-fold-search)
- (setq font-lock-keywords-case-fold-search t)
+ (set (make-local-variable 'comment-start-skip)
+ "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\)\\(;+\\|#|\\) *")
+ (set (make-local-variable 'font-lock-keywords-case-fold-search) t)
@end group
@group
(setq imenu-case-fold-search t)
@@ -1580,14 +1572,14 @@ information displayed in the mode line relates to the enabled major and
minor modes.
@menu
-* Base: Mode Line Basics. Basic ideas of mode line control.
-* Data: Mode Line Data. The data structure that controls the mode line.
-* Top: Mode Line Top. The top level variable, mode-line-format.
-* Mode Line Variables:: Variables used in that data structure.
-* %-Constructs:: Putting information into a mode line.
-* Properties in Mode:: Using text properties in the mode line.
-* Header Lines:: Like a mode line, but at the top.
-* Emulating Mode Line:: Formatting text as the mode line would.
+* Base: Mode Line Basics. Basic ideas of mode line control.
+* Data: Mode Line Data. The data structure that controls the mode line.
+* Top: Mode Line Top. The top level variable, mode-line-format.
+* Mode Line Variables:: Variables used in that data structure.
+* %-Constructs:: Putting information into a mode line.
+* Properties in Mode:: Using text properties in the mode line.
+* Header Lines:: Like a mode line, but at the top.
+* Emulating Mode Line:: Formatting text as the mode line would.
@end menu
@node Mode Line Basics
@@ -2119,29 +2111,38 @@ the text that would appear in a mode line or header line
based on a certain mode-line specification.
@defun format-mode-line format &optional face window buffer
-This function formats a line of text according to @var{format} as if
-it were generating the mode line for @var{window}, but instead of
-displaying the text in the mode line or the header line, it returns
-the text as a string. The argument @var{window} defaults to the
-selected window. If @var{buffer} is non-@code{nil}, all the
-information used is taken from @var{buffer}; by default, it comes from
-@var{window}'s buffer.
+This function formats a line of text according to @var{format} as if it
+were generating the mode line for @var{window}, but it also returns the
+text as a string. The argument @var{window} defaults to the selected
+window. If @var{buffer} is non-@code{nil}, all the information used is
+taken from @var{buffer}; by default, it comes from @var{window}'s
+buffer.
The value string normally has text properties that correspond to the
-faces, keymaps, etc., that the mode line would have. And any character
-for which no @code{face} property is specified gets a default
-value which is usually @var{face}. (If @var{face} is @code{t},
-that stands for either @code{mode-line} if @var{window} is selected,
+faces, keymaps, etc., that the mode line would have. Any character for
+which no @code{face} property is specified by @var{format} gets a
+default value determined by @var{face}. If @var{face} is @code{t}, that
+stands for either @code{mode-line} if @var{window} is selected,
otherwise @code{mode-line-inactive}. If @var{face} is @code{nil} or
-omitted, that stands for no face property.)
+omitted, that stands for the default face. If @var{face} is an integer,
+the value returned by this function will have no text properties.
+
+You can also specify other valid faces as the value of @var{face}.
+If specified, that face provides the @code{face} property for characters
+whose face is not specified by @var{format}.
-However, if @var{face} is an integer, the value has no text properties.
+Note that using @code{mode-line}, @code{mode-line-inactive}, or
+@code{header-line} as @var{face} will actually redisplay the mode line
+or the header line, respectively, using the current definitions of the
+corresponding face, in addition to returning the formatted string.
+(Other faces do not cause redisplay.)
For example, @code{(format-mode-line header-line-format)} returns the
text that would appear in the selected window's header line (@code{""}
if it has no header line). @code{(format-mode-line header-line-format
'header-line)} returns the same text, with each character
-carrying the face that it will have in the header line itself.
+carrying the face that it will have in the header line itself, and also
+redraws the header line.
@end defun
@node Imenu
@@ -2361,7 +2362,7 @@ Search-based fontification happens second.
* Other Font Lock Variables:: Additional customization facilities.
* Levels of Font Lock:: Each mode can define alternative levels
so that the user can select more or less.
-* Precalculated Fontification:: How Lisp programs that produce the buffer
+* Precalculated Fontification:: How Lisp programs that produce the buffer
contents can also specify how to fontify it.
* Faces for Font Lock:: Special faces specifically for Font Lock.
* Syntactic Font Lock:: Fontification based on syntax tables.
@@ -3223,6 +3224,659 @@ Since this function is called after every buffer change, it should be
reasonably fast.
@end defvar
+@node Auto-Indentation
+@section Auto-indention of code
+
+For programming languages, an important feature of a major mode is to
+provide automatic indentation. This is controlled in Emacs by
+@code{indent-line-function} (@pxref{Mode-Specific Indent}).
+Writing a good indentation function can be difficult and to a large
+extent it is still a black art.
+
+Many major mode authors will start by writing a simple indentation
+function that works for simple cases, for example by comparing with the
+indentation of the previous text line. For most programming languages
+that are not really line-based, this tends to scale very poorly:
+improving such a function to let it handle more diverse situations tends
+to become more and more difficult, resulting in the end with a large,
+complex, unmaintainable indentation function which nobody dares to touch.
+
+A good indentation function will usually need to actually parse the
+text, according to the syntax of the language. Luckily, it is not
+necessary to parse the text in as much detail as would be needed
+for a compiler, but on the other hand, the parser embedded in the
+indentation code will want to be somewhat friendly to syntactically
+incorrect code.
+
+Good maintainable indentation functions usually fall into 2 categories:
+either parsing forward from some ``safe'' starting point until the
+position of interest, or parsing backward from the position of interest.
+Neither of the two is a clearly better choice than the other: parsing
+backward is often more difficult than parsing forward because
+programming languages are designed to be parsed forward, but for the
+purpose of indentation it has the advantage of not needing to
+guess a ``safe'' starting point, and it generally enjoys the property
+that only a minimum of text will be analyzed to decide the indentation
+of a line, so indentation will tend to be unaffected by syntax errors in
+some earlier unrelated piece of code. Parsing forward on the other hand
+is usually easier and has the advantage of making it possible to
+reindent efficiently a whole region at a time, with a single parse.
+
+Rather than write your own indentation function from scratch, it is
+often preferable to try and reuse some existing ones or to rely
+on a generic indentation engine. There are sadly few such
+engines. The CC-mode indentation code (used with C, C++, Java, Awk
+and a few other such modes) has been made more generic over the years,
+so if your language seems somewhat similar to one of those languages,
+you might try to use that engine. @c FIXME: documentation?
+Another one is SMIE which takes an approach in the spirit
+of Lisp sexps and adapts it to non-Lisp languages.
+
+@menu
+* SMIE:: A simple minded indentation engine
+@end menu
+
+@node SMIE
+@subsection Simple Minded Indentation Engine
+
+SMIE is a package that provides a generic navigation and indentation
+engine. Based on a very simple parser using an ``operator precedence
+grammar'', it lets major modes extend the sexp-based navigation of Lisp
+to non-Lisp languages as well as provide a simple to use but reliable
+auto-indentation.
+
+Operator precedence grammar is a very primitive technology for parsing
+compared to some of the more common techniques used in compilers.
+It has the following characteristics: its parsing power is very limited,
+and it is largely unable to detect syntax errors, but it has the
+advantage of being algorithmically efficient and able to parse forward
+just as well as backward. In practice that means that SMIE can use it
+for indentation based on backward parsing, that it can provide both
+@code{forward-sexp} and @code{backward-sexp} functionality, and that it
+will naturally work on syntactically incorrect code without any extra
+effort. The downside is that it also means that most programming
+languages cannot be parsed correctly using SMIE, at least not without
+resorting to some special tricks (@pxref{SMIE Tricks}).
+
+@menu
+* SMIE setup:: SMIE setup and features
+* Operator Precedence Grammars:: A very simple parsing technique
+* SMIE Grammar:: Defining the grammar of a language
+* SMIE Lexer:: Defining tokens
+* SMIE Tricks:: Working around the parser's limitations
+* SMIE Indentation:: Specifying indentation rules
+* SMIE Indentation Helpers:: Helper functions for indentation rules
+* SMIE Indentation Example:: Sample indentation rules
+@end menu
+
+@node SMIE setup
+@subsubsection SMIE Setup and Features
+
+SMIE is meant to be a one-stop shop for structural navigation and
+various other features which rely on the syntactic structure of code, in
+particular automatic indentation. The main entry point is
+@code{smie-setup} which is a function typically called while setting
+up a major mode.
+
+@defun smie-setup grammar rules-function &rest keywords
+Setup SMIE navigation and indentation.
+@var{grammar} is a grammar table generated by @code{smie-prec2->grammar}.
+@var{rules-function} is a set of indentation rules for use on
+@code{smie-rules-function}.
+@var{keywords} are additional arguments, which can include the following
+keywords:
+@itemize
+@item
+@code{:forward-token} @var{fun}: Specify the forward lexer to use.
+@item
+@code{:backward-token} @var{fun}: Specify the backward lexer to use.
+@end itemize
+@end defun
+
+Calling this function is sufficient to make commands such as
+@code{forward-sexp}, @code{backward-sexp}, and @code{transpose-sexps} be
+able to properly handle structural elements other than just the paired
+parentheses already handled by syntax tables. For example, if the
+provided grammar is precise enough, @code{transpose-sexps} can correctly
+transpose the two arguments of a @code{+} operator, taking into account
+the precedence rules of the language.
+
+Calling `smie-setup' is also sufficient to make TAB indentation work in
+the expected way, extends @code{blink-matching-paren} to apply to
+elements like @code{begin...end}, and provides some commands that you
+can bind in the major mode keymap.
+
+@deffn Command smie-close-block
+This command closes the most recently opened (and not yet closed) block.
+@end deffn
+
+@deffn Command smie-down-list &optional arg
+This command is like @code{down-list} but it also pays attention to
+nesting of tokens other than parentheses, such as @code{begin...end}.
+@end deffn
+
+@node Operator Precedence Grammars
+@subsubsection Operator Precedence Grammars
+
+SMIE's precedence grammars simply give to each token a pair of
+precedences: the left-precedence and the right-precedence. We say
+@code{T1 < T2} if the right-precedence of token @code{T1} is less than
+the left-precedence of token @code{T2}. A good way to read this
+@code{<} is as a kind of parenthesis: if we find @code{... T1 something
+T2 ...} then that should be parsed as @code{... T1 (something T2 ...}
+rather than as @code{... T1 something) T2 ...}. The latter
+interpretation would be the case if we had @code{T1 > T2}. If we have
+@code{T1 = T2}, it means that token T2 follows token T1 in the same
+syntactic construction, so typically we have @code{"begin" = "end"}.
+Such pairs of precedences are sufficient to express left-associativity
+or right-associativity of infix operators, nesting of tokens like
+parentheses and many other cases.
+
+@c ¡Let's leave this undocumented to leave it more open for change!
+@c @defvar smie-grammar
+@c The value of this variable is an alist specifying the left and right
+@c precedence of each token. It is meant to be initialized by using one of
+@c the functions below.
+@c @end defvar
+
+@defun smie-prec2->grammar table
+This function takes a @emph{prec2} grammar @var{table} and returns an
+alist suitable for use in @code{smie-setup}. The @emph{prec2}
+@var{table} is itself meant to be built by one of the functions below.
+@end defun
+
+@defun smie-merge-prec2s &rest tables
+This function takes several @emph{prec2} @var{tables} and merges them
+into a new @emph{prec2} table.
+@end defun
+
+@defun smie-precs->prec2 precs
+This function builds a @emph{prec2} table from a table of precedences
+@var{precs}. @var{precs} should be a list, sorted by precedence (for
+example @code{"+"} will come before @code{"*"}), of elements of the form
+@code{(@var{assoc} @var{op} ...)}, where each @var{op} is a token that
+acts as an operator; @var{assoc} is their associativity, which can be
+either @code{left}, @code{right}, @code{assoc}, or @code{nonassoc}.
+All operators in a given element share the same precedence level
+and associativity.
+@end defun
+
+@defun smie-bnf->prec2 bnf &rest resolvers
+This function lets you specify the grammar using a BNF notation.
+It accepts a @var{bnf} description of the grammar along with a set of
+conflict resolution rules @var{resolvers}, and
+returns a @emph{prec2} table.
+
+@var{bnf} is a list of nonterminal definitions of the form
+@code{(@var{nonterm} @var{rhs1} @var{rhs2} ...)} where each @var{rhs}
+is a (non-empty) list of terminals (aka tokens) or non-terminals.
+
+Not all grammars are accepted:
+@itemize
+@item
+An @var{rhs} cannot be an empty list (an empty list is never needed,
+since SMIE allows all non-terminals to match the empty string anyway).
+@item
+An @var{rhs} cannot have 2 consecutive non-terminals: each pair of
+non-terminals needs to be separated by a terminal (aka token).
+This is a fundamental limitation of operator precedence grammars.
+@end itemize
+
+Additionally, conflicts can occur:
+@itemize
+@item
+The returned @emph{prec2} table holds constraints between pairs of tokens, and
+for any given pair only one constraint can be present: T1 < T2,
+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"}).
+@end itemize
+
+Precedence conflicts can be resolved via @var{resolvers}, which
+is a list of @emph{precs} tables (see @code{smie-precs->prec2}): for
+each precedence conflict, if those @code{precs} tables
+specify a particular constraint, then the conflict is resolved by using
+this constraint instead, else a conflict is reported and one of the
+conflicting constraints is picked arbitrarily and the others are
+simply ignored.
+@end defun
+
+@node SMIE Grammar
+@subsubsection Defining the Grammar of a Language
+
+The usual way to define the SMIE grammar of a language is by
+defining a new global variable that holds the precedence table by
+giving a set of BNF rules.
+For example, the grammar definition for a small Pascal-like language
+could look like:
+@example
+@group
+(require 'smie)
+(defvar sample-smie-grammar
+ (smie-prec2->grammar
+ (smie-bnf->prec2
+@end group
+@group
+ '((id)
+ (inst ("begin" insts "end")
+ ("if" exp "then" inst "else" inst)
+ (id ":=" exp)
+ (exp))
+ (insts (insts ";" insts) (inst))
+ (exp (exp "+" exp)
+ (exp "*" exp)
+ ("(" exps ")"))
+ (exps (exps "," exps) (exp)))
+@end group
+@group
+ '((assoc ";"))
+ '((assoc ","))
+ '((assoc "+") (assoc "*")))))
+@end group
+@end example
+
+@noindent
+A few things to note:
+
+@itemize
+@item
+The above grammar does not explicitly mention the syntax of function
+calls: SMIE will automatically allow any sequence of sexps, such as
+identifiers, balanced parentheses, or @code{begin ... end} blocks
+to appear anywhere anyway.
+@item
+The grammar category @code{id} has no right hand side: this does not
+mean that it can match only the empty string, since as mentioned any
+sequence of sexps can appear anywhere anyway.
+@item
+Because non terminals cannot appear consecutively in the BNF grammar, it
+is difficult to correctly handle tokens that act as terminators, so the
+above grammar treats @code{";"} as a statement @emph{separator} instead,
+which SMIE can handle very well.
+@item
+Separators used in sequences (such as @code{","} and @code{";"} above)
+are best defined with BNF rules such as @code{(foo (foo "separator" foo) ...)}
+which generate precedence conflicts which are then resolved by giving
+them an explicit @code{(assoc "separator")}.
+@item
+The @code{("(" exps ")")} rule was not needed to pair up parens, since
+SMIE will pair up any characters that are marked as having paren syntax
+in the syntax table. What this rule does instead (together with the
+definition of @code{exps}) is to make it clear that @code{","} should
+not appear outside of parentheses.
+@item
+Rather than have a single @emph{precs} table to resolve conflicts, it is
+preferable to have several tables, so as to let the BNF part of the
+grammar specify relative precedences where possible.
+@item
+Unless there is a very good reason to prefer @code{left} or
+@code{right}, it is usually preferable to mark operators as associative,
+using @code{assoc}. For that reason @code{"+"} and @code{"*"} are
+defined above as @code{assoc}, although the language defines them
+formally as left associative.
+@end itemize
+
+@node SMIE Lexer
+@subsubsection Defining Tokens
+
+SMIE comes with a predefined lexical analyzer which uses syntax tables
+in the following way: any sequence of characters that have word or
+symbol syntax is considered a token, and so is any sequence of
+characters that have punctuation syntax. This default lexer is
+often a good starting point but is rarely actually correct for any given
+language. For example, it will consider @code{"2,+3"} to be composed
+of 3 tokens: @code{"2"}, @code{",+"}, and @code{"3"}.
+
+To describe the lexing rules of your language to SMIE, you need
+2 functions, one to fetch the next token, and another to fetch the
+previous token. Those functions will usually first skip whitespace and
+comments and then look at the next chunk of text to see if it
+is a special token. If so it should skip the token and
+return a description of this token. Usually this is simply the string
+extracted from the buffer, but it can be anything you want.
+For example:
+@example
+@group
+(defvar sample-keywords-regexp
+ (regexp-opt '("+" "*" "," ";" ">" ">=" "<" "<=" ":=" "=")))
+@end group
+@group
+(defun sample-smie-forward-token ()
+ (forward-comment (point-max))
+ (cond
+ ((looking-at sample-keywords-regexp)
+ (goto-char (match-end 0))
+ (match-string-no-properties 0))
+ (t (buffer-substring-no-properties
+ (point)
+ (progn (skip-syntax-forward "w_")
+ (point))))))
+@end group
+@group
+(defun sample-smie-backward-token ()
+ (forward-comment (- (point)))
+ (cond
+ ((looking-back sample-keywords-regexp (- (point) 2) t)
+ (goto-char (match-beginning 0))
+ (match-string-no-properties 0))
+ (t (buffer-substring-no-properties
+ (point)
+ (progn (skip-syntax-backward "w_")
+ (point))))))
+@end group
+@end example
+
+Notice how those lexers return the empty string when in front of
+parentheses. This is because SMIE automatically takes care of the
+parentheses defined in the syntax table. More specifically if the lexer
+returns nil or an empty string, SMIE tries to handle the corresponding
+text as a sexp according to syntax tables.
+
+@node SMIE Tricks
+@subsubsection Living With a Weak Parser
+
+The parsing technique used by SMIE does not allow tokens to behave
+differently in different contexts. For most programming languages, this
+manifests itself by precedence conflicts when converting the
+BNF grammar.
+
+Sometimes, those conflicts can be worked around by expressing the
+grammar slightly differently. For example, for Modula-2 it might seem
+natural to have a BNF grammar that looks like this:
+
+@example
+ ...
+ (inst ("IF" exp "THEN" insts "ELSE" insts "END")
+ ("CASE" exp "OF" cases "END")
+ ...)
+ (cases (cases "|" cases) (caselabel ":" insts) ("ELSE" insts))
+ ...
+@end example
+
+But this will create conflicts for @code{"ELSE"}: on the one hand, the
+IF rule implies (among many other things) that @code{"ELSE" = "END"};
+but on the other hand, since @code{"ELSE"} appears within @code{cases},
+which appears left of @code{"END"}, we also have @code{"ELSE" > "END"}.
+We can solve the conflict either by using:
+@example
+ ...
+ (inst ("IF" exp "THEN" insts "ELSE" insts "END")
+ ("CASE" exp "OF" cases "END")
+ ("CASE" exp "OF" cases "ELSE" insts "END")
+ ...)
+ (cases (cases "|" cases) (caselabel ":" insts))
+ ...
+@end example
+or
+@example
+ ...
+ (inst ("IF" exp "THEN" else "END")
+ ("CASE" exp "OF" cases "END")
+ ...)
+ (else (insts "ELSE" insts))
+ (cases (cases "|" cases) (caselabel ":" insts) (else))
+ ...
+@end example
+
+Reworking the grammar to try and solve conflicts has its downsides, tho,
+because SMIE assumes that the grammar reflects the logical structure of
+the code, so it is preferable to keep the BNF closer to the intended
+abstract syntax tree.
+
+Other times, after careful consideration you may conclude that those
+conflicts are not serious and simply resolve them via the
+@var{resolvers} argument of @code{smie-bnf->prec2}. Usually this is
+because the grammar is simply ambiguous: the conflict does not affect
+the set of programs described by the grammar, but only the way those
+programs are parsed. This is typically the case for separators and
+associative infix operators, where you want to add a resolver like
+@code{'((assoc "|"))}. Another case where this can happen is for the
+classic @emph{dangling else} problem, where you will use @code{'((assoc
+"else" "then"))}. It can also happen for cases where the conflict is
+real and cannot really be resolved, but it is unlikely to pose a problem
+in practice.
+
+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
+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
+@code{"begin"} it finds. This pushes the work of distinguishing the
+different cases to the lexer, which will thus have to look at the
+surrounding text to find ad-hoc clues.
+
+@node SMIE Indentation
+@subsubsection Specifying Indentation Rules
+
+Based on the provided grammar, SMIE will be able to provide automatic
+indentation without any extra effort. But in practice, this default
+indentation style will probably not be good enough. You will want to
+tweak it in many different cases.
+
+SMIE indentation is based on the idea that indentation rules should be
+as local as possible. To this end, it relies on the idea of
+@emph{virtual} indentation, which is the indentation that a particular
+program point would have if it were at the beginning of a line.
+Of course, if that program point is indeed at the beginning of a line,
+its virtual indentation is its current indentation. But if not, then
+SMIE uses the indentation algorithm to compute the virtual indentation
+of that point. Now in practice, the virtual indentation of a program
+point does not have to be identical to the indentation it would have if
+we inserted a newline before it. To see how this works, the SMIE rule
+for indentation after a @code{@{} in C does not care whether the
+@code{@{} is standing on a line of its own or is at the end of the
+preceding line. Instead, these different cases are handled in the
+indentation rule that decides how to indent before a @code{@{}.
+
+Another important concept is the notion of @emph{parent}: The
+@emph{parent} of a token, is the head token of the nearest enclosing
+syntactic construct. For example, the parent of an @code{else} is the
+@code{if} to which it belongs, and the parent of an @code{if}, in turn,
+is the lead token of the surrounding construct. The command
+@code{backward-sexp} jumps from a token to its parent, but there are
+some caveats: for @emph{openers} (tokens which start a construct, like
+@code{if}), you need to start with point before the token, while for
+others you need to start with point after the token.
+@code{backward-sexp} stops with point before the parent token if that is
+the @emph{opener} of the token of interest, and otherwise it stops with
+point after the parent token.
+
+SMIE indentation rules are specified using a function that takes two
+arguments @var{method} and @var{arg} where the meaning of @var{arg} and the
+expected return value depend on @var{method}.
+
+@var{method} can be:
+@itemize
+@item
+@code{:after}, in which case @var{arg} is a token and the function
+should return the @var{offset} to use for indentation after @var{arg}.
+@item
+@code{:before}, in which case @var{arg} is a token and the function
+should return the @var{offset} to use to indent @var{arg} itself.
+@item
+@code{:elem}, in which case the function should return either the offset
+to use to indent function arguments (if @var{arg} is the symbol
+@code{arg}) or the basic indentation step (if @var{arg} is the symbol
+@code{basic}).
+@item
+@code{:list-intro}, in which case @var{arg} is a token and the function
+should return non-@code{nil} if the token is followed by a list of
+expressions (not separated by any token) rather than an expression.
+@end itemize
+
+When @var{arg} is a token, the function is called with point just before
+that token. A return value of nil always means to fallback on the
+default behavior, so the function should return nil for arguments it
+does not expect.
+
+@var{offset} can be:
+@itemize
+@item
+@code{nil}: use the default indentation rule.
+@item
+@code{(column . @var{column})}: indent to column @var{column}.
+@item
+@var{number}: offset by @var{number}, relative to a base token which is
+the current token for @code{:after} and its parent for @code{:before}.
+@end itemize
+
+@node SMIE Indentation Helpers
+@subsubsection Helper Functions for Indentation Rules
+
+SMIE provides various functions designed specifically for use in the
+indentation rules function (several of those functions break if used in
+another context). These functions all start with the prefix
+@code{smie-rule-}.
+
+@defun smie-rule-bolp
+Return non-@code{nil} if the current token is the first on the line.
+@end defun
+
+@defun smie-rule-hanging-p
+Return non-@code{nil} if the current token is @emph{hanging}.
+A token is @emph{hanging} if it is the last token on the line
+and if it is preceded by other tokens: a lone token on a line is not
+hanging.
+@end defun
+
+@defun smie-rule-next-p &rest tokens
+Return non-@code{nil} if the next token is among @var{tokens}.
+@end defun
+
+@defun smie-rule-prev-p &rest tokens
+Return non-@code{nil} if the previous token is among @var{tokens}.
+@end defun
+
+@defun smie-rule-parent-p &rest parents
+Return non-@code{nil} if the current token's parent is among @var{parents}.
+@end defun
+
+@defun smie-rule-sibling-p
+Return non-nil if the current token's parent is actually a sibling.
+This is the case for example when the parent of a @code{","} is just the
+previous @code{","}.
+@end defun
+
+@defun smie-rule-parent &optional offset
+Return the proper offset to align the current token with the parent.
+If non-@code{nil}, @var{offset} should be an integer giving an
+additional offset to apply.
+@end defun
+
+@defun smie-rule-separator method
+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
+typically not exist as a node in an abstract syntax tree).
+
+Such a token is expected to have an associative syntax and be closely
+tied to its syntactic parent. Typical examples are @code{","} in lists
+of arguments (enclosed inside parentheses), or @code{";"} in sequences
+of instructions (enclosed in a @code{@{...@}} or @code{begin...end}
+block).
+
+@var{method} should be the method name that was passed to
+`smie-rules-function'.
+@end defun
+
+@node SMIE Indentation Example
+@subsubsection Sample Indentation Rules
+
+Here is an example of an indentation function:
+
+@example
+(defun sample-smie-rules (kind token)
+ (pcase (cons kind token)
+ (`(:elem . basic) sample-indent-basic)
+ (`(,_ . ",") (smie-rule-separator kind))
+ (`(:after . ":=") sample-indent-basic)
+ (`(:before . ,(or `"begin" `"(" `"@{")))
+ (if (smie-rule-hanging-p) (smie-rule-parent)))
+ (`(:before . "if")
+ (and (not (smie-rule-bolp)) (smie-rule-prev-p "else")
+ (smie-rule-parent)))))
+@end example
+
+@noindent
+A few things to note:
+
+@itemize
+@item
+The first case indicates the basic indentation increment to use.
+If @code{sample-indent-basic} is nil, then SMIE uses the global
+setting @code{smie-indent-basic}. The major mode could have set
+@code{smie-indent-basic} buffer-locally instead, but that
+is discouraged.
+
+@item
+The rule for the token @code{","} make SMIE try to be more clever when
+the comma separator is placed at the beginning of lines. It tries to
+outdent the separator so as to align the code after the comma; for
+example:
+
+@example
+x = longfunctionname (
+ arg1
+ , arg2
+ );
+@end example
+
+@item
+The rule for indentation after @code{":="} exists because otherwise
+SMIE would treat @code{":="} as an infix operator and would align the
+right argument with the left one.
+
+@item
+The rule for indentation before @code{"begin"} is an example of the use
+of virtual indentation: This rule is used only when @code{"begin"} is
+hanging, which can happen only when @code{"begin"} is not at the
+beginning of a line. So this is not used when indenting
+@code{"begin"} itself but only when indenting something relative to this
+@code{"begin"}. Concretely, this rule changes the indentation from:
+
+@example
+ if x > 0 then begin
+ dosomething(x);
+ end
+@end example
+to
+@example
+ if x > 0 then begin
+ dosomething(x);
+ end
+@end example
+
+@item
+The rule for indentation before @code{"if"} is similar to the one for
+@code{"begin"}, but where the purpose is to treat @code{"else if"}
+as a single unit, so as to align a sequence of tests rather than indent
+each test further to the right. This function does this only in the
+case where the @code{"if"} is not placed on a separate line, hence the
+@code{smie-rule-bolp} test.
+
+If we know that the @code{"else"} is always aligned with its @code{"if"}
+and is always at the beginning of a line, we can use a more efficient
+rule:
+@example
+((equal token "if")
+ (and (not (smie-rule-bolp)) (smie-rule-prev-p "else")
+ (save-excursion
+ (sample-smie-backward-token) ;Jump before the "else".
+ (cons 'column (current-column)))))
+@end example
+
+The advantage of this formulation is that it reuses the indentation of
+the previous @code{"else"}, rather than going all the way back to the
+first @code{"if"} of the sequence.
+@end itemize
+
@node Desktop Save Mode
@section Desktop Save Mode
@cindex desktop save mode
@@ -3276,5 +3930,7 @@ optionally bound to @code{desktop-save-buffer}.
@end defvar
@ignore
- arch-tag: 4c7bff41-36e6-4da6-9e7f-9b9289e27c8e
+ Local Variables:
+ fill-column: 72
+ End:
@end ignore
diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi
index 1c196c93f2..409ecc7e20 100644
--- a/doc/lispref/nonascii.texi
+++ b/doc/lispref/nonascii.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/characters
@node Non-ASCII Characters, Searching and Matching, Text, Top
@@ -1921,7 +1920,3 @@ strings in the return value are decoded using
@code{locale-coding-system}. @xref{Locales,,, libc, The GNU Libc Manual},
for more information about locales and locale items.
@end defun
-
-@ignore
- arch-tag: be705bf8-941b-4c35-84fc-ad7d20ddb7cb
-@end ignore
diff --git a/doc/lispref/numbers.texi b/doc/lispref/numbers.texi
index e83da348e0..23150c2c93 100644
--- a/doc/lispref/numbers.texi
+++ b/doc/lispref/numbers.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/numbers
@@ -1217,7 +1216,3 @@ On some machines, any integer representable in Lisp may be the result
of @code{random}. On other machines, the result can never be larger
than a certain maximum or less than a certain (negative) minimum.
@end defun
-
-@ignore
- arch-tag: 574e8dd2-d513-4616-9844-c9a27869782e
-@end ignore
diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi
index 93776f3b4f..a20c50b63d 100644
--- a/doc/lispref/objects.texi
+++ b/doc/lispref/objects.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/objects
@@ -2143,7 +2142,3 @@ that for two strings to be equal, they have the same text properties.
@end group
@end example
@end defun
-
-@ignore
- arch-tag: 9711a66e-4749-4265-9e8c-972d55b67096
-@end ignore
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index e99e3fe89d..576f847d98 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/os
@@ -2237,7 +2236,3 @@ be loaded through it.
This variable is ignored if the given @var{library} is statically
linked into Emacs.
@end defvar
-
-@ignore
- arch-tag: 8378814a-30d7-467c-9615-74a80b9988a7
-@end ignore
diff --git a/doc/lispref/package.texi b/doc/lispref/package.texi
index 138f8d934e..373e1e2b5c 100644
--- a/doc/lispref/package.texi
+++ b/doc/lispref/package.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2010-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/package
@node Packaging, Antinews, System Interface, Top
diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi
index 3a6fc6fbc3..a44cd1fbcc 100644
--- a/doc/lispref/positions.texi
+++ b/doc/lispref/positions.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/positions
@node Positions, Markers, Frames, Top
@@ -985,7 +984,3 @@ This is the contents of foo@point{}
@end group
@end example
@end defspec
-
-@ignore
- arch-tag: 56e8ff26-4ffe-4832-a141-7e991a2d0f87
-@end ignore
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index 89f97f99de..8a8de0e7fa 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/processes
@@ -195,10 +194,18 @@ a shell command:
@end example
@end defun
-@cindex quoting and unquoting shell command line
- The following two functions are useful for creating shell commands
-from individual argument strings, and taking shell command lines apart
-into individual arguments.
+@cindex quoting and unquoting command-line arguments
+@cindex minibuffer input, and command-line arguments
+@cindex @code{call-process}, command-line arguments from minibuffer
+@cindex @code{start-process}, command-line arguments from minibuffer
+ The following two functions are useful for combining a list of
+individual command-line argument strings into a single string, and
+taking a string apart into a list of individual command-line
+arguments. These functions are mainly intended to be used for
+converting user input in the minibuffer, a Lisp string, into a list of
+string arguments to be passed to @code{call-process} or
+@code{start-process}, or for the converting such lists of arguments in
+a single Lisp string to be presented in the minibuffer or echo area.
@defun split-string-and-unquote string &optional separators
This function splits @var{string} into substrings at matches for the
@@ -210,7 +217,7 @@ If @var{separators} is omitted or @code{nil}, it defaults to
@code{"\\s-+"}, which is a regular expression that matches one or more
characters with whitespace syntax (@pxref{Syntax Class Table}).
-This function performs two types of quoting: enclosing a whole string
+This function supports two types of quoting: enclosing a whole string
in double quotes @code{"@dots{}"}, and quoting individual characters
with a backslash escape @samp{\}. The latter is also used in Lisp
strings, so this function can handle those as well.
@@ -226,9 +233,8 @@ resulting string.
The strings in @var{list-of-strings} that need quoting are those that
include @var{separator} as their substring. Quoting a string encloses
it in double quotes @code{"@dots{}"}. In the simplest case, if you
-are consing a shell command from the individual command-line
-arguments, every argument that includes embedded blanks will be
-quoted.
+are consing a command from the individual command-line arguments,
+every argument that includes embedded blanks will be quoted.
@end defun
@node Synchronous Processes
@@ -3011,7 +3017,3 @@ Fetching data from this structure:
(bindat-get-field decoded 'item 1 'id)
@result{} "BCDEFG"
@end lisp
-
-@ignore
- arch-tag: ba9da253-e65f-4e7f-b727-08fba0a1df7a
-@end ignore
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index 6cc7d451a6..27b089f75b 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/searching
@@ -386,15 +385,6 @@ matches both @samp{]} and @samp{-}.
To include @samp{^} in a character alternative, put it anywhere but at
the beginning.
-The beginning and end of a range of multibyte characters must be in
-the same character set (@pxref{Character Sets}). Thus,
-@code{"[\x8e0-\x97c]"} is invalid because character 0x8e0 (@samp{a}
-with grave accent) is in the Emacs character set for Latin-1 but the
-character 0x97c (@samp{u} with diaeresis) is in the Emacs character
-set for Latin-2. (We use Lisp string syntax to write that example,
-and a few others in the next few paragraphs, in order to include hex
-escape sequences in them.)
-
If a range starts with a unibyte character @var{c} and ends with a
multibyte character @var{c2}, the range is divided into two parts: one
is @samp{@var{c}..?\377}, the other is @samp{@var{c1}..@var{c2}}, where
@@ -1831,7 +1821,3 @@ values of the variables @code{sentence-end-double-space}
@code{sentence-end-without-period} and
@code{sentence-end-without-space}.
@end defun
-
-@ignore
- arch-tag: c2573ca2-18aa-4839-93b8-924043ef831f
-@end ignore
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index a73c4790b9..825dd976ea 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/sequences
@@ -729,7 +728,3 @@ bv
@noindent
These results make sense because the binary codes for control-_ and
control-W are 11111 and 10111, respectively.
-
-@ignore
- arch-tag: fcf1084a-cd29-4adc-9f16-68586935b386
-@end ignore
diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi
index 3722e7d33d..9802c7485d 100644
--- a/doc/lispref/streams.texi
+++ b/doc/lispref/streams.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 1999, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1994, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/streams
@node Read and Print, Minibuffers, Debugging, Top
@@ -837,7 +836,3 @@ variable. The string should hold a @samp{%}-specification to be used
in the C function @code{sprintf}. For further restrictions on what
you can use, see the variable's documentation string.
@end defvar
-
-@ignore
- arch-tag: 07636b8c-c4e3-4735-9e06-2e864320b434
-@end ignore
diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi
index 94d2765a83..ce080bc221 100644
--- a/doc/lispref/strings.texi
+++ b/doc/lispref/strings.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/strings
@@ -348,9 +347,9 @@ practice:
@result{} ("o" "o" "o")
@end example
-If you need to split a string that is a shell command, where
-individual arguments could be quoted, see @ref{Shell Arguments,
-split-string-and-unquote}.
+If you need to split a string into a list of individual command-line
+arguments suitable for @code{call-process} or @code{start-process},
+see @ref{Shell Arguments, split-string-and-unquote}.
@end defun
@defvar split-string-default-separators
@@ -1142,7 +1141,3 @@ This function makes @var{char} case-invariant, with syntax
This command displays a description of the contents of the current
buffer's case table.
@end deffn
-
-@ignore
- arch-tag: 700b8e95-7aa5-4b52-9eb3-8f2e1ea152b4
-@end ignore
diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi
index ccf90e33cd..60d14d567d 100644
--- a/doc/lispref/symbols.texi
+++ b/doc/lispref/symbols.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/symbols
@node Symbols, Evaluation, Hash Tables, Top
@@ -590,7 +589,3 @@ 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
-
-@ignore
- arch-tag: 8750b7d2-de4c-4923-809a-d35fc39fd8ce
-@end ignore
diff --git a/doc/lispref/syntax.texi b/doc/lispref/syntax.texi
index a608db16f8..55ee2dec4a 100644
--- a/doc/lispref/syntax.texi
+++ b/doc/lispref/syntax.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/syntax
@@ -1192,7 +1191,3 @@ category table. It inserts the descriptions in a buffer, and then
displays that buffer. If @var{buffer-or-name} is non-@code{nil}, it
describes the category table of that buffer instead.
@end deffn
-
-@ignore
- arch-tag: 4d914e96-0283-445c-9233-75d33662908c
-@end ignore
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index 45d358366d..3ff2697dd3 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -1,8 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/text
@node Text, Non-ASCII Characters, Markers, Top
@@ -2203,11 +2201,11 @@ The functions in this section return unpredictable values.
@defvar indent-line-function
This variable's value is the function to be used by @key{TAB} (and
various commands) to indent the current line. The command
-@code{indent-according-to-mode} does no more than call this function.
+@code{indent-according-to-mode} does little more than call this function.
In Lisp mode, the value is the symbol @code{lisp-indent-line}; in C
mode, @code{c-indent-line}; in Fortran mode, @code{fortran-indent-line}.
-The default value is @code{indent-relative}.
+The default value is @code{indent-relative}. @xref{Auto-Indentation}.
@end defvar
@deffn Command indent-according-to-mode
diff --git a/doc/lispref/tindex.pl b/doc/lispref/tindex.pl
index b4e39e3725..5c9b88f57b 100755
--- a/doc/lispref/tindex.pl
+++ b/doc/lispref/tindex.pl
@@ -1,7 +1,6 @@
#! /usr/bin/perl
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-# 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2000-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -123,4 +122,3 @@ foreach $key (keys %removed) {
print " $key\n";
}
-# arch-tag: f8460df6-6bef-4c98-8555-e2c63a88b0fa
diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi
index bf3afcf53e..37fbe7eb2b 100644
--- a/doc/lispref/tips.texi
+++ b/doc/lispref/tips.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1995, 1998, 1999, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1993, 1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/tips
@@ -1115,7 +1114,3 @@ This is the @dfn{footer line}; it appears at the very end of the file.
Its purpose is to enable people to detect truncated versions of the file
from the lack of a footer line.
@end table
-
-@ignore
- arch-tag: 9ea911c2-6b1d-47dd-88b7-0a94e8b27c2e
-@end ignore
diff --git a/doc/lispref/two-volume-cross-refs.txt b/doc/lispref/two-volume-cross-refs.txt
index b427d31f64..99b48d342a 100644
--- a/doc/lispref/two-volume-cross-refs.txt
+++ b/doc/lispref/two-volume-cross-refs.txt
@@ -1,6 +1,5 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
- See end for copying conditions.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
+See end for copying conditions.
Two Volume Cross References
===========================
diff --git a/doc/lispref/two-volume.make b/doc/lispref/two-volume.make
index 66b3bbbb20..8949bfe015 100644
--- a/doc/lispref/two-volume.make
+++ b/doc/lispref/two-volume.make
@@ -1,4 +1,4 @@
-# Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2007-2011 Free Software Foundation, Inc.
# See end for copying conditions.
# although it would be nice to use tex rather than pdftex to avoid
@@ -221,4 +221,3 @@ elisp2-init: vol2.texi
# You should have received a copy of the GNU General Public License
# along with this file. If not, see <http://www.gnu.org/licenses/>.
-# arch-tag: 5c258a2e-d4a9-4d0e-b279-fb3a6faa27eb
diff --git a/doc/lispref/two.el b/doc/lispref/two.el
index 43c680a483..b3a8666bcf 100644
--- a/doc/lispref/two.el
+++ b/doc/lispref/two.el
@@ -1,7 +1,6 @@
;; Auxiliary functions for preparing a two volume manual.
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; --rjc 30mar92
@@ -76,5 +75,4 @@ This is for the *Elisp Ref Manual*."
(defun volume-numbers-toc-markup-I () (volume-numbers-toc-markup "I"))
(defun volume-numbers-toc-markup-II () (volume-numbers-toc-markup "II"))
-;; arch-tag: 848955fe-e9cf-45e7-a2f1-570ef156d6a5
;;; two.el ends here
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index 20fe4dbc9f..5b5f336597 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1,8 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000,
-@c 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-@c Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/variables
@node Variables, Functions, Control Structures, Top
@@ -1929,7 +1927,3 @@ Attempting to assign them any other value will result in an error:
(setq window-min-height 5.0)
@error{} Wrong type argument: integerp, 5.0
@end example
-
-@ignore
- arch-tag: 5ff62c44-2b51-47bb-99d4-fea5aeec5d3e
-@end ignore
diff --git a/doc/lispref/vol1.texi b/doc/lispref/vol1.texi
index 3ac3f58a33..ff0283e109 100644
--- a/doc/lispref/vol1.texi
+++ b/doc/lispref/vol1.texi
@@ -1,8 +1,7 @@
\input texinfo @c -*-texinfo-*-
@c This file is used for printing the GNU Emacs Lisp Reference Manual
@c in two volumes. It is a modified version of elisp.texi.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c %**start of header
@setfilename elisp
@@ -69,7 +68,7 @@ This is edition @value{VERSION} of the GNU Emacs Lisp Reference Manual,@*
corresponding to Emacs version @value{EMACSVER}.
Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
-1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
Foundation, Inc.
@quotation
diff --git a/doc/lispref/vol2.texi b/doc/lispref/vol2.texi
index 59222ad00e..cd10fea7d3 100644
--- a/doc/lispref/vol2.texi
+++ b/doc/lispref/vol2.texi
@@ -1,8 +1,7 @@
\input texinfo @c -*-texinfo-*-
@c This file is used for printing the GNU Emacs Lisp Reference Manual
@c in two volumes. It is a modified version of elisp.texi.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c %**start of header
@setfilename elisp
@@ -69,7 +68,7 @@ This is edition @value{VERSION} of the GNU Emacs Lisp Reference Manual,@*
corresponding to Emacs version @value{EMACSVER}.
Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
-1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
Foundation, Inc.
@quotation
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index 704f3ad332..528930c0ff 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/windows
@@ -2607,7 +2606,3 @@ frame selected.
Lock fontification function, which will be called whenever parts of a
buffer are (re)fontified because a window was scrolled or its size
changed. @xref{Other Font Lock Variables}.
-
-@ignore
- arch-tag: 3f6c36e8-df49-4986-b757-417feed88be3
-@end ignore
diff --git a/doc/man/ChangeLog b/doc/man/ChangeLog
index f2810be7f9..f65c440f55 100644
--- a/doc/man/ChangeLog
+++ b/doc/man/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-02 Jari Aalto <[email protected]> (tiny change)
+
+ * emacsclient.1: Arrange options alphabetically (Bug#7620).
+
2010-10-12 Glenn Morris <[email protected]>
* emacs.1: Small fixes.
@@ -106,7 +110,7 @@
;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2007-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -123,4 +127,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;; arch-tag: 2bd1112e-157f-4884-b0ca-0fb1057972d7
diff --git a/doc/man/ctags.1 b/doc/man/ctags.1
index 9a6505b020..1eab02f214 100644
--- a/doc/man/ctags.1
+++ b/doc/man/ctags.1
@@ -1,3 +1 @@
.so man1/etags.1
-
-.\" arch-tag: 54d4579b-9d66-4ba5-9fda-f01ec83612ad
diff --git a/doc/man/ebrowse.1 b/doc/man/ebrowse.1
index b02b548244..5afe59d6bc 100644
--- a/doc/man/ebrowse.1
+++ b/doc/man/ebrowse.1
@@ -85,7 +85,7 @@ was written by Gerd Moellmann.
Copyright
.if t \(co
.if n (C)
-2008, 2009, 2010 Free Software Foundation, Inc.
+2008, 2009, 2010, 2011 Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of this
document provided the copyright notice and this permission notice are
@@ -101,4 +101,3 @@ document into another language, under the above conditions for
modified versions, except that this permission notice may be stated
in a translation approved by the Free Software Foundation.
.
-.\" arch-tag: b771158b-90cb-43a5-b9af-dbc506311817
diff --git a/doc/man/emacs.1 b/doc/man/emacs.1
index ae2bc82c92..10fcc186fd 100644
--- a/doc/man/emacs.1
+++ b/doc/man/emacs.1
@@ -643,7 +643,7 @@ Copyright
.if t \(co
.if n (C)
1995, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-2009, 2010
+2009, 2010, 2011
Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of this
@@ -660,4 +660,3 @@ document into another language, under the above conditions for
modified versions, except that this permission notice may be stated
in a translation approved by the Free Software Foundation.
.
-.\" arch-tag: 04dfd376-b46e-4924-919a-cecc3b257eaa
diff --git a/doc/man/emacsclient.1 b/doc/man/emacsclient.1
index 16bfb73e16..cae4d76634 100644
--- a/doc/man/emacsclient.1
+++ b/doc/man/emacsclient.1
@@ -49,36 +49,36 @@ If you set the variable `server-window' to a window or a frame, `C-x
The programs follow the usual GNU command line syntax, with long
options starting with two dashes (`-').
.TP
-.B \-nw, \-t, \-\-tty
-open a new Emacs frame on the current terminal
+.B \-a, \-\-alternate-editor=EDITOR
+if the Emacs server is not running, run the specified editor instead.
+This can also be specified via the `ALTERNATE_EDITOR' environment variable.
+If the value of EDITOR is the empty string, then Emacs is started in
+daemon mode and emacsclient will try to connect to it.
.TP
.B -c, \-\-create-frame
create a new frame instead of trying to use the current Emacs frame
.TP
+.B \-d, \-\-display=DISPLAY
+tell the server to display the files on the given display.
+.TP
.B \-e, \-\-eval
do not visit files but instead evaluate the arguments as Emacs
Lisp expressions.
.TP
+.B \-f, \-\-server-file=FILENAME
+use TCP configuration file FILENAME for communication.
+This can also be specified via the `EMACS_SERVER_FILE' environment variable.
+.TP
.B \-n, \-\-no-wait
returns
immediately without waiting for you to "finish" the buffer in Emacs.
.TP
+.B \-nw, \-t, \-\-tty
+open a new Emacs frame on the current terminal
+.TP
.B \-s, \-\-socket-name=FILENAME
use socket named FILENAME for communication.
.TP
-.B \-f, \-\-server-file=FILENAME
-use TCP configuration file FILENAME for communication.
-This can also be specified via the `EMACS_SERVER_FILE' environment variable.
-.TP
-.B \-a, \-\-alternate-editor=EDITOR
-if the Emacs server is not running, run the specified editor instead.
-This can also be specified via the `ALTERNATE_EDITOR' environment variable.
-If the value of EDITOR is the empty string, then Emacs is started in
-daemon mode and emacsclient will try to connect to it.
-.TP
-.B \-d, \-\-display=DISPLAY
-tell the server to display the files on the given display.
-.TP
.B \-V, \-\-version
print version information and exit
.TP
@@ -94,4 +94,3 @@ for the Debian GNU/Linux system (but may be used by others).
.SH COPYING
This manual page is in the public domain.
-.\" arch-tag: 2b35e723-b197-4073-8752-231bc8b3d3f3
diff --git a/doc/man/etags.1 b/doc/man/etags.1
index cddf729559..f6b46add21 100644
--- a/doc/man/etags.1
+++ b/doc/man/etags.1
@@ -268,7 +268,7 @@ Copyright
.if t \(co
.if n (C)
1992, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+2010, 2011 Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of this
document provided the copyright notice and this permission notice are
@@ -284,4 +284,3 @@ document into another language, under the above conditions for
modified versions, except that this permission notice may be stated
in a translation approved by the Free Software Foundation.
-.\" arch-tag: 9534977f-af78-42f0-991d-1df6b6c05573
diff --git a/doc/man/grep-changelog.1 b/doc/man/grep-changelog.1
index 182e23b5ae..45a6abfd57 100644
--- a/doc/man/grep-changelog.1
+++ b/doc/man/grep-changelog.1
@@ -62,7 +62,7 @@ Display basic usage information.
Copyright
.if t \(co
.if n (C)
-2008, 2009, 2010 Free Software Foundation, Inc.
+2008, 2009, 2010, 2011 Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of this
document provided the copyright notice and this permission notice are
@@ -78,4 +78,3 @@ document into another language, under the above conditions for
modified versions, except that this permission notice may be stated
in a translation approved by the Free Software Foundation.
.
-.\" arch-tag: c6df2aea-f3ac-49c7-981b-7b3aae648cda
diff --git a/doc/man/rcs-checkin.1 b/doc/man/rcs-checkin.1
index b1c6062847..545b128b40 100644
--- a/doc/man/rcs-checkin.1
+++ b/doc/man/rcs-checkin.1
@@ -69,7 +69,7 @@ by Eric S. Raymond.
Copyright
.if t \(co
.if n (C)
-2008, 2009, 2010 Free Software Foundation, Inc.
+2008, 2009, 2010, 2011 Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of this
document provided the copyright notice and this permission notice are
@@ -85,4 +85,3 @@ document into another language, under the above conditions for
modified versions, except that this permission notice may be stated
in a translation approved by the Free Software Foundation.
.
-.\" arch-tag: d903862f-cc72-487c-8fd2-5c63677f325d
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 174d301529..de63af5a28 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,132 @@
+2011-01-31 Lars Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Customizing Articles): Document the new way of customizing
+ the date headers(s).
+
+2011-01-30 Lars Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Client-Side IMAP Splitting): Add a complete nnimap fancy
+ splitting example.
+
+2011-01-29 Eli Zaretskii <[email protected]>
+
+ * makefile.w32-in (MAKEINFO): Remove options, leave only program name.
+ (MAKEINFO_OPTS): New variable.
+ (ENVADD, $(infodir)/emacs): Use $(MAKEINFO_OPTS).
+ ($(infodir)/info, $(infodir)/ccmode, $(infodir)/ada-mode)
+ ($(infodir)/pcl-cvs, $(infodir)/eshell, $(infodir)/cl)
+ ($(infodir)/dbus, $(infodir)/dired-x, $(infodir)/ediff)
+ ($(infodir)/flymake, $(infodir)/forms, $(infodir)/gnus)
+ ($(infodir)/message, $(infodir)/emacs-mime, $(infodir)/sieve)
+ ($(infodir)/pgg, $(infodir)/mh-e, $(infodir)/reftex)
+ ($(infodir)/remember, $(infodir)/sasl, $(infodir)/sc)
+ ($(infodir)/vip, $(infodir)/viper, $(infodir)/widget)
+ ($(infodir)/efaq, $(infodir)/autotype, $(infodir)/calc)
+ ($(infodir)/idlwave, $(infodir)/eudc, $(infodir)/ebrowse)
+ ($(infodir)/woman, $(infodir)/speedbar, $(infodir)/tramp)
+ ($(infodir)/ses, $(infodir)/smtpmail, $(infodir)/org)
+ ($(infodir)/url, $(infodir)/newsticker, $(infodir)/nxml-mode)
+ ($(infodir)/rcirc, $(infodir)/erc, $(infodir)/ert)
+ ($(infodir)/epa, $(infodir)/mairix-el, $(infodir)/auth)
+ ($(infodir)/eieio, $(infodir)/ede, $(infodir)/semantic)
+ ($(infodir)/edt): Use $(MAKEINFO_OPTS).
+
+2011-01-26 Lars Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Article Date): Document gnus-article-update-lapsed-header.
+
+2011-01-24 Teodor Zlatanov <[email protected]>
+
+ * message.texi (IDNA): Explain what it is.
+
+2011-01-24 Lars Ingebrigtsen <[email protected]>
+
+ * gnus.texi (The Empty Backend): Document nnnil (bug #7653).
+
+2011-01-23 Werner Lemberg <[email protected]>
+
+ * Makefile.in (MAKEINFO): Now controlled by `configure'.
+ (MAKEINFO_OPTS): New variable. Use it where appropriate.
+ (ENVADD): Updated.
+
+2011-01-18 Glenn Morris <[email protected]>
+
+ * ert.texi: Relicense under GFDL 1.3+, and standardize license notice.
+
+2011-01-14 Eduard Wiebe <[email protected]>
+
+ * nxml-mode.texi (Introduction): Fix file name typos.
+
+2011-01-13 Christian Ohler <[email protected]>
+
+ * ert.texi: New file.
+
+ * Makefile.in:
+ * makefile.w32-in: Add ert.texi.
+
+2011-01-10 Jan Moringen <[email protected]>
+
+ * dbus.texi (Receiving Method Calls): New function
+ dbus-register-service. Rearrange node.
+
+2011-01-07 Paul Eggert <[email protected]>
+
+ * texinfo.tex: Update to version 2010-12-23.17 from gnulib,
+ which in turn is copied from ftp://tug.org/tex/.
+
+2011-01-04 Jan Moringen <[email protected]>
+
+ * dbus.texi (Receiving Method Calls): Describe new optional
+ parameter dont-register-service of dbus-register-{method,property}.
+
+2010-12-17 Daiki Ueno <[email protected]>
+
+ * epa.texi (Encrypting/decrypting *.gpg files): Mention
+ epa-file-select-keys.
+
+2010-12-16 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Archived Messages): Remove outdated text.
+
+2010-12-16 Teodor Zlatanov <[email protected]>
+
+ * gnus.texi (Foreign Groups): Added clarification of foreign groups.
+
+2010-12-15 Andrew Cohen <[email protected]>
+
+ * gnus.texi (The hyrex Engine): Say that this engine is obsolete.
+
+2010-12-14 Andrew Cohen <[email protected]>
+
+ * gnus.texi (The swish++ Engine): Add customizable parameters
+ descriptions.
+ (The swish-e Engine): Ditto.
+
+2010-12-14 Michael Albinus <[email protected]>
+
+ * tramp.texi (Inline methods): Add "ksu" method.
+ (Remote processes): Add example with remote `default-directory'.
+
+2010-12-14 Glenn Morris <[email protected]>
+
+ * faq.texi (Expanding aliases when sending mail):
+ Now build-mail-aliases is interactive.
+
+2010-12-13 Andrew Cohen <[email protected]>
+
+ * gnus.texi: First pass at adding (rough) nnir documentation.
+
+2010-12-13 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Filtering New Groups):
+ Mention gnus-auto-subscribed-categories.
+ (The First Time): Remove, since default-subscribed-newsgroups has been
+ removed.
+
+2010-12-13 Glenn Morris <[email protected]>
+
+ * cl.texi (For Clauses): Small fixes for frames and windows.
+
2010-12-11 Carsten Dominik <[email protected]>
* org.texi (Using capture): Document using prefix arguments for
@@ -7475,9 +7604,7 @@
;; coding: utf-8
;; End:
- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1993-1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in
index deeafa2c1b..f1dbf3bcc0 100644
--- a/doc/misc/Makefile.in
+++ b/doc/misc/Makefile.in
@@ -1,8 +1,6 @@
#### Makefile for documentation other than the Emacs manual.
-# Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-# 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 1994, 1996-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -42,7 +40,8 @@ emacsdir = $(srcdir)/../emacs
# The makeinfo program is part of the Texinfo distribution.
# Use --force so that it generates output even if there are errors.
-MAKEINFO = makeinfo --force -I$(emacsdir)
+MAKEINFO = @MAKEINFO@
+MAKEINFO_OPTS = --force -I$(emacsdir)
# Also add new entries to INFO_FILES in the top-level Makefile.in.
INFO_TARGETS = \
@@ -62,6 +61,7 @@ INFO_TARGETS = \
$(infodir)/emacs-mime \
$(infodir)/epa \
$(infodir)/erc \
+ $(infodir)/ert \
$(infodir)/eshell \
$(infodir)/eudc \
$(infodir)/efaq \
@@ -112,6 +112,7 @@ DVI_TARGETS = \
emacs-mime.dvi \
epa.dvi \
erc.dvi \
+ ert.dvi \
eshell.dvi \
eudc.dvi \
faq.dvi \
@@ -162,6 +163,7 @@ PDF_TARGETS = \
emacs-mime.pdf \
epa.pdf \
erc.pdf \
+ ert.pdf \
eshell.pdf \
eudc.pdf \
faq.pdf \
@@ -198,7 +200,8 @@ PDF_TARGETS = \
TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
-ENVADD = TEXINPUTS="$(srcdir):$(emacsdir):$(TEXINPUTS)" MAKEINFO="$(MAKEINFO) -I$(srcdir)"
+ENVADD = TEXINPUTS="$(srcdir):$(emacsdir):$(TEXINPUTS)" \
+ MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)"
mkinfodir = @cd ${srcdir}; test -d ${infodir} || mkdir ${infodir} || test -d ${infodir}
@@ -219,7 +222,7 @@ pdf: $(PDF_TARGETS)
ada-mode : $(infodir)/ada-mode
$(infodir)/ada-mode: ada-mode.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
ada-mode.dvi: ${srcdir}/ada-mode.texi
$(ENVADD) $(TEXI2DVI) $<
ada-mode.pdf: ${srcdir}/ada-mode.texi
@@ -228,7 +231,7 @@ ada-mode.pdf: ${srcdir}/ada-mode.texi
auth : $(infodir)/auth
$(infodir)/auth: auth.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
auth.dvi: ${srcdir}/auth.texi
$(ENVADD) $(TEXI2DVI) $<
auth.pdf: ${srcdir}/auth.texi
@@ -237,7 +240,7 @@ auth.pdf: ${srcdir}/auth.texi
autotype : $(infodir)/autotype
$(infodir)/autotype: autotype.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
autotype.dvi: ${srcdir}/autotype.texi
$(ENVADD) $(TEXI2DVI) $<
autotype.pdf: ${srcdir}/autotype.texi
@@ -246,7 +249,7 @@ autotype.pdf: ${srcdir}/autotype.texi
calc : $(infodir)/calc
$(infodir)/calc: calc.texi $(emacsdir)/emacsver.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
calc.dvi: ${srcdir}/calc.texi $(emacsdir)/emacsver.texi
$(ENVADD) $(TEXI2DVI) $<
calc.pdf: ${srcdir}/calc.texi $(emacsdir)/emacsver.texi
@@ -255,7 +258,7 @@ calc.pdf: ${srcdir}/calc.texi $(emacsdir)/emacsver.texi
ccmode : $(infodir)/ccmode
$(infodir)/ccmode: cc-mode.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
cc-mode.dvi: ${srcdir}/cc-mode.texi
$(ENVADD) $(TEXI2DVI) $<
cc-mode.pdf: ${srcdir}/cc-mode.texi
@@ -264,7 +267,7 @@ cc-mode.pdf: ${srcdir}/cc-mode.texi
cl : $(infodir)/cl
$(infodir)/cl: cl.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
cl.dvi: ${srcdir}/cl.texi
$(ENVADD) $(TEXI2DVI) $<
cl.pdf: ${srcdir}/cl.texi
@@ -273,7 +276,7 @@ cl.pdf: ${srcdir}/cl.texi
dbus : $(infodir)/dbus
$(infodir)/dbus: dbus.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
dbus.dvi: ${srcdir}/dbus.texi
$(ENVADD) $(TEXI2DVI) $<
dbus.pdf: ${srcdir}/dbus.texi
@@ -282,7 +285,7 @@ dbus.pdf: ${srcdir}/dbus.texi
dired-x : $(infodir)/dired-x
$(infodir)/dired-x: dired-x.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
dired-x.dvi: ${srcdir}/dired-x.texi
$(ENVADD) $(TEXI2DVI) $<
dired-x.pdf: ${srcdir}/dired-x.texi
@@ -291,7 +294,7 @@ dired-x.pdf: ${srcdir}/dired-x.texi
ebrowse : $(infodir)/ebrowse
$(infodir)/ebrowse: ebrowse.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
ebrowse.dvi: ${srcdir}/ebrowse.texi
$(ENVADD) $(TEXI2DVI) $<
ebrowse.pdf: ${srcdir}/ebrowse.texi
@@ -300,7 +303,7 @@ ebrowse.pdf: ${srcdir}/ebrowse.texi
ede : $(infodir)/ede
$(infodir)/ede: ede.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
ede.dvi: ${srcdir}/ede.texi
$(ENVADD) $(TEXI2DVI) $<
ede.pdf: ${srcdir}/ede.texi
@@ -309,7 +312,7 @@ ede.pdf: ${srcdir}/ede.texi
ediff : $(infodir)/ediff
$(infodir)/ediff: ediff.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
ediff.dvi: ${srcdir}/ediff.texi
$(ENVADD) $(TEXI2DVI) $<
ediff.pdf: ${srcdir}/ediff.texi
@@ -318,7 +321,7 @@ ediff.pdf: ${srcdir}/ediff.texi
edt : $(infodir)/edt
$(infodir)/edt: edt.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
edt.dvi: ${srcdir}/edt.texi
$(ENVADD) $(TEXI2DVI) $<
edt.pdf: ${srcdir}/edt.texi
@@ -327,7 +330,7 @@ edt.pdf: ${srcdir}/edt.texi
eieio : $(infodir)/eieio
$(infodir)/eieio: eieio.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
eieio.dvi: ${srcdir}/eieio.texi
$(ENVADD) $(TEXI2DVI) $<
eieio.pdf: ${srcdir}/eieio.texi
@@ -336,7 +339,7 @@ eieio.pdf: ${srcdir}/eieio.texi
emacs-mime : $(infodir)/emacs-mime
$(infodir)/emacs-mime: emacs-mime.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) --enable-encoding $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) --enable-encoding $<
emacs-mime.dvi: ${srcdir}/emacs-mime.texi
$(ENVADD) $(TEXI2DVI) $<
emacs-mime.pdf: ${srcdir}/emacs-mime.texi
@@ -345,7 +348,7 @@ emacs-mime.pdf: ${srcdir}/emacs-mime.texi
epa : $(infodir)/epa
$(infodir)/epa: epa.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
epa.dvi: ${srcdir}/epa.texi
$(ENVADD) $(TEXI2DVI) $<
epa.pdf: ${srcdir}/epa.texi
@@ -354,16 +357,24 @@ epa.pdf: ${srcdir}/epa.texi
erc : $(infodir)/erc
$(infodir)/erc: erc.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
erc.dvi: ${srcdir}/erc.texi
$(ENVADD) $(TEXI2DVI) $<
erc.pdf: ${srcdir}/erc.texi
$(ENVADD) $(TEXI2PDF) $<
+ert : $(infodir)/ert
+$(infodir)/ert: ert.texi $(infodir)
+ cd $(srcdir); $(MAKEINFO) ert.texi
+ert.dvi: ert.texi
+ $(ENVADD) $(TEXI2DVI) ${srcdir}/ert.texi
+ert.pdf: ert.texi
+ $(ENVADD) $(TEXI2PDF) ${srcdir}/ert.texi
+
eshell : $(infodir)/eshell
$(infodir)/eshell: eshell.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
eshell.dvi: ${srcdir}/eshell.texi
$(ENVADD) $(TEXI2DVI) $<
eshell.pdf: ${srcdir}/eshell.texi
@@ -372,7 +383,7 @@ eshell.pdf: ${srcdir}/eshell.texi
eudc : $(infodir)/eudc
$(infodir)/eudc: eudc.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
eudc.dvi: ${srcdir}/eudc.texi
$(ENVADD) $(TEXI2DVI) $<
eudc.pdf: ${srcdir}/eudc.texi
@@ -381,7 +392,7 @@ eudc.pdf: ${srcdir}/eudc.texi
efaq : $(infodir)/efaq
$(infodir)/efaq: faq.texi $(emacsdir)/emacsver.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
faq.dvi: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi
$(ENVADD) $(TEXI2DVI) $<
faq.pdf: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi
@@ -390,7 +401,7 @@ faq.pdf: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi
flymake : $(infodir)/flymake
$(infodir)/flymake: flymake.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
flymake.dvi: ${srcdir}/flymake.texi
$(ENVADD) $(TEXI2DVI) $<
flymake.pdf: ${srcdir}/flymake.texi
@@ -399,7 +410,7 @@ flymake.pdf: ${srcdir}/flymake.texi
forms : $(infodir)/forms
$(infodir)/forms: forms.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
forms.dvi: ${srcdir}/forms.texi
$(ENVADD) $(TEXI2DVI) $<
forms.pdf: ${srcdir}/forms.texi
@@ -409,7 +420,7 @@ forms.pdf: ${srcdir}/forms.texi
gnus : $(infodir)/gnus
$(infodir)/gnus: gnus.texi gnus-faq.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
gnus.dvi: ${srcdir}/gnus.texi gnus-faq.texi
sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmp.texi
$(ENVADD) $(TEXI2DVI) gnustmp.texi
@@ -426,7 +437,7 @@ gnus.pdf: ${srcdir}/gnus.texi gnus-faq.texi
idlwave : $(infodir)/idlwave
$(infodir)/idlwave: idlwave.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) --no-split $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) --no-split $<
idlwave.dvi: ${srcdir}/idlwave.texi
$(ENVADD) $(TEXI2DVI) $<
idlwave.pdf: ${srcdir}/idlwave.texi
@@ -438,7 +449,7 @@ idlwave.pdf: ${srcdir}/idlwave.texi
###info : $(infodir)/info # circular!
$(infodir)/info: info.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) --no-split $< -o $@
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) --no-split $< -o $@
info.dvi: ${srcdir}/info.texi
$(ENVADD) $(TEXI2DVI) $<
info.pdf: ${srcdir}/info.texi
@@ -447,7 +458,7 @@ info.pdf: ${srcdir}/info.texi
mairix-el : $(infodir)/mairix-el
$(infodir)/mairix-el: mairix-el.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
mairix-el.dvi: ${srcdir}/mairix-el.texi
$(ENVADD) $(TEXI2DVI) $<
mairix-el.pdf: ${srcdir}/mairix-el.texi
@@ -456,7 +467,7 @@ mairix-el.pdf: ${srcdir}/mairix-el.texi
message : $(infodir)/message
$(infodir)/message: message.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
message.dvi: ${srcdir}/message.texi
$(ENVADD) $(TEXI2DVI) $<
message.pdf: ${srcdir}/message.texi
@@ -465,7 +476,7 @@ message.pdf: ${srcdir}/message.texi
mh-e : $(infodir)/mh-e
$(infodir)/mh-e: mh-e.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
mh-e.dvi: ${srcdir}/mh-e.texi
$(ENVADD) $(TEXI2DVI) $<
mh-e.pdf: ${srcdir}/mh-e.texi
@@ -474,7 +485,7 @@ mh-e.pdf: ${srcdir}/mh-e.texi
newsticker : $(infodir)/newsticker
$(infodir)/newsticker: newsticker.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
newsticker.dvi: ${srcdir}/newsticker.texi
$(ENVADD) $(TEXI2DVI) $<
newsticker.pdf: ${srcdir}/newsticker.texi
@@ -483,7 +494,7 @@ newsticker.pdf: ${srcdir}/newsticker.texi
nxml-mode : $(infodir)/nxml-mode
$(infodir)/nxml-mode: nxml-mode.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
nxml-mode.dvi: ${srcdir}/nxml-mode.texi
$(ENVADD) $(TEXI2DVI) $<
nxml-mode.pdf: ${srcdir}/nxml-mode.texi
@@ -492,7 +503,7 @@ nxml-mode.pdf: ${srcdir}/nxml-mode.texi
org : $(infodir)/org
$(infodir)/org: org.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
org.dvi: ${srcdir}/org.texi
$(ENVADD) $(TEXI2DVI) $<
org.pdf: ${srcdir}/org.texi
@@ -501,7 +512,7 @@ org.pdf: ${srcdir}/org.texi
pcl-cvs : $(infodir)/pcl-cvs
$(infodir)/pcl-cvs: pcl-cvs.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
pcl-cvs.dvi: ${srcdir}/pcl-cvs.texi
$(ENVADD) $(TEXI2DVI) $<
pcl-cvs.pdf: ${srcdir}/pcl-cvs.texi
@@ -510,7 +521,7 @@ pcl-cvs.pdf: ${srcdir}/pcl-cvs.texi
pgg : $(infodir)/pgg
$(infodir)/pgg: pgg.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
pgg.dvi: ${srcdir}/pgg.texi
$(ENVADD) $(TEXI2DVI) $<
pgg.pdf: ${srcdir}/pgg.texi
@@ -519,7 +530,7 @@ pgg.pdf: ${srcdir}/pgg.texi
rcirc : $(infodir)/rcirc
$(infodir)/rcirc: rcirc.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
rcirc.dvi: ${srcdir}/rcirc.texi
$(ENVADD) $(TEXI2DVI) $<
rcirc.pdf: ${srcdir}/rcirc.texi
@@ -528,7 +539,7 @@ rcirc.pdf: ${srcdir}/rcirc.texi
reftex : $(infodir)/reftex
$(infodir)/reftex: reftex.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
reftex.dvi: ${srcdir}/reftex.texi
$(ENVADD) $(TEXI2DVI) $<
reftex.pdf: ${srcdir}/reftex.texi
@@ -537,7 +548,7 @@ reftex.pdf: ${srcdir}/reftex.texi
remember : $(infodir)/remember
$(infodir)/remember: remember.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
remember.dvi: ${srcdir}/remember.texi
$(ENVADD) $(TEXI2DVI) $<
remember.pdf: ${srcdir}/remember.texi
@@ -546,7 +557,7 @@ remember.pdf: ${srcdir}/remember.texi
sasl : $(infodir)/sasl
$(infodir)/sasl: sasl.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
sasl.dvi: ${srcdir}/sasl.texi
$(ENVADD) $(TEXI2DVI) $<
sasl.pdf: ${srcdir}/sasl.texi
@@ -555,7 +566,7 @@ sasl.pdf: ${srcdir}/sasl.texi
sc : $(infodir)/sc
$(infodir)/sc: sc.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
sc.dvi: ${srcdir}/sc.texi
$(ENVADD) $(TEXI2DVI) $<
sc.pdf: ${srcdir}/sc.texi
@@ -564,7 +575,7 @@ sc.pdf: ${srcdir}/sc.texi
semantic : $(infodir)/semantic
$(infodir)/semantic: semantic.texi sem-user.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
semantic.dvi: ${srcdir}/semantic.texi sem-user.texi
$(ENVADD) $(TEXI2DVI) $<
semantic.pdf: ${srcdir}/semantic.texi sem-user.texi
@@ -573,7 +584,7 @@ semantic.pdf: ${srcdir}/semantic.texi sem-user.texi
ses : $(infodir)/ses
$(infodir)/ses: ses.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
ses.dvi: ${srcdir}/ses.texi
$(ENVADD) $(TEXI2DVI) $<
ses.pdf: ${srcdir}/ses.texi
@@ -582,7 +593,7 @@ ses.pdf: ${srcdir}/ses.texi
sieve : $(infodir)/sieve
$(infodir)/sieve: sieve.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
sieve.dvi: ${srcdir}/sieve.texi
$(ENVADD) $(TEXI2DVI) $<
sieve.pdf: ${srcdir}/sieve.texi
@@ -591,7 +602,7 @@ sieve.pdf: ${srcdir}/sieve.texi
smtpmail : $(infodir)/smtpmail
$(infodir)/smtpmail: smtpmail.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
smtpmail.dvi: ${srcdir}/smtpmail.texi
$(ENVADD) $(TEXI2DVI) $<
smtpmail.pdf: ${srcdir}/smtpmail.texi
@@ -600,7 +611,7 @@ smtpmail.pdf: ${srcdir}/smtpmail.texi
speedbar : $(infodir)/speedbar
$(infodir)/speedbar: speedbar.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
speedbar.dvi: ${srcdir}/speedbar.texi
$(ENVADD) $(TEXI2DVI) $<
speedbar.pdf: ${srcdir}/speedbar.texi
@@ -609,7 +620,7 @@ speedbar.pdf: ${srcdir}/speedbar.texi
tramp : $(infodir)/tramp
$(infodir)/tramp: tramp.texi trampver.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) -D emacs $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) -D emacs $<
tramp.dvi: ${srcdir}/tramp.texi trampver.texi
$(ENVADD) $(TEXI2DVI) $<
tramp.pdf: ${srcdir}/tramp.texi trampver.texi
@@ -618,7 +629,7 @@ tramp.pdf: ${srcdir}/tramp.texi trampver.texi
url : $(infodir)/url
$(infodir)/url: url.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
url.dvi: ${srcdir}/url.texi
$(ENVADD) $(TEXI2DVI) $<
url.pdf: ${srcdir}/url.texi
@@ -627,7 +638,7 @@ url.pdf: ${srcdir}/url.texi
vip : $(infodir)/vip
$(infodir)/vip: vip.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
vip.dvi: ${srcdir}/vip.texi
$(ENVADD) $(TEXI2DVI) $<
vip.pdf: ${srcdir}/vip.texi
@@ -636,7 +647,7 @@ vip.pdf: ${srcdir}/vip.texi
viper : $(infodir)/viper
$(infodir)/viper: viper.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
viper.dvi: ${srcdir}/viper.texi
$(ENVADD) $(TEXI2DVI) $<
viper.pdf: ${srcdir}/viper.texi
@@ -645,7 +656,7 @@ viper.pdf: ${srcdir}/viper.texi
widget : $(infodir)/widget
$(infodir)/widget: widget.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
widget.dvi: ${srcdir}/widget.texi
$(ENVADD) $(TEXI2DVI) $<
widget.pdf: ${srcdir}/widget.texi
@@ -654,7 +665,7 @@ widget.pdf: ${srcdir}/widget.texi
woman : $(infodir)/woman
$(infodir)/woman: woman.texi
$(mkinfodir)
- cd $(srcdir); $(MAKEINFO) $<
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
woman.dvi: ${srcdir}/woman.texi
$(ENVADD) $(TEXI2DVI) $<
woman.pdf: ${srcdir}/woman.texi
diff --git a/doc/misc/ada-mode.texi b/doc/misc/ada-mode.texi
index b746824df6..80949aefb3 100644
--- a/doc/misc/ada-mode.texi
+++ b/doc/misc/ada-mode.texi
@@ -3,8 +3,7 @@
@settitle Ada Mode
@copying
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1999-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1524,7 +1523,3 @@ autofill the current comment.
@printindex fn
@bye
-
-@ignore
- arch-tag: 68cf0d8a-55cc-4190-a28d-4984fa56ed1e
-@end ignore
diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi
index 2ab8fc1881..f19d6e28dd 100644
--- a/doc/misc/auth.texi
+++ b/doc/misc/auth.texi
@@ -7,7 +7,7 @@
@copying
This file describes the Emacs auth-source library.
-Copyright @copyright{} 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 2008-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/autotype.texi b/doc/misc/autotype.texi
index 3f7ad21f1d..bdf9ae7ab1 100644
--- a/doc/misc/autotype.texi
+++ b/doc/misc/autotype.texi
@@ -10,8 +10,7 @@
@c @cindex autotypist
@copying
-Copyright @copyright{} 1994, 1995, 1999, 2001, 2002, 2003, 2004, 2005,
-2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1994-1995, 1999, 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -664,7 +663,3 @@ of the expansion possibilities.
@printindex vr
@bye
-
-@ignore
- arch-tag: 54001b27-5ef8-4a9d-a199-905d650fafba
-@end ignore
diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi
index 58de84b819..755956a299 100644
--- a/doc/misc/calc.texi
+++ b/doc/misc/calc.texi
@@ -94,8 +94,7 @@ This file documents Calc, the GNU Emacs calculator, included with
GNU Emacs @value{EMACSVER}.
@end ifnotinfo
-Copyright @copyright{} 1990, 1991, 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1990-1991, 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -36596,4 +36595,3 @@ the corresponding full Lisp name is derived by adding a prefix of
@printindex fn
@bye
-
diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi
index da8e708290..d4a870346c 100644
--- a/doc/misc/cc-mode.texi
+++ b/doc/misc/cc-mode.texi
@@ -159,9 +159,7 @@ CC Mode
@copying
This manual is for CC Mode in Emacs.
-Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-Free Software Foundation, Inc.
+Copyright @copyright{} 1995-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -7014,4 +7012,3 @@ Since most @ccmode{} variables are prepended with the string
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@bye
-
diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi
index 79038792a3..13fe9b570e 100644
--- a/doc/misc/cl.texi
+++ b/doc/misc/cl.texi
@@ -5,8 +5,7 @@
@copying
This file documents the GNU Emacs Common Lisp emulation package.
-Copyright @copyright{} 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1993, 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -2494,15 +2493,18 @@ term restricts the search to just the specified property. The
@code{of} term may specify either a buffer or a string.
@item for @var{var} being the frames
-This clause iterates over all frames, i.e., X window system windows
-open on Emacs files. The
-clause @code{screens} is a synonym for @code{frames}. The frames
-are visited in @code{next-frame} order starting from
-@code{selected-frame}.
+This clause iterates over all Emacs frames. The clause @code{screens} is
+a synonym for @code{frames}. The frames are visited in
+@code{next-frame} order starting from @code{selected-frame}.
@item for @var{var} being the windows [of @var{frame}]
This clause iterates over the windows (in the Emacs sense) of
-the current frame, or of the specified @var{frame}.
+the current frame, or of the specified @var{frame}. It visits windows
+in @code{next-window} order starting from @code{selected-window}
+(or @code{frame-selected-window} if you specify @var{frame}).
+This clause treats the minibuffer window in the same way as
+@code{next-window} does. For greater flexibility, consider using
+@code{walk-windows} instead.
@item for @var{var} being the buffers
This clause iterates over all buffers in Emacs. It is equivalent
@@ -5322,6 +5324,3 @@ recursion.
@bye
-@ignore
- arch-tag: b61e7200-3bfa-4a70-a9d3-095e152696f8
-@end ignore
diff --git a/doc/misc/dbus.texi b/doc/misc/dbus.texi
index 6f6a897e6d..e50f48dcec 100644
--- a/doc/misc/dbus.texi
+++ b/doc/misc/dbus.texi
@@ -9,7 +9,7 @@
@syncodeindex fn cp
@copying
-Copyright @copyright{} 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 2007-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1243,9 +1243,73 @@ message has been arrived, and @var{handler} is called. Example:
@cindex method calls, returning
@cindex returning method calls
-Emacs can also offer own methods, which can be called by other
-applications. These methods could be an implementation of an
-interface of a well known service, like @samp{org.freedesktop.TextEditor}.
+In order to register methods on the D-Bus, Emacs has to request a well
+known name on the D-Bus under which it will be available for other
+clients. Names on the D-Bus can be registered and unregistered using
+the following functions:
+
+@defun dbus-register-service bus service &rest flags
+Register the known name @var{service} on D-Bus @var{bus}.
+
+@var{bus} is either the symbol @code{:system} or the symbol
+@code{:session}.
+
+@var{service} is the service name to be registered on the D-Bus. It
+must be a known name.
+
+@var{flags} is a subset of the following keywords:
+
+@itemize
+@item @code{:allow-replacement}: Allow another service to become the primary
+owner if requested.
+
+@item @code{:replace-existing}: Request to replace the current primary owner.
+
+@item @code{:do-not-queue}: If we can not become the primary owner do not
+place us in the queue.
+@end itemize
+
+One of the following keywords is returned:
+
+@itemize
+
+@item @code{:primary-owner}: We have become the primary owner of the name
+@var{service}.
+
+@item @code{:in-queue}: We could not become the primary owner and
+have been placed in the queue.
+
+@item @code{:exists}: We already are in the queue.
+
+@item @code{:already-owner}: We already are the primary
+owner.
+@end itemize
+@end defun
+
+@defun dbus-unregister-service bus service
+Unregister all objects from D-Bus @var{bus}, registered by Emacs for
+@var{service}.
+
+@var{bus} is either the symbol @code{:system} or the symbol
+@code{:session}.
+
+@var{service} is the D-Bus service name of the D-Bus. It must be a
+known name. Emacs releases its association to @var{service} from
+D-Bus.
+
+One of the following keywords is returned:
+
+@itemize
+@item @code{:released}: We successfully released the name @var{service}.
+@item @code{:non-existent}: The name @var{service} does not exist on the bus.
+@item @code{:not-owner}: We are not an owner of the name @var{service}.
+@end itemize
+@end defun
+
+When a name has been chosen, Emacs can offer own methods, which can be
+called by other applications. These methods could be an
+implementation of an interface of a well known service, like
+@samp{org.freedesktop.TextEditor}.
It could be also an implementation of an own interface. In this case,
the service name must be @samp{org.gnu.Emacs}. The object path shall
@@ -1264,7 +1328,7 @@ paths, used by offered methods or signals, shall start with this
string.
@end deffn
-@defun dbus-register-method bus service path interface method handler
+@defun dbus-register-method bus service path interface method handler dont-register-service
With this function, an application registers @var{method} on the D-Bus
@var{bus}.
@@ -1272,10 +1336,11 @@ With this function, an application registers @var{method} on the D-Bus
@code{:session}.
@var{service} is the D-Bus service name of the D-Bus object
-@var{method} is registered for. It must be a known name.
+@var{method} is registered for. It must be a known name (See
+discussion of @var{dont-register-service} below).
-@var{path} is the D-Bus object path @var{service} is
-registered.
+@var{path} is the D-Bus object path @var{service} is registered (See
+discussion of @var{dont-register-service} below).
@var{interface} is the interface offered by @var{service}. It must
provide @var{method}.
@@ -1294,6 +1359,13 @@ returning a list containing the object.
In case @var{handler} shall return a reply message with an empty
argument list, @var{handler} must return the symbol @code{:ignore}.
+When @var{dont-register-service} is non-@code{nil}, the known name
+@var{service} is not registered. This means that other D-Bus clients
+have no way of noticing the newly registered method. When interfaces
+are constructed incrementally by adding single methods or properties
+at a time, @var{dont-register-service} can be used to prevent other
+clients from discovering the still incomplete interface.
+
The default D-Bus timeout when waiting for a message reply is 25
seconds. This value could be even smaller, depending on the calling
client. Therefore, @var{handler} shall not last longer than
@@ -1368,7 +1440,7 @@ The test runs then
@end example
@end defun
-@defun dbus-register-property bus service path interface property access value &optional emits-signal
+@defun dbus-register-property bus service path interface property access value &optional emits-signal dont-register-service
With this function, an application declares a @var{property} on the D-Bus
@var{bus}.
@@ -1378,8 +1450,8 @@ With this function, an application declares a @var{property} on the D-Bus
@var{service} is the D-Bus service name of the D-Bus. It must be a
known name.
-@var{path} is the D-Bus object path @var{service} is
-registered.
+@var{path} is the D-Bus object path @var{service} is registered (See
+discussion of @var{dont-register-service} below).
@var{interface} is the name of the interface used at @var{path},
@var{property} is the name of the property of @var{interface}.
@@ -1401,6 +1473,13 @@ The interface @samp{org.freedesktop.DBus.Properties} is added to
@samp{PropertiesChanged} is sent when the property is changed by
@code{dbus-set-property}.
+When @var{dont-register-service} is non-@code{nil}, the known name
+@var{service} is not registered. This means that other D-Bus clients
+have no way of noticing the newly registered method. When interfaces
+are constructed incrementally by adding single methods or properties
+at a time, @var{dont-register-service} can be used to prevent other
+clients from discovering the still incomplete interface.
+
@noindent Example:
@lisp
@@ -1475,18 +1554,6 @@ registered for the respective service, Emacs releases its association
to the service from D-Bus.
@end defun
-@defun dbus-unregister-service bus service
-Unregister all objects from D-Bus @var{bus}, registered by Emacs for
-@var{service}.
-
-@var{bus} is either the symbol @code{:system} or the symbol
-@code{:session}.
-
-@var{service} is the D-Bus service name of the D-Bus. It must be a
-known name. Emacs releases its association to @var{service} from
-D-Bus.
-@end defun
-
@node Signals
@chapter Sending and receiving signals.
@@ -1772,7 +1839,3 @@ whether a given D-Bus error is related to them.
@include doclicense.texi
@bye
-
-@ignore
- arch-tag: 2eeec19d-0caf-44e0-a193-329d7f9951d8
-@end ignore
diff --git a/doc/misc/dired-x.texi b/doc/misc/dired-x.texi
index 0d05833d0a..21f91c9125 100644
--- a/doc/misc/dired-x.texi
+++ b/doc/misc/dired-x.texi
@@ -18,8 +18,7 @@
@comment %**end of header (This is for running Texinfo on a region.)
@copying
-Copyright @copyright{} 1994, 1995, 1999, 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1994-1995, 1999, 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1258,7 +1257,3 @@ Lawrence R. Dodd
@printindex vr
@bye
-
-@ignore
- arch-tag: 201727aa-9318-4c74-a0d7-4f51c550c4de
-@end ignore
diff --git a/doc/misc/ebrowse.texi b/doc/misc/ebrowse.texi
index 86cae35a6f..66a5e38443 100644
--- a/doc/misc/ebrowse.texi
+++ b/doc/misc/ebrowse.texi
@@ -10,8 +10,7 @@
@copying
This file documents Ebrowse, a C++ class browser for GNU Emacs.
-Copyright @copyright{} 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 2000-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1451,7 +1450,3 @@ in on with the command @kbd{C-c C-m m}.
@printindex cp
@bye
-
-@ignore
- arch-tag: 52fe78ac-a1c4-48e7-815e-0a31acfad4bf
-@end ignore
diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi
index 7e1d6c7907..86228a24d0 100644
--- a/doc/misc/ede.texi
+++ b/doc/misc/ede.texi
@@ -5,8 +5,7 @@
@copying
This file describes EDE, the Emacs Development Environment.
-Copyright @copyright{} 1998, 1999, 2000, 2001, 2004, 2005, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1998-2001, 2004-2005, 2008-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -3791,7 +3790,3 @@ For example, C code uses .o on unix, and Emacs Lisp uses .elc.
@end table
@bye
-
-@ignore
- arch-tag: c9bfdc6e-e6e9-4e87-97f7-d8348342fbf4
-@end ignore
diff --git a/doc/misc/ediff.texi b/doc/misc/ediff.texi
index c2897e185b..2a55541bbf 100644
--- a/doc/misc/ediff.texi
+++ b/doc/misc/ediff.texi
@@ -25,8 +25,7 @@
This file documents Ediff, a comprehensive visual interface to Unix diff
and patch utilities.
-Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1995-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/edt.texi b/doc/misc/edt.texi
index f3d0eacc0f..e3117d6569 100644
--- a/doc/misc/edt.texi
+++ b/doc/misc/edt.texi
@@ -5,8 +5,7 @@
@copying
This file documents the EDT emulation package for Emacs.
-Copyright @copyright{} 1986, 1992, 1994, 1995, 1999, 2000, 2001, 2002,
-2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+Copyright @copyright{} 1986, 1992, 1994-1995, 1999-2011
Free Software Foundation, Inc.
@quotation
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi
index 169e52c1bd..1a22a15afb 100644
--- a/doc/misc/eieio.texi
+++ b/doc/misc/eieio.texi
@@ -11,7 +11,7 @@
@copying
This manual documents EIEIO, an object framework for Emacs Lisp.
-Copyright @copyright{} 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 2007-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1906,7 +1906,3 @@ Allow method overloading of method-like functions in Emacs.
@contents
@bye
-
-@ignore
- arch-tag: 7225b7c7-2462-4563-99e7-836a20172178
-@end ignore
diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi
index 9511f6d10c..62a43aa11b 100644
--- a/doc/misc/emacs-mime.texi
+++ b/doc/misc/emacs-mime.texi
@@ -9,8 +9,7 @@
@copying
This file documents the Emacs MIME interface functionality.
-Copyright @copyright{} 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1998-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/epa.texi b/doc/misc/epa.texi
index 7afe9c0c9b..ae194356c3 100644
--- a/doc/misc/epa.texi
+++ b/doc/misc/epa.texi
@@ -9,7 +9,7 @@
@copying
This file describes EasyPG Assistant @value{VERSION}.
-Copyright @copyright{} 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 2007-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -353,16 +353,21 @@ key in the recipient list, use @samp{encrypt-to} option in
@node Encrypting/decrypting *.gpg files
@section Encrypting/decrypting *.gpg files
-By default, every file whose extension is @samp{.gpg} will be treated
-as encrypted. That is, when you attempt to open such a file which
-already exists, the decrypted text is inserted in the buffer rather
-than encrypted one. On the other hand, when you attempt to save the
-buffer to a file whose extension is @samp{.gpg}, encrypted data is
-written.
+By default, every file whose name ends with @samp{.gpg} will be
+treated as encrypted. That is, when you open such a file, the
+decrypted text is inserted in the buffer rather than encrypted one.
+Similarly, when you save the buffer to a @samp{foo.gpg} file,
+encrypted data is written.
-If you want to temporarily disable this behavior, use @kbd{M-x
-epa-file-disable}, and then to enable this behavior use @kbd{M-x
-epa-file-enable}.
+The file name pattern for encrypted files can be controlled by
+@var{epa-file-name-regexp}.
+
+@defvar epa-file-name-regexp
+Regexp which matches filenames treated as encrypted.
+@end defvar
+
+You can disable this behavior with @kbd{M-x epa-file-disable}, and
+then get it back with @kbd{M-x epa-file-enable}.
@deffn Command epa-file-disable
Disable automatic encryption/decryption of *.gpg files.
@@ -373,23 +378,48 @@ Enable automatic encryption/decryption of *.gpg files.
@end deffn
@noindent
-@code{epa-file} will let you select recipients. If you want to
-suppress this question, it might be a good idea to put the following
-line on the first line of the text being encrypted.
+By default, @code{epa-file} will try to use symmetric encryption, aka
+password-based encryption. If you want to use public key encryption
+instead, do @kbd{M-x epa-file-select-keys}, which will pops up the key
+selection dialog.
+
+@deffn Command epa-file-select-keys
+Select recipient keys to encrypt the currently visiting file with
+public key encryption.
+@end deffn
+
+You can also change the default behavior with the variable
+@var{epa-file-select-keys}.
+
+@defvar epa-file-select-keys
+Control whether or not to pop up the key selection dialog.
+@end defvar
+
+For frequently visited files, it might be a good idea to tell Emacs
+which encryption method should be used through @xref{File Variables, ,
+, emacs, the Emacs Manual}. Use the @code{epa-file-encrypt-to} local
+variable for this.
@vindex epa-file-encrypt-to
+For example, if you want an Elisp file should be encrypted with a
+public key associated with an email address @samp{ueno@@unixuser.org},
+add the following line to the beginning of the file.
+
@cartouche
@lisp
;; -*- epa-file-encrypt-to: ("ueno@@unixuser.org") -*-
@end lisp
@end cartouche
-The file name extension of encrypted files can be controlled by
-@var{epa-file-name-regexp}.
+Instead, if you want the file always (regardless of the value of the
+@code{epa-file-select-keys} variable) encrypted with symmetric
+encryption, change the line as follows.
-@defvar epa-file-name-regexp
-Regexp which matches filenames treated as encrypted.
-@end defvar
+@cartouche
+@lisp
+;; -*- epa-file-encrypt-to: nil -*-
+@end lisp
+@end cartouche
Other variables which control the automatic encryption/decryption
behavior are below.
@@ -466,7 +496,3 @@ buffer name is a whitespace.
@bye
@c End:
-
-@ignore
- arch-tag: 7404e246-7d4c-4db4-9332-c1293a455a4f
-@end ignore
diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi
index 1c547bf80e..1ce6e949da 100644
--- a/doc/misc/erc.texi
+++ b/doc/misc/erc.texi
@@ -8,7 +8,7 @@
@copying
This manual is for ERC version 5.3.
-Copyright @copyright{} 2005, 2006, 2007, 2008, 2009, 2010
+Copyright @copyright{} 2005-2011
Free Software Foundation, Inc.
@quotation
@@ -1061,7 +1061,3 @@ We switched to using git for our version control system.
@printindex cp
@bye
-
-@ignore
- arch-tag: cf9cfaff-fc12-4297-ad15-ec2493002b1e
-@end ignore
diff --git a/doc/misc/ert.texi b/doc/misc/ert.texi
new file mode 100644
index 0000000000..978cac6992
--- /dev/null
+++ b/doc/misc/ert.texi
@@ -0,0 +1,841 @@
+\input texinfo
+@c %**start of header
+@setfilename ../../info/ert
+@settitle Emacs Lisp Regression Testing
+@c %**end of header
+
+@dircategory Emacs
+@direntry
+* ERT: (ert). Emacs Lisp Regression Testing.
+@end direntry
+
+@copying
+Copyright @copyright{} 2008, 2010-2011 Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
+and with the Back-Cover Texts as in (a) below. A copy of the license
+is included in the section entitled ``GNU Free Documentation License''
+in the Emacs manual.
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
+modify this GNU manual. Buying copies from the FSF supports it in
+developing GNU and promoting software freedom.''
+
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
+@end quotation
+@end copying
+
+@node Top, Introduction, (dir), (dir)
+@top ERT: Emacs Lisp Regression Testing
+
+ERT is a tool for automated testing in Emacs Lisp. Its main features
+are facilities for defining tests, running them and reporting the
+results, and for debugging test failures interactively.
+
+ERT is similar to tools for other environments such as JUnit, but has
+unique features that take advantage of the dynamic and interactive
+nature of Emacs. Despite its name, it works well both for test-driven
+development (see
+@url{http://en.wikipedia.org/wiki/Test-driven_development}) and for
+traditional software development methods.
+
+@menu
+* Introduction:: A simple example of an ERT test.
+* How to Run Tests:: Run tests in your Emacs or from the command line.
+* How to Write Tests:: How to add tests to your Emacs Lisp code.
+* How to Debug Tests:: What to do if a test fails.
+* Extending ERT:: ERT is extensible in several ways.
+* Other Testing Concepts:: Features not in ERT.
+
+@detailmenu
+ --- The Detailed Node Listing ---
+
+How to Run Tests
+
+* Running Tests Interactively:: Run tests in your current Emacs.
+* Running Tests in Batch Mode:: Run tests in emacs -Q.
+* Test Selectors:: Choose which tests to run.
+
+How to Write Tests
+
+* The @code{should} Macro:: A powerful way to express assertions.
+* Expected Failures:: Tests for known bugs.
+* Tests and Their Environment:: Don't depend on customizations; no side effects.
+* Useful Techniques:: Some examples.
+
+How to Debug Tests
+
+* Understanding Explanations:: How ERT gives details on why an assertion failed.
+* Interactive Debugging:: Tools available in the ERT results buffer.
+
+Extending ERT
+
+* Defining Explanation Functions:: Teach ERT about more predicates.
+* Low-Level Functions for Working with Tests:: Use ERT's data for your purposes.
+
+Other Testing Concepts
+
+* Mocks and Stubs:: Stubbing out code that is irrelevant to the test.
+* Fixtures and Test Suites:: How ERT differs from tools for other languages.
+
+@end detailmenu
+@end menu
+
+@node Introduction, How to Run Tests, Top, Top
+@chapter Introduction
+
+ERT allows you to define @emph{tests} in addition to functions,
+macros, variables, and the other usual Lisp constructs. Tests are
+simply Lisp code --- code that invokes other code and checks whether
+it behaves as expected.
+
+ERT keeps track of the tests that are defined and provides convenient
+commands to run them to verify whether the definitions that are
+currently loaded in Emacs pass the tests.
+
+Some Lisp files have comments like the following (adapted from the
+package @code{pp.el}):
+
+@lisp
+;; (pp-to-string '(quote quote)) ; expected: "'quote"
+;; (pp-to-string '((quote a) (quote b))) ; expected: "('a 'b)\n"
+;; (pp-to-string '('a 'b)) ; same as above
+@end lisp
+
+The code contained in these comments can be evaluated from time to
+time to compare the output with the expected output. ERT formalizes
+this and introduces a common convention, which simplifies Emacs
+development, since programmers no longer have to manually find and
+evaluate such comments.
+
+An ERT test definition equivalent to the above comments is this:
+
+@lisp
+(ert-deftest pp-test-quote ()
+ "Tests the rendering of `quote' symbols in `pp-to-string'."
+ (should (equal (pp-to-string '(quote quote)) "'quote"))
+ (should (equal (pp-to-string '((quote a) (quote b))) "('a 'b)\n"))
+ (should (equal (pp-to-string '('a 'b)) "('a 'b)\n")))
+@end lisp
+
+If you know @code{defun}, the syntax of @code{ert-deftest} should look
+familiar: This example defines a test named @code{pp-test-quote} that
+will pass if the three calls to @code{equal} all return true
+(non-nil).
+
+@code{should} is a macro with the same meaning as @code{assert} but
+better error reporting. @xref{The @code{should} Macro}.
+
+Each test should have a name that describes what functionality the
+test tests. Test names can be chosen arbitrarily --- they are in a
+namespace separate from functions and variables --- but should follow
+the usual Emacs Lisp convention of having a prefix that indicates
+which package they belong to. Test names are displayed by ERT when
+reporting failures and can be used when selecting which tests to run.
+
+The empty parentheses @code{()} in the first line don't currently have
+any meaning and are reserved for future extension. They also make
+@code{ert-deftest}'s syntax more similar to @code{defun}.
+
+The docstring describes what feature this test tests. When running
+tests interactively, the first line of the docstring is displayed for
+tests that fail, so it is good if the first line makes sense on its
+own.
+
+The body of a test can be arbitrary Lisp code. It should have as few
+side effects as possible; each test should be written to clean up
+after itself, leaving Emacs in the same state as it was before the
+test. Tests should clean up even if they fail. @xref{Tests and Their
+Environment}.
+
+
+@node How to Run Tests, How to Write Tests, Introduction, Top
+@chapter How to Run Tests
+
+You can run tests either in the Emacs you are working in, or on the
+command line in a separate Emacs process in batch mode (i.e., with no
+user interface). The former mode is convenient during interactive
+development, the latter is useful to make sure that tests pass
+independently of your customizations, allows tests to be invoked from
+makefiles and scripts to be written that run tests in several
+different Emacs versions.
+
+@menu
+* Running Tests Interactively:: Run tests in your current Emacs.
+* Running Tests in Batch Mode:: Run tests in emacs -Q.
+* Test Selectors:: Choose which tests to run.
+@end menu
+
+
+@node Running Tests Interactively, Running Tests in Batch Mode, How to Run Tests, How to Run Tests
+@section Running Tests Interactively
+
+You can run the tests that are currently defined in your Emacs with
+the command @kbd{@kbd{M-x} ert @kbd{RET} t @kbd{RET}}. ERT will pop
+up a new buffer, the ERT results buffer, showing the results of the
+tests run. It looks like this:
+
+@example
+Selector: t
+Passed: 31
+Failed: 2 (2 unexpected)
+Total: 33/33
+
+Started at: 2008-09-11 08:39:25-0700
+Finished.
+Finished at: 2008-09-11 08:39:27-0700
+
+FF...............................
+
+F addition-test
+ (ert-test-failed
+ ((should
+ (=
+ (+ 1 2)
+ 4))
+ :form
+ (= 3 4)
+ :value nil))
+
+F list-test
+ (ert-test-failed
+ ((should
+ (equal
+ (list 'a 'b 'c)
+ '(a b d)))
+ :form
+ (equal
+ (a b c)
+ (a b d))
+ :value nil :explanation
+ (list-elt 2
+ (different-atoms c d))))
+@end example
+
+At the top, there is a summary of the results: We ran all tests in the
+current Emacs (@code{Selector: t}), 31 of them passed, and 2 failed
+unexpectedly. @xref{Expected Failures}, for an explanation of the
+term @emph{unexpected} in this context.
+
+The line of dots and @code{F}s is a progress bar where each character
+represents one test; it fills while the tests are running. A dot
+means that the test passed, an @code{F} means that it failed. Below
+the progress bar, ERT shows details about each test that had an
+unexpected result. In the example above, there are two failures, both
+due to failed @code{should} forms. @xref{Understanding Explanations},
+for more details.
+
+In the ERT results buffer, @kbd{TAB} and @kbd{S-TAB} cycle between
+buttons. Each name of a function or macro in this buffer is a button;
+moving point to it and typing @kbd{RET} jumps to its definition.
+
+Pressing @kbd{r} re-runs the test near point on its own. Pressing
+@kbd{d} re-runs it with the debugger enabled. @kbd{.} jumps to the
+definition of the test near point (@kbd{RET} has the same effect if
+point is on the name of the test). On a failed test, @kbd{b} shows
+the backtrace of the failure.
+
+@kbd{l} shows the list of @code{should} forms executed in the test.
+If any messages were generated (with the Lisp function @code{message})
+in a test or any of the code that it invoked, @kbd{m} will show them.
+
+By default, long expressions in the failure details are abbreviated
+using @code{print-length} and @code{print-level}. Pressing @kbd{L}
+while point is on a test failure will increase the limits to show more
+of the expression.
+
+
+@node Running Tests in Batch Mode, Test Selectors, Running Tests Interactively, How to Run Tests
+@section Running Tests in Batch Mode
+
+ERT supports automated invocations from the command line or from
+scripts or makefiles. There are two functions for this purpose,
+@code{ert-run-tests-batch} and @code{ert-run-tests-batch-and-exit}.
+They can be used like this:
+
+@example
+emacs -batch -L /path/to/ert -l ert.el -l my-tests.el -f ert-run-tests-batch-and-exit
+@end example
+
+This command will start up Emacs in batch mode, load ERT, load
+@code{my-tests.el}, and run all tests defined in it. It will exit
+with a zero exit status if all tests passed, or nonzero if any tests
+failed or if anything else went wrong. It will also print progress
+messages and error diagnostics to standard output.
+
+You may need additional @code{-L} flags to ensure that
+@code{my-tests.el} and all the files that it requires are on your
+@code{load-path}.
+
+
+@node Test Selectors, , Running Tests in Batch Mode, How to Run Tests
+@section Test Selectors
+
+Functions like @code{ert} accept a @emph{test selector}, a Lisp
+expression specifying a set of tests. Test selector syntax is similar
+to Common Lisp's type specifier syntax:
+
+@itemize
+@item @code{nil} selects no tests.
+@item @code{t} selects all tests.
+@item @code{:new} selects all tests that have not been run yet.
+@item @code{:failed} and @code{:passed} select tests according to their most recent result.
+@item @code{:expected}, @code{:unexpected} select tests according to their most recent result.
+@item A string selects all tests that have a name that matches the string, a regexp.
+@item A test selects that test.
+@item A symbol selects the test that the symbol names.
+@item @code{(member TESTS...)} selects TESTS, a list of tests or symbols naming tests.
+@item @code{(eql TEST)} selects TEST, a test or a symbol naming a test.
+@item @code{(and SELECTORS...)} selects the tests that match all SELECTORS.
+@item @code{(or SELECTORS...)} selects the tests that match any SELECTOR.
+@item @code{(not SELECTOR)} selects all tests that do not match SELECTOR.
+@item @code{(tag TAG)} selects all tests that have TAG on their tags list.
+@item @code{(satisfies PREDICATE)} Selects all tests that satisfy PREDICATE.
+@end itemize
+
+Selectors that are frequently useful when selecting tests to run
+include @code{t} to run all tests that are currently defined in Emacs,
+@code{"^foo-"} to run all tests in package @code{foo} --- this assumes
+that package @code{foo} uses the prefix @code{foo-} for its test names
+---, result-based selectors such as @code{(or :new :unexpected)} to
+run all tests that have either not run yet or that had an unexpected
+result in the last run, and tag-based selectors such as @code{(not
+(tag :causes-redisplay))} to run all tests that are not tagged
+@code{:causes-redisplay}.
+
+
+@node How to Write Tests, How to Debug Tests, How to Run Tests, Top
+@chapter How to Write Tests
+
+ERT lets you define tests in the same way you define functions. You
+can type @code{ert-deftest} forms in a buffer and evaluate them there
+with @code{eval-defun} or @code{compile-defun}, or you can save the
+file and load it, optionally byte-compiling it first.
+
+Just like @code{find-function} is only able to find where a function
+was defined if the function was loaded from a file, ERT is only able
+to find where a test was defined if the test was loaded from a file.
+
+
+@menu
+* The @code{should} Macro:: A powerful way to express assertions.
+* Expected Failures:: Tests for known bugs.
+* Tests and Their Environment:: Don't depend on customizations; no side effects.
+* Useful Techniques:: Some examples.
+@end menu
+
+@node The @code{should} Macro, Expected Failures, How to Write Tests, How to Write Tests
+@section The @code{should} Macro
+
+Test bodies can include arbitrary code; but to be useful, they need to
+have checks whether the code being tested (or @emph{code under test})
+does what it is supposed to do. The macro @code{should} is similar to
+@code{assert} from the cl package, but analyzes its argument form and
+records information that ERT can display to help debugging.
+
+This test definition
+
+@lisp
+(ert-deftest addition-test ()
+ (should (= (+ 1 2) 4)))
+@end lisp
+
+will produce this output when run via @kbd{M-x ert}:
+
+@example
+F addition-test
+ (ert-test-failed
+ ((should
+ (=
+ (+ 1 2)
+ 4))
+ :form
+ (= 3 4)
+ :value nil))
+@end example
+
+In this example, @code{should} recorded the fact that (= (+ 1 2) 4)
+reduced to (= 3 4) before it reduced to nil. When debugging why the
+test failed, it helps to know that the function @code{+} returned 3
+here. ERT records the return value for any predicate called directly
+within @code{should}.
+
+In addition to @code{should}, ERT provides @code{should-not}, which
+checks that the predicate returns nil, and @code{should-error}, which
+checks that the form called within it signals an error. An example
+use of @code{should-error}:
+
+@lisp
+(ert-deftest test-divide-by-zero ()
+ (should-error (/ 1 0)
+ :type 'arith-error))
+@end lisp
+
+This checks that dividing one by zero signals an error of type
+@code{arith-error}. The @code{:type} argument to @code{should-error}
+is optional; if absent, any type of error is accepted.
+@code{should-error} returns an error description of the error that was
+signalled, to allow additional checks to be made. The error
+description has the format @code{(ERROR-SYMBOL . DATA)}.
+
+There is no @code{should-not-error} macro since tests that signal an
+error fail anyway, so @code{should-not-error} is effectively the
+default.
+
+@xref{Understanding Explanations}, for more details on what
+@code{should} reports.
+
+
+@node Expected Failures, Tests and Their Environment, The @code{should} Macro, How to Write Tests
+@section Expected Failures
+
+Some bugs are complicated to fix or not very important and are left as
+@emph{known bugs}. If there is a test case that triggers the bug and
+fails, ERT will alert you of this failure every time you run all
+tests. For known bugs, this alert is a distraction. The way to
+suppress it is to add @code{:expected-result :failed} to the test
+definition:
+
+@lisp
+(ert-deftest future-bug ()
+ "Test `time-forward' with negative arguments.
+Since this functionality isn't implemented yet, the test is known to fail."
+ :expected-result :failed
+ (time-forward -1))
+@end lisp
+
+ERT will still display a small @code{f} in the progress bar as a
+reminder that there is a known bug, and will count the test as failed,
+but it will be quiet about it otherwise.
+
+An alternative to marking the test as a known failure this way is to
+delete the test. This is a good idea if there is no intent to fix it,
+i.e., if the behavior that was formerly considered a bug has become an
+accepted feature.
+
+In general, however, it can be useful to keep tests that are known to
+fail. If someone wants to fix the bug, they will have a very good
+starting point: an automated test case that reproduces the bug. This
+makes it much easier to fix the bug, demonstrate that it is fixed, and
+prevent future regressions.
+
+ERT displays the same kind of alerts for tests that pass unexpectedly
+that it displays for unexpected failures. This way, if you make code
+changes that happen to fix a bug that you weren't aware of, you will
+know to remove the @code{:expected-result} clause of that test and
+close the corresponding bug report, if any.
+
+Since @code{:expected-result} evaluates its argument when the test is
+loaded, tests can be marked as known failures only on certain Emacs
+versions, specific architectures, etc.:
+
+@lisp
+(ert-deftest foo ()
+ "A test that is expected to fail on Emacs 23 but succeed elsewhere."
+ :expected-result (if (string-match "GNU Emacs 23[.]" (emacs-version))
+ :failed
+ :passed)
+ ...)
+@end lisp
+
+
+@node Tests and Their Environment, Useful Techniques, Expected Failures, How to Write Tests
+@section Tests and Their Environment
+
+The outcome of running a test should not depend on the current state
+of the environment, and each test should leave its environment in the
+same state it found it in. In particular, a test should not depend on
+any Emacs customization variables or hooks, and if it has to make any
+changes to Emacs' state or state external to Emacs such as the file
+system, it should undo these changes before it returns, regardless of
+whether it passed or failed.
+
+Tests should not depend on the environment because any such
+dependencies can make the test brittle or lead to failures that occur
+only under certain circumstances and are hard to reproduce. Of
+course, the code under test may have settings that affect its
+behavior. In that case, it is best to make the test @code{let}-bind
+all such settings variables to set up a specific configuration for the
+duration of the test. The test can also set up a number of different
+configurations and run the code under test with each.
+
+Tests that have side effects on their environment should restore it to
+its original state because any side effects that persist after the
+test can disrupt the workflow of the programmer running the tests. If
+the code under test has side effects on Emacs' current state, such as
+on the current buffer or window configuration, the test should create
+a temporary buffer for the code to manipulate (using
+@code{with-temp-buffer}), or save and restore the window configuration
+(using @code{save-window-excursion}), respectively. For aspects of
+the state that can not be preserved with such macros, cleanup should
+be performed with @code{unwind-protect}, to ensure that the cleanup
+occurs even if the test fails.
+
+An exception to this are messages that the code under test prints with
+@code{message} and similar logging; tests should not bother restoring
+the @code{*Message*} buffer to its original state.
+
+The above guidelines imply that tests should avoid calling highly
+customizable commands such as @code{find-file}, except, of course, if
+such commands are what they want to test. The exact behavior of
+@code{find-file} depends on many settings such as
+@code{find-file-wildcards}, @code{enable-local-variables}, and
+@code{auto-mode-alist}. It is difficult to write a meaningful test if
+its behavior can be affected by so many external factors. Also,
+@code{find-file} has side effects that are hard to predict and thus
+hard to undo: It may create a new buffer or may reuse an existing
+buffer if one is already visiting the requested file; and it runs
+@code{find-file-hook}, which can have arbitrary side effects.
+
+Instead, it is better to use lower-level mechanisms with simple and
+predictable semantics like @code{with-temp-buffer}, @code{insert} or
+@code{insert-file-contents-literally}, and activating the desired mode
+by calling the corresponding function directly --- after binding the
+hook variables to nil. This avoids the above problems.
+
+
+@node Useful Techniques, , Tests and Their Environment, How to Write Tests
+@section Useful Techniques when Writing Tests
+
+Testing simple functions that have no side effects and no dependencies
+on their environment is easy. Such tests often look like this:
+
+@lisp
+(ert-deftest ert-test-mismatch ()
+ (should (eql (ert--mismatch "" "") nil))
+ (should (eql (ert--mismatch "" "a") 0))
+ (should (eql (ert--mismatch "a" "a") nil))
+ (should (eql (ert--mismatch "ab" "a") 1))
+ (should (eql (ert--mismatch "Aa" "aA") 0))
+ (should (eql (ert--mismatch '(a b c) '(a b d)) 2)))
+@end lisp
+
+This test calls the function @code{ert--mismatch} several times with
+various combinations of arguments and compares the return value to the
+expected return value. (Some programmers prefer @code{(should (eql
+EXPECTED ACTUAL))} over the @code{(should (eql ACTUAL EXPECTED))}
+shown here. ERT works either way.)
+
+Here's a more complicated test:
+
+@lisp
+(ert-deftest ert-test-record-backtrace ()
+ (let ((test (make-ert-test :body (lambda () (ert-fail "foo")))))
+ (let ((result (ert-run-test test)))
+ (should (ert-test-failed-p result))
+ (with-temp-buffer
+ (ert--print-backtrace (ert-test-failed-backtrace result))
+ (goto-char (point-min))
+ (end-of-line)
+ (let ((first-line (buffer-substring-no-properties (point-min) (point))))
+ (should (equal first-line " signal(ert-test-failed (\"foo\"))")))))))
+@end lisp
+
+This test creates a test object using @code{make-ert-test} whose body
+will immediately signal failure. It then runs that test and asserts
+that it fails. Then, it creates a temporary buffer and invokes
+@code{ert--print-backtrace} to print the backtrace of the failed test
+to the current buffer. Finally, it extracts the first line from the
+buffer and asserts that it matches what we expect. It uses
+@code{buffer-substring-no-properties} and @code{equal} to ignore text
+properties; for a test that takes properties into account,
+@code{buffer-substring} and @code{ert-equal-including-properties}
+could be used instead.
+
+The reason why this test only checks the first line of the backtrace
+is that the remainder of the backtrace is dependent on ERT's internals
+as well as whether the code is running interpreted or compiled. By
+looking only at the first line, the test checks a useful property
+--- that the backtrace correctly captures the call to @code{signal} that
+results from the call to @code{ert-fail} --- without being brittle.
+
+This example also shows that writing tests is much easier if the code
+under test was structured with testing in mind.
+
+For example, if @code{ert-run-test} accepted only symbols that name
+tests rather than test objects, the test would need a name for the
+failing test, which would have to be a temporary symbol generated with
+@code{make-symbol}, to avoid side effects on Emacs' state. Choosing
+the right interface for @code{ert-run-tests} allows the test to be
+simpler.
+
+Similarly, if @code{ert--print-backtrace} printed the backtrace to a
+buffer with a fixed name rather than the current buffer, it would be
+much harder for the test to undo the side effect. Of course, some
+code somewhere needs to pick the buffer name. But that logic is
+independent of the logic that prints backtraces, and keeping them in
+separate functions allows us to test them independently.
+
+A lot of code that you will encounter in Emacs was not written with
+testing in mind. Sometimes, the easiest way to write tests for such
+code is to restructure the code slightly to provide better interfaces
+for testing. Usually, this makes the interfaces easier to use as
+well.
+
+
+@node How to Debug Tests, Extending ERT, How to Write Tests, Top
+@chapter How to Debug Tests
+
+This section describes how to use ERT's features to understand why
+a test failed.
+
+
+@menu
+* Understanding Explanations:: How ERT gives details on why an assertion failed.
+* Interactive Debugging:: Tools available in the ERT results buffer.
+@end menu
+
+
+@node Understanding Explanations, Interactive Debugging, How to Debug Tests, How to Debug Tests
+@section Understanding Explanations
+
+Failed @code{should} forms are reported like this:
+
+@example
+F addition-test
+ (ert-test-failed
+ ((should
+ (=
+ (+ 1 2)
+ 4))
+ :form
+ (= 3 4)
+ :value nil))
+@end example
+
+ERT shows what the @code{should} expression looked like and what
+values its subexpressions had: The source code of the assertion was
+@code{(should (= (+ 1 2) 4))}, which applied the function @code{=} to
+the arguments @code{3} and @code{4}, resulting in the value
+@code{nil}. In this case, the test is wrong; it should expect 3
+rather than 4.
+
+If a predicate like @code{equal} is used with @code{should}, ERT
+provides a so-called @emph{explanation}:
+
+@example
+F list-test
+ (ert-test-failed
+ ((should
+ (equal
+ (list 'a 'b 'c)
+ '(a b d)))
+ :form
+ (equal
+ (a b c)
+ (a b d))
+ :value nil :explanation
+ (list-elt 2
+ (different-atoms c d))))
+@end example
+
+In this case, the function @code{equal} was applied to the arguments
+@code{(a b c)} and @code{(a b d)}. ERT's explanation shows that
+the item at index 2 differs between the two lists; in one list, it is
+the atom c, in the other, it is the atom d.
+
+In simple examples like the above, the explanation is unnecessary.
+But in cases where the difference is not immediately apparent, it can
+save time:
+
+@example
+F test1
+ (ert-test-failed
+ ((should
+ (equal x y))
+ :form
+ (equal a a)
+ :value nil :explanation
+ (different-symbols-with-the-same-name a a)))
+@end example
+
+ERT only provides explanations for predicates that have an explanation
+function registered. @xref{Defining Explanation Functions}.
+
+
+@node Interactive Debugging, , Understanding Explanations, How to Debug Tests
+@section Interactive Debugging
+
+Debugging failed tests works essentially the same way as debugging any
+other problems with Lisp code. Here are a few tricks specific to
+tests:
+
+@itemize
+@item Re-run the failed test a few times to see if it fails in the same way
+each time. It's good to find out whether the behavior is
+deterministic before spending any time looking for a cause. In the
+ERT results buffer, @kbd{r} re-runs the selected test.
+
+@item Use @kbd{.} to jump to the source code of the test to find out what
+exactly it does. Perhaps the test is broken rather than the code
+under test.
+
+@item If the test contains a series of @code{should} forms and you can't
+tell which one failed, use @kbd{l}, which shows you the list of all
+@code{should} forms executed during the test before it failed.
+
+@item Use @kbd{b} to view the backtrace. You can also use @kbd{d} to re-run
+the test with debugging enabled, this will enter the debugger and show
+the backtrace as well; but the top few frames shown there will not be
+relevant to you since they are ERT's own debugger hook. @kbd{b}
+strips them out, so it is more convenient.
+
+@item If the test or the code under testing prints messages using
+@code{message}, use @kbd{m} to see what messages it printed before it
+failed. This can be useful to figure out how far it got.
+
+@item You can instrument tests for debugging the same way you instrument
+@code{defun}s for debugging --- go to the source code of the test and
+type @kbd{@kbd{C-u} @kbd{C-M-x}}. Then, go back to the ERT buffer and
+re-run the test with @kbd{r} or @kbd{d}.
+
+@item If you have been editing and rearranging tests, it is possible that
+ERT remembers an old test that you have since renamed or removed ---
+renamings or removals of definitions in the source code leave around a
+stray definition under the old name in the running process, this is a
+common problem in Lisp. In such a situation, hit @kbd{D} to let ERT
+forget about the obsolete test.
+@end itemize
+
+
+@node Extending ERT, Other Testing Concepts, How to Debug Tests, Top
+@chapter Extending ERT
+
+There are several ways to add functionality to ERT.
+
+@menu
+* Defining Explanation Functions:: Teach ERT about more predicates.
+* Low-Level Functions for Working with Tests:: Use ERT's data for your purposes.
+@end menu
+
+
+@node Defining Explanation Functions, Low-Level Functions for Working with Tests, Extending ERT, Extending ERT
+@section Defining Explanation Functions
+
+The explanation function for a predicate is a function that takes the
+same arguments as the predicate and returns an @emph{explanation}.
+The explanation should explain why the predicate, when invoked with
+the arguments given to the explanation function, returns the value
+that it returns. The explanation can be any object but should have a
+comprehensible printed representation. If the return value of the
+predicate needs no explanation for a given list of arguments, the
+explanation function should return nil.
+
+To associate an explanation function with a predicate, add the
+property @code{ert-explainer} to the symbol that names the predicate.
+The value of the property should be the symbol that names the
+explanation function.
+
+
+@node Low-Level Functions for Working with Tests, , Defining Explanation Functions, Extending ERT
+@section Low-Level Functions for Working with Tests
+
+Both @code{ert-run-tests-interactively} and @code{ert-run-tests-batch}
+are implemented on top of the lower-level test handling code in the
+sections named ``Facilities for running a single test'', ``Test
+selectors'', and ``Facilities for running a whole set of tests''.
+
+If you want to write code that works with ERT tests, you should take a
+look at this lower-level code. Symbols that start with @code{ert--}
+are internal to ERT, those that start with @code{ert-} but not
+@code{ert--} are meant to be usable by other code. But there is no
+mature API yet.
+
+Contributions to ERT are welcome.
+
+
+@node Other Testing Concepts, , Extending ERT, Top
+@chapter Other Testing Concepts
+
+For information on mocks, stubs, fixtures, or test suites, see below.
+
+
+@menu
+* Mocks and Stubs:: Stubbing out code that is irrelevant to the test.
+* Fixtures and Test Suites:: How ERT differs from tools for other languages.
+@end menu
+
+@node Mocks and Stubs, Fixtures and Test Suites, Other Testing Concepts, Other Testing Concepts
+@section Other Tools for Emacs Lisp
+
+Stubbing out functions or using so-called @emph{mocks} can make it
+easier to write tests. See
+@url{http://en.wikipedia.org/wiki/Mock_object} for an explanation of
+the corresponding concepts in object-oriented languages.
+
+ERT does not have built-in support for mocks or stubs. The package
+@code{el-mock} (see @url{http://www.emacswiki.org/emacs/el-mock.el})
+offers mocks for Emacs Lisp and can be used in conjunction with ERT.
+
+
+@node Fixtures and Test Suites, , Mocks and Stubs, Other Testing Concepts
+@section Fixtures and Test Suites
+
+In many ways, ERT is similar to frameworks for other languages like
+SUnit or JUnit. However, two features commonly found in such
+frameworks are notably absent from ERT: fixtures and test suites.
+
+Fixtures, as used e.g. in SUnit or JUnit, are mainly used to provide
+an environment for a set of tests, and consist of set-up and tear-down
+functions.
+
+While fixtures are a useful syntactic simplification in other
+languages, this does not apply to Lisp, where higher-order functions
+and `unwind-protect' are available. One way to implement and use a
+fixture in ERT is
+
+@lisp
+(defun my-fixture (body)
+ (unwind-protect
+ (progn [set up]
+ (funcall body))
+ [tear down]))
+
+(ert-deftest my-test ()
+ (my-fixture
+ (lambda ()
+ [test code])))
+@end lisp
+
+(Another way would be a @code{with-my-fixture} macro.) This solves
+the set-up and tear-down part, and additionally allows any test
+to use any combination of fixtures, so it is more flexible than what
+other tools typically allow.
+
+If the test needs access to the environment the fixture sets up, the
+fixture can be modified to pass arguments to the body.
+
+These are well-known Lisp techniques. Special syntax for them could
+be added but would provide only a minor simplification.
+
+(If you are interested in such syntax, note that splitting set-up and
+tear-down into separate functions, like *Unit tools usually do, makes
+it impossible to establish dynamic `let' bindings as part of the
+fixture. So, blindly imitating the way fixtures are implemented in
+other languages would be counter-productive in Lisp.)
+
+The purpose of test suites is to group related tests together.
+
+The most common use of this is to run just the tests for one
+particular module. Since symbol prefixes are the usual way of
+separating module namespaces in Emacs Lisp, test selectors already
+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 to
+run quick tests during interactive development and slow tests less
+frequently. This can be achieved with the @code{:tag} argument to
+@code{ert-deftest} and @code{tag} test selectors.
+
+@bye
+
+@c LocalWords: ERT Hagelberg Ohler JUnit namespace docstring ERT's
+@c LocalWords: backtrace makefiles workflow backtraces API SUnit
+@c LocalWords: subexpressions
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi
index 6ec431dccf..51031e219f 100644
--- a/doc/misc/eshell.texi
+++ b/doc/misc/eshell.texi
@@ -8,8 +8,7 @@
@copying
This manual is for Eshell, the Emacs shell.
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1999-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1015,7 +1014,3 @@ Since it keeps the cursor up where the command was invoked.
@printindex ky
@bye
-
-@ignore
- arch-tag: 776409ba-cb15-42b9-b2b6-d2bdc7ebad01
-@end ignore
diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi
index b62c0ed75e..b0652ab3f1 100644
--- a/doc/misc/eudc.texi
+++ b/doc/misc/eudc.texi
@@ -12,8 +12,7 @@ EUDC is the Emacs Unified Directory Client, a common interface to
directory servers using various protocols such as LDAP or the CCSO white
pages directory system (PH/QI)
-Copyright @copyright{} 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1998, 2000-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/faq.texi b/doc/misc/faq.texi
index ee5f72ac30..3c98588a7d 100644
--- a/doc/misc/faq.texi
+++ b/doc/misc/faq.texi
@@ -11,8 +11,7 @@
@c appreciate a notice if you do).
@copying
-Copyright @copyright{} 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-2009, 2010 Free Software Foundation, Inc.@*
+Copyright @copyright{} 2001-2011 Free Software Foundation, Inc.@*
Copyright @copyright{} 1994, 1995, 1996, 1997, 1998, 1999, 2000
Reuven M. Lerner@*
Copyright @copyright{} 1992, 1993 Steven Byrnes@*
@@ -4299,12 +4298,12 @@ file.
Normally, Emacs expands aliases when you send the message.
To expand them before this, use @kbd{M-x expand-mail-aliases}.
-@c FIXME there should be an interactive rebuild command for this.
@item
-Emacs normally only reads the @file{.mailrc} file once per session,
-when you start to compose your first mail message. If you edit
-@file{.mailrc}, you can type @kbd{M-: (build-mail-aliases) @key{RET}} to
-make Emacs reread @file{~/.mailrc}.
+Emacs normally only reads the @file{.mailrc} file once per session, when
+you start to compose your first mail message. If you edit the file
+after this, you can use @kbd{M-x build-mail-aliases} to make Emacs
+reread it. Prior to Emacs 24.1, this is not an interactive command, so
+you must instead type @kbd{M-: (build-mail-aliases) @key{RET}}.
@item
If you like, you can expand mail aliases as abbrevs, as soon as you
diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi
index 0606fcc134..7f0cd77de5 100644
--- a/doc/misc/flymake.texi
+++ b/doc/misc/flymake.texi
@@ -11,7 +11,7 @@
This manual is for GNU Flymake (version @value{VERSION}, @value{UPDATED}),
which is a universal on-the-fly syntax checker for GNU Emacs.
-Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009, 2010
+Copyright @copyright{} 2004-2011
Free Software Foundation, Inc.
@quotation
@@ -749,7 +749,3 @@ It just kills all the active syntax check processes before calling
@printindex cp
@bye
-
-@ignore
- arch-tag: 9f0db077-5598-49ab-90b9-8df9248a63ec
-@end ignore
diff --git a/doc/misc/forms.texi b/doc/misc/forms.texi
index a7779763c3..f58e8d8f96 100644
--- a/doc/misc/forms.texi
+++ b/doc/misc/forms.texi
@@ -18,8 +18,7 @@
@copying
This file documents Forms mode, a form-editing major mode for GNU Emacs.
-Copyright @copyright{} 1989, 1997, 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1989, 1997, 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -976,7 +975,3 @@ Software Foundation. Thanks, Richard!
@printindex cp
@bye
-
-@ignore
- arch-tag: 2ac9810b-aa49-4ea6-8030-d7f1ecd467ed
-@end ignore
diff --git a/doc/misc/gnus-coding.texi b/doc/misc/gnus-coding.texi
index f513bc15a2..ab9c0232d3 100644
--- a/doc/misc/gnus-coding.texi
+++ b/doc/misc/gnus-coding.texi
@@ -7,7 +7,7 @@
@syncodeindex pg cp
@copying
-Copyright @copyright{} 2004, 2005, 2007, 2008, 2009, 2010 Free Software
+Copyright @copyright{} 2004-2005, 2007-2011 Free Software
Foundation, Inc.
@quotation
diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi
index d9df9c8db1..e8e89ed2a3 100644
--- a/doc/misc/gnus-faq.texi
+++ b/doc/misc/gnus-faq.texi
@@ -1,8 +1,7 @@
@c \input texinfo @c -*-texinfo-*-
@c Uncomment 1st line before texing this file alone.
@c %**start of header
-@c Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-@c 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
@c
@setfilename gnus-faq.info
@settitle Frequently Asked Questions
diff --git a/doc/misc/gnus-news.el b/doc/misc/gnus-news.el
index e31cca9f37..485e7ce464 100644
--- a/doc/misc/gnus-news.el
+++ b/doc/misc/gnus-news.el
@@ -1,5 +1,5 @@
;;; gnus-news.el --- a hack to create GNUS-NEWS from texinfo source
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Reiner Steib <[email protected]>
;; Keywords: tools
@@ -26,8 +26,7 @@
(defvar gnus-news-header-disclaimer
"GNUS NEWS -- history of user-visible changes.
-Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1999-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
Please send Gnus bug reports to [email protected].
diff --git a/doc/misc/gnus-news.texi b/doc/misc/gnus-news.texi
index 6037a979ac..62c1663508 100644
--- a/doc/misc/gnus-news.texi
+++ b/doc/misc/gnus-news.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c Permission is granted to anyone to make or distribute verbatim copies
@c of this document as received, in any medium, provided that the
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index 9f4d1f75ed..1dd3efd17d 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -9,8 +9,7 @@
@documentencoding ISO-8859-1
@copying
-Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1995-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -407,6 +406,7 @@ This manual corresponds to Gnus v5.13
* Composing Messages:: Information on sending mail and news.
* Select Methods:: Gnus reads all messages from various select methods.
* Scoring:: Assigning values to articles.
+* Searching:: Mail and News search engines.
* Various:: General purpose settings.
* The End:: Farewell and goodbye.
* Appendices:: Terminology, Emacs intro, @acronym{FAQ}, History, Internals.
@@ -428,7 +428,6 @@ Other related manuals
Starting Gnus
* Finding the News:: Choosing a method for getting news.
-* The First Time:: What does Gnus do the first time you start it?
* The Server is Down:: How can I read my mail then?
* Slave Gnusae:: You can have more than one Gnus active at a time.
* Fetching a Group:: Starting Gnus just to read a group.
@@ -704,6 +703,7 @@ Other Sources
* Anything Groups:: Dired? Who needs dired?
* Document Groups:: Single files can be the basis of a group.
* Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
+* The Empty Backend:: The backend that never has any news.
Document Groups
@@ -786,6 +786,21 @@ Advanced Scoring
* Advanced Scoring Examples:: What they look like.
* Advanced Scoring Tips:: Getting the most out of it.
+Searching
+
+* nnir:: Searching with various engines.
+* nnmairix:: Searching with Mairix.
+
+nnir
+
+* What is nnir?:: What does nnir do.
+* Basic Usage:: How to perform simple searches.
+* Setting up nnir:: How to set up nnir.
+
+Setting up nnir
+
+* Associating Engines:: How to associate engines.
+
Various
* Process/Prefix:: A convention used by many treatment commands.
@@ -959,7 +974,6 @@ terminology section (@pxref{Terminology}).
@menu
* Finding the News:: Choosing a method for getting news.
-* The First Time:: What does Gnus do the first time you start it?
* The Server is Down:: How can I read my mail then?
* Slave Gnusae:: You can have more than one Gnus active at a time.
* New Groups:: What is Gnus supposed to do with new groups?
@@ -1052,31 +1066,6 @@ several Gnus installations, but may slow down things a bit when fetching
new articles. @xref{NNTP marks}, for more information.
-@node The First Time
-@section The First Time
-@cindex first time usage
-
-If no startup files exist (@pxref{Startup Files}), Gnus will try to
-determine what groups should be subscribed by default.
-
-@vindex gnus-default-subscribed-newsgroups
-If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
-will subscribe you to just those groups in that list, leaving the rest
-killed. Your system administrator should have set this variable to
-something useful.
-
-Since she hasn't, Gnus will just subscribe you to a few arbitrarily
-picked groups (i.e., @samp{*.newusers}). (@dfn{Arbitrary} is defined
-here as @dfn{whatever Lars thinks you should read}.)
-
-You'll also be subscribed to the Gnus documentation group, which should
-help you with most common problems.
-
-If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just
-use the normal functions for handling new groups, and not do anything
-special.
-
-
@node The Server is Down
@section The Server is Down
@cindex server errors
@@ -1321,11 +1310,18 @@ but I thought it would be nice to have two of these. This variable is
more meant for setting some ground rules, while the other variable is
used more for user fiddling. By default this variable makes all new
groups that come from mail back ends (@code{nnml}, @code{nnbabyl},
-@code{nnfolder}, @code{nnmbox}, @code{nnmh}, and @code{nnmaildir})
-subscribed. If you don't like that, just set this variable to
-@code{nil}.
-
-New groups that match this regexp are subscribed using
+@code{nnfolder}, @code{nnmbox}, @code{nnmh}, @code{nnimap}, and
+@code{nnmaildir}) subscribed. If you don't like that, just set this
+variable to @code{nil}.
+
+@vindex gnus-auto-subscribed-categories
+As if that wasn't enough, @code{gnus-auto-subscribed-categories} also
+allows you to specify that new groups should be subcribed based on the
+category their select methods belong to. The default is @samp{(mail
+post-mail)}, meaning that all new groups from mail-like backends
+should be subscribed automatically.
+
+New groups that match these variables are subscribed using
@code{gnus-subscribe-options-newsgroup-method}.
@@ -1680,7 +1676,6 @@ long as Gnus is active.
* Exiting Gnus:: Stop reading news and get some work done.
* Group Topics:: A folding group mode divided into topics.
* Non-ASCII Group Names:: Accessing groups of non-English names.
-* Searching:: Mail search engines.
* Misc Group Stuff:: Other stuff that you can to do.
@end menu
@@ -2517,6 +2512,15 @@ the command to be executed.
@section Foreign Groups
@cindex foreign groups
+If you recall how to subscribe to servers (@pxref{Finding the News})
+you will remember that @code{gnus-secondary-select-methods} and
+@code{gnus-select-method} let you write a definition in Emacs Lisp of
+what servers you want to see when you start up. The alternate
+approach is to use foreign servers and groups. ``Foreign'' here means
+they are not coming from the select methods. All foreign server
+configuration and subscriptions are stored only in the
+@file{~/.newsrc.eld} file.
+
Below are some group mode commands for making and editing general foreign
groups, as well as commands to ease the creation of a few
special-purpose groups. All these commands insert the newly created
@@ -4302,712 +4306,6 @@ names should be the same in both groups. Otherwise the Newsgroups
header will be displayed incorrectly in the article buffer.
-@node Searching
-@section Searching
-
-@menu
-* nnir:: Searching on IMAP, with swish, namazu, etc.
-* nnmairix:: Searching maildir, MH or mbox with Mairix.
-@end menu
-
-@cindex Searching
-
-FIXME: This node is a stub.
-
-FIXME: Add a brief overview of Gnus search capabilities. A brief
-comparison of nnir, nnmairix, contrib/gnus-namazu would be nice
-as well.
-
-FIXME: Explain difference to @ref{Searching for Articles}, add reference
-and back-reference.
-
-@node nnir
-@subsection nnir
-
-FIXME: As a first step, convert the commentary of @file{nnir} to texi.
-@cindex nnir
-
-@node nnmairix
-@subsection nnmairix
-
-@cindex mairix
-@cindex nnmairix
-This paragraph describes how to set up mairix and the back end
-@code{nnmairix} for indexing and searching your mail from within
-Gnus. Additionally, you can create permanent ``smart'' groups which are
-bound to mairix searches and are automatically updated.
-
-@menu
-* About mairix:: About the mairix mail search engine
-* nnmairix requirements:: What you will need for using nnmairix
-* What nnmairix does:: What does nnmairix actually do?
-* Setting up mairix:: Set up your mairix installation
-* Configuring nnmairix:: Set up the nnmairix back end
-* nnmairix keyboard shortcuts:: List of available keyboard shortcuts
-* Propagating marks:: How to propagate marks from nnmairix groups
-* nnmairix tips and tricks:: Some tips, tricks and examples
-* nnmairix caveats:: Some more stuff you might want to know
-@end menu
-
-@c FIXME: The markup in this section might need improvement.
-@c E.g. adding @samp, @var, @file, @command, etc.
-@c Cf. (info "(texinfo)Indicating")
-
-@node About mairix
-@subsubsection About mairix
-
-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
-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}
-
-Though mairix might not be as flexible as other search tools like
-swish++ or namazu, which you can use via the @code{nnir} back end, it
-has the prime advantage of being incredibly fast. On current systems, it
-can easily search through headers and message bodies of thousands and
-thousands of mails in well under a second. Building the database
-necessary for searching might take a minute or two, but only has to be
-done once fully. Afterwards, the updates are done incrementally and
-therefore are really fast, too. Additionally, mairix is very easy to set
-up.
-
-For maximum speed though, mairix should be used with mails stored in
-@code{Maildir} or @code{MH} format (this includes the @code{nnml} back
-end), although it also works with mbox. Mairix presents the search
-results by populating a @emph{virtual} maildir/MH folder with symlinks
-which point to the ``real'' message files (if mbox is used, copies are
-made). Since mairix already presents search results in such a virtual
-mail folder, it is very well suited for using it as an external program
-for creating @emph{smart} mail folders, which represent certain mail
-searches.
-
-@node nnmairix requirements
-@subsubsection nnmairix requirements
-
-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.
-
-Additionally, @code{nnmairix} only supports the following Gnus back
-ends: @code{nnml}, @code{nnmaildir}, and @code{nnimap}. You must use
-one of these back ends for using @code{nnmairix}. Other back ends, like
-@code{nnmbox}, @code{nnfolder} or @code{nnmh}, won't work.
-
-If you absolutely must use mbox and still want to use @code{nnmairix},
-you can set up a local @acronym{IMAP} server, which you then access via
-@code{nnimap}. This is a rather massive setup for accessing some mbox
-files, so just change to MH or Maildir already... However, if you're
-really, really passionate about using mbox, you might want to look into
-the package @file{mairix.el}, which comes with Emacs 23.
-
-@node What nnmairix does
-@subsubsection What nnmairix does
-
-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
-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.
-
-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
-automatically update themselves by calling mairix.
-
-You might ask why you need @code{nnmairix} at all, since mairix already
-creates the group, populates it with links to the mails so that you can
-then access it with Gnus, right? Well, this @emph{might} work, but often
-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
-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.
-
-@code{nnmairix} is not really a mail back end---it's actually more like
-a wrapper, sitting between a ``real'' mail back end where mairix stores
-the searches and the Gnus front end. You can choose between three
-different mail back ends for the mairix folders: @code{nnml},
-@code{nnmaildir} or @code{nnimap}. @code{nnmairix} will call the mairix
-binary so that the search results are stored in folders named
-@code{zz_mairix-<NAME>-<NUMBER>} on this mail back end, but it will
-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
-@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
-mairix remotely on an IMAP server with @code{nnimap}---here the mairix
-folders and your other mail must be on the same @code{nnimap} back end.
-
-@node Setting up mairix
-@subsubsection Setting up mairix
-
-First: create a backup of your mail folders (@pxref{nnmairix caveats}).
-
-Setting up mairix is easy: simply create a @file{.mairixrc} file with
-(at least) the following entries:
-
-@example
-# Your Maildir/MH base folder
-base=~/Maildir
-@end example
-
-This is the base folder for your mails. All the following directories
-are relative to this base folder. If you want to use @code{nnmairix}
-with @code{nnimap}, this base directory has to point to the mail
-directory where the @acronym{IMAP} server stores the mail folders!
-
-@example
-maildir= ... your maildir folders which should be indexed ...
-mh= ... your nnml/mh folders which should be indexed ...
-mbox = ... your mbox files which should be indexed ...
-@end example
-
-This specifies all your mail folders and mbox files (relative to the
-base directory!) you want to index with mairix. Note that the
-@code{nnml} back end saves mails in MH format, so you have to put those
-directories in the @code{mh} line. See the example at the end of this
-section and mairixrc's man-page for further details.
-
-@example
-omit=zz_mairix-*
-@end example
-
-@vindex nnmairix-group-prefix
-This should make sure that you don't accidentally index the mairix
-search results. You can change the prefix of these folders with the
-variable @code{nnmairix-group-prefix}.
-
-@example
-mformat= ... 'maildir' or 'mh' ...
-database= ... location of database file ...
-@end example
-
-The @code{format} setting specifies the output format for the mairix
-search folder. Set this to @code{mh} if you want to access search results
-with @code{nnml}. Otherwise choose @code{maildir}.
-
-To summarize, here is my shortened @file{.mairixrc} file as an example:
-
-@example
-base=~/Maildir
-maildir=.personal:.work:.logcheck:.sent
-mh=../Mail/nnml/*...
-mbox=../mboxmail/mailarchive_year*
-mformat=maildir
-omit=zz_mairix-*
-database=~/.mairixdatabase
-@end example
-
-In this case, the base directory is @file{~/Maildir}, where all my Maildir
-folders are stored. As you can see, the folders are separated by
-colons. If you wonder why every folder begins with a dot: this is
-because I use Dovecot as @acronym{IMAP} server, which again uses
-@code{Maildir++} folders. For testing nnmairix, I also have some
-@code{nnml} mail, which is saved in @file{~/Mail/nnml}. Since this has
-to be specified relative to the @code{base} directory, the @code{../Mail}
-notation is needed. Note that the line ends in @code{*...}, which means
-to recursively scan all files under this directory. Without the three
-dots, the wildcard @code{*} will not work recursively. I also have some
-old mbox files with archived mail lying around in @file{~/mboxmail}.
-The other lines should be obvious.
-
-See the man page for @code{mairixrc} for details and further options,
-especially regarding wildcard usage, which may be a little different
-than you are used to.
-
-Now simply call @code{mairix} to create the index for the first time.
-Note that this may take a few minutes, but every following index will do
-the updates incrementally and hence is very fast.
-
-@node Configuring nnmairix
-@subsubsection Configuring nnmairix
-
-In group mode, type @kbd{G b c}
-(@code{nnmairix-create-server-and-default-group}). This will ask you for all
-necessary information and create a @code{nnmairix} server as a foreign
-server. You will have to specify the following:
-
-@itemize @bullet
-
-@item
-The @strong{name} of the @code{nnmairix} server---choose whatever you
-want.
-
-@item
-The name of the @strong{back end server} where mairix should store its
-searches. This must be a full server name, like @code{nnml:mymail}.
-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}
-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
-@code{nnml-get-new-mail} to @code{nil}, or you might lose mail
-(@pxref{nnmairix caveats}). If you want to use mairix remotely on an
-@acronym{IMAP} server, you have to choose the corresponding
-@code{nnimap} server here.
-
-@item
-@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
-@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
-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
-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.
-
-@end itemize
-
-@node nnmairix keyboard shortcuts
-@subsubsection nnmairix keyboard shortcuts
-
-In group mode:
-
-@table @kbd
-
-@item G b c
-@kindex G b c (Group)
-@findex nnmairix-create-server-and-default-group
-Creates @code{nnmairix} server and default search group for this server
-(@code{nnmairix-create-server-and-default-group}). You should have done
-this by now (@pxref{Configuring nnmairix}).
-
-@item G b s
-@kindex G b s (Group)
-@findex nnmairix-search
-Prompts for query which is then sent to the mairix binary. Search
-results are put into the default search group which is automatically
-displayed (@code{nnmairix-search}).
-
-@item G b m
-@kindex G b m (Group)
-@findex nnmairix-widget-search
-Allows you to create a mairix search or a permanent group more
-comfortably using graphical widgets, similar to a customization
-group. Just try it to see how it works (@code{nnmairix-widget-search}).
-
-@item G b i
-@kindex G b i (Group)
-@findex nnmairix-search-interactive
-Another command for creating a mairix query more comfortably, but uses
-only the minibuffer (@code{nnmairix-search-interactive}).
-
-@item G b g
-@kindex G b g (Group)
-@findex nnmairix-create-search-group
-Creates a permanent group which is associated with a search query
-(@code{nnmairix-create-search-group}). The @code{nnmairix} back end
-automatically calls mairix when you update this group with @kbd{g} or
-@kbd{M-g}.
-
-@item G b q
-@kindex G b q (Group)
-@findex nnmairix-group-change-query-this-group
-Changes the search query for the @code{nnmairix} group under cursor
-(@code{nnmairix-group-change-query-this-group}).
-
-@item G b t
-@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
-(@code{nnmairix-group-toggle-threads-this-group}).
-
-@item G b u
-@kindex G b u (Group)
-@findex nnmairix-update-database
-@vindex nnmairix-mairix-update-options
-Calls mairix binary for updating the database
-(@code{nnmairix-update-database}). The default parameters are @code{-F}
-and @code{-Q} for making this as fast as possible (see variable
-@code{nnmairix-mairix-update-options} for defining these default
-options).
-
-@item G b r
-@kindex G b r (Group)
-@findex nnmairix-group-toggle-readmarks-this-group
-Keep articles in this @code{nnmairix} group always read or unread, or leave the
-marks unchanged (@code{nnmairix-group-toggle-readmarks-this-group}).
-
-@item G b d
-@kindex G b d (Group)
-@findex nnmairix-group-delete-recreate-this-group
-Recreate @code{nnmairix} group on the ``real'' mail back end
-(@code{nnmairix-group-delete-recreate-this-group}). You can do this if
-you always get wrong article counts with a @code{nnmairix} group.
-
-@item G b a
-@kindex G b a (Group)
-@findex nnmairix-group-toggle-allowfast-this-group
-Toggles the @code{allow-fast} parameters for group under cursor
-(@code{nnmairix-group-toggle-allowfast-this-group}). The default
-behavior of @code{nnmairix} is to do a mairix search every time you
-update or enter the group. With the @code{allow-fast} parameter set,
-mairix will only be called when you explicitly update the group, but not
-upon entering. This makes entering the group faster, but it may also
-lead to dangling symlinks if something changed between updating and
-entering the group which is not yet in the mairix database.
-
-@item G b p
-@kindex G b p (Group)
-@findex nnmairix-group-toggle-propmarks-this-group
-Toggle marks propagation for this group
-(@code{nnmairix-group-toggle-propmarks-this-group}). (@pxref{Propagating
-marks}).
-
-@item G b o
-@kindex G b o (Group)
-@findex nnmairix-propagate-marks
-Manually propagate marks (@code{nnmairix-propagate-marks}); needed only when
-@code{nnmairix-propagate-marks-upon-close} is set to @code{nil}.
-
-@end table
-
-In summary mode:
-
-@table @kbd
-
-@item $ m
-@kindex $ m (Summary)
-@findex nnmairix-widget-search-from-this-article
-Allows you to create a mairix query or group based on the current
-message using graphical widgets (same as @code{nnmairix-widget-search})
-(@code{nnmairix-widget-search-from-this-article}).
-
-@item $ g
-@kindex $ g (Summary)
-@findex nnmairix-create-search-group-from-message
-Interactively creates a new search group with query based on the current
-message, but uses the minibuffer instead of graphical widgets
-(@code{nnmairix-create-search-group-from-message}).
-
-@item $ t
-@kindex $ t (Summary)
-@findex nnmairix-search-thread-this-article
-Searches thread for the current article
-(@code{nnmairix-search-thread-this-article}). This is effectively a
-shortcut for calling @code{nnmairix-search} with @samp{m:msgid} of the
-current article and enabled threads.
-
-@item $ f
-@kindex $ f (Summary)
-@findex nnmairix-search-from-this-article
-Searches all messages from sender of the current article
-(@code{nnmairix-search-from-this-article}). This is a shortcut for
-calling @code{nnmairix-search} with @samp{f:From}.
-
-@item $ o
-@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
-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.
-
-@item $ u
-@kindex $ u (Summary)
-@findex nnmairix-remove-tick-mark-original-article
-Remove possibly existing tick mark from original article
-(@code{nnmairix-remove-tick-mark-original-article}). (@pxref{nnmairix
-tips and tricks}).
-
-@end table
-
-@node Propagating marks
-@subsubsection Propagating marks
-
-First of: you really need a patched mairix binary for using the marks
-propagation feature efficiently. Otherwise, you would have to update
-the mairix database all the time. You can get the patch at
-
-@uref{http://www.randomsample.de/mairix-maildir-patch.tar}
-
-You need the mairix v0.21 source code for this patch; everything else
-is explained in the accompanied readme file. If you don't want to use
-marks propagation, you don't have to apply these patches, but they also
-fix some annoyances regarding changing maildir flags, so it might still
-be useful to you.
-
-With the patched mairix binary, you can use @code{nnmairix} as an
-alternative to mail splitting (@pxref{Fancy Mail Splitting}). For
-example, instead of splitting all mails from @samp{david@@foobar.com}
-into a group, you can simply create a search group with the query
-@samp{f:david@@foobar.com}. This is actually what ``smart folders'' are
-all about: simply put everything in one mail folder and dynamically
-create searches instead of splitting. This is more flexible, since you
-can dynamically change your folders any time you want to. This also
-implies that you will usually read your mails in the @code{nnmairix}
-groups instead of your ``real'' mail groups.
-
-There is one problem, though: say you got a new mail from
-@samp{david@@foobar.com}; it will now show up in two groups, the
-``real'' group (your INBOX, for example) and in the @code{nnmairix}
-search group (provided you have updated the mairix database). Now you
-enter the @code{nnmairix} group and read the mail. The mail will be
-marked as read, but only in the @code{nnmairix} group---in the ``real''
-mail group it will be still shown as unread.
-
-You could now catch up the mail group (@pxref{Group Data}), but this is
-tedious and error prone, since you may overlook mails you don't have
-created @code{nnmairix} groups for. Of course, you could first use
-@code{nnmairix-goto-original-article} (@pxref{nnmairix keyboard
-shortcuts}) and then read the mail in the original group, but that's
-even more cumbersome.
-
-Clearly, the easiest way would be if marks could somehow be
-automatically set for the original article. This is exactly what
-@emph{marks propagation} is about.
-
-Marks propagation is deactivated by default. You can activate it for a
-certain @code{nnmairix} group with
-@code{nnmairix-group-toggle-propmarks-this-group} (bound to @kbd{G b
-p}). This function will warn you if you try to use it with your default
-search group; the reason is that the default search group is used for
-temporary searches, and it's easy to accidentally propagate marks from
-this group. However, you can ignore this warning if you really want to.
-
-With marks propagation enabled, all the marks you set in a @code{nnmairix}
-group should now be propagated to the original article. For example,
-you can now tick an article (by default with @kbd{!}) and this mark should
-magically be set for the original article, too.
-
-A few more remarks which you may or may not want to know:
-
-@vindex nnmairix-propagate-marks-upon-close
-Marks will not be set immediately, but only upon closing a group. This
-not only makes marks propagation faster, it also avoids problems with
-dangling symlinks when dealing with maildir files (since changing flags
-will change the file name). You can also control when to propagate marks
-via @code{nnmairix-propagate-marks-upon-close} (see the doc-string for
-details).
-
-Obviously, @code{nnmairix} will have to look up the original group for every
-article you want to set marks for. If available, @code{nnmairix} will first use
-the registry for determining the original group. The registry is very
-fast, hence you should really, really enable the registry when using
-marks propagation. If you don't have to worry about RAM and disc space,
-set @code{gnus-registry-max-entries} to a large enough value; to be on
-the safe side, choose roughly the amount of mails you index with mairix.
-
-@vindex nnmairix-only-use-registry
-If you don't want to use the registry or the registry hasn't seen the
-original article yet, @code{nnmairix} will use an additional mairix
-search for determining the file name of the article. This, of course, is
-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
-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
-immediately contradict myself, let me mention that it WON'T work with
-@code{nnmaildir}, since @code{nnmaildir} stores the marks externally and
-not in the file name. Therefore, propagating marks to @code{nnmairix}
-groups will usually only work if you use an IMAP server which uses
-maildir as its file format.
-
-@vindex nnmairix-propagate-marks-to-nnmairix-groups
-If you work with this setup, just set
-@code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t} and see what
-happens. If you don't like what you see, just set it to @code{nil} again. One
-problem might be that you get a wrong number of unread articles; this
-usually happens when you delete or expire articles in the original
-groups. When this happens, you can recreate the @code{nnmairix} group on the
-back end using @kbd{G b d}.
-
-@node nnmairix tips and tricks
-@subsubsection nnmairix tips and tricks
-
-@itemize
-@item
-Checking Mail
-
-@findex nnmairix-update-groups
-I put all my important mail groups at group level 1. The mairix groups
-have group level 5, so they do not get checked at start up (@pxref{Group
-Levels}).
-
-I use the following to check for mails:
-
-@lisp
-(defun my-check-mail-mairix-update (level)
- (interactive "P")
- ;; if no prefix given, set level=1
- (gnus-group-get-new-news (or level 1))
- (nnmairix-update-groups "mairixsearch" t t)
- (gnus-group-list-groups))
-
-(define-key gnus-group-mode-map "g" 'my-check-mail-mairix-update)
-@end lisp
-
-Instead of @samp{"mairixsearch"} use the name of your @code{nnmairix}
-server. See the doc string for @code{nnmairix-update-groups} for
-details.
-
-@item
-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
-@samp{F:f} as query and do not include threads.
-
-Now activate marks propagation for this group by using @kbd{G b p}. Then
-activate the always-unread feature by using @kbd{G b r} twice.
-
-So far so good---but how do you remove the tick marks in the @code{nnmairix}
-group? There are two options: You may simply use
-@code{nnmairix-remove-tick-mark-original-article} (bound to @kbd{$ u}) to remove
-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.
-
-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
-mairix database and updated the group. Fortunately, there is a function
-for doing exactly that: @code{nnmairix-update-groups}. See the previous code
-snippet and the doc string for details.
-
-@item
-Dealing with auto-subscription of mail groups
-
-As described before, all @code{nnmairix} groups are in fact stored on
-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
-@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
-@code{gnus-auto-subscribed-groups} to @code{nil} (@pxref{Filtering New
-Groups}), or if you like to keep this feature use the following kludge
-for turning it off for all groups beginning with @samp{zz_}:
-
-@lisp
-(setq gnus-auto-subscribed-groups
- "^\\(nnml\\|nnfolder\\|nnmbox\\|nnmh\\|nnbabyl\\|nnmaildir\\).*:\\([^z]\\|z$\\|\\z[^z]\\|zz$\\|zz[^_]\\|zz_$\\).*")
-@end lisp
-
-@end itemize
-
-@node nnmairix caveats
-@subsubsection nnmairix caveats
-
-@itemize
-@item
-You can create a secondary @code{nnml} server just for nnmairix, but then
-you have to explicitly set the corresponding server variable
-@code{nnml-get-new-mail} to @code{nil}. Otherwise, new mail might get
-put into this secondary server (and would never show up again). Here's
-an example server definition:
-
-@lisp
-(nnml "mairix" (nnml-directory "mairix") (nnml-get-new-mail nil))
-@end lisp
-
-(The @code{nnmaildir} back end also has a server variabe
-@code{get-new-mail}, but its default value is @code{nil}, so you don't
-have to explicitly set it if you use a @code{nnmaildir} server just for
-mairix.)
-
-@item
-If you use the Gnus registry: don't use the registry with
-@code{nnmairix} groups (put them in
-@code{gnus-registry-unfollowed-groups}). Be @emph{extra careful} if
-you use @code{gnus-registry-split-fancy-with-parent}; mails which are
-split into @code{nnmairix} groups are usually gone for good as soon as
-you check the group for new mail (yes, it has happened to me...).
-
-@item
-Therefore: @emph{Never ever} put ``real'' mails into @code{nnmairix}
-groups (you shouldn't be able to, anyway).
-
-@item
-If you use the Gnus agent (@pxref{Gnus Unplugged}): don't agentize
-@code{nnmairix} groups (though I have no idea what happens if you do).
-
-@item
-mairix does only support us-ascii characters.
-
-@item
-@code{nnmairix} uses a rather brute force method to force Gnus to
-completely reread the group on the mail back end after mairix was
-called---it simply deletes and re-creates the group on the mail
-back end. So far, this has worked for me without any problems, and I
-don't see how @code{nnmairix} could delete other mail groups than its
-own, but anyway: you really should have a backup of your mail
-folders.
-
-@item
-All necessary information is stored in the group parameters
-(@pxref{Group Parameters}). This has the advantage that no active file
-is needed, but also implies that when you kill a @code{nnmairix} group,
-it is gone for good.
-
-@item
-@findex nnmairix-purge-old-groups
-If you create and kill a lot of @code{nnmairix} groups, the
-``zz_mairix-*'' groups will accumulate on the mail back end server. To
-delete old groups which are no longer needed, call
-@code{nnmairix-purge-old-groups}. Note that this assumes that you don't
-save any ``real'' mail in folders of the form
-@code{zz_mairix-<NAME>-<NUMBER>}. You can change the prefix of
-@code{nnmairix} groups by changing the variable
-@code{nnmairix-group-prefix}.
-
-@item
-The following only applies if you @emph{don't} use the mentioned patch
-for mairix (@pxref{Propagating marks}):
-
-A problem can occur when using @code{nnmairix} with maildir folders and
-comes with the fact that maildir stores mail flags like @samp{Seen} or
-@samp{Replied} by appending chars @samp{S} and @samp{R} to the message
-file name, respectively. This implies that currently you would have to
-update the mairix database not only when new mail arrives, but also when
-mail flags are changing. The same applies to new mails which are indexed
-while they are still in the @samp{new} folder but then get moved to
-@samp{cur} when Gnus has seen the mail. If you don't update the database
-after this has happened, a mairix query can lead to symlinks pointing to
-non-existing files. In Gnus, these messages will usually appear with
-``(none)'' entries in the header and can't be accessed. If this happens
-to you, using @kbd{G b u} and updating the group will usually fix this.
-
-@end itemize
-
@node Misc Group Stuff
@section Misc Group Stuff
@@ -10194,26 +9492,19 @@ Say how much time has elapsed between the article was posted and now
(@code{gnus-article-date-lapsed}). It looks something like:
@example
-X-Sent: 6 weeks, 4 days, 1 hour, 3 minutes, 8 seconds ago
+Date: 6 weeks, 4 days, 1 hour, 3 minutes, 8 seconds ago
@end example
-@vindex gnus-article-date-lapsed-new-header
-The value of @code{gnus-article-date-lapsed-new-header} determines
-whether this header will just be added below the old Date one, or will
-replace it.
-
-An advantage of using Gnus to read mail is that it converts simple bugs
-into wonderful absurdities.
-
-If you want to have this line updated continually, you can put
+This line is updated continually by default. If you wish to switch
+that off, say:
+@vindex gnus-article-update-date-headers
@lisp
-(gnus-start-date-timer)
+(setq gnus-article-update-date-headers nil)
@end lisp
-in your @file{~/.gnus.el} file, or you can run it off of some hook. If
-you want to stop the timer, you can use the @code{gnus-stop-date-timer}
-command.
+in your @file{~/.gnus.el} file. If you want to stop the updating
+dynamically, you can use the @code{gnus-stop-date-timer} command.
@item W T o
@kindex W T o (Summary)
@@ -12579,13 +11870,7 @@ controlling variable is a predicate list, as described above.
@vindex gnus-treat-strip-trailing-blank-lines
@vindex gnus-treat-unsplit-urls
@vindex gnus-treat-wash-html
-@vindex gnus-treat-date-english
-@vindex gnus-treat-date-iso8601
-@vindex gnus-treat-date-lapsed
-@vindex gnus-treat-date-local
-@vindex gnus-treat-date-original
-@vindex gnus-treat-date-user-defined
-@vindex gnus-treat-date-ut
+@vindex gnus-treat-date
@vindex gnus-treat-from-picon
@vindex gnus-treat-mail-picon
@vindex gnus-treat-newsgroups-picon
@@ -12640,13 +11925,39 @@ possible but those listed are probably sufficient for most people.
@xref{Article Washing}.
-@item gnus-treat-date-english (head)
-@item gnus-treat-date-iso8601 (head)
-@item gnus-treat-date-lapsed (head)
-@item gnus-treat-date-local (head)
-@item gnus-treat-date-original (head)
-@item gnus-treat-date-user-defined (head)
-@item gnus-treat-date-ut (head)
+@item gnus-treat-date (head)
+
+This will transform/add date headers according to the
+@code{gnus-article-date-headers} variable. This is a list of Date
+headers to display. The formats available are:
+
+@table @code
+@item ut
+Universal time, aka GMT, aka ZULU.
+
+@item local
+The user's local time zone.
+
+@item english
+A semi-readable English sentence.
+
+@item lapsed
+The time elapsed since the message was posted.
+
+@item combined-elapsed
+Both the original date header and a (shortened) elapsed time.
+
+@item original
+The original date header.
+
+@item iso8601
+ISO8601 format, i.e., ``2010-11-23T22:05:21''.
+
+@item user-defined
+A format done according to the @code{gnus-article-time-format}
+variable.
+
+@end table
@xref{Article Date}.
@@ -13322,9 +12633,6 @@ messages in one file per month:
(concat "mail." (format-time-string "%Y-%m")))))
@end lisp
-@c (XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to
-@c use a different value for @code{gnus-message-archive-group} there.)
-
Now, when you send a message off, it will be stored in the appropriate
group. (If you want to disable storing for just one particular message,
you can just remove the @code{Gcc} header that has been inserted.) The
@@ -13336,11 +12644,6 @@ if (using @kbd{G r} in the group buffer) to something
nice---@samp{misc-mail-september-1995}, or whatever. New messages will
continue to be stored in the old (now empty) group.
-That's the default method of archiving sent messages. Gnus offers a
-different way for the people who don't like the default method. In that
-case you should set @code{gnus-message-archive-group} to @code{nil};
-this will disable archiving.
-
@table @code
@item gnus-gcc-mark-as-read
@vindex gnus-gcc-mark-as-read
@@ -14953,6 +14256,18 @@ The default is @samp{(%Deleted %Seen)}.
@end table
+Here's a complete example @code{nnimap} backend with a client-side
+``fancy'' splitting method:
+
+@example
+(nnimap "imap.example.com"
+ (nnimap-inbox "INBOX")
+ (nnimap-split-methods
+ (| ("MailScanner-SpamCheck" "spam" "spam.detected")
+ (to "foo@@bar.com" "foo")
+ "undecided")))
+@end example
+
@node Getting Mail
@section Getting Mail
@@ -17837,6 +17152,7 @@ newsgroups.
* Anything Groups:: Dired? Who needs dired?
* Document Groups:: Single files can be the basis of a group.
* Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
+* The Empty Backend:: The backend that never has any news.
@end menu
@@ -18284,6 +17600,22 @@ So, to use this, simply say something like:
@end lisp
+@node The Empty Backend
+@subsection The Empty Backend
+@cindex nnnil
+
+@code{nnnil} is a backend that can be used as a placeholder if you
+have to specify a backend somewhere, but don't really want to. The
+classical example is if you don't want to have a primary select
+methods, but want to only use secondary ones:
+
+@lisp
+(setq gnus-select-method '(nnnil ""))
+(setq gnus-secondary-select-methods
+ '((nnimap "foo")
+ (nnml "")))
+@end lisp
+
@node Combined Groups
@section Combined Groups
@@ -21711,6 +21043,1071 @@ the new score, which should be an integer.
Gnus will try to decay scores once a day. If you haven't run Gnus for
four days, Gnus will decay the scores four times, for instance.
+@node Searching
+@chapter Searching
+@cindex searching
+
+FIXME: Add a brief overview of Gnus search capabilities. A brief
+comparison of nnir, nnmairix, contrib/gnus-namazu would be nice
+as well.
+
+This chapter describes tools for searching groups and servers for
+articles matching a query and then retrieving those articles. Gnus
+provides a simpler mechanism for searching through articles in a summary buffer
+to find those matching a pattern. @xref{Searching for Articles}.
+
+@menu
+* nnir:: Searching with various engines.
+* nnmairix:: Searching with Mairix.
+@end menu
+
+@node nnir
+@section nnir
+@cindex nnir
+
+This section describes how to use @code{nnir} to search for articles
+within gnus.
+
+@menu
+* What is nnir?:: What does @code{nnir} do?
+* Basic Usage:: How to perform simple searches.
+* Setting up nnir:: How to set up @code{nnir}.
+@end menu
+
+@node What is nnir?
+@subsection What is nnir?
+
+@code{nnir} is a Gnus interface to a number of tools for searching
+through mail and news repositories. Different backends (like
+@code{nnimap} and @code{nntp}) work with different tools (called
+@dfn{engines} in @code{nnir} lingo), but all use the same basic search
+interface.
+
+The @code{nnimap} and @code{gmane} search engines should work with no
+configuration. Other engines require a local index that needs to be
+created and maintained outside of Gnus.
+
+
+@node Basic Usage
+@subsection Basic Usage
+
+In the group buffer typing @kbd{G G} will search the group on the
+current line by calling @code{gnus-group-make-nnir-group}. This prompts
+for a query string, creates an ephemeral @code{nnir} group containing
+the articles that match this query, and takes you to a summary buffer
+showing these articles. Articles may then be read, moved and deleted
+using the usual commands.
+
+The @code{nnir} group made in this way is an @code{ephemeral} group, and
+some changes are not permanent: aside from reading, moving, and
+deleting, you can't act on the original article. But there is an
+alternative: you can @emph{warp} to the original group for the article
+on the current line with @kbd{A W}, aka
+@code{gnus-warp-to-article}. Even better, the function
+@code{gnus-summary-refer-thread}, bound by default in summary buffers to
+@kbd{A T}, will first warp to the original group before it works its
+magic and includes all the articles in the thread. From here you can
+read, move and delete articles, but also copy them, alter article marks,
+whatever. Go nuts.
+
+You say you want to search more than just the group on the current line?
+No problem: just process-mark the groups you want to search. You want
+even more? Calling for an nnir search with the cursor on a topic heading
+will search all the groups under that heading.
+
+Still not enough? OK, in the server buffer
+@code{gnus-group-make-nnir-group} (now bound to @kbd{G}) will search all
+groups from the server on the current line. Too much? Want to ignore
+certain groups when searching, like spam groups? Just customize
+@code{nnir-ignored-newsgroups}.
+
+One more thing: individual search engines may have special search
+features. You can access these special features by giving a prefix-arg
+to @code{gnus-group-make-nnir-group}. If you are searching multiple
+groups with different search engines you will be prompted for the
+special search features for each engine separately.
+
+
+@node Setting up nnir
+@subsection Setting up nnir
+
+To set up nnir you may need to do some prep work. Firstly, you may need
+to configure the search engines you plan to use. Some of them, like
+@code{imap} and @code{gmane}, need no special configuration. Others,
+like @code{namazu} and @code{swish}, require configuration as described
+below. Secondly, you need to associate a search engine with a server or
+a backend.
+
+If you just want to use the @code{imap} engine to search @code{nnimap}
+servers, and the @code{gmane} engine to search @code{gmane} then you
+don't have to do anything. But you might want to read the details of the
+query language anyway.
+
+@menu
+* Associating Engines:: How to associate engines.
+* The imap Engine:: Imap configuration and usage.
+* The gmane Engine:: Gmane configuration and usage.
+* The swish++ Engine:: Swish++ configuration and usage.
+* The swish-e Engine:: Swish-e configuration and usage.
+* The namazu Engine:: Namazu configuration and usage.
+* The hyrex Engine:: Hyrex configuration and usage.
+* Customizations:: User customizable settings.
+@end menu
+
+@node Associating Engines
+@subsubsection Associating Engines
+
+
+When searching a group, @code{nnir} needs to know which search engine to
+use. You can configure a given server to use a particular engine by
+setting the server variable @code{nnir-search-engine} to the engine
+name. For example to use the @code{namazu} engine to search the server
+named @code{home} you can use
+
+@lisp
+(setq gnus-secondary-select-methods
+ '((nnml "home"
+ (nnimap-address "localhost")
+ (nnir-search-engine namazu))))
+@end lisp
+
+Alternatively you might want to use a particular engine for all servers
+with a given backend. For example, you might want to use the @code{imap}
+engine for all servers using the @code{nnimap} backend. In this case you
+can customize the variable @code{nnir-method-default-engines}. This is
+an alist of pairs of the form @code{(backend . engine)}. By default this
+variable is set to use the @code{imap} engine for all servers using the
+@code{nnimap} backend, and the @code{gmane} backend for @code{nntp}
+servers. (Don't worry, the @code{gmane} search engine won't actually try
+to search non-gmane @code{nntp} servers.) But if you wanted to use
+@code{namazu} for all your servers with an @code{nnimap} backend you
+could change this to
+
+@lisp
+'((nnimap . namazu)
+ (nntp . gmane))
+@end lisp
+
+@node The imap Engine
+@subsubsection The imap Engine
+
+The @code{imap} engine requires no configuration.
+
+Queries using the @code{imap} engine follow a simple query language.
+The search is always case-insensitive and supports the following
+features (inspired by the Google search input language):
+
+@table @samp
+
+@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
+operators must be written with all capital letters to be
+recognised. Also preceding a term with a - sign is equivalent to NOT
+term.
+
+@item Automatic AND queries
+If you specify multiple words then they will be treated as an AND
+expression intended to match all components.
+
+@item Phrase searches
+If you wrap your query in double-quotes then it will be treated as a
+literal string.
+
+@end table
+
+By default the whole message will be searched. The query can be limited
+to a specific part of a message by using a prefix-arg. After inputting
+the query this will prompt (with completion) for a message part.
+Choices include ``Whole message'', ``Subject'', ``From'', and
+``To''. Any unrecognized input is interpreted as a header name. For
+example, typing @kbd{Message-ID} in response to this prompt will limit
+the query to the Message-ID header.
+
+Finally selecting ``Imap'' will interpret the query as a raw
+@acronym{IMAP} search query. The format of such queries can be found in
+RFC3501.
+
+If you don't like the default of searching whole messages you can
+customize @code{nnir-imap-default-search-key}. For example to use
+@acronym{IMAP} queries by default
+
+@lisp
+(setq nnir-imap-default-search-key "Imap")
+@end lisp
+
+@node The gmane Engine
+@subsubsection The gmane Engine
+
+The @code{gmane} engine requires no configuration.
+
+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.
+Note that operators must be written with all capital letters to be
+recognised.
+
+@item Required and excluded terms
++ 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
+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").
+
+@end table
+
+The query can be limited to articles by a specific author using a
+prefix-arg. After inputting the query this will prompt for an author
+name (or part of a name) to match.
+
+@node The swish++ Engine
+@subsubsection The swish++ Engine
+
+FIXEM: Say something more here.
+
+Documentation for swish++ may be found at the swish++ sourceforge page:
+@uref{http://swishplusplus.sourceforge.net}
+
+@table @code
+
+@item nnir-swish++-program
+The name of the swish++ executable. Defaults to @code{search}
+
+@item nnir-swish++-additional-switches
+A list of strings to be given as additional arguments to
+swish++. @code{nil} by default.
+
+@item nnir-swish++-remove-prefix
+The prefix to remove from each file name returned by swish++ in order
+to get a group name. By default this is @code{$HOME/Mail}.
+
+@end table
+
+@node The swish-e Engine
+@subsubsection The swish-e Engine
+
+FIXEM: Say something more here.
+
+Documentation for swish-e may be found at the swish-e homepage
+@uref{http://swish-e.org}
+
+@table @code
+
+@item nnir-swish-e-program
+The name of the swish-e search program. Defaults to @code{swish-e}.
+
+@item nnir-swish-e-additional-switches
+A list of strings to be given as additional arguments to
+swish-e. @code{nil} by default.
+
+@item nnir-swish-e-remove-prefix
+The prefix to remove from each file name returned by swish-e in order
+to get a group name. By default this is @code{$HOME/Mail}.
+
+@end table
+
+@node The namazu Engine
+@subsubsection The namazu Engine
+
+Using the namazu engine requires creating and maintaining index files.
+One directory should contain all the index files, and nnir must be told
+where to find them by setting the @code{nnir-namazu-index-directory}
+variable.
+
+To work correctly the @code{nnir-namazu-remove-prefix} variable must
+also be correct. This is the prefix to remove from each file name
+returned by Namazu in order to get a proper group name (albeit with `/'
+instead of `.').
+
+For example, suppose that Namazu returns file names such as
+@samp{/home/john/Mail/mail/misc/42}. For this example, use the
+following setting: @code{(setq nnir-namazu-remove-prefix
+"/home/john/Mail/")} Note the trailing slash. Removing this prefix from
+the directory gives @samp{mail/misc/42}. @code{nnir} knows to remove
+the @samp{/42} and to replace @samp{/} with @samp{.} to arrive at the
+correct group name @samp{mail.misc}.
+
+Extra switches may be passed to the namazu search command by setting the
+variable @code{nnir-namazu-additional-switches}. It is particularly
+important not to pass any any switches to namazu that will change the
+output format. Good switches to use include `--sort', `--ascending',
+`--early' and `--late'. Refer to the Namazu documentation for further
+information on valid switches.
+
+Mail must first be indexed with the `mknmz' program. Read the documentation
+for namazu to create a configuration file. Here is an example:
+
+@cartouche
+@example
+ package conf; # Don't remove this line!
+
+ # Paths which will not be indexed. Don't use `^' or `$' anchors.
+ $EXCLUDE_PATH = "spam|sent";
+
+ # Header fields which should be searchable. case-insensitive
+ $REMAIN_HEADER = "from|date|message-id|subject";
+
+ # Searchable fields. case-insensitive
+ $SEARCH_FIELD = "from|date|message-id|subject";
+
+ # The max length of a word.
+ $WORD_LENG_MAX = 128;
+
+ # The max length of a field.
+ $MAX_FIELD_LENGTH = 256;
+@end example
+@end cartouche
+
+For this example, mail is stored in the directories @samp{~/Mail/mail/},
+@samp{~/Mail/lists/} and @samp{~/Mail/archive/}, so to index them go to
+the index directory set in @code{nnir-namazu-index-directory} and issue
+the following command:
+
+@example
+mknmz --mailnews ~/Mail/archive/ ~/Mail/mail/ ~/Mail/lists/
+@end example
+
+For maximum searching efficiency you might want to have a cron job run
+this command periodically, say every four hours.
+
+@node The hyrex Engine
+@subsubsection The hyrex Engine
+This engine is obsolete.
+
+@node Customizations
+@subsubsection Custimozations
+
+@table @code
+
+@item nnir-method-default-engines
+Alist of server backend - search engine pairs. The default associations
+are
+@example
+(nnimap . imap)
+(nntp . gmane)
+@end example
+
+@item nnir-ignored-newsgroups
+A regexp to match newsgroups in the active file that should be skipped
+when searching all groups on a server.
+
+@item nnir-summary-line-format
+The format specification to be used for lines in an nnir summary buffer.
+All the items from `gnus-summary-line-format' are available, along with
+three items unique to nnir summary buffers:
+
+@example
+%Z Search retrieval score value (integer)
+%G Article original full group name (string)
+%g Article original short group name (string)
+@end example
+
+If nil (the default) this will use @code{gnus-summary-line-format}.
+
+@item nnir-retrieve-headers-override-function
+If non-nil, a function that retrieves article headers rather than using
+the gnus built-in function. This function takes an article list and
+group as arguments and populates the `nntp-server-buffer' with the
+retrieved headers. It should then return either 'nov or 'headers
+indicating the retrieved header format. Failure to retrieve headers
+should return @code{nil}
+
+If this variable is nil, or if the provided function returns nil for a
+search result, @code{gnus-retrieve-headers} will be called instead."
+
+
+@end table
+
+
+@node nnmairix
+@section nnmairix
+
+@cindex mairix
+@cindex nnmairix
+This paragraph describes how to set up mairix and the back end
+@code{nnmairix} for indexing and searching your mail from within
+Gnus. Additionally, you can create permanent ``smart'' groups which are
+bound to mairix searches and are automatically updated.
+
+@menu
+* About mairix:: About the mairix mail search engine
+* nnmairix requirements:: What you will need for using nnmairix
+* What nnmairix does:: What does nnmairix actually do?
+* Setting up mairix:: Set up your mairix installation
+* Configuring nnmairix:: Set up the nnmairix back end
+* nnmairix keyboard shortcuts:: List of available keyboard shortcuts
+* Propagating marks:: How to propagate marks from nnmairix groups
+* nnmairix tips and tricks:: Some tips, tricks and examples
+* nnmairix caveats:: Some more stuff you might want to know
+@end menu
+
+@c FIXME: The markup in this section might need improvement.
+@c E.g. adding @samp, @var, @file, @command, etc.
+@c Cf. (info "(texinfo)Indicating")
+
+@node About mairix
+@subsection About mairix
+
+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
+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}
+
+Though mairix might not be as flexible as other search tools like
+swish++ or namazu, which you can use via the @code{nnir} back end, it
+has the prime advantage of being incredibly fast. On current systems, it
+can easily search through headers and message bodies of thousands and
+thousands of mails in well under a second. Building the database
+necessary for searching might take a minute or two, but only has to be
+done once fully. Afterwards, the updates are done incrementally and
+therefore are really fast, too. Additionally, mairix is very easy to set
+up.
+
+For maximum speed though, mairix should be used with mails stored in
+@code{Maildir} or @code{MH} format (this includes the @code{nnml} back
+end), although it also works with mbox. Mairix presents the search
+results by populating a @emph{virtual} maildir/MH folder with symlinks
+which point to the ``real'' message files (if mbox is used, copies are
+made). Since mairix already presents search results in such a virtual
+mail folder, it is very well suited for using it as an external program
+for creating @emph{smart} mail folders, which represent certain mail
+searches.
+
+@node nnmairix requirements
+@subsection nnmairix requirements
+
+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.
+
+Additionally, @code{nnmairix} only supports the following Gnus back
+ends: @code{nnml}, @code{nnmaildir}, and @code{nnimap}. You must use
+one of these back ends for using @code{nnmairix}. Other back ends, like
+@code{nnmbox}, @code{nnfolder} or @code{nnmh}, won't work.
+
+If you absolutely must use mbox and still want to use @code{nnmairix},
+you can set up a local @acronym{IMAP} server, which you then access via
+@code{nnimap}. This is a rather massive setup for accessing some mbox
+files, so just change to MH or Maildir already... However, if you're
+really, really passionate about using mbox, you might want to look into
+the package @file{mairix.el}, which comes with Emacs 23.
+
+@node What nnmairix does
+@subsection What nnmairix does
+
+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
+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.
+
+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
+automatically update themselves by calling mairix.
+
+You might ask why you need @code{nnmairix} at all, since mairix already
+creates the group, populates it with links to the mails so that you can
+then access it with Gnus, right? Well, this @emph{might} work, but often
+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
+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.
+
+@code{nnmairix} is not really a mail back end---it's actually more like
+a wrapper, sitting between a ``real'' mail back end where mairix stores
+the searches and the Gnus front end. You can choose between three
+different mail back ends for the mairix folders: @code{nnml},
+@code{nnmaildir} or @code{nnimap}. @code{nnmairix} will call the mairix
+binary so that the search results are stored in folders named
+@code{zz_mairix-<NAME>-<NUMBER>} on this mail back end, but it will
+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
+@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
+mairix remotely on an IMAP server with @code{nnimap}---here the mairix
+folders and your other mail must be on the same @code{nnimap} back end.
+
+@node Setting up mairix
+@subsection Setting up mairix
+
+First: create a backup of your mail folders (@pxref{nnmairix caveats}).
+
+Setting up mairix is easy: simply create a @file{.mairixrc} file with
+(at least) the following entries:
+
+@example
+# Your Maildir/MH base folder
+base=~/Maildir
+@end example
+
+This is the base folder for your mails. All the following directories
+are relative to this base folder. If you want to use @code{nnmairix}
+with @code{nnimap}, this base directory has to point to the mail
+directory where the @acronym{IMAP} server stores the mail folders!
+
+@example
+maildir= ... your maildir folders which should be indexed ...
+mh= ... your nnml/mh folders which should be indexed ...
+mbox = ... your mbox files which should be indexed ...
+@end example
+
+This specifies all your mail folders and mbox files (relative to the
+base directory!) you want to index with mairix. Note that the
+@code{nnml} back end saves mails in MH format, so you have to put those
+directories in the @code{mh} line. See the example at the end of this
+section and mairixrc's man-page for further details.
+
+@example
+omit=zz_mairix-*
+@end example
+
+@vindex nnmairix-group-prefix
+This should make sure that you don't accidentally index the mairix
+search results. You can change the prefix of these folders with the
+variable @code{nnmairix-group-prefix}.
+
+@example
+mformat= ... 'maildir' or 'mh' ...
+database= ... location of database file ...
+@end example
+
+The @code{format} setting specifies the output format for the mairix
+search folder. Set this to @code{mh} if you want to access search results
+with @code{nnml}. Otherwise choose @code{maildir}.
+
+To summarize, here is my shortened @file{.mairixrc} file as an example:
+
+@example
+base=~/Maildir
+maildir=.personal:.work:.logcheck:.sent
+mh=../Mail/nnml/*...
+mbox=../mboxmail/mailarchive_year*
+mformat=maildir
+omit=zz_mairix-*
+database=~/.mairixdatabase
+@end example
+
+In this case, the base directory is @file{~/Maildir}, where all my Maildir
+folders are stored. As you can see, the folders are separated by
+colons. If you wonder why every folder begins with a dot: this is
+because I use Dovecot as @acronym{IMAP} server, which again uses
+@code{Maildir++} folders. For testing nnmairix, I also have some
+@code{nnml} mail, which is saved in @file{~/Mail/nnml}. Since this has
+to be specified relative to the @code{base} directory, the @code{../Mail}
+notation is needed. Note that the line ends in @code{*...}, which means
+to recursively scan all files under this directory. Without the three
+dots, the wildcard @code{*} will not work recursively. I also have some
+old mbox files with archived mail lying around in @file{~/mboxmail}.
+The other lines should be obvious.
+
+See the man page for @code{mairixrc} for details and further options,
+especially regarding wildcard usage, which may be a little different
+than you are used to.
+
+Now simply call @code{mairix} to create the index for the first time.
+Note that this may take a few minutes, but every following index will do
+the updates incrementally and hence is very fast.
+
+@node Configuring nnmairix
+@subsection Configuring nnmairix
+
+In group mode, type @kbd{G b c}
+(@code{nnmairix-create-server-and-default-group}). This will ask you for all
+necessary information and create a @code{nnmairix} server as a foreign
+server. You will have to specify the following:
+
+@itemize @bullet
+
+@item
+The @strong{name} of the @code{nnmairix} server---choose whatever you
+want.
+
+@item
+The name of the @strong{back end server} where mairix should store its
+searches. This must be a full server name, like @code{nnml:mymail}.
+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}
+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
+@code{nnml-get-new-mail} to @code{nil}, or you might lose mail
+(@pxref{nnmairix caveats}). If you want to use mairix remotely on an
+@acronym{IMAP} server, you have to choose the corresponding
+@code{nnimap} server here.
+
+@item
+@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
+@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
+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
+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.
+
+@end itemize
+
+@node nnmairix keyboard shortcuts
+@subsection nnmairix keyboard shortcuts
+
+In group mode:
+
+@table @kbd
+
+@item G b c
+@kindex G b c (Group)
+@findex nnmairix-create-server-and-default-group
+Creates @code{nnmairix} server and default search group for this server
+(@code{nnmairix-create-server-and-default-group}). You should have done
+this by now (@pxref{Configuring nnmairix}).
+
+@item G b s
+@kindex G b s (Group)
+@findex nnmairix-search
+Prompts for query which is then sent to the mairix binary. Search
+results are put into the default search group which is automatically
+displayed (@code{nnmairix-search}).
+
+@item G b m
+@kindex G b m (Group)
+@findex nnmairix-widget-search
+Allows you to create a mairix search or a permanent group more
+comfortably using graphical widgets, similar to a customization
+group. Just try it to see how it works (@code{nnmairix-widget-search}).
+
+@item G b i
+@kindex G b i (Group)
+@findex nnmairix-search-interactive
+Another command for creating a mairix query more comfortably, but uses
+only the minibuffer (@code{nnmairix-search-interactive}).
+
+@item G b g
+@kindex G b g (Group)
+@findex nnmairix-create-search-group
+Creates a permanent group which is associated with a search query
+(@code{nnmairix-create-search-group}). The @code{nnmairix} back end
+automatically calls mairix when you update this group with @kbd{g} or
+@kbd{M-g}.
+
+@item G b q
+@kindex G b q (Group)
+@findex nnmairix-group-change-query-this-group
+Changes the search query for the @code{nnmairix} group under cursor
+(@code{nnmairix-group-change-query-this-group}).
+
+@item G b t
+@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
+(@code{nnmairix-group-toggle-threads-this-group}).
+
+@item G b u
+@kindex G b u (Group)
+@findex nnmairix-update-database
+@vindex nnmairix-mairix-update-options
+Calls mairix binary for updating the database
+(@code{nnmairix-update-database}). The default parameters are @code{-F}
+and @code{-Q} for making this as fast as possible (see variable
+@code{nnmairix-mairix-update-options} for defining these default
+options).
+
+@item G b r
+@kindex G b r (Group)
+@findex nnmairix-group-toggle-readmarks-this-group
+Keep articles in this @code{nnmairix} group always read or unread, or leave the
+marks unchanged (@code{nnmairix-group-toggle-readmarks-this-group}).
+
+@item G b d
+@kindex G b d (Group)
+@findex nnmairix-group-delete-recreate-this-group
+Recreate @code{nnmairix} group on the ``real'' mail back end
+(@code{nnmairix-group-delete-recreate-this-group}). You can do this if
+you always get wrong article counts with a @code{nnmairix} group.
+
+@item G b a
+@kindex G b a (Group)
+@findex nnmairix-group-toggle-allowfast-this-group
+Toggles the @code{allow-fast} parameters for group under cursor
+(@code{nnmairix-group-toggle-allowfast-this-group}). The default
+behavior of @code{nnmairix} is to do a mairix search every time you
+update or enter the group. With the @code{allow-fast} parameter set,
+mairix will only be called when you explicitly update the group, but not
+upon entering. This makes entering the group faster, but it may also
+lead to dangling symlinks if something changed between updating and
+entering the group which is not yet in the mairix database.
+
+@item G b p
+@kindex G b p (Group)
+@findex nnmairix-group-toggle-propmarks-this-group
+Toggle marks propagation for this group
+(@code{nnmairix-group-toggle-propmarks-this-group}). (@pxref{Propagating
+marks}).
+
+@item G b o
+@kindex G b o (Group)
+@findex nnmairix-propagate-marks
+Manually propagate marks (@code{nnmairix-propagate-marks}); needed only when
+@code{nnmairix-propagate-marks-upon-close} is set to @code{nil}.
+
+@end table
+
+In summary mode:
+
+@table @kbd
+
+@item $ m
+@kindex $ m (Summary)
+@findex nnmairix-widget-search-from-this-article
+Allows you to create a mairix query or group based on the current
+message using graphical widgets (same as @code{nnmairix-widget-search})
+(@code{nnmairix-widget-search-from-this-article}).
+
+@item $ g
+@kindex $ g (Summary)
+@findex nnmairix-create-search-group-from-message
+Interactively creates a new search group with query based on the current
+message, but uses the minibuffer instead of graphical widgets
+(@code{nnmairix-create-search-group-from-message}).
+
+@item $ t
+@kindex $ t (Summary)
+@findex nnmairix-search-thread-this-article
+Searches thread for the current article
+(@code{nnmairix-search-thread-this-article}). This is effectively a
+shortcut for calling @code{nnmairix-search} with @samp{m:msgid} of the
+current article and enabled threads.
+
+@item $ f
+@kindex $ f (Summary)
+@findex nnmairix-search-from-this-article
+Searches all messages from sender of the current article
+(@code{nnmairix-search-from-this-article}). This is a shortcut for
+calling @code{nnmairix-search} with @samp{f:From}.
+
+@item $ o
+@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
+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.
+
+@item $ u
+@kindex $ u (Summary)
+@findex nnmairix-remove-tick-mark-original-article
+Remove possibly existing tick mark from original article
+(@code{nnmairix-remove-tick-mark-original-article}). (@pxref{nnmairix
+tips and tricks}).
+
+@end table
+
+@node Propagating marks
+@subsection Propagating marks
+
+First of: you really need a patched mairix binary for using the marks
+propagation feature efficiently. Otherwise, you would have to update
+the mairix database all the time. You can get the patch at
+
+@uref{http://www.randomsample.de/mairix-maildir-patch.tar}
+
+You need the mairix v0.21 source code for this patch; everything else
+is explained in the accompanied readme file. If you don't want to use
+marks propagation, you don't have to apply these patches, but they also
+fix some annoyances regarding changing maildir flags, so it might still
+be useful to you.
+
+With the patched mairix binary, you can use @code{nnmairix} as an
+alternative to mail splitting (@pxref{Fancy Mail Splitting}). For
+example, instead of splitting all mails from @samp{david@@foobar.com}
+into a group, you can simply create a search group with the query
+@samp{f:david@@foobar.com}. This is actually what ``smart folders'' are
+all about: simply put everything in one mail folder and dynamically
+create searches instead of splitting. This is more flexible, since you
+can dynamically change your folders any time you want to. This also
+implies that you will usually read your mails in the @code{nnmairix}
+groups instead of your ``real'' mail groups.
+
+There is one problem, though: say you got a new mail from
+@samp{david@@foobar.com}; it will now show up in two groups, the
+``real'' group (your INBOX, for example) and in the @code{nnmairix}
+search group (provided you have updated the mairix database). Now you
+enter the @code{nnmairix} group and read the mail. The mail will be
+marked as read, but only in the @code{nnmairix} group---in the ``real''
+mail group it will be still shown as unread.
+
+You could now catch up the mail group (@pxref{Group Data}), but this is
+tedious and error prone, since you may overlook mails you don't have
+created @code{nnmairix} groups for. Of course, you could first use
+@code{nnmairix-goto-original-article} (@pxref{nnmairix keyboard
+shortcuts}) and then read the mail in the original group, but that's
+even more cumbersome.
+
+Clearly, the easiest way would be if marks could somehow be
+automatically set for the original article. This is exactly what
+@emph{marks propagation} is about.
+
+Marks propagation is deactivated by default. You can activate it for a
+certain @code{nnmairix} group with
+@code{nnmairix-group-toggle-propmarks-this-group} (bound to @kbd{G b
+p}). This function will warn you if you try to use it with your default
+search group; the reason is that the default search group is used for
+temporary searches, and it's easy to accidentally propagate marks from
+this group. However, you can ignore this warning if you really want to.
+
+With marks propagation enabled, all the marks you set in a @code{nnmairix}
+group should now be propagated to the original article. For example,
+you can now tick an article (by default with @kbd{!}) and this mark should
+magically be set for the original article, too.
+
+A few more remarks which you may or may not want to know:
+
+@vindex nnmairix-propagate-marks-upon-close
+Marks will not be set immediately, but only upon closing a group. This
+not only makes marks propagation faster, it also avoids problems with
+dangling symlinks when dealing with maildir files (since changing flags
+will change the file name). You can also control when to propagate marks
+via @code{nnmairix-propagate-marks-upon-close} (see the doc-string for
+details).
+
+Obviously, @code{nnmairix} will have to look up the original group for every
+article you want to set marks for. If available, @code{nnmairix} will first use
+the registry for determining the original group. The registry is very
+fast, hence you should really, really enable the registry when using
+marks propagation. If you don't have to worry about RAM and disc space,
+set @code{gnus-registry-max-entries} to a large enough value; to be on
+the safe side, choose roughly the amount of mails you index with mairix.
+
+@vindex nnmairix-only-use-registry
+If you don't want to use the registry or the registry hasn't seen the
+original article yet, @code{nnmairix} will use an additional mairix
+search for determining the file name of the article. This, of course, is
+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
+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
+immediately contradict myself, let me mention that it WON'T work with
+@code{nnmaildir}, since @code{nnmaildir} stores the marks externally and
+not in the file name. Therefore, propagating marks to @code{nnmairix}
+groups will usually only work if you use an IMAP server which uses
+maildir as its file format.
+
+@vindex nnmairix-propagate-marks-to-nnmairix-groups
+If you work with this setup, just set
+@code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t} and see what
+happens. If you don't like what you see, just set it to @code{nil} again. One
+problem might be that you get a wrong number of unread articles; this
+usually happens when you delete or expire articles in the original
+groups. When this happens, you can recreate the @code{nnmairix} group on the
+back end using @kbd{G b d}.
+
+@node nnmairix tips and tricks
+@subsection nnmairix tips and tricks
+
+@itemize
+@item
+Checking Mail
+
+@findex nnmairix-update-groups
+I put all my important mail groups at group level 1. The mairix groups
+have group level 5, so they do not get checked at start up (@pxref{Group
+Levels}).
+
+I use the following to check for mails:
+
+@lisp
+(defun my-check-mail-mairix-update (level)
+ (interactive "P")
+ ;; if no prefix given, set level=1
+ (gnus-group-get-new-news (or level 1))
+ (nnmairix-update-groups "mairixsearch" t t)
+ (gnus-group-list-groups))
+
+(define-key gnus-group-mode-map "g" 'my-check-mail-mairix-update)
+@end lisp
+
+Instead of @samp{"mairixsearch"} use the name of your @code{nnmairix}
+server. See the doc string for @code{nnmairix-update-groups} for
+details.
+
+@item
+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
+@samp{F:f} as query and do not include threads.
+
+Now activate marks propagation for this group by using @kbd{G b p}. Then
+activate the always-unread feature by using @kbd{G b r} twice.
+
+So far so good---but how do you remove the tick marks in the @code{nnmairix}
+group? There are two options: You may simply use
+@code{nnmairix-remove-tick-mark-original-article} (bound to @kbd{$ u}) to remove
+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.
+
+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
+mairix database and updated the group. Fortunately, there is a function
+for doing exactly that: @code{nnmairix-update-groups}. See the previous code
+snippet and the doc string for details.
+
+@item
+Dealing with auto-subscription of mail groups
+
+As described before, all @code{nnmairix} groups are in fact stored on
+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
+@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
+@code{gnus-auto-subscribed-groups} to @code{nil} (@pxref{Filtering New
+Groups}), or if you like to keep this feature use the following kludge
+for turning it off for all groups beginning with @samp{zz_}:
+
+@lisp
+(setq gnus-auto-subscribed-groups
+ "^\\(nnml\\|nnfolder\\|nnmbox\\|nnmh\\|nnbabyl\\|nnmaildir\\).*:\\([^z]\\|z$\\|\\z[^z]\\|zz$\\|zz[^_]\\|zz_$\\).*")
+@end lisp
+
+@end itemize
+
+@node nnmairix caveats
+@subsection nnmairix caveats
+
+@itemize
+@item
+You can create a secondary @code{nnml} server just for nnmairix, but then
+you have to explicitly set the corresponding server variable
+@code{nnml-get-new-mail} to @code{nil}. Otherwise, new mail might get
+put into this secondary server (and would never show up again). Here's
+an example server definition:
+
+@lisp
+(nnml "mairix" (nnml-directory "mairix") (nnml-get-new-mail nil))
+@end lisp
+
+(The @code{nnmaildir} back end also has a server variabe
+@code{get-new-mail}, but its default value is @code{nil}, so you don't
+have to explicitly set it if you use a @code{nnmaildir} server just for
+mairix.)
+
+@item
+If you use the Gnus registry: don't use the registry with
+@code{nnmairix} groups (put them in
+@code{gnus-registry-unfollowed-groups}). Be @emph{extra careful} if
+you use @code{gnus-registry-split-fancy-with-parent}; mails which are
+split into @code{nnmairix} groups are usually gone for good as soon as
+you check the group for new mail (yes, it has happened to me...).
+
+@item
+Therefore: @emph{Never ever} put ``real'' mails into @code{nnmairix}
+groups (you shouldn't be able to, anyway).
+
+@item
+If you use the Gnus agent (@pxref{Gnus Unplugged}): don't agentize
+@code{nnmairix} groups (though I have no idea what happens if you do).
+
+@item
+mairix does only support us-ascii characters.
+
+@item
+@code{nnmairix} uses a rather brute force method to force Gnus to
+completely reread the group on the mail back end after mairix was
+called---it simply deletes and re-creates the group on the mail
+back end. So far, this has worked for me without any problems, and I
+don't see how @code{nnmairix} could delete other mail groups than its
+own, but anyway: you really should have a backup of your mail
+folders.
+
+@item
+All necessary information is stored in the group parameters
+(@pxref{Group Parameters}). This has the advantage that no active file
+is needed, but also implies that when you kill a @code{nnmairix} group,
+it is gone for good.
+
+@item
+@findex nnmairix-purge-old-groups
+If you create and kill a lot of @code{nnmairix} groups, the
+``zz_mairix-*'' groups will accumulate on the mail back end server. To
+delete old groups which are no longer needed, call
+@code{nnmairix-purge-old-groups}. Note that this assumes that you don't
+save any ``real'' mail in folders of the form
+@code{zz_mairix-<NAME>-<NUMBER>}. You can change the prefix of
+@code{nnmairix} groups by changing the variable
+@code{nnmairix-group-prefix}.
+
+@item
+The following only applies if you @emph{don't} use the mentioned patch
+for mairix (@pxref{Propagating marks}):
+
+A problem can occur when using @code{nnmairix} with maildir folders and
+comes with the fact that maildir stores mail flags like @samp{Seen} or
+@samp{Replied} by appending chars @samp{S} and @samp{R} to the message
+file name, respectively. This implies that currently you would have to
+update the mairix database not only when new mail arrives, but also when
+mail flags are changing. The same applies to new mails which are indexed
+while they are still in the @samp{new} folder but then get moved to
+@samp{cur} when Gnus has seen the mail. If you don't update the database
+after this has happened, a mairix query can lead to symlinks pointing to
+non-existing files. In Gnus, these messages will usually appear with
+``(none)'' entries in the header and can't be accessed. If this happens
+to you, using @kbd{G b u} and updating the group will usually fix this.
+
+@end itemize
+
@iftex
@iflatex
@chapter Message
diff --git a/doc/misc/gpl.texi b/doc/misc/gpl.texi
index 5b416d3cb4..1908d1f8f9 100644
--- a/doc/misc/gpl.texi
+++ b/doc/misc/gpl.texi
@@ -715,7 +715,3 @@ library, you may consider it more useful to permit linking proprietary
applications with the library. If this is what you want to do, use
the GNU Lesser General Public License instead of this License. But
first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}.
-
-@ignore
- arch-tag: 0c4a2556-f87e-464f-9b1d-efd920fcaf67
-@end ignore
diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi
index 0618f110c3..be518db646 100644
--- a/doc/misc/idlwave.texi
+++ b/doc/misc/idlwave.texi
@@ -22,8 +22,7 @@ Emacs, and interacting with an IDL shell run as a subprocess.
This is edition @value{EDITION} of the IDLWAVE User Manual for IDLWAVE
@value{VERSION}.
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1999-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -4295,7 +4294,3 @@ IDLWAVE is @samp{fsf-compat, xemacs-base, mail-lib}.
@printindex cp
@bye
-
-@ignore
- arch-tag: f1d73958-1423-4127-b8aa-f7b953d64492
-@end ignore
diff --git a/doc/misc/info.texi b/doc/misc/info.texi
index 97cc17812e..68390a2f0c 100644
--- a/doc/misc/info.texi
+++ b/doc/misc/info.texi
@@ -14,8 +14,7 @@
This file describes how to use Info, the on-line, menu-driven GNU
documentation system.
-Copyright @copyright{} 1989, 1992, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+Copyright @copyright{} 1989, 1992, 1996-2011
Free Software Foundation, Inc.
@quotation
@@ -1508,7 +1507,3 @@ topics discussed in this document.
@printindex cp
@bye
-
-@ignore
- arch-tag: 965c1638-01d6-4156-9227-b10418b9d8e8
-@end ignore
diff --git a/doc/misc/mairix-el.texi b/doc/misc/mairix-el.texi
index 578164e8e5..4235e825fb 100644
--- a/doc/misc/mairix-el.texi
+++ b/doc/misc/mairix-el.texi
@@ -6,7 +6,7 @@
@documentencoding ISO-8859-1
@copying
-Copyright @copyright{} 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 2008-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -349,7 +349,3 @@ And that's it!
@bye
-
-@ignore
- arch-tag: cb81470f-e080-489d-bb67-0d11516b63b9
-@end ignore
diff --git a/doc/misc/makefile.w32-in b/doc/misc/makefile.w32-in
index fd3b1476b5..1e497fe309 100644
--- a/doc/misc/makefile.w32-in
+++ b/doc/misc/makefile.w32-in
@@ -1,7 +1,6 @@
#### -*- Makefile -*- for documentation other than the Emacs manual.
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 2003-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -32,7 +31,8 @@ infodir = $(srcdir)/../../info
emacsdir = $(srcdir)/../emacs
# The makeinfo program is part of the Texinfo distribution.
-MAKEINFO = makeinfo --force -I$(emacsdir)
+MAKEINFO = makeinfo
+MAKEINFO_OPTS = --force -I$(emacsdir)
MULTI_INSTALL_INFO = $(srcdir)\..\..\nt\multi-install-info.bat
INFO_TARGETS = $(infodir)/ccmode \
$(infodir)/cl $(infodir)/dbus $(infodir)/dired-x \
@@ -47,7 +47,8 @@ INFO_TARGETS = $(infodir)/ccmode \
$(infodir)/org $(infodir)/url $(infodir)/speedbar \
$(infodir)/tramp $(infodir)/ses $(infodir)/smtpmail \
$(infodir)/flymake $(infodir)/newsticker $(infodir)/rcirc \
- $(infodir)/erc $(infodir)/remember $(infodir)/nxml-mode \
+ $(infodir)/erc $(infodir)/ert \
+ $(infodir)/remember $(infodir)/nxml-mode \
$(infodir)/epa $(infodir)/mairix-el $(infodir)/sasl \
$(infodir)/auth $(infodir)/eieio $(infodir)/ede \
$(infodir)/semantic $(infodir)/edt
@@ -58,7 +59,8 @@ DVI_TARGETS = calc.dvi cc-mode.dvi cl.dvi dbus.dvi dired-x.dvi \
ada-mode.dvi autotype.dvi idlwave.dvi eudc.dvi ebrowse.dvi \
pcl-cvs.dvi woman.dvi eshell.dvi org.dvi url.dvi \
speedbar.dvi tramp.dvi ses.dvi smtpmail.dvi flymake.dvi \
- newsticker.dvi rcirc.dvi erc.dvi remember.dvi nxml-mode.dvi \
+ newsticker.dvi rcirc.dvi erc.dvi ert.dvi \
+ remember.dvi nxml-mode.dvi \
epa.dvi mairix-el.dvi sasl.dvi auth.dvi eieio.dvi ede.dvi \
semantic.dvi edt.dvi
INFOSOURCES = info.texi
@@ -70,7 +72,7 @@ INFOSOURCES = info.texi
TEXI2DVI = texi2dvi
ENVADD = $(srcdir)\..\..\nt\envadd.bat "TEXINPUTS=$(srcdir);$(TEXINPUTS)" \
- "MAKEINFO=$(MAKEINFO) -I$(srcdir)" /C
+ "MAKEINFO=$(MAKEINFO) $(MAKEINFO_OPTS)" /C
info: $(INFO_TARGETS)
@@ -92,65 +94,65 @@ $(infodir)/dir:
# texi filename, contrary to GNU standards.
$(infodir)/info: $(INFOSOURCES)
- $(MAKEINFO) --no-split -o $@ info.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) --no-split -o $@ info.texi
info.dvi: $(INFOSOURCES)
$(ENVADD) $(TEXI2DVI) $(srcdir)/info.texi
$(infodir)/ccmode: cc-mode.texi
- $(MAKEINFO) cc-mode.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) cc-mode.texi
cc-mode.dvi: cc-mode.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/cc-mode.texi
$(infodir)/ada-mode: ada-mode.texi
- $(MAKEINFO) ada-mode.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) ada-mode.texi
ada-mode.dvi: ada-mode.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/ada-mode.texi
$(infodir)/pcl-cvs: pcl-cvs.texi
- $(MAKEINFO) pcl-cvs.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) pcl-cvs.texi
pcl-cvs.dvi: pcl-cvs.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/pcl-cvs.texi
$(infodir)/eshell: eshell.texi
- $(MAKEINFO) eshell.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) eshell.texi
eshell.dvi: eshell.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/eshell.texi
$(infodir)/cl: cl.texi
- $(MAKEINFO) cl.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) cl.texi
cl.dvi: cl.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/cl.texi
$(infodir)/dbus: dbus.texi
- $(MAKEINFO) dbus.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) dbus.texi
dbus.dvi: dbus.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/dbus.texi
$(infodir)/dired-x: dired-x.texi
- $(MAKEINFO) dired-x.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) dired-x.texi
dired-x.dvi: dired-x.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/dired-x.texi
$(infodir)/ediff: ediff.texi
- $(MAKEINFO) ediff.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) ediff.texi
ediff.dvi: ediff.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/ediff.texi
$(infodir)/flymake: flymake.texi
- $(MAKEINFO) flymake.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) flymake.texi
flymake.dvi: flymake.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/flymake.texi
$(infodir)/forms: forms.texi
- $(MAKEINFO) forms.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) forms.texi
forms.dvi: forms.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/forms.texi
# gnus/message/emacs-mime/sieve/pgg are part of Gnus:
$(infodir)/gnus: gnus.texi
- $(MAKEINFO) gnus.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) gnus.texi
gnus.dvi: gnus.texi
sed -e "/@iflatex/,/@end iflatex/d" $(srcdir)/gnus.texi > gnustmp.texi
$(ENVADD) $(TEXI2DVI) gnustmp.texi
@@ -158,77 +160,77 @@ gnus.dvi: gnus.texi
rm gnustmp.*
#
$(infodir)/message: message.texi
- $(MAKEINFO) message.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) message.texi
message.dvi: message.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/message.texi
#
$(infodir)/emacs-mime: emacs-mime.texi
- $(MAKEINFO) --enable-encoding emacs-mime.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) --enable-encoding emacs-mime.texi
emacs-mime.dvi: emacs-mime.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/emacs-mime.texi
#
$(infodir)/sieve: sieve.texi
- $(MAKEINFO) sieve.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) sieve.texi
sieve.dvi: sieve.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/sieve.texi
#
$(infodir)/pgg: pgg.texi
- $(MAKEINFO) pgg.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) pgg.texi
pgg.dvi: pgg.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/pgg.texi
$(infodir)/mh-e: mh-e.texi
- $(MAKEINFO) mh-e.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) mh-e.texi
mh-e.dvi: mh-e.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/mh-e.texi
$(infodir)/reftex: reftex.texi
- $(MAKEINFO) reftex.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) reftex.texi
reftex.dvi: reftex.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/reftex.texi
$(infodir)/remember: remember.texi
- $(MAKEINFO) remember.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) remember.texi
remember.dvi: remember.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/remember.texi
$(infodir)/sasl: sasl.texi
- $(MAKEINFO) sasl.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) sasl.texi
sasl.dvi: sasl.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/sasl.texi
$(infodir)/sc: sc.texi
- $(MAKEINFO) sc.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) sc.texi
sc.dvi: sc.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/sc.texi
$(infodir)/vip: vip.texi
- $(MAKEINFO) vip.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) vip.texi
vip.dvi: vip.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/vip.texi
$(infodir)/viper: viper.texi
- $(MAKEINFO) viper.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) viper.texi
viper.dvi: viper.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/viper.texi
$(infodir)/widget: widget.texi
- $(MAKEINFO) widget.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) widget.texi
widget.dvi: widget.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/widget.texi
$(infodir)/efaq: faq.texi $(emacsdir)/emacsver.texi
- $(MAKEINFO) faq.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) faq.texi
faq.dvi: faq.texi $(emacsdir)/emacsver.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/faq.texi
$(infodir)/autotype: autotype.texi
- $(MAKEINFO) autotype.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) autotype.texi
autotype.dvi: autotype.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/autotype.texi
$(infodir)/calc: calc.texi $(emacsdir)/emacsver.texi
- $(MAKEINFO) calc.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) calc.texi
calc.dvi: calc.texi $(emacsdir)/emacsver.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/calc.texi
@@ -236,107 +238,112 @@ calc.dvi: calc.texi $(emacsdir)/emacsver.texi
# This is produced with --no-split to avoid making files whose
# names clash on DOS 8+3 filesystems
$(infodir)/idlwave: idlwave.texi
- $(MAKEINFO) --no-split idlwave.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) --no-split idlwave.texi
idlwave.dvi: idlwave.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/idlwave.texi
$(infodir)/eudc: eudc.texi
- $(MAKEINFO) eudc.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) eudc.texi
eudc.dvi: eudc.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/eudc.texi
$(infodir)/ebrowse: ebrowse.texi
- $(MAKEINFO) ebrowse.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) ebrowse.texi
ebrowse.dvi: ebrowse.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/ebrowse.texi
$(infodir)/woman: woman.texi
- $(MAKEINFO) woman.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) woman.texi
woman.dvi: woman.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/woman.texi
$(infodir)/speedbar: speedbar.texi
- $(MAKEINFO) speedbar.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) speedbar.texi
speedbar.dvi: speedbar.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/speedbar.texi
$(infodir)/tramp: tramp.texi
- $(MAKEINFO) tramp.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) tramp.texi
tramp.dvi: tramp.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/tramp.texi
$(infodir)/ses: ses.texi
- $(MAKEINFO) ses.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) ses.texi
ses.dvi: ses.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/ses.texi
$(infodir)/smtpmail: smtpmail.texi
- $(MAKEINFO) smtpmail.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) smtpmail.texi
smtpmail.dvi: smtpmail.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/smtpmail.texi
$(infodir)/org: org.texi
- $(MAKEINFO) org.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) org.texi
org.dvi: org.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/org.texi
$(infodir)/url: url.texi
- $(MAKEINFO) url.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) url.texi
url.dvi: url.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/url.texi
$(infodir)/newsticker: newsticker.texi
- $(MAKEINFO) newsticker.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) newsticker.texi
newsticker.dvi: newsticker.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/newsticker.texi
$(infodir)/nxml-mode: nxml-mode.texi
- $(MAKEINFO) nxml-mode.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) nxml-mode.texi
nxml-mod.dvi: nxml-mode.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/nxml-mode.texi
$(infodir)/rcirc: rcirc.texi
- $(MAKEINFO) rcirc.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) rcirc.texi
rcirc.dvi: rcirc.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/rcirc.texi
$(infodir)/erc: erc.texi
- $(MAKEINFO) erc.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) erc.texi
erc.dvi: erc.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/erc.texi
+$(infodir)/ert: ert.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) ert.texi
+ert.dvi: ert.texi
+ $(ENVADD) $(TEXI2DVI) $(srcdir)/ert.texi
+
$(infodir)/epa: epa.texi
- $(MAKEINFO) epa.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) epa.texi
epa.dvi: epa.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/epa.texi
$(infodir)/mairix-el: mairix-el.texi
- $(MAKEINFO) mairix-el.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) mairix-el.texi
mairix-el.dvi: mairix-el.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/mairix-el.texi
$(infodir)/auth: auth.texi
- $(MAKEINFO) auth.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) auth.texi
auth.dvi: auth.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/auth.texi
$(infodir)/eieio: eieio.texi
- $(MAKEINFO) eieio.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) eieio.texi
eieio.dvi: eieio.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/eieio.texi
$(infodir)/ede: ede.texi
- $(MAKEINFO) ede.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) ede.texi
ede.dvi: ede.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/ede.texi
$(infodir)/semantic: semantic.texi
- $(MAKEINFO) semantic.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) semantic.texi
semantic.dvi: semantic.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/semantic.texi
$(infodir)/edt: edt.texi
- $(MAKEINFO) edt.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) edt.texi
edt.dvi: edt.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/edt.texi
@@ -362,7 +369,7 @@ clean: mostlyclean
$(infodir)/url* $(infodir)/org* \
$(infodir)/flymake* $(infodir)/newsticker* \
$(infodir)/sieve* $(infodir)/pgg* \
- $(infodir)/erc* $(infodir)/rcirc* \
+ $(infodir)/erc* $(infodir)/ert* $(infodir)/rcirc* \
$(infodir)/remember* $(infodir)/nxml-mode* \
$(infodir)/epa* $(infodir)/sasl* \
$(infodir)/mairix-el* $(infodir)/auth* \
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index 1fec34f147..34bd14f2a8 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -8,8 +8,7 @@
@copying
This file documents Message, the Emacs message composition mode.
-Copyright @copyright{} 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1996-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -886,6 +885,10 @@ Manual}).
@cindex internationalized domain names
@cindex non-ascii domain names
+@acronym{IDNA} is a standard way to encode non-@acronym{ASCII} domain
+names into a readable @acronym{ASCII} string. The details can be
+found in RFC 3490.
+
Message is a @acronym{IDNA}-compliant posting agent. The user
generally doesn't have to do anything to make the @acronym{IDNA}
happen---Message will encode non-@acronym{ASCII} domain names in @code{From},
diff --git a/doc/misc/mh-e.texi b/doc/misc/mh-e.texi
index a06a723111..546f9e629f 100644
--- a/doc/misc/mh-e.texi
+++ b/doc/misc/mh-e.texi
@@ -24,8 +24,7 @@
This is version @value{VERSION}@value{EDITION} of @cite{The MH-E
Manual}, last updated @value{UPDATED}.
-Copyright @copyright{} 1995, 2001, 2002, 2003, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1995, 2001-2003, 2005-2011 Free Software Foundation, Inc.
@c This dual license has been agreed upon by the FSF.
diff --git a/doc/misc/newsticker.texi b/doc/misc/newsticker.texi
index 5c97577213..fadcf1ea17 100644
--- a/doc/misc/newsticker.texi
+++ b/doc/misc/newsticker.texi
@@ -13,7 +13,7 @@
This manual is for Newsticker (version @value{VERSION}, @value{UPDATED}).
@noindent
-Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009, 2010
+Copyright @copyright{} 2004-2011
Free Software Foundation, Inc.
@quotation
@@ -315,7 +315,3 @@ Byte-compiling newsticker.el is recommended.
@bye
-
-@ignore
- arch-tag: 7a4de539-117c-4658-b799-0b9e3d0ccec0
-@end ignore
diff --git a/doc/misc/nxml-mode.texi b/doc/misc/nxml-mode.texi
index d076f0dd82..b2003a139d 100644
--- a/doc/misc/nxml-mode.texi
+++ b/doc/misc/nxml-mode.texi
@@ -8,7 +8,7 @@
This manual documents nxml-mode, an Emacs major mode for editing
XML with RELAX NG support.
-Copyright @copyright{} 2007, 2008, 2009, 2010
+Copyright @copyright{} 2007-2011
Free Software Foundation, Inc.
@quotation
@@ -70,8 +70,8 @@ Once in nXML mode, you can type @kbd{C-h m} for basic information on the
mode.
The @file{etc/nxml} directory in the Emacs distribution contains some data
-files used by nXML mode, and includes two files (@file{test.valid.xml} and
-@file{test.invalid.xml}) that provide examples of valid and invalid XML
+files used by nXML mode, and includes two files (@file{test-valid.xml} and
+@file{test-invalid.xml}) that provide examples of valid and invalid XML
documents.
To get validation and schema-sensitive editing, you need a RELAX NG Compact
diff --git a/doc/misc/org.texi b/doc/misc/org.texi
index 5a676786fd..7618bad1f7 100644
--- a/doc/misc/org.texi
+++ b/doc/misc/org.texi
@@ -265,8 +265,7 @@
@copying
This manual is for Org version @value{VERSION}.
-Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009, 2010
-Free Software Foundation, Inc.
+Copyright @copyright{} 2004-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -14759,10 +14758,6 @@ org-customize @key{RET}} and then click yourself through the tree.
@bye
-@ignore
- arch-tag: 7893d1Fe-cc57-4d13-b5e5-f494a1CBC7ac
-@end ignore
-
@c Local variables:
@c fill-column: 77
@c indent-tabs-mode: nil
diff --git a/doc/misc/pcl-cvs.texi b/doc/misc/pcl-cvs.texi
index e4adf47ddb..7301bf3747 100644
--- a/doc/misc/pcl-cvs.texi
+++ b/doc/misc/pcl-cvs.texi
@@ -6,8 +6,7 @@
@c %**end of header
@copying
-Copyright @copyright{} 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+Copyright @copyright{} 1991-2011
Free Software Foundation, Inc.
@quotation
@@ -1432,7 +1431,3 @@ this manual.
@printindex ky
@bye
-
-@ignore
- arch-tag: 5c7178ce-56fa-40b0-abd7-f4a09758b235
-@end ignore
diff --git a/doc/misc/pgg.texi b/doc/misc/pgg.texi
index eefada00d9..9bdb1eaa21 100644
--- a/doc/misc/pgg.texi
+++ b/doc/misc/pgg.texi
@@ -8,8 +8,7 @@
This file describes PGG @value{VERSION}, an Emacs interface to various
PGP implementations.
-Copyright @copyright{} 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright @copyright{} 2001, 2003-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/rcirc.texi b/doc/misc/rcirc.texi
index c27cf4dc18..6402c91c57 100644
--- a/doc/misc/rcirc.texi
+++ b/doc/misc/rcirc.texi
@@ -5,7 +5,7 @@
@c %**end of header
@copying
-Copyright @copyright{} 2006, 2007, 2008, 2009, 2010
+Copyright @copyright{} 2006-2011
Free Software Foundation, Inc.
@quotation
@@ -948,7 +948,3 @@ The real answer, therefore, is a @code{/reconnect} command:
@printindex cp
@bye
-
-@ignore
- arch-tag: 2589e562-3843-4ffc-8c2f-477cbad57c01
-@end ignore
diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi
index 9d06ceccd9..880cfb988a 100644
--- a/doc/misc/reftex.texi
+++ b/doc/misc/reftex.texi
@@ -27,8 +27,7 @@ citations and indices for LaTeX documents with Emacs.
This is edition @value{EDITION} of the @b{Ref@TeX{}} User Manual for
@b{Ref@TeX{}} @value{VERSION}
-Copyright @copyright{} 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1997-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -5890,7 +5889,3 @@ released on 7 Jan 1997.
@printindex cp
@bye
-
-@ignore
- arch-tag: 1e055774-0576-4b1b-b47f-550d0961fd43
-@end ignore
diff --git a/doc/misc/remember.texi b/doc/misc/remember.texi
index f9b75e1be0..cdb4514009 100644
--- a/doc/misc/remember.texi
+++ b/doc/misc/remember.texi
@@ -8,7 +8,7 @@
@copying
This manual is for Remember Mode, version 1.9
-Copyright @copyright{} 2001, 2004, 2005, 2007, 2008, 2009, 2010
+Copyright @copyright{} 2001, 2004-2005, 2007-2011
Free Software Foundation, Inc.
@quotation
@@ -403,7 +403,3 @@ consult @ref{Remember, , , org}.
@printindex cp
@bye
-
-@ignore
- arch-tag: 5b980db0-20cc-4167-b845-52dc11d53b9f
-@end ignore
diff --git a/doc/misc/sasl.texi b/doc/misc/sasl.texi
index 80ea9bc45b..99c4c98e43 100644
--- a/doc/misc/sasl.texi
+++ b/doc/misc/sasl.texi
@@ -7,7 +7,7 @@
@copying
This file describes the Emacs SASL library, version @value{VERSION}.
-Copyright @copyright{} 2000, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+Copyright @copyright{} 2000, 2004-2011
Free Software Foundation, Inc.
@quotation
diff --git a/doc/misc/sc.texi b/doc/misc/sc.texi
index 72a6bfc898..621d78b962 100644
--- a/doc/misc/sc.texi
+++ b/doc/misc/sc.texi
@@ -14,8 +14,7 @@
This document describes Supercite, an Emacs package for citing and
attributing replies to mail and news messages.
-Copyright @copyright{} 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1993, 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1941,7 +1940,3 @@ its @var{variable} name.
@end iftex
@printindex vr
@bye
-
-@ignore
- arch-tag: 0521847a-4680-44b6-ae6e-13ce20e18436
-@end ignore
diff --git a/doc/misc/sem-user.texi b/doc/misc/sem-user.texi
index c731c1843d..b17f1ab7e9 100644
--- a/doc/misc/sem-user.texi
+++ b/doc/misc/sem-user.texi
@@ -1,7 +1,6 @@
@c This file is included by semantic.texi
-@c Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009,
-@c 2010 Free Software Foundation, Inc.
+@c Copyright (C) 1999-2005, 2007, 2009-2011 Free Software Foundation, Inc.
@c Permission is granted to copy, distribute and/or modify this
@c document under the terms of the GNU Free Documentation License,
@@ -1330,7 +1329,3 @@ To add other kind of decorations on a tag, @code{NAME-highlight} must use
@dfn{semantic-decorate-tag}, and other functions of the semantic
decoration @var{api} found in this library.
@end defun
-
-@ignore
- arch-tag: 760dca58-7119-484e-8237-866cbaf36f79
-@end ignore
diff --git a/doc/misc/semantic.texi b/doc/misc/semantic.texi
index 65bd718dff..89e83df5bc 100644
--- a/doc/misc/semantic.texi
+++ b/doc/misc/semantic.texi
@@ -24,8 +24,7 @@
@copying
This manual documents the Semantic library and utilities.
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007,
-2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1999-2005, 2007, 2009-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -622,7 +621,3 @@ Emacs Lisp. It is an LALR parser suitable for complex languages.
@c LocalWords: subsubsection sw sym texi texinfo titlefont titlepage
@c LocalWords: tok TOKEN's toplevel typemodifiers uml unset untar
@c LocalWords: uref usedb var vskip xref yak
-
-@ignore
- arch-tag: cbc6e78c-4ff1-410e-9fc7-936487e39bbf
-@end ignore
diff --git a/doc/misc/ses.texi b/doc/misc/ses.texi
index 60d419083e..45e5e9efc0 100644
--- a/doc/misc/ses.texi
+++ b/doc/misc/ses.texi
@@ -11,8 +11,7 @@
@copying
This file documents SES: the Simple Emacs Spreadsheet.
-Copyright @copyright{} 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright @copyright{} 2002-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -982,7 +981,3 @@ Jean-Philippe Theberge @email{jphil@@acs.pagesjaunes.fr}
@include doclicense.texi
@bye
-
-@ignore
- arch-tag: 10a4ee1c-7ef4-4c06-8b7a-f975e39f0dec
-@end ignore
diff --git a/doc/misc/sieve.texi b/doc/misc/sieve.texi
index b8f0990485..5c069f619f 100644
--- a/doc/misc/sieve.texi
+++ b/doc/misc/sieve.texi
@@ -8,8 +8,7 @@
@copying
This file documents the Emacs Sieve package, for server-side mail filtering.
-Copyright @copyright{} 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/misc/smtpmail.texi b/doc/misc/smtpmail.texi
index 05bae38e7a..abd7d8974d 100644
--- a/doc/misc/smtpmail.texi
+++ b/doc/misc/smtpmail.texi
@@ -3,7 +3,7 @@
@settitle Emacs SMTP Library
@syncodeindex vr fn
@copying
-Copyright @copyright{} 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+Copyright @copyright{} 2003-2011
Free Software Foundation, Inc.
@quotation
@@ -415,7 +415,3 @@ cannot accept mail.
@printindex fn
@bye
-
-@ignore
- arch-tag: 6316abdf-b366-4562-87a2-f37e8f894b6f
-@end ignore
diff --git a/doc/misc/speedbar.texi b/doc/misc/speedbar.texi
index aaf9e938de..980839cdec 100644
--- a/doc/misc/speedbar.texi
+++ b/doc/misc/speedbar.texi
@@ -4,8 +4,7 @@
@syncodeindex fn cp
@copying
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1999-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1253,7 +1252,3 @@ Two good values are @code{nil} and @code{statictag}.
@bye
@c LocalWords: speedbar's xref slowbar kbd subsubsection
@c LocalWords: keybindings
-
-@ignore
- arch-tag: e1fc85f0-1eeb-489f-a8d4-a2bfe711fa02
-@end ignore
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 91408263bc..057b321fd7 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -3,11 +3,11 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2009-08-14.15}
+\def\texinfoversion{2011-01-15.17}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007, 2008, 2009 Free Software Foundation, Inc.
+% 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
%
% This texinfo.tex file is free software: you can redistribute it and/or
% modify it under the terms of the GNU General Public License as
@@ -65,7 +65,6 @@
\everyjob{\message{[Texinfo version \texinfoversion]}%
\catcode`+=\active \catcode`\_=\active}
-
\chardef\other=12
% We never want plain's \outer definition of \+ in Texinfo.
@@ -93,14 +92,13 @@
\let\ptexnewwrite\newwrite
\let\ptexnoindent=\noindent
\let\ptexplus=+
+\let\ptexraggedright=\raggedright
\let\ptexrbrace=\}
\let\ptexslash=\/
\let\ptexstar=\*
\let\ptext=\t
\let\ptextop=\top
-{\catcode`\'=\active
-\global\let\ptexquoteright'}% Math-mode def from plain.tex.
-\let\ptexraggedright=\raggedright
+{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode
% If this character appears in an error message or help string, it
% starts a new line in the output.
@@ -199,36 +197,7 @@
% that mark overfull boxes (in case you have decided
% that the text looks ok even though it passes the margin).
%
-\def\finalout{\overfullrule=0pt}
-
-% @| inserts a changebar to the left of the current line. It should
-% surround any changed text. This approach does *not* work if the
-% change spans more than two lines of output. To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).
-%
-\def\|{%
- % \vadjust can only be used in horizontal mode.
- \leavevmode
- %
- % Append this vertical mode material after the current line in the output.
- \vadjust{%
- % We want to insert a rule with the height and depth of the current
- % leading; that is exactly what \strutbox is supposed to record.
- \vskip-\baselineskip
- %
- % \vadjust-items are inserted at the left edge of the type. So
- % the \llap here moves out into the left-hand margin.
- \llap{%
- %
- % For a thicker or thinner bar, change the `1pt'.
- \vrule height\baselineskip width1pt
- %
- % This is the space between the bar and the text.
- \hskip 12pt
- }%
- }%
-}
+\def\finalout{\overfullrule=0pt }
% Sometimes it is convenient to have everything in the transcript file
% and nothing on the terminal. We don't just call \tracingall here,
@@ -267,7 +236,6 @@
\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
\removelastskip\penalty-200\bigskip\fi\fi}
-% For @cropmarks command.
% Do @cropmarks to get crop marks.
%
\newif\ifcropmarks
@@ -599,85 +567,6 @@
\newhelp\EMsimple{Press RETURN to continue.}
-%% Simple single-character @ commands
-
-% @@ prints an @
-% Kludge this until the fonts are right (grr).
-\def\@{{\tt\char64}}
-
-% This is turned off because it was never documented
-% and you can use @w{...} around a quote to suppress ligatures.
-%% Define @` and @' to be the same as ` and '
-%% but suppressing ligatures.
-%\def\`{{`}}
-%\def\'{{'}}
-
-% Used to generate quoted braces.
-\def\mylbrace {{\tt\char123}}
-\def\myrbrace {{\tt\char125}}
-\let\{=\mylbrace
-\let\}=\myrbrace
-\begingroup
- % Definitions to produce \{ and \} commands for indices,
- % and @{ and @} for the aux/toc files.
- \catcode`\{ = \other \catcode`\} = \other
- \catcode`\[ = 1 \catcode`\] = 2
- \catcode`\! = 0 \catcode`\\ = \other
- !gdef!lbracecmd[\{]%
- !gdef!rbracecmd[\}]%
- !gdef!lbraceatcmd[@{]%
- !gdef!rbraceatcmd[@}]%
-!endgroup
-
-% @comma{} to avoid , parsing problems.
-\let\comma = ,
-
-% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
-% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
-\let\, = \c
-\let\dotaccent = \.
-\def\ringaccent#1{{\accent23 #1}}
-\let\tieaccent = \t
-\let\ubaraccent = \b
-\let\udotaccent = \d
-
-% Other special characters: @questiondown @exclamdown @ordf @ordm
-% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
-\def\questiondown{?`}
-\def\exclamdown{!`}
-\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
-\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
-
-% Dotless i and dotless j, used for accents.
-\def\imacro{i}
-\def\jmacro{j}
-\def\dotless#1{%
- \def\temp{#1}%
- \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
- \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
- \else \errmessage{@dotless can be used only with i or j}%
- \fi\fi
-}
-
-% The \TeX{} logo, as in plain, but resetting the spacing so that a
-% period following counts as ending a sentence. (Idea found in latex.)
-%
-\edef\TeX{\TeX \spacefactor=1000 }
-
-% @LaTeX{} logo. Not quite the same results as the definition in
-% latex.ltx, since we use a different font for the raised A; it's most
-% convenient for us to use an explicitly smaller font, rather than using
-% the \scriptstyle font (since we don't reset \scriptstyle and
-% \scriptscriptstyle).
-%
-\def\LaTeX{%
- L\kern-.36em
- {\setbox0=\hbox{T}%
- \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
- \kern-.15em
- \TeX
-}
-
% Be sure we're in horizontal mode when doing a tie, since we make space
% equivalent to this in @example-like environments. Otherwise, a space
% at the beginning of a line will start with \penalty -- and
@@ -873,7 +762,7 @@ where each line of input produces a line of output.}
% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
% paragraph. For more general purposes, use the \margin insertion
-% class. WHICH is `l' or `r'.
+% class. WHICH is `l' or `r'. Not documented, written for gawk manual.
%
\newskip\inmarginspacing \inmarginspacing=1cm
\def\strutdepth{\dp\strutbox}
@@ -920,6 +809,36 @@ where each line of input produces a line of output.}
\temp
}
+% @| inserts a changebar to the left of the current line. It should
+% surround any changed text. This approach does *not* work if the
+% change spans more than two lines of output. To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change). This command
+% is not documented, not supported, and doesn't work.
+%
+\def\|{%
+ % \vadjust can only be used in horizontal mode.
+ \leavevmode
+ %
+ % Append this vertical mode material after the current line in the output.
+ \vadjust{%
+ % We want to insert a rule with the height and depth of the current
+ % leading; that is exactly what \strutbox is supposed to record.
+ \vskip-\baselineskip
+ %
+ % \vadjust-items are inserted at the left edge of the type. So
+ % the \llap here moves out into the left-hand margin.
+ \llap{%
+ %
+ % For a thicker or thinner bar, change the `1pt'.
+ \vrule height\baselineskip width1pt
+ %
+ % This is the space between the bar and the text.
+ \hskip 12pt
+ }%
+ }%
+}
+
% @include FILE -- \input text of FILE.
%
\def\include{\parseargusing\filenamecatcodes\includezzz}
@@ -930,6 +849,7 @@ where each line of input produces a line of output.}
\makevalueexpandable % we want to expand any @value in FILE.
\turnoffactive % and allow special characters in the expansion
\indexnofonts % Allow `@@' and other weird things in file names.
+ \wlog{texinfo.tex: doing @include of #1^^J}%
\edef\temp{\noexpand\input #1 }%
%
% This trickery is to read FILE outside of a group, in case it makes
@@ -1095,109 +1015,6 @@ where each line of input produces a line of output.}
}
-% @asis just yields its argument. Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math outputs its argument in math mode.
-%
-% One complication: _ usually means subscripts, but it could also mean
-% an actual _ character, as in @math{@var{some_variable} + 1}. So make
-% _ active, and distinguish by seeing if the current family is \slfam,
-% which is what @var uses.
-{
- \catcode`\_ = \active
- \gdef\mathunderscore{%
- \catcode`\_=\active
- \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
- }
-}
-% Another complication: we want \\ (and @\) to output a \ character.
-% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
-% this is not advertised and we don't care. Texinfo does not
-% otherwise define @\.
-%
-% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
-\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
-%
-\def\math{%
- \tex
- \mathunderscore
- \let\\ = \mathbackslash
- \mathactive
- % make the texinfo accent commands work in math mode
- \let\"=\ddot
- \let\'=\acute
- \let\==\bar
- \let\^=\hat
- \let\`=\grave
- \let\u=\breve
- \let\v=\check
- \let\~=\tilde
- \let\dotaccent=\dot
- $\finishmath
-}
-\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex.
-
-% Some active characters (such as <) are spaced differently in math.
-% We have to reset their definitions in case the @math was an argument
-% to a command which sets the catcodes (such as @item or @section).
-%
-{
- \catcode`^ = \active
- \catcode`< = \active
- \catcode`> = \active
- \catcode`+ = \active
- \catcode`' = \active
- \gdef\mathactive{%
- \let^ = \ptexhat
- \let< = \ptexless
- \let> = \ptexgtr
- \let+ = \ptexplus
- \let' = \ptexquoteright
- }
-}
-
-% Some math mode symbols.
-\def\bullet{$\ptexbullet$}
-\def\geq{\ifmmode \ge\else $\ge$\fi}
-\def\leq{\ifmmode \le\else $\le$\fi}
-\def\minus{\ifmmode -\else $-$\fi}
-
-% @dots{} outputs an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in the cm
-% typewriter fonts as three actual period characters; on the other hand,
-% in other typewriter fonts three periods are wider than 1.5em. So do
-% whichever is larger.
-%
-\def\dots{%
- \leavevmode
- \setbox0=\hbox{...}% get width of three periods
- \ifdim\wd0 > 1.5em
- \dimen0 = \wd0
- \else
- \dimen0 = 1.5em
- \fi
- \hbox to \dimen0{%
- \hskip 0pt plus.25fil
- .\hskip 0pt plus1fil
- .\hskip 0pt plus1fil
- .\hskip 0pt plus.5fil
- }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
- \dots
- \spacefactor=\endofsentencespacefactor
-}
-
-% @comma{} is so commas can be inserted into text without messing up
-% Texinfo's parsing.
-%
-\let\comma = ,
-
% @refill is a no-op.
\let\refill=\relax
@@ -1492,6 +1309,7 @@ output) for that.)}
\edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
%
% Read toc silently, to get counts of subentries for \pdfoutline.
+ \def\partentry##1##2##3##4{}% ignore parts in the outlines
\def\numchapentry##1##2##3##4{%
\def\thischapnum{##2}%
\def\thissecnum{0}%
@@ -2105,8 +1923,8 @@ end
\font\reducedsy=cmsy10
\def\reducedecsize{1000}
-% reset the current fonts
-\textfonts
+\textleading = 13.2pt % line spacing for 11pt CM
+\textfonts % reset the current fonts
\rm
} % end of 11pt text font size definitions
@@ -2236,11 +2054,9 @@ end
\font\reducedsy=cmsy9
\def\reducedecsize{0900}
-% reduce space between paragraphs
-\divide\parskip by 2
-
-% reset the current fonts
-\textfonts
+\divide\parskip by 2 % reduce space between paragraphs
+\textleading = 12pt % line spacing for 10pt CM
+\textfonts % reset the current fonts
\rm
} % end of 10pt text font size definitions
@@ -2249,12 +2065,13 @@ end
% @fonttextsize 10
% (or 11) to redefine the text font size. pt is assumed.
%
-\def\xword{10}
\def\xiword{11}
+\def\xword{10}
+\def\xwordpt{10pt}
%
\parseargdef\fonttextsize{%
\def\textsizearg{#1}%
- \wlog{doing @fonttextsize \textsizearg}%
+ %\wlog{doing @fonttextsize \textsizearg}%
%
% Set \globaldefs so that documents can use this inside @tex, since
% makeinfo 4.8 does not support it, but we need it nonetheless.
@@ -2308,7 +2125,7 @@ end
\let\tenttsl=\titlettsl
\def\curfontsize{title}%
\def\lsize{chap}\def\lllsize{subsec}%
- \resetmathfonts \setleading{25pt}}
+ \resetmathfonts \setleading{27pt}}
\def\titlefont#1{{\titlefonts\rmisbold #1}}
\def\chapfonts{%
\let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
@@ -2460,14 +2277,19 @@ end
\let\markupsetuplqcode \markupsetcodequoteleft
\let\markupsetuprqcode \markupsetcodequoteright
+%
\let\markupsetuplqexample \markupsetcodequoteleft
\let\markupsetuprqexample \markupsetcodequoteright
+%
+\let\markupsetuplqsamp \markupsetcodequoteleft
+\let\markupsetuprqsamp \markupsetcodequoteright
+%
\let\markupsetuplqverb \markupsetcodequoteleft
\let\markupsetuprqverb \markupsetcodequoteright
+%
\let\markupsetuplqverbatim \markupsetcodequoteleft
\let\markupsetuprqverbatim \markupsetcodequoteright
-\let\markupsetuplqsamp \markupsetnoligaturesquoteleft
\let\markupsetuplqkbd \markupsetnoligaturesquoteleft
% Allow an option to not replace quotes with a regular directed right
@@ -2505,27 +2327,40 @@ end
% Count depth in font-changes, for error checks
\newcount\fontdepth \fontdepth=0
-%% Add scribe-like font environments, plus @l for inline lisp (usually sans
-%% serif) and @ii for TeX italic
+% Font commands.
+
+% #1 is the font command (\sl or \it), #2 is the text to slant.
+% If we are in a monospaced environment, however, 1) always use \ttsl,
+% and 2) do not add an italic correction.
+\def\dosmartslant#1#2{%
+ \ifusingtt
+ {{\ttsl #2}\let\next=\relax}%
+ {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
+ \next
+}
+\def\smartslanted{\dosmartslant\sl}
+\def\smartitalic{\dosmartslant\it}
-% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
-% unless the following character is such as not to need one.
-\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
- \ptexslash\fi\fi\fi}
-\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
-\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
+% Output an italic correction unless \next (presumed to be the following
+% character) is such as not to need one.
+\def\smartitaliccorrection{%
+ \ifx\next,%
+ \else\ifx\next-%
+ \else\ifx\next.%
+ \else\ptexslash
+ \fi\fi\fi}
-% like \smartslanted except unconditionally uses \ttsl.
+% like \smartslanted except unconditionally uses \ttsl, and no ic.
% @var is set to this for defun arguments.
-\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
+\def\ttslanted#1{{\ttsl #1}}
% @cite is like \smartslanted except unconditionally use \sl. We never want
% ttsl for book titles, do we?
-\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
+\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
\let\i=\smartitalic
\let\slanted=\smartslanted
-\def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}}
+\def\var#1{\smartslanted{#1}}
\let\dfn=\smartslanted
\let\emph=\smartitalic
@@ -2819,8 +2654,188 @@ end
\fi
}
+% @asis just yields its argument. Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}. So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+ \catcode`\_ = \active
+ \gdef\mathunderscore{%
+ \catcode`\_=\active
+ \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+ }
+}
+% Another complication: we want \\ (and @\) to output a math (or tt) \.
+% FYI, plain.tex uses \\ as a temporary control sequence (for no
+% particular reason), but this is not advertised and we don't care.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+ \tex
+ \mathunderscore
+ \let\\ = \mathbackslash
+ \mathactive
+ % make the texinfo accent commands work in math mode
+ \let\"=\ddot
+ \let\'=\acute
+ \let\==\bar
+ \let\^=\hat
+ \let\`=\grave
+ \let\u=\breve
+ \let\v=\check
+ \let\~=\tilde
+ \let\dotaccent=\dot
+ $\finishmath
+}
+\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+ \catcode`^ = \active
+ \catcode`< = \active
+ \catcode`> = \active
+ \catcode`+ = \active
+ \catcode`' = \active
+ \gdef\mathactive{%
+ \let^ = \ptexhat
+ \let< = \ptexless
+ \let> = \ptexgtr
+ \let+ = \ptexplus
+ \let' = \ptexquoteright
+ }
+}
+
\message{glyphs,}
+% and logos.
+
+% @@ prints an @.
+\def\@{\char64 }
+
+% Used to generate quoted braces. Unless we're in typewriter, use
+% \ecfont because the CM text fonts do not have braces, and we don't
+% want to switch into math.
+\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
+\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
+\let\{=\mylbrace
+\let\}=\myrbrace
+\begingroup
+ % Definitions to produce \{ and \} commands for indices,
+ % and @{ and @} for the aux/toc files.
+ \catcode`\{ = \other \catcode`\} = \other
+ \catcode`\[ = 1 \catcode`\] = 2
+ \catcode`\! = 0 \catcode`\\ = \other
+ !gdef!lbracecmd[\{]%
+ !gdef!rbracecmd[\}]%
+ !gdef!lbraceatcmd[@{]%
+ !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \ptexc
+\let\dotaccent = \ptexdot
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \ptext
+\let\ubaraccent = \ptexb
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+ \def\temp{#1}%
+ \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
+ \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
+ \else \errmessage{@dotless can be used only with i or j}%
+ \fi\fi
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence. (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo. Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+ L\kern-.36em
+ {\setbox0=\hbox{T}%
+ \vbox to \ht0{\hbox{%
+ \ifx\textnominalsize\xwordpt
+ % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
+ % Revert to plain's \scriptsize, which is 7pt.
+ \count255=\the\fam $\fam\count255 \scriptstyle A$%
+ \else
+ % For 11pt, we can use our lllsize.
+ \selectfonts\lllsize A%
+ \fi
+ }%
+ \vss
+ }}%
+ \kern-.15em
+ \TeX
+}
+
+% Some math mode symbols.
+\def\bullet{$\ptexbullet$}
+\def\geq{\ifmmode \ge\else $\ge$\fi}
+\def\leq{\ifmmode \le\else $\le$\fi}
+\def\minus{\ifmmode -\else $-$\fi}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em. So do
+% whichever is larger.
+%
+\def\dots{%
+ \leavevmode
+ \setbox0=\hbox{...}% get width of three periods
+ \ifdim\wd0 > 1.5em
+ \dimen0 = \wd0
+ \else
+ \dimen0 = 1.5em
+ \fi
+ \hbox to \dimen0{%
+ \hskip 0pt plus.25fil
+ .\hskip 0pt plus1fil
+ .\hskip 0pt plus1fil
+ .\hskip 0pt plus.5fil
+ }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+ \dots
+ \spacefactor=\endofsentencespacefactor
+}
% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
%
@@ -3207,10 +3222,14 @@ end
\def\headings #1 {\csname HEADINGS#1\endcsname}
-\def\HEADINGSoff{%
-\global\evenheadline={\hfil} \global\evenfootline={\hfil}
-\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
-\HEADINGSoff
+\def\headingsoff{% non-global headings elimination
+ \evenheadline={\hfil}\evenfootline={\hfil}%
+ \oddheadline={\hfil}\oddfootline={\hfil}%
+}
+
+\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
+\HEADINGSoff % it's the default
+
% When we turn headings on, set the page number to 1.
% For double-sided printing, put current file name in lower left corner,
% chapter name on inside top of right hand pages, document
@@ -3322,7 +3341,7 @@ end
\begingroup
\advance\leftskip by-\tableindent
\advance\hsize by\tableindent
- \advance\rightskip by0pt plus1fil
+ \advance\rightskip by0pt plus1fil\relax
\leavevmode\unhbox0\par
\endgroup
%
@@ -4134,11 +4153,14 @@ end
\def\@{@}% change to @@ when we switch to @ as escape char in index files.
\def\ {\realbackslash\space }%
%
- % Need these in case \tex is in effect and \{ is a \delimiter again.
- % But can't use \lbracecmd and \rbracecmd because texindex assumes
- % braces and backslashes are used only as delimiters.
- \let\{ = \mylbrace
- \let\} = \myrbrace
+ % Need these unexpandable (because we define \tt as a dummy)
+ % definitions when @{ or @} appear in index entry text. Also, more
+ % complicated, when \tex is in effect and \{ is a \delimiter again.
+ % We can't use \lbracecmd and \rbracecmd because texindex assumes
+ % braces and backslashes are used only as delimiters. Perhaps we
+ % should define @lbrace and @rbrace commands a la @comma.
+ \def\{{{\tt\char123}}%
+ \def\}{{\tt\char125}}%
%
% I don't entirely understand this, but when an index entry is
% generated from a macro call, the \endinput which \scanmacro inserts
@@ -4191,7 +4213,7 @@ end
\def\commondummies{%
%
% \definedummyword defines \#1 as \string\#1\space, thus effectively
- % preventing its expansion. This is used only for control% words,
+ % preventing its expansion. This is used only for control words,
% not control letters, because the \space would be incorrect for
% control characters, but is needed to separate the control word
% from whatever follows.
@@ -4210,6 +4232,7 @@ end
\commondummiesnofonts
%
\definedummyletter\_%
+ \definedummyletter\-%
%
% Non-English letters.
\definedummyword\AA
@@ -4246,20 +4269,24 @@ end
\definedummyword\TeX
%
% Assorted special characters.
+ \definedummyword\arrow
\definedummyword\bullet
\definedummyword\comma
\definedummyword\copyright
\definedummyword\registeredsymbol
\definedummyword\dots
\definedummyword\enddots
+ \definedummyword\entrybreak
\definedummyword\equiv
\definedummyword\error
\definedummyword\euro
+ \definedummyword\expansion
+ \definedummyword\geq
\definedummyword\guillemetleft
\definedummyword\guillemetright
\definedummyword\guilsinglleft
\definedummyword\guilsinglright
- \definedummyword\expansion
+ \definedummyword\leq
\definedummyword\minus
\definedummyword\ogonek
\definedummyword\pounds
@@ -4316,7 +4343,9 @@ end
\definedummyword\b
\definedummyword\i
\definedummyword\r
+ \definedummyword\sansserif
\definedummyword\sc
+ \definedummyword\slanted
\definedummyword\t
%
% Commands that take arguments.
@@ -4325,10 +4354,12 @@ end
\definedummyword\code
\definedummyword\command
\definedummyword\dfn
+ \definedummyword\dmn
\definedummyword\email
\definedummyword\emph
\definedummyword\env
\definedummyword\file
+ \definedummyword\indicateurl
\definedummyword\kbd
\definedummyword\key
\definedummyword\math
@@ -4356,7 +4387,7 @@ end
\def\definedummyaccent##1{\let##1\asis}%
% We can just ignore other control letters.
\def\definedummyletter##1{\let##1\empty}%
- % Hopefully, all control words can become @asis.
+ % All control words become @asis by default; overrides below.
\let\definedummyword\definedummyaccent
%
\commondummiesnofonts
@@ -4368,8 +4399,14 @@ end
%
\def\ { }%
\def\@{@}%
- % how to handle braces?
\def\_{\normalunderscore}%
+ \def\-{}% @- shouldn't affect sorting
+ %
+ % Unfortunately, texindex is not prepared to handle braces in the
+ % content at all. So for index sorting, we map @{ and @} to strings
+ % starting with |, since that ASCII character is between ASCII { and }.
+ \def\{{|a}%
+ \def\}{|b}%
%
% Non-English letters.
\def\AA{AA}%
@@ -4397,6 +4434,7 @@ end
%
% Assorted special characters.
% (The following {} will end up in the sort string, but that's ok.)
+ \def\arrow{->}%
\def\bullet{bullet}%
\def\comma{,}%
\def\copyright{copyright}%
@@ -4406,10 +4444,12 @@ end
\def\error{error}%
\def\euro{euro}%
\def\expansion{==>}%
+ \def\geq{>=}%
\def\guillemetleft{<<}%
\def\guillemetright{>>}%
\def\guilsinglleft{<}%
\def\guilsinglright{>}%
+ \def\leq{<=}%
\def\minus{-}%
\def\point{.}%
\def\pounds{pounds}%
@@ -4424,6 +4464,9 @@ end
\def\result{=>}%
\def\textdegree{o}%
%
+ \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
+ \else \indexlquoteignore \fi
+ %
% We need to get rid of all macros, leaving only the arguments (if present).
% Of course this is not nearly correct, but it is the best we can do for now.
% makeinfo does not expand macros in the argument to @deffn, which ends up
@@ -4437,6 +4480,11 @@ end
\macrolist
}
+% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
+% ignore left quotes in the sort term.
+{\catcode`\`=\active
+ \gdef\indexlquoteignore{\let`=\empty}}
+
\let\indexbackslash=0 %overridden during \printindex.
\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
@@ -4694,7 +4742,6 @@ end
% But this freezes the catcodes in the argument, and can cause problems to
% @code, which sets - active. This problem was fixed by a kludge---
% ``-'' was active throughout whole index, but this isn't really right.
-%
% The right solution is to prevent \entry from swallowing the whole text.
% --kasal, 21nov03
\def\entry{%
@@ -4731,10 +4778,17 @@ end
% columns.
\vskip 0pt plus1pt
%
+ % When reading the text of entry, convert explicit line breaks
+ % from @* into spaces. The user might give these in long section
+ % titles, for instance.
+ \def\*{\unskip\space\ignorespaces}%
+ \def\entrybreak{\hfil\break}%
+ %
% Swallow the left brace of the text (first parameter):
\afterassignment\doentry
\let\temp =
}
+\def\entrybreak{\unskip\space\ignorespaces}%
\def\doentry{%
\bgroup % Instead of the swallowed brace.
\noindent
@@ -4967,7 +5021,22 @@ end
\message{sectioning,}
% Chapters, sections, etc.
-% \unnumberedno is an oxymoron, of course. But we count the unnumbered
+% Let's start with @part.
+\outer\parseargdef\part{\partzzz{#1}}
+\def\partzzz#1{%
+ \chapoddpage
+ \null
+ \vskip.3\vsize % move it down on the page a bit
+ \begingroup
+ \noindent \titlefonts\rmisbold #1\par % the text
+ \let\lastnode=\empty % no node to associate with
+ \writetocentry{part}{#1}{}% but put it in the toc
+ \headingsoff % no headline or footline on the part page
+ \chapoddpage
+ \endgroup
+}
+
+% \unnumberedno is an oxymoron. But we count the unnumbered
% sections so that we can refer to them unambiguously in the pdf
% outlines by their "section number". We avoid collisions with chapter
% numbers by starting them at 10000. (If a document ever has 10000
@@ -5046,8 +5115,8 @@ end
\chardef\maxseclevel = 3
%
% A numbered section within an unnumbered changes to unnumbered too.
-% To achive this, remember the "biggest" unnum. sec. we are currently in:
-\chardef\unmlevel = \maxseclevel
+% To achieve this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unnlevel = \maxseclevel
%
% Trace whether the current chapter is an appendix or not:
% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
@@ -5072,8 +5141,8 @@ end
% The heading type:
\def\headtype{#1}%
\if \headtype U%
- \ifnum \absseclevel < \unmlevel
- \chardef\unmlevel = \absseclevel
+ \ifnum \absseclevel < \unnlevel
+ \chardef\unnlevel = \absseclevel
\fi
\else
% Check for appendix sections:
@@ -5085,10 +5154,10 @@ end
\fi\fi
\fi
% Check for numbered within unnumbered:
- \ifnum \absseclevel > \unmlevel
+ \ifnum \absseclevel > \unnlevel
\def\headtype{U}%
\else
- \chardef\unmlevel = 3
+ \chardef\unnlevel = 3
\fi
\fi
% Now print the heading:
@@ -5340,9 +5409,8 @@ end
\chappager
\ifodd\pageno \else
\begingroup
- \evenheadline={\hfil}\evenfootline={\hfil}%
- \oddheadline={\hfil}\oddfootline={\hfil}%
- \hbox to 0pt{}%
+ \headingsoff
+ \null
\chappager
\endgroup
\fi
@@ -5785,6 +5853,7 @@ end
\def\summarycontents{%
\startcontents{\putwordShortTOC}%
%
+ \let\partentry = \shortpartentry
\let\numchapentry = \shortchapentry
\let\appentry = \shortchapentry
\let\unnchapentry = \shortunnchapentry
@@ -5840,6 +5909,19 @@ end
% The last argument is the page number.
% The arguments in between are the chapter number, section number, ...
+% Parts, in the main contents. Replace the part number, which doesn't
+% exist, with an empty box. Let's hope all the numbers have the same width.
+% Also ignore the page number, which is conventionally not printed.
+\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
+\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
+%
+% Parts, in the short toc.
+\def\shortpartentry#1#2#3#4{%
+ \penalty-300
+ \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
+ \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
+}
+
% Chapters, in the main contents.
\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
%
@@ -5929,9 +6011,9 @@ end
\message{environments,}
% @foo ... @end foo.
-% @tex ... @end tex escapes into raw Tex temporarily.
+% @tex ... @end tex escapes into raw TeX temporarily.
% One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain tex @ character.
+% But \@ or @@ will get a plain @ character.
\envdef\tex{%
\setupmarkupstyle{tex}%
@@ -5948,6 +6030,10 @@ end
\catcode`\'=\other
\escapechar=`\\
%
+ % ' is active in math mode (mathcode"8000). So reset it, and all our
+ % other math active characters (just in case), to plain's definitions.
+ \mathactive
+ %
\let\b=\ptexb
\let\bullet=\ptexbullet
\let\c=\ptexc
@@ -6150,41 +6236,42 @@ end
}
% We often define two environments, @foo and @smallfoo.
-% Let's do it by one command:
-\def\makedispenv #1#2{
- \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
- \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
+% Let's do it in one command. #1 is the env name, #2 the definition.
+\def\makedispenvdef#1#2{%
+ \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
+ \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
\expandafter\let\csname E#1\endcsname \afterenvbreak
\expandafter\let\csname Esmall#1\endcsname \afterenvbreak
}
-% Define two synonyms:
-\def\maketwodispenvs #1#2#3{
- \makedispenv{#1}{#3}
- \makedispenv{#2}{#3}
+% Define two environment synonyms (#1 and #2) for an environment.
+\def\maketwodispenvdef#1#2#3{%
+ \makedispenvdef{#1}{#3}%
+ \makedispenvdef{#2}{#3}%
}
-
-% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
+% @lisp: indented, narrowed, typewriter font;
+% @example: same as @lisp.
%
% @smallexample and @smalllisp: use smaller fonts.
% Originally contributed by Pavel@xerox.
%
-\maketwodispenvs {lisp}{example}{%
+\maketwodispenvdef{lisp}{example}{%
\nonfillstart
\tt\setupmarkupstyle{example}%
\let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
- \gobble % eat return
+ \gobble % eat return
}
% @display/@smalldisplay: same as @lisp except keep current font.
%
-\makedispenv {display}{%
+\makedispenvdef{display}{%
\nonfillstart
\gobble
}
% @format/@smallformat: same as @display except don't narrow margins.
%
-\makedispenv{format}{%
+\makedispenvdef{format}{%
\let\nonarrowing = t%
\nonfillstart
\gobble
@@ -6203,7 +6290,7 @@ end
\envdef\flushright{%
\let\nonarrowing = t%
\nonfillstart
- \advance\leftskip by 0pt plus 1fill
+ \advance\leftskip by 0pt plus 1fill\relax
\gobble
}
\let\Eflushright = \afterenvbreak
@@ -6238,6 +6325,8 @@ end
% we're doing normal filling. So, when using \aboveenvbreak and
% \afterenvbreak, temporarily make \parskip 0.
%
+\makedispenvdef{quotation}{\quotationstart}
+%
\def\quotationstart{%
{\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
\parindent=0pt
@@ -6253,17 +6342,6 @@ end
\parsearg\quotationlabel
}
-\envdef\quotation{%
- \setnormaldispenv
- \quotationstart
-}
-
-\envdef\smallquotation{%
- \setsmalldispenv
- \quotationstart
-}
-\let\Esmallquotation = \Equotation
-
% We have retained a nonzero parskip for the environment, since we're
% doing normal filling.
%
@@ -6275,6 +6353,7 @@ end
\fi
{\parskip=0pt \afterenvbreak}%
}
+\def\Esmallquotation{\Equotation}
% If we're given an argument, typeset it in bold with a colon after.
\def\quotationlabel#1{%
@@ -6331,21 +6410,28 @@ end
% Setup for the @verbatim environment
%
-% Real tab expansion
+% Real tab expansion.
\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
%
-\def\starttabbox{\setbox0=\hbox\bgroup}
+% We typeset each line of the verbatim in an \hbox, so we can handle
+% tabs. The \global is in case the verbatim line starts with an accent,
+% or some other command that starts with a begin-group. Otherwise, the
+% entire \verbbox would disappear at the corresponding end-group, before
+% it is typeset. Meanwhile, we can't have nested verbatim commands
+% (can we?), so the \global won't be overwriting itself.
+\newbox\verbbox
+\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
%
\begingroup
\catcode`\^^I=\active
\gdef\tabexpand{%
\catcode`\^^I=\active
\def^^I{\leavevmode\egroup
- \dimen0=\wd0 % the width so far, or since the previous tab
- \divide\dimen0 by\tabw
- \multiply\dimen0 by\tabw % compute previous multiple of \tabw
- \advance\dimen0 by\tabw % advance to next multiple of \tabw
- \wd0=\dimen0 \box0 \starttabbox
+ \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
+ \divide\dimen\verbbox by\tabw
+ \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
+ \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw
+ \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
}%
}
\endgroup
@@ -6354,15 +6440,16 @@ end
\def\setupverbatim{%
\let\nonarrowing = t%
\nonfillstart
- % Easiest (and conventionally used) font for verbatim
- \tt
- \def\par{\leavevmode\egroup\box0\endgraf}%
+ \tt % easiest (and conventionally used) font for verbatim
+ % The \leavevmode here is for blank lines. Otherwise, we would
+ % never \starttabox and the \egroup would end verbatim mode.
+ \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
\tabexpand
\setupmarkupstyle{verbatim}%
% Respect line breaks,
% print special symbols as themselves, and
- % make each space count
- % must do in this order:
+ % make each space count.
+ % Must do in this order:
\obeylines \uncatcodespecials \sepspaces
\everypar{\starttabbox}%
}
@@ -6419,6 +6506,7 @@ end
\makevalueexpandable
\setupverbatim
\indexnofonts % Allow `@@' and other weird things in file names.
+ \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
\input #1
\afterenvbreak
}%
@@ -6505,7 +6593,7 @@ end
#1#2 \endheader
% common ending:
\interlinepenalty = 10000
- \advance\rightskip by 0pt plus 1fil
+ \advance\rightskip by 0pt plus 1fil\relax
\endgraf
\nobreak\vskip -\parskip
\penalty\defunpenalty % signal to \startdefun and \dodefunx
@@ -6805,25 +6893,28 @@ end
}
\fi
-\def\scanmacro#1{%
- \begingroup
- \newlinechar`\^^M
- \let\xeatspaces\eatspaces
- % Undo catcode changes of \startcontents and \doprintindex
- % When called from @insertcopying or (short)caption, we need active
- % backslash to get it printed correctly. Previously, we had
- % \catcode`\\=\other instead. We'll see whether a problem appears
- % with macro expansion. --kasal, 19aug04
- \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
- % ... and \example
- \spaceisspace
- %
- % Append \endinput to make sure that TeX does not see the ending newline.
- % I've verified that it is necessary both for e-TeX and for ordinary TeX
- % --kasal, 29nov03
- \scantokens{#1\endinput}%
- \endgroup
-}
+\def\scanmacro#1{\begingroup
+ \newlinechar`\^^M
+ \let\xeatspaces\eatspaces
+ %
+ % Undo catcode changes of \startcontents and \doprintindex
+ % When called from @insertcopying or (short)caption, we need active
+ % backslash to get it printed correctly. Previously, we had
+ % \catcode`\\=\other instead. We'll see whether a problem appears
+ % with macro expansion. --kasal, 19aug04
+ \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+ %
+ % ... and for \example:
+ \spaceisspace
+ %
+ % The \empty here causes a following catcode 5 newline to be eaten
+ % as part of reading whitespace after a control sequence. It does
+ % not eat a catcode 13 newline. There's no good way to handle the
+ % two cases. See the Macro Details node in the manual for the
+ % workaround we currently have to recommend for macros and
+ % line-oriented commands.
+ \scantokens{#1\empty}%
+\endgroup}
\def\scanexp#1{%
\edef\temp{\noexpand\scanmacro{#1}}%
@@ -6877,17 +6968,18 @@ end
% Macro bodies are absorbed as an argument in a context where
% all characters are catcode 10, 11 or 12, except \ which is active
-% (as in normal texinfo). It is necessary to change the definition of \.
-
+% (as in normal texinfo). It is necessary to change the definition of \
+% to recognize macro arguments; this is the job of \mbodybackslash.
+%
% Non-ASCII encodings make 8-bit characters active, so un-activate
% them to avoid their expansion. Must do this non-globally, to
% confine the change to the current group.
-
+%
% It's necessary to have hard CRs when the macro is executed. This is
-% done by making ^^M (\endlinechar) catcode 12 when reading the macro
+% done by making ^^M (\endlinechar) catcode 12 when reading the macro
% body, and then making it the \newlinechar in \scanmacro.
-
-\def\scanctxt{%
+%
+\def\scanctxt{% used as subroutine
\catcode`\"=\other
\catcode`\+=\other
\catcode`\<=\other
@@ -6900,13 +6992,13 @@ end
\ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
}
-\def\scanargctxt{%
+\def\scanargctxt{% used for copying and captions, not macros.
\scanctxt
\catcode`\\=\other
\catcode`\^^M=\other
}
-\def\macrobodyctxt{%
+\def\macrobodyctxt{% used for @macro definitions
\scanctxt
\catcode`\{=\other
\catcode`\}=\other
@@ -6914,30 +7006,48 @@ end
\usembodybackslash
}
-\def\macroargctxt{%
+\def\macroargctxt{% used when scanning invocations
\scanctxt
- \catcode`\\=\other
+ \catcode`\\=0
}
+% why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes"
+% for the single characters \ { }. Thus, we end up with the "commands"
+% that would be written @\ @{ @} in a Texinfo document.
+%
+% We already have @{ and @}. For @\, we define it here, and only for
+% this purpose, to produce a typewriter backslash (so, the @\ that we
+% define for @math can't be used with @macro calls):
+%
+\def\\{\normalbackslash}%
+%
+% We would like to do this for \, too, since that is what makeinfo does.
+% But it is not possible, because Texinfo already has a command @, for a
+% cedilla accent. Documents must use @comma{} instead.
+%
+% \anythingelse will almost certainly be an error of some kind.
+
% \mbodybackslash is the definition of \ in @macro bodies.
% It maps \foo\ => \csname macarg.foo\endcsname => #N
% where N is the macro parameter number.
% We define \csname macarg.\endcsname to be \realbackslash, so
% \\ in macro replacement text gets you a backslash.
-
+%
{\catcode`@=0 @catcode`@\=@active
@gdef@usembodybackslash{@let\=@mbodybackslash}
@gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
}
\expandafter\def\csname macarg.\endcsname{\realbackslash}
+\def\margbackslash#1{\char`\#1 }
+
\def\macro{\recursivefalse\parsearg\macroxxx}
\def\rmacro{\recursivetrue\parsearg\macroxxx}
\def\macroxxx#1{%
- \getargs{#1}% now \macname is the macname and \argl the arglist
+ \getargs{#1}% now \macname is the macname and \argl the arglist
\ifx\argl\empty % no arguments
- \paramno=0%
+ \paramno=0
\else
\expandafter\parsemargdef \argl;%
\fi
@@ -6986,28 +7096,32 @@ end
% an opening brace, and that opening brace is not consumed.
\def\getargs#1{\getargsxxx#1{}}
\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
-\def\getmacname #1 #2\relax{\macname={#1}}
+\def\getmacname#1 #2\relax{\macname={#1}}
\def\getmacargs#1{\def\argl{#1}}
% Parse the optional {params} list. Set up \paramno and \paramlist
% so \defmacro knows what to do. Define \macarg.blah for each blah
-% in the params list, to be ##N where N is the position in that list.
+% in the params list to be ##N where N is the position in that list.
% That gets used by \mbodybackslash (above).
-
+%
% We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX: let \hash be something
+% The technique used is stolen from LaTeX: let \hash be something
% unexpandable, insert that wherever you need a #, and then redefine
% it to # just before using the token list produced.
%
% The same technique is used to protect \eatspaces till just before
% the macro is used.
-\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
- \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
+\def\parsemargdef#1;{%
+ \paramno=0\def\paramlist{}%
+ \let\hash\relax
+ \let\xeatspaces\relax
+ \parsemargdefxxx#1,;,%
+}
\def\parsemargdefxxx#1,{%
\if#1;\let\next=\relax
\else \let\next=\parsemargdefxxx
- \advance\paramno by 1%
+ \advance\paramno by 1
\expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
{\xeatspaces{\hash\the\paramno}}%
\edef\paramlist{\paramlist\hash\the\paramno,}%
@@ -7015,7 +7129,7 @@ end
% These two commands read recursive and nonrecursive macro bodies.
% (They're different since rec and nonrec macros end differently.)
-
+%
\long\def\parsemacbody#1@end macro%
{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
\long\def\parsermacbody#1@end rmacro%
@@ -7026,6 +7140,7 @@ end
% Much magic with \expandafter here.
% \xdef is used so that macro definitions will survive the file
% they're defined in; @include reads the file inside a group.
+%
\def\defmacro{%
\let\hash=##% convert placeholders to macro parameter chars
\ifrecursive
@@ -7089,7 +7204,8 @@ end
% \braceorline decides whether the next nonwhitespace character is a
% {. If so it reads up to the closing }, if not, it reads the whole
% line. Whatever was read is then fed to the next control sequence
-% as an argument (by \parsebrace or \parsearg)
+% as an argument (by \parsebrace or \parsearg).
+%
\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
\def\braceorlinexxx{%
\ifx\nchar\bgroup\else
@@ -7099,7 +7215,8 @@ end
% @alias.
% We need some trickery to remove the optional spaces around the equal
-% sign. Just make them active and then expand them all to nothing.
+% sign. Make them active and then expand them all to nothing.
+%
\def\alias{\parseargusing\obeyspaces\aliasxxx}
\def\aliasxxx #1{\aliasyyy#1\relax}
\def\aliasyyy #1=#2\relax{%
@@ -7357,7 +7474,8 @@ end
\angleleft un\-de\-fined\angleright
\iflinks
\ifhavexrefs
- \message{\linenumber Undefined cross reference `#1'.}%
+ {\toks0 = {#1}% avoid expansion of possibly-complex value
+ \message{\linenumber Undefined cross reference `\the\toks0'.}}%
\else
\ifwarnedxrefs\else
\global\warnedxrefstrue
@@ -7687,7 +7805,7 @@ end
% #2 is (optional) width, #3 is (optional) height.
% #4 is (ignored optional) html alt text.
% #5 is (ignored optional) extension.
-% #6 is just the usual extra ignored arg for parsing this stuff.
+% #6 is just the usual extra ignored arg for parsing stuff.
\newif\ifimagevmode
\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
\catcode`\^^M = 5 % in case we're inside an example
@@ -8339,8 +8457,8 @@ directory should work if nowhere else does.}
\gdef^^ea{\ogonek{e}}
\gdef^^eb{\"e}
\gdef^^ec{\v e}
- \gdef^^ed{\'\i}
- \gdef^^ee{\^\i}
+ \gdef^^ed{\'{\dotless{i}}}
+ \gdef^^ee{\^{\dotless{i}}}
\gdef^^ef{\v d}
%
\gdef^^f0{\dh}
@@ -8431,7 +8549,7 @@ directory should work if nowhere else does.}
\gdef\DeclareUnicodeCharacter#1#2{%
\countUTFz = "#1\relax
- \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+ %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
\begingroup
\parseXMLCharref
\def\UTFviiiTwoOctets##1##2{%
@@ -8899,8 +9017,8 @@ directory should work if nowhere else does.}
% Prevent underfull vbox error messages.
\vbadness = 10000
-% Don't be so finicky about underfull hboxes, either.
-\hbadness = 2000
+% Don't be very finicky about underfull hboxes, either.
+\hbadness = 6666
% Following George Bush, get rid of widows and orphans.
\widowpenalty=10000
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 6a77c13840..7f911b81f0 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -37,8 +37,7 @@
@end macro
@copying
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1999-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -696,6 +695,14 @@ This method is also similar to @option{ssh}. It only uses the
@command{krlogin -x} command to log in to the remote host.
+@item @option{ksu}
+@cindex method ksu
+@cindex ksu method
+@cindex Kerberos (with ksu method)
+
+This is another method from the Kerberos suite. It behaves like @option{su}.
+
+
@item @option{plink}
@cindex method plink
@cindex plink method
@@ -2483,6 +2490,15 @@ remote file names. It does not work for the @option{ftp} and
@option{smb} methods. Association of a pty, as specified in
@code{start-file-process}, is not supported.
+@code{process-file} and @code{start-file-process} work on the remote
+host, when the variable @code{default-directory} is remote:
+
+@lisp
+(let ((default-directory "/ssh:remote.host:"))
+ (start-file-process "grep" (get-buffer-create "*grep*")
+ "/bin/sh" "-c" "grep -e tramp *"))
+@end lisp
+
@ifset emacsgvfs
If the remote host is mounted via GVFS (see @ref{GVFS based methods}),
the remote filesystem is mounted locally. Therefore, there are no
@@ -3665,7 +3681,3 @@ for @value{emacsothername}.
@c * Use `filename' resp. `file name' consistently.
@c * Use `host' resp. `machine' consistently.
@c * Consistent small or capitalized words especially in menues.
-
-@ignore
- arch-tag: f96dd66e-6dd3-4c92-8d77-9c56205ba808
-@end ignore
diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi
index 38758d39bc..e72e68d9a2 100644
--- a/doc/misc/trampver.texi
+++ b/doc/misc/trampver.texi
@@ -2,8 +2,7 @@
@c texi/trampver.texi. Generated from trampver.texi.in by configure.
@c This is part of the Emacs manual.
-@c Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-@c 2010 Free Software Foundation, Inc.
+@c Copyright (C) 2003-2011 Free Software Foundation, Inc.
@c See file doclicense.texi for copying conditions.
@c In the Tramp CVS, the version number is auto-frobbed from
diff --git a/doc/misc/url.texi b/doc/misc/url.texi
index acb4145f12..5bfa96ec67 100644
--- a/doc/misc/url.texi
+++ b/doc/misc/url.texi
@@ -21,8 +21,7 @@
@copying
This file documents the Emacs Lisp URL loading package.
-Copyright @copyright{} 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2002,
-2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1993-1999, 2002, 2004-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1194,7 +1193,3 @@ Connect directly.
@printindex cp
@bye
-
-@ignore
- arch-tag: c96be356-7e2d-4196-bcda-b13246c5c3f0
-@end ignore
diff --git a/doc/misc/vip.texi b/doc/misc/vip.texi
index 2a4d419108..fe1098c49f 100644
--- a/doc/misc/vip.texi
+++ b/doc/misc/vip.texi
@@ -3,8 +3,7 @@
@settitle VIP
@copying
-Copyright @copyright{} 1987, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1987, 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1946,7 +1945,3 @@ file.
@printindex cp
@bye
-
-@ignore
- arch-tag: 7c5d17b9-1d21-4261-a88a-b9fdbbf1020b
-@end ignore
diff --git a/doc/misc/viper.texi b/doc/misc/viper.texi
index 2100e65295..9e55e08242 100644
--- a/doc/misc/viper.texi
+++ b/doc/misc/viper.texi
@@ -7,8 +7,7 @@
@setfilename ../../info/viper
@copying
-Copyright @copyright{} 1995, 1996, 1997, 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1995-1997, 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -4558,7 +4557,3 @@ zapman@@cc.gatech.edu (Jason Zapman II),
@printindex cp
@bye
-
-@ignore
- arch-tag: f53e866a-15cf-4b1e-aead-77da9da1e864
-@end ignore
diff --git a/doc/misc/widget.texi b/doc/misc/widget.texi
index 2d95daf36d..667dab5522 100644
--- a/doc/misc/widget.texi
+++ b/doc/misc/widget.texi
@@ -8,8 +8,7 @@
@c %**end of header
@copying
-Copyright @copyright{} 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 2000-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1829,7 +1828,3 @@ variables, and widgets described in this manual.
@printindex cp
@bye
-
-@ignore
- arch-tag: 2b427731-4c61-4e72-85de-5ccec9c623f0
-@end ignore
diff --git a/doc/misc/woman.texi b/doc/misc/woman.texi
index 788c10b87d..9f77a07770 100644
--- a/doc/misc/woman.texi
+++ b/doc/misc/woman.texi
@@ -18,8 +18,7 @@
This file documents WoMan: A program to browse Unix manual pages `W.O.
(without) man'.
-Copyright @copyright{} 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-2009, 2010 Free Software Foundation, Inc.
+Copyright @copyright{} 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1430,7 +1429,3 @@ Eli Zaretskii, @email{eliz@@is.elta.co.il}
@printindex cp
@bye
-
-@ignore
- arch-tag: a1a6b715-396f-4378-9b94-0b2ca0aa5028
-@end ignore
diff --git a/etc/.gitignore b/etc/.gitignore
index 83bad1103f..618d09438f 100644
--- a/etc/.gitignore
+++ b/etc/.gitignore
@@ -1,5 +1,3 @@
DOC
DOC-*
icons/
-
-# arch-tag: 617d2467-cd9f-42e2-9115-88e1d44e66e6
diff --git a/etc/CONTRIBUTE b/etc/CONTRIBUTE
index 99f24653ac..df5dd7daef 100644
--- a/etc/CONTRIBUTE
+++ b/etc/CONTRIBUTE
@@ -1,5 +1,4 @@
-Copyright (C) 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2006-2011 Free Software Foundation, Inc.
See end for license conditions.
diff --git a/etc/ChangeLog b/etc/ChangeLog
index eba8529f63..db1c5d41c3 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,87 @@
+2011-01-28 Paul Eggert <[email protected]>
+
+ Redo spelling of Makefile variables to conform to POSIX.
+ POSIX does not allow "-" in Makefile variable names.
+ Reported by Bruno Haible in
+ <http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00990.html>.
+ * refcards/Makefile (DIRED_REFCARDS_PDF): Renamed from
+ DIRED-REFCARDS_PDF.
+ (MISC_REFCARDS_PDF): Renamed from MISC-REFCARDS_PDF.
+ (SURVIVAL_CARDS_PDF): Renamed from SURVIVAL-CARDS_PDF.
+ (VIPER_CARDS_PDF): Renamed from VIPER-CARDS_PDF.
+
+2011-01-18 Glenn Morris <[email protected]>
+
+ * PROBLEMS: Add note about svn+ssh. (Bug#7791)
+
+2011-01-14 Glenn Morris <[email protected]>
+
+ * refcards/calccard.tex, refcards/cs-dired-ref.tex:
+ * refcards/cs-refcard.tex, refcards/cs-survival.tex:
+ * refcards/de-refcard.tex, refcards/dired-ref.tex:
+ * refcards/fr-dired-ref.tex, refcards/fr-refcard.tex:
+ * refcards/fr-survival.tex, refcards/orgcard.tex:
+ * refcards/pl-refcard.tex, refcards/pt-br-refcard.tex:
+ * refcards/refcard.tex, refcards/ru-refcard.tex:
+ * refcards/sk-dired-ref.tex, refcards/sk-refcard.tex:
+ * refcards/sk-survival.tex, refcards/survival.tex:
+ * refcards/vipcard.tex, refcards/viperCard.tex:
+ Update short copyright year to 2011.
+
+2011-01-13 Christian Ohler <[email protected]>
+
+ * NEWS: Mention ERT.
+
+2011-01-10 Jan Moringen <[email protected]>
+
+ * NEWS: Add new function dbus-register-service.
+
+2011-01-09 Chong Yidong <[email protected]>
+
+ * themes/tango-theme.el, themes/tango-dark-theme.el: Let-bind
+ tango palette colors. Only define faces for color displays.
+ Customize the ansi-color-names-vector variable. Add Ediff,
+ Flyspell, and Semantic faces as suggested by Jan Moringen.
+
+2011-01-08 Andreas Schwab <[email protected]>
+
+ * compilation.txt: Add column to gcc-include sample.
+
+2011-01-08 Glenn Morris <[email protected]>
+
+ * PROBLEMS: -batch implies -q.
+
+2011-01-07 Tassilo Horn <[email protected]>
+
+ * themes/tsdh-light-theme.el, themes/tsdh-dark-theme.el: Remove
+ dev-prefix from file names, so that the files don't clash on 8x3
+ filesystems.
+
+2011-01-06 Tassilo Horn <[email protected]>
+
+ * themes/dev-tsdh-light-theme.el (dev-tsdh-light): New theme.
+ * themes/dev-tsdh-dark-theme.el (dev-tsdh-dark): New theme.
+
+2011-01-04 Jan Moringen <[email protected]>
+
+ * NEWS: Extended behaviour of dbus-register-{method,property}.
+
+2011-01-02 Kenichi Handa <[email protected]>
+
+ * NEWS.23: Describe the changes for rmail's MIME handling.
+
+2010-12-18 Chong Yidong <[email protected]>
+
+ * images/separator.xpm: Tweak colors.
+
+2010-12-14 Michael Albinus <[email protected]>
+
+ * NEWS: Mention new Tramp method "ksu".
+
+2010-12-13 W. Martin Borgert <[email protected]> (tiny change)
+
+ * schema/schemas.xml: Add DocBook (Bug#7491).
+
2010-12-11 Carsten Dominik <[email protected]>
* refcards/orgcard.tex: Cleanup.
@@ -5122,9 +5206,7 @@
;; coding: utf-8
;; End:
- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1993-1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/etc/DEBUG b/etc/DEBUG
index 6fd5b412f4..c8fd48c6bf 100644
--- a/etc/DEBUG
+++ b/etc/DEBUG
@@ -1,7 +1,6 @@
Debugging GNU Emacs
-Copyright (C) 1985, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 2000-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
@@ -755,4 +754,3 @@ mode: outline
paragraph-separate: "[ ]*$"
end:
-;;; arch-tag: fbf32980-e35d-481f-8e4c-a2eca2586e6b
diff --git a/etc/DISTRIB b/etc/DISTRIB
index 61434b6edd..cc12110507 100644
--- a/etc/DISTRIB
+++ b/etc/DISTRIB
@@ -1,9 +1,7 @@
-*- text -*-
GNU Emacs availability information
-Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1995,
- 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+Copyright (C) 1986-1993, 1995, 1998, 2000-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS
index ac7861ae8a..17bf4fc387 100644
--- a/etc/ERC-NEWS
+++ b/etc/ERC-NEWS
@@ -1,6 +1,6 @@
ERC NEWS -*- outline -*-
-Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2006-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
* Changes in ERC 5.3
@@ -1343,4 +1343,3 @@ 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/>.
-arch-tag: 2b21b387-6cdc-4192-889c-6743cfffdcb1
diff --git a/etc/ETAGS.EBNF b/etc/ETAGS.EBNF
index 09f07a8239..333465b7a4 100644
--- a/etc/ETAGS.EBNF
+++ b/etc/ETAGS.EBNF
@@ -94,8 +94,7 @@ those.
===================== end of discussion of tag names =====================
-Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-Free Software Foundation, Inc.
+Copyright (C) 2002-2011 Free Software Foundation, Inc.
COPYING PERMISSIONS:
diff --git a/etc/ETAGS.README b/etc/ETAGS.README
index eff5d5b048..fd9636c973 100644
--- a/etc/ETAGS.README
+++ b/etc/ETAGS.README
@@ -28,8 +28,7 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-Copyright (C) 1984, 1987, 1988, 1989, 1993, 1994, 1995, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2011
Free Software Foundation, Inc.
This file is not considered part of GNU Emacs.
diff --git a/etc/GNU b/etc/GNU
index fb1e81b342..97ad4aa9d4 100644
--- a/etc/GNU
+++ b/etc/GNU
@@ -1,5 +1,4 @@
-Copyright (C) 1985, 1993, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1993, 2001-2011 Free Software Foundation, Inc.
Permission is granted to anyone to make or distribute verbatim copies
of this document, in any medium, provided that the copyright notice and
diff --git a/etc/GNUS-NEWS b/etc/GNUS-NEWS
index ca2f2309b9..3192a58ce9 100644
--- a/etc/GNUS-NEWS
+++ b/etc/GNUS-NEWS
@@ -1,7 +1,6 @@
GNUS NEWS -- history of user-visible changes.
-Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1999-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
Please send Gnus bug reports to [email protected].
diff --git a/etc/HELLO b/etc/HELLO
index 5461d4cd7e..d330bc8625 100644
--- a/etc/HELLO
+++ b/etc/HELLO
@@ -72,8 +72,7 @@ Korean ($(CGQ1[(B) $(C>H3gGO<<?d(B / $(C>H3gGO=J4O1n(B
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/etc/MACHINES b/etc/MACHINES
index ebefc8905e..126ae40cb5 100644
--- a/etc/MACHINES
+++ b/etc/MACHINES
@@ -1,7 +1,7 @@
Emacs machines list
-Copyright (C) 1989, 1990, 1992, 1993, 1998, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1989-1990, 1992-1993, 1998, 2001-2011
+ Free Software Foundation, Inc.
See the end of the file for license conditions.
This is a list of the status of GNU Emacs on various machines and systems.
@@ -402,5 +402,3 @@ 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/>.
-
-arch-tag: 7d2e93c7-e982-40ec-9055-3cd064042473
diff --git a/etc/MAILINGLISTS b/etc/MAILINGLISTS
index 796a39e699..ef918d3d21 100644
--- a/etc/MAILINGLISTS
+++ b/etc/MAILINGLISTS
@@ -318,8 +318,7 @@ mode: outline
fill-column: 72
End:
-Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-Free Software Foundation, Inc.
+Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this file, to deal in the file without restriction, including
@@ -330,6 +329,3 @@ Free Software Foundation, Inc.
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the file.
-
-
-arch-tag: 6e42bba8-7532-4a23-8486-99dbc5770a8e
diff --git a/etc/MH-E-NEWS b/etc/MH-E-NEWS
index f4bf030eb3..27b6d40bd8 100644
--- a/etc/MH-E-NEWS
+++ b/etc/MH-E-NEWS
@@ -1,7 +1,6 @@
* COPYRIGHT
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
@@ -3253,4 +3252,3 @@ mode: outline
paragraph-separate: "[ ]*$"
end:
-arch-tag: f6696cad-eb1b-4c5f-8057-4e3954a98d18
diff --git a/etc/MORE.STUFF b/etc/MORE.STUFF
index 36c89651d6..d876b6df50 100644
--- a/etc/MORE.STUFF
+++ b/etc/MORE.STUFF
@@ -1,7 +1,6 @@
More Neat Stuff for your Emacs
-Copyright (C) 1993, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1993, 1999, 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
This file describes GNU Emacs programs and resources that are
@@ -277,4 +276,3 @@ 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/>.
-arch-tag: c1d4e7c8-db85-44e6-909e-659e2b20fefa
diff --git a/etc/NEWS b/etc/NEWS
index 5972481358..a20ecd4fe7 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1,6 +1,6 @@
GNU Emacs NEWS -- history of user-visible changes.
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2010-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
Please send Emacs bug reports to [email protected].
@@ -59,6 +59,9 @@ automatically select it.
command line arguments, and the EMACS_UNIBYTE environment variable, no
longer have any effect. (They were declared obsolete in Emacs 23.)
+** New command line option `--no-site-lisp' removes site-lisp directories
+from load-path. -Q now implies this.
+
* Changes in Emacs 24.1
@@ -207,6 +210,10 @@ automatically when Emacs starts up. To disable this, set
`package-enable-at-startup' to nil. To change which packages are
loaded, customize `package-load-list'.
+** An Emacs Lisp testing tool is now included.
+Emacs Lisp developers can use this tool to write automated tests for
+their code. See the ERT info manual for details.
+
** Custom Themes
*** `M-x customize-themes' lists Custom themes which can be enabled.
@@ -216,12 +223,19 @@ Emacs no longer looks for custom themes in `load-path'. The default
is to search in `custom-theme-directory', followed by a built-in theme
directory named "themes/" in `data-directory'.
+*** New option `custom-safe-themes' records known-safe theme files.
+If a theme is not in this list, Emacs queries before loading it, and
+offers to save the theme to `custom-safe-themes' automatically. By
+default, all themes included in Emacs are treated as safe.
+
** The user option `remote-file-name-inhibit-cache' controls whether
the remote file-name cache is used for read access.
** The standalone programs lib-src/digest-doc and sorted-doc have been
replaced with Lisp commands `doc-file-to-man' and `doc-file-to-info'.
+** The variable `focus-follows-mouse' now always defaults to nil.
+
* Editing Changes in Emacs 24.1
@@ -232,6 +246,9 @@ replaced with Lisp commands `doc-file-to-man' and `doc-file-to-info'.
** The default value of `backup-by-copying-when-mismatch' is now t.
+** The command `just-one-space' (C-SPC), if given a negative argument,
+also deletes newlines around point.
+
** Deletion changes
*** New option `delete-active-region'.
@@ -252,60 +269,67 @@ should use delete-char with a negative argument instead.
** Selection changes.
-The default handling of clipboard and primary selections has been
-changed to conform with other X applications. The exact changes are
-described below; in short, mouse commands to select and paste text now
-use the primary selection, while all other commands for killing and
-yanking text now use the clipboard.
-
-*** Merely selecting text (e.g. with drag-mouse-1) does not add it to
-the kill-ring. On systems with a primary selection separate from the
-clipboard (such as X), the selected text is put in the primary
-selection.
+The default handling of clipboard and primary selections was changed
+to conform with modern X applications. In short, most commands for
+killing and yanking text now use the clipboard, while mouse commands
+use the primary selection.
-*** mouse-2 is now bound to `mouse-yank-primary', which pastes from
-the primary selection regardless of the contents of the kill-ring.
+In the following, we provide a list of these changes, followed by a
+list of steps to get the old behavior back if you prefer that.
-*** Commands that kill text or copy it to the kill-ring (M-w, C-w,
-C-k, etc.) also put the killed text into the clipboard. This change
-also means that the "Copy", "Cut", and "Paste" items in the "Edit"
-menu are now exactly equivalent to, respectively M-w, C-w, and C-y.
+*** `mouse-drag-copy-region' now defaults to nil.
+*** `select-active-regions' now defaults to t.
+Merely selecting text (e.g. with drag-mouse-1) no longer puts it in
+the kill-ring. The selected text is put in the primary selection, if
+the system possesses a separate primary selection facility (e.g. X).
-*** Yank commands, such as C-y and M-y, retrieve text from the
-clipboard if it is available.
+**** `select-active-regions' also accepts a new value, `only'.
+This means to only set the primary selection for temporarily active
+regions (usually made by mouse-dragging or shift-selection);
+"ordinary" active regions, such as those made with C-SPC followed by
+point motion, do not alter the primary selection.
-*** The above changes are reflected in the following new defaults:
+*** mouse-2 is now bound to `mouse-yank-primary'.
+This pastes from the primary selection, ignoring the kill-ring.
+Previously, mouse-2 was bound to `mouse-yank-at-click'.
-**** `select-active-regions' now defaults to t.
-It also accepts a new value, `only', which means to only set the
-primary selection for temporarily active regions (usually made by
-mouse-dragging or shift-selection).
+*** `x-select-enable-clipboard' now defaults to t on all platforms.
+*** `x-select-enable-primary' now defaults to nil.
+Thus, commands that kill text or copy it to the kill-ring (such as
+M-w, C-w, and C-k) also use the clipboard---not the primary selection.
-**** `mouse-2' is now bound to `mouse-yank-primary'.
-Previously, it was bound to `mouse-yank-at-click' (which is now
-unbound by default).
+**** The "Copy", "Cut", and "Paste" items in the "Edit" menu are now
+exactly equivalent to, respectively M-w, C-w, and C-y.
-**** `x-select-enable-clipboard' now defaults to t on all platforms.
-Note that this variable was already non-nil by default on MS-Windows,
-which does not support the primary selection between applications.
+**** Note that on MS-Windows, `x-select-enable-clipboard' was already
+non-nil by default, as Windows does not support the primary selection
+between applications.
-**** `x-select-enable-primary' now defaults to nil.
-This variable exists only on X; its default value was t in previous
-versions.
+*** To return to the previous behavior, do the following:
-**** `mouse-drag-copy-region' now defaults to nil.
-
-*** To return to the previous behavior, where mouse commands use the
-clipboard, change `mouse-drag-copy-region' and (on X only)
-`x-select-enable-primary' to t. If you don't want Emacs to put the
-text into the clipboard, only to the primary selection, additionally
-set `x-select-enable-clipboard' to nil.
+**** Change `mouse-drag-copy-region' to t.
+**** Change `x-select-enable-primary' to t (on X only).
+**** Change `x-select-enable-clipboard' to nil.
+**** Bind `mouse-yank-at-click' to mouse-2.
*** Support for X cut buffers has been removed.
+** New command `rectangle-number-lines', bound to `C-x r N', numbers
+the lines in the current rectangle. With an prefix argument, this
+prompts for a number to count from and for a format string.
+
* Changes in Specialized Modes and Packages in Emacs 24.1
+** The compile.el mode can be used without font-lock-mode.
+`compilation-parse-errors-function' is now obsolete.
+
+** The Landmark game is now invoked with `landmark', not `lm'.
+
+** Prolog mode has been completely revamped, with lots of additional
+functionality such as more intelligent indentation, electricty, support for
+more variants, including Mercury, and a lot more.
+
** shell-mode can track your cwd by reading it from your prompt.
Just set shell-dir-cookie-re to an appropriate regexp.
@@ -333,6 +357,12 @@ as the server coding system, this variable will then be consulted.
The default is to decode strings that can be decoded as utf-8 as
utf-8, and do the normal `undecided' decoding for the rest.
+** Eshell changes
+
+*** The default value of eshell-directory-name is a directory named
+"eshell" in `user-emacs-directory'. If the old "~/.eshell/" directory
+exists, that is used instead.
+
** In ido-mode, C-v is no longer bound to ido-toggle-vc.
The reason is that this interferes with cua-mode.
@@ -526,6 +556,8 @@ listing object name completions when being sent text via
*** An API for manipulating SQL product definitions has been added.
+** sregex.el is now obsolete, since rx.el is a strict superset.
+
** s-region.el is now declared obsolete, superceded by shift-select-mode
enabled by default in 23.1.
@@ -540,28 +572,42 @@ threads simultaneously.
*** It is possible now, to access alternative buses than the default
system or session bus.
+*** dbus-register-{service,method,property}
+The -method and -property functions do not automatically register
+names anymore.
+
+The new function dbus-register-service registers a service known name
+on a D-Bus without simultaneously registering a property or a method.
+
** Tramp
+*** There exists a new inline access method "ksu" (kerberized su).
+
*** The following access methods are discontinued: "ssh1_old",
"ssh2_old", "scp1_old", "scp2_old" and "fish".
** VC and related modes
*** Support for pulling on distributed version control systems.
-The vc-update command now runs a "pull" operation, if it is supported.
+The vc-pull command runs a "pull" operation, if it is supported.
This updates the current branch from upstream. A prefix argument
-means to prompt the user for command specifics, e.g. a pull location.
+means to prompt the user for specifics, e.g. a pull location.
-**** vc-pull is an alias for vc-update.
+**** vc-update is now an alias for vc-update.
-**** Currently supported by Bzr.
+**** Currently supported by Bzr, Git, and Mercurial.
*** Support for merging on distributed version control systems.
The vc-merge command now runs a "merge" operation, if it is supported.
-This merges another branch into the current one. A prefix argument
-means to prompt the user for command specifics, e.g. a merge location.
+This merges another branch into the current one. This command prompts
+the user for specifics, e.g. a merge source.
+
+**** Currently supported by Bzr, Git, and Mercurial.
-**** Currently supported by Bzr.
+** Miscellaneous
+
+---
+*** `copyright-fix-years' can optionally convert consecutive years to ranges.
* New Modes and Packages in Emacs 24.1
@@ -583,6 +629,11 @@ Notifications API. It requires D-Bus for communication.
* Incompatible Lisp Changes in Emacs 24.1
+** `compose-mail' now accepts an optional 8th arg, RETURN-ACTION, and
+passes it to the mail user agent function. This argument specifies an
+action for returning to the caller after finishing with the mail.
+This is currently used by Rmail to delete a mail window.
+
** For mouse click input events in the text area, the Y pixel
coordinate in the POSITION list now counts from the top of the text
area, excluding any header line. Previously, it counted from the top
@@ -638,6 +689,14 @@ sc.el, x-menu.el, rnews.el, rnewspost.el
* Lisp changes in Emacs 24.1
+** Removed the stack-trace-on-error variable.
+Also the debugger can now "continue" from an error, which means it will jump
+to the error handler as if the debugger had not been invoked instead of
+jumping all the way to the top-level.
+
+** New function `read-char-choice' reads a restricted set of characters,
+discarding any inputs not inside the set.
+
** `image-library-alist' is renamed to `dynamic-library-alist'.
The variable is now used to load all kind of supported dynamic libraries,
not just image libraries. The previous name is still available as an
@@ -675,6 +734,9 @@ The command `read-color' now requires a match for a color name or RGB
triplet, instead of signalling an error if the user provides a invalid
input.
+** Tool-bars can display separators.
+Tool-bar separators are handled like menu separators in menu-bar maps,
+i.e. via menu entries of the form `(menu-item "--")'.
** Image API
@@ -691,8 +753,8 @@ by the Graphic Control Extension of the image.
*** If Emacs is compiled with libxml2 support (which is the default),
two new Emacs Lisp-level functions are defined:
-`xml-parse-html-string-internal' (which will parse "real world" HTML)
-and `xml-parse-string-internal' (which parses XML). Both return an
+`libxml-parse-html-region' (which will parse "real world" HTML)
+and `libxml-parse-xml-region' (which parses XML). Both return an
Emacs Lisp parse tree.
FIXME: These should be front-ended by xml.el.
diff --git a/etc/NEWS.1-17 b/etc/NEWS.1-17
index b45ddedbe2..89856429b1 100644
--- a/etc/NEWS.1-17
+++ b/etc/NEWS.1-17
@@ -1,6 +1,6 @@
GNU Emacs NEWS -- history of user-visible changes. 26-Mar-1986
-Copyright (C) 1985, 1986, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985-1986, 2006-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
@@ -2531,4 +2531,3 @@ Local variables:
mode: text
end:
-arch-tag: 33dc900d-9c58-473b-87c9-b6d7222323ea
diff --git a/etc/NEWS.18 b/etc/NEWS.18
index 7cffb52a08..6bf854d8b3 100644
--- a/etc/NEWS.18
+++ b/etc/NEWS.18
@@ -1,6 +1,6 @@
GNU Emacs NEWS -- history of user-visible changes. 17-Aug-1988
-Copyright (C) 1988, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1988, 2006-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
@@ -1621,4 +1621,3 @@ Local variables:
mode: text
end:
-arch-tag: 8fed393b-c9c5-47d1-afbb-c0e7a135094a
diff --git a/etc/NEWS.19 b/etc/NEWS.19
index a97925bf90..90d96c12fb 100644
--- a/etc/NEWS.19
+++ b/etc/NEWS.19
@@ -1,7 +1,6 @@
GNU Emacs NEWS -- history of user-visible changes. 1992.
-Copyright (C) 1993, 1994, 1995, 2001, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 1993-1995, 2001, 2006-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
@@ -6541,5 +6540,3 @@ Local variables:
mode: outline
paragraph-separate: "[ ]*$"
end:
-
-arch-tag: 944be39b-afe8-4217-9977-c745b68a7ca2
diff --git a/etc/NEWS.20 b/etc/NEWS.20
index 29623c4ee9..c76ddb2485 100644
--- a/etc/NEWS.20
+++ b/etc/NEWS.20
@@ -1,7 +1,6 @@
GNU Emacs NEWS -- history of user-visible changes. 2006-05-31
-Copyright (C) 1999, 2000, 2001, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 1999-2001, 2006-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/etc/NEWS.21 b/etc/NEWS.21
index 10accb2236..47f61a13e3 100644
--- a/etc/NEWS.21
+++ b/etc/NEWS.21
@@ -1,7 +1,6 @@
GNU Emacs NEWS -- history of user-visible changes. 2006-05-31
-Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2000-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/etc/NEWS.22 b/etc/NEWS.22
index 79ccaf3101..3920f59fef 100644
--- a/etc/NEWS.22
+++ b/etc/NEWS.22
@@ -1,7 +1,6 @@
GNU Emacs NEWS -- history of user-visible changes.
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
Please send Emacs bug reports to [email protected].
@@ -5606,5 +5605,3 @@ Local variables:
mode: outline
paragraph-separate: "[ ]*$"
end:
-
-arch-tag: 1aca9dfa-2ac4-4d14-bebf-0007cee12793
diff --git a/etc/NEWS.23 b/etc/NEWS.23
index 0608286e6d..22c0b1de19 100644
--- a/etc/NEWS.23
+++ b/etc/NEWS.23
@@ -1,6 +1,6 @@
GNU Emacs NEWS -- history of user-visible changes.
-Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2007-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
Please send Emacs bug reports to [email protected].
@@ -21,6 +21,10 @@ with a prefix argument or by typing C-u C-h C-n.
* Changes in Emacs 23.3
++++
+** The last-resort backup file `%backup%~' is now written to
+`user-emacs-directory', instead of the user's home directory.
+
* Editing Changes in Emacs 23.3
@@ -67,6 +71,27 @@ Bazaar recognizes the headers "Author", "Date" and "Fixes".
Git, Mercurial, and Monotone recognize "Author" and "Date".
Any unknown header is left as is in the message, so it is not lost.
+** Rmail
+
+*** The default value of `rmail-enable-mime' is now t. Rmail decodes
+MIME contents automatically. You can customize the variable
+`rmail-enable-mime' back to `nil' to disable this automatic MIME
+decoding.
+
+*** The command `rmail-mime' change the displaying of a MIME message
+between decoded presentation form and raw data if `rmail-enable-mime'
+is non-nil. And, with prefix argument, it change only the displaying
+of the MIME entity at point.
+
+*** The new command `rmail-mime-next-item' (bound to TAB) moves point
+to the next item of MIME message.
+
+*** The new command `rmail-mime-previous-item' (bound to backtab) moves
+point to the previous item of MIME message.
+
+*** The new command `rmail-mime-toggle-hidden' (RET) hide or show the
+body of the MIME entity at point.
+
** Obsolete packages
+++
@@ -2493,4 +2518,3 @@ mode: outline
paragraph-separate: "[ ]*$"
end:
-arch-tag: e759449d-88b3-4de4-9900-3a6c3dfa23e2
diff --git a/etc/NEXTSTEP b/etc/NEXTSTEP
index d55bd65d88..fcde9727df 100644
--- a/etc/NEXTSTEP
+++ b/etc/NEXTSTEP
@@ -1,4 +1,4 @@
-Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2008-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
This file contains information about GNU Emacs on "Nextstep" platforms.
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 7090b225d7..15d4ea227d 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -1,7 +1,6 @@
Known Problems with GNU Emacs
-Copyright (C) 1987, 1988, 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+Copyright (C) 1987-1989, 1993-1999, 2001-2011
Free Software Foundation, Inc.
See the end of the file for license conditions.
@@ -102,7 +101,7 @@ This can be another symptom of stale *.elc files in your load-path.
The following command will print any duplicate Lisp files that are
present in load-path:
- emacs -q -batch -f list-load-path-shadows
+ emacs -batch -f list-load-path-shadows
If this command prints any file names, some of these files are stale,
and should be deleted or their directories removed from your
@@ -1660,6 +1659,19 @@ the script:
exec 2> >(exec cat >&2 2>/dev/null)
exec ssh "$@"
+*** GNU/Linux: Truncated svn annotate output with SSH.
+http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7791
+
+The symptoms are: you are accessing a svn repository over SSH.
+You use vc-annotate on a large (several thousand line) file, and the
+result is truncated around the 1000 line mark. It works fine with
+other access methods (eg http), or from outside Emacs.
+
+This may be a similar libc/SSH issue to the one mentioned above for CVS.
+A similar workaround seems to be effective: create a script with the
+same contents as the one used above for CVS_RSH, and set the SVN_SSH
+environment variable to point to it.
+
*** GNU/Linux: On Linux-based GNU systems using libc versions 5.4.19 through
5.4.22, Emacs crashes at startup with a segmentation fault.
@@ -3244,5 +3256,3 @@ Local variables:
mode: outline
paragraph-separate: "[ ]*$"
end:
-
-arch-tag: 49fc0d95-88cb-4715-b21c-f27fb5a4764a
diff --git a/etc/README b/etc/README
index 8fe5075142..d1cad4a3a0 100644
--- a/etc/README
+++ b/etc/README
@@ -9,6 +9,5 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
File: emacs.icon
Author: Sun Microsystems, Inc
- Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/SERVICE b/etc/SERVICE
index 3a057b98af..61a4b950ce 100644
--- a/etc/SERVICE
+++ b/etc/SERVICE
@@ -7,4 +7,3 @@ GNU software, including GNU Emacs, for a fee or in some cases at no
charge.
-arch-tag: 1253ce32-1cbd-428a-ac36-70ed9e3999fc
diff --git a/etc/TERMS b/etc/TERMS
index d4003cbebb..e361188247 100644
--- a/etc/TERMS
+++ b/etc/TERMS
@@ -1,5 +1,4 @@
-Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-Free Software Foundation, Inc.
+Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
See the end of the file for copying permissions.
This file describes what you must or might want to do to termcap entries
diff --git a/etc/TODO b/etc/TODO
index 8394be6611..6019473b92 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -1,7 +1,6 @@
Emacs TODO List -*-outline-*-
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/etc/charsets/README b/etc/charsets/README
index 82a9e0bbdd..cd009220c3 100644
--- a/etc/charsets/README
+++ b/etc/charsets/README
@@ -1,9 +1,8 @@
# README file for charset mapping files in this directory.
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 2003-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
diff --git a/etc/compilation.txt b/etc/compilation.txt
index 9cf39c90f9..85971cc26d 100644
--- a/etc/compilation.txt
+++ b/etc/compilation.txt
@@ -233,7 +233,7 @@ symbol: gcc-include
The last file, i.e. the one you are compiling, is the interesting one.
In file included from /usr/include/c++/3.3/backward/warn.h:4,
- from /usr/include/c++/3.3/backward/iostream.h:31,
+ from /usr/include/c++/3.3/backward/iostream.h:31:0,
from test_clt.cc:1:
@@ -548,8 +548,7 @@ Compilation segmentation fault at Thu Jul 13 10:55:49
Compilation finished at Thu Jul 21 15:02:15
-Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-Free Software Foundation, Inc.
+Copyright (C) 2004-2011 Free Software Foundation, Inc.
COPYING PERMISSIONS:
diff --git a/etc/edt-user.el b/etc/edt-user.el
index 663c6617ce..84e6f8ca1b 100644
--- a/etc/edt-user.el
+++ b/etc/edt-user.el
@@ -1,7 +1,6 @@
;;; edt-user.el --- Sample user customizations for Emacs EDT emulation
-;; Copyright (C) 1986, 1992, 1993, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1992-1993, 2000-2011 Free Software Foundation, Inc.
;; Author: Kevin Gallagher <kgallagh@@spd.dsccc.com>
;; Maintainer: Kevin Gallagher <kgallagh@@spd.dsccc.com>
@@ -166,5 +165,4 @@ G-C-\\: Split Window
(interactive)
(describe-function 'edt-user-keypad-help))
-;; arch-tag: a4671ca7-34b7-43a5-844c-2b2a89134ff4
;;; edt-user.el ends here
diff --git a/etc/emacs-buffer.gdb b/etc/emacs-buffer.gdb
index f0709aba7a..14a7615801 100644
--- a/etc/emacs-buffer.gdb
+++ b/etc/emacs-buffer.gdb
@@ -1,6 +1,6 @@
# emacs-buffer.gdb --- gdb macros for recovering buffers from emacs coredumps
-# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2005-2011 Free Software Foundation, Inc.
# Maintainer: Noah Friedman <[email protected]>
# Status: Works with Emacs 22.0.51.1 (prerelease) as of 2006-01-12.
@@ -268,4 +268,3 @@ end
# mode: gdb-script
# end:
-# arch-tag: 02087f62-2663-4868-977a-1fbb2fc2e7ef
diff --git a/etc/emacs.py b/etc/emacs.py
index 964c1f17f4..24004b321f 100644
--- a/etc/emacs.py
+++ b/etc/emacs.py
@@ -8,4 +8,3 @@ if sys.version_info[0] == 3:
else:
from emacs2 import *
-# arch-tag: 894b5227-638f-45fd-8567-0417d5c35900
diff --git a/etc/emacs2.py b/etc/emacs2.py
index 12faf7a8be..805024cca3 100644
--- a/etc/emacs2.py
+++ b/etc/emacs2.py
@@ -1,6 +1,6 @@
"""Definitions used by commands sent to inferior Python in python.el."""
-# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2004-2011 Free Software Foundation, Inc.
# Author: Dave Love <[email protected]>
# This file is part of GNU Emacs.
@@ -234,4 +234,3 @@ Assumes that MODULE.py and MODULE.pyc are in the same directory."""
# print '_emacs_ok' # ready for input and can call continuation
-# arch-tag: d90408f3-90e2-4de4-99c2-6eb9c7b9ca46
diff --git a/etc/emacs3.py b/etc/emacs3.py
index de81848e5c..470547b187 100644
--- a/etc/emacs3.py
+++ b/etc/emacs3.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2004-2011 Free Software Foundation, Inc.
# Author: Dave Love <[email protected]>
# This file is part of GNU Emacs.
@@ -232,4 +232,3 @@ Assumes that MODULE.py and MODULE.pyc are in the same directory."""
# print '_emacs_ok' # ready for input and can call continuation
-# arch-tag: 37bfed38-5f4a-4027-a2bf-d5f41819dd89
diff --git a/etc/enriched.doc b/etc/enriched.doc
index 4f01dea385..5b2e1a88f2 100644
--- a/etc/enriched.doc
+++ b/etc/enriched.doc
@@ -256,8 +256,7 @@ bug reports are welcome.</indent>
-Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-Free Software Foundation, Inc.
+Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
COPYING PERMISSIONS:
diff --git a/etc/gnus-tut.txt b/etc/gnus-tut.txt
index ca8dd11d8a..80a652ba25 100644
--- a/etc/gnus-tut.txt
+++ b/etc/gnus-tut.txt
@@ -24,8 +24,7 @@ was done by moi, yours truly, your humble servant, Lars Magne
Ingebrigtsen. If you have a WWW browser, you can investigate to your
heart's delight at <URL:http://www.ifi.uio.no/~larsi/larsi.html>.
-;; Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/etc/grep.txt b/etc/grep.txt
index fa3f63c9ff..9a3159f6b0 100644
--- a/etc/grep.txt
+++ b/etc/grep.txt
@@ -84,8 +84,7 @@ grep -nH -e "xyzxyz" ../info/*
-Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
-Free Software Foundation, Inc.
+Copyright (C) 2005-2011 Free Software Foundation, Inc.
COPYING PERMISSIONS:
diff --git a/etc/images/README b/etc/images/README
index 7adb3c7eb8..ae2d0556ad 100644
--- a/etc/images/README
+++ b/etc/images/README
@@ -23,21 +23,19 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
File: mh-logo.xpm
Author: Satyaki Das
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2003-2011 Free Software Foundation, Inc.
Files: splash.pbm, splash.xpm, gnus.pbm
Author: Luis Fernandes <[email protected]>
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
Files: splash.png, splash.svg
Author: Francesc Rocher <[email protected]>
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2008-2011 Free Software Foundation, Inc.
Files: checked.xpm, unchecked.xpm
Author: Chong Yidong <[email protected]>
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
* The following icons are from GTK+ 2.x. They are not part of Emacs, but
diff --git a/etc/images/checked.xpm b/etc/images/checked.xpm
index e015259483..959e77d705 100644
--- a/etc/images/checked.xpm
+++ b/etc/images/checked.xpm
@@ -1,5 +1,5 @@
/* XPM */
-/* Copyright (C) 2010 Free Software Foundation, Inc.
+/* Copyright (C) 2010-2011 Free Software Foundation, Inc.
*
* Author: Chong Yidong <[email protected]>
*
diff --git a/etc/images/custom/README b/etc/images/custom/README
index 1b67e16526..ad37dc1a7a 100644
--- a/etc/images/custom/README
+++ b/etc/images/custom/README
@@ -6,5 +6,5 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
Files: down.xpm down-pushed.xpm right.xpm right-pushed.xpm
Author: Juri Linkov
-Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2008-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/ezimage/README b/etc/images/ezimage/README
index a2b54c84e2..38d49f3bb6 100644
--- a/etc/images/ezimage/README
+++ b/etc/images/ezimage/README
@@ -7,6 +7,5 @@ Files: bits.xpm bitsbang.xpm box-minus.xpm box-plus.xpm
tag-gt.xpm tag-minus.xpm tag-plus.xpm tag-type.xpm tag-v.xpm
tag.xpm unlock.xpm
Author: Eric M. Ludlam
-Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1999-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/gnus/README b/etc/images/gnus/README
index 03efb7f716..b19ad3fedc 100644
--- a/etc/images/gnus/README
+++ b/etc/images/gnus/README
@@ -7,8 +7,7 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
Files: important.xpm, unimportant.xpm
Author: Simon Josefsson <[email protected]>
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
Files: catchup.pbm catchup.xpm cu-exit.pbm cu-exit.xpm
describe-group.pbm describe-group.xpm exit-gnus.pbm exit-gnus.xpm
@@ -22,12 +21,11 @@ Files: catchup.pbm catchup.xpm cu-exit.pbm cu-exit.xpm
unsubscribe.pbm unsubscribe.xpm uu-decode.pbm uu-decode.xpm
uu-post.pbm uu-post.xpm
Author: Luis Fernandes <[email protected]>
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
Files: gnus.png, gnus.svg
Author: Francesc Rocher <[email protected]>
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2008-2011 Free Software Foundation, Inc.
* The following icons are from GNOME 2.x. They are not part of Emacs,
diff --git a/etc/images/gnus/gnus.svg b/etc/images/gnus/gnus.svg
index ff21a81d48..aad6560a00 100644
--- a/etc/images/gnus/gnus.svg
+++ b/etc/images/gnus/gnus.svg
@@ -1,8 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Gnu Emacs Logo
- Copyright (C) 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2008-2011 Free Software Foundation, Inc.
Author: Francesc Rocher <[email protected]>
diff --git a/etc/images/gud/README b/etc/images/gud/README
index a9c18c4207..11c22bab49 100644
--- a/etc/images/gud/README
+++ b/etc/images/gud/README
@@ -1,8 +1,7 @@
COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
The following icons were created by Nick Roberts <[email protected]>.
-Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2002-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
break.pbm, nexti.pbm, go.pbm, pp.pbm, print.pbm, pstar.pbm, remove.pbm
@@ -32,8 +31,7 @@ their copyright assignment included the icons.
The following icons are converted from the Insight Windows style icon
set in src/gdb/gdbtk/library/images2.
-Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2002-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
cont.pbm and cont.xpm were converted from continue.gif
@@ -49,8 +47,7 @@ License: GNU General Public License version 3 or later (see COPYING)
The following icons are created from the Insight Windows style icon
set in src/gdb/gdbtk/library/images2.
-Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2002-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
rcont.xpm rfinish.xpm
diff --git a/etc/images/icons/README b/etc/images/icons/README
index 491dc96c84..7855f401bb 100644
--- a/etc/images/icons/README
+++ b/etc/images/icons/README
@@ -5,7 +5,7 @@ Files: hicolor/16x16/apps/emacs.png hicolor/24x24/apps/emacs.png
hicolor/128x128/apps/emacs.png hicolor/scalable/apps/emacs.svg
Author: Kentaro Ohkouchi <[email protected]>
-Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2007-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
@@ -13,5 +13,5 @@ Files: hicolor/16x16/apps/emacs22.png hicolor/24x24/apps/emacs22.png
hicolor/32x32/apps/emacs22.png hicolor/48x48/apps/emacs22.png
Author: Andrew Zhilin <[email protected]>
-Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2005-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/icons/hicolor/scalable/apps/emacs.svg b/etc/images/icons/hicolor/scalable/apps/emacs.svg
index 7565ef4b1f..5abdc931c1 100644
--- a/etc/images/icons/hicolor/scalable/apps/emacs.svg
+++ b/etc/images/icons/hicolor/scalable/apps/emacs.svg
@@ -10,7 +10,7 @@
id="svg4768"
xml:space="preserve">
<!-- Gnu Emacs Icon
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2008-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/etc/images/icons/hicolor/scalable/mimetypes/emacs-document.svg b/etc/images/icons/hicolor/scalable/mimetypes/emacs-document.svg
index f76091defa..2abe908b92 100644
--- a/etc/images/icons/hicolor/scalable/mimetypes/emacs-document.svg
+++ b/etc/images/icons/hicolor/scalable/mimetypes/emacs-document.svg
@@ -1,8 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Gnu Emacs Document Icon
- Copyright (C) 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2008-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/etc/images/mh-logo.xpm b/etc/images/mh-logo.xpm
index adc0c3a7bb..8b1d1f5378 100644
--- a/etc/images/mh-logo.xpm
+++ b/etc/images/mh-logo.xpm
@@ -1,8 +1,7 @@
/* XPM */
/* MH-E Logo
*
- * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- * Free Software Foundation, Inc.
+ * Copyright (C) 2003-2011 Free Software Foundation, Inc.
*
* Author: Satyaki Das
*
diff --git a/etc/images/mpc/README b/etc/images/mpc/README
index b46ba78077..99317ea90c 100644
--- a/etc/images/mpc/README
+++ b/etc/images/mpc/README
@@ -2,5 +2,5 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
Files: add.xpm ffwd.xpm next.xpm pause.xpm play.xpm prev.xpm rewind.xpm stop.xpm
Author: Stefan Monnier <[email protected]>
-Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2009-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/mpc/ffwd.xpm b/etc/images/mpc/ffwd.xpm
index c0b5a91a73..0d1ca0136e 100644
--- a/etc/images/mpc/ffwd.xpm
+++ b/etc/images/mpc/ffwd.xpm
@@ -31,4 +31,3 @@ static char * ffwd_xpm[] = {
" .ooooooooooooooooooooo ",
" "};
-/* arch-tag: 9b0fa3cf-1e36-4c20-ac68-948c2ae86b62 */
diff --git a/etc/images/mpc/next.xpm b/etc/images/mpc/next.xpm
index e94b6388a4..af712de14f 100644
--- a/etc/images/mpc/next.xpm
+++ b/etc/images/mpc/next.xpm
@@ -31,4 +31,3 @@ static char * next_xpm[] = {
" .ooooooooooooooooooooo ",
" "};
-/* arch-tag: 69a2ee4e-e71f-432d-b17b-ac8055dacc93 */
diff --git a/etc/images/mpc/pause.xpm b/etc/images/mpc/pause.xpm
index 5a5d977c6f..e02c3b80a2 100644
--- a/etc/images/mpc/pause.xpm
+++ b/etc/images/mpc/pause.xpm
@@ -30,4 +30,3 @@ static char * pause_xpm[] = {
" .ooooooooooooooooooooo ",
" "};
-/* arch-tag: 3fe99afb-7dfd-49dd-b5b3-d8eedf14b362 */
diff --git a/etc/images/mpc/play.xpm b/etc/images/mpc/play.xpm
index 0f9b6905d7..9a6e289b36 100644
--- a/etc/images/mpc/play.xpm
+++ b/etc/images/mpc/play.xpm
@@ -31,4 +31,3 @@ static char * play_xpm[] = {
" .ooooooooooooooooooooo ",
" "};
-/* arch-tag: 318eb8de-b126-48bd-818b-bb293df74ec8 */
diff --git a/etc/images/mpc/prev.xpm b/etc/images/mpc/prev.xpm
index aa973706fe..6fe140de9d 100644
--- a/etc/images/mpc/prev.xpm
+++ b/etc/images/mpc/prev.xpm
@@ -30,4 +30,3 @@ static char * prev_xpm[] = {
" .ooooooooooooooooooooo ",
" "};
-/* arch-tag: 284e0591-6e14-4dae-9cc3-c722fa0b9099 */
diff --git a/etc/images/mpc/rewind.xpm b/etc/images/mpc/rewind.xpm
index 3dd285a9a7..af94c0fed2 100644
--- a/etc/images/mpc/rewind.xpm
+++ b/etc/images/mpc/rewind.xpm
@@ -30,4 +30,3 @@ static char * rewind_xpm[] = {
" .ooooooooooooooooooooo ",
" "};
-/* arch-tag: 2bdb6c7f-8ddb-4110-b8ee-ffc3f06d1aa9 */
diff --git a/etc/images/mpc/stop.xpm b/etc/images/mpc/stop.xpm
index d5e4d517d0..446c462e12 100644
--- a/etc/images/mpc/stop.xpm
+++ b/etc/images/mpc/stop.xpm
@@ -30,4 +30,3 @@ static char * stop_xpm[] = {
" .ooooooooooooooooooooo ",
" "};
-/* arch-tag: 184ad626-ea69-40ae-839a-f5b5929ebb93 */
diff --git a/etc/images/separator.xpm b/etc/images/separator.xpm
index 0c518fa759..b728316a8f 100644
--- a/etc/images/separator.xpm
+++ b/etc/images/separator.xpm
@@ -2,11 +2,12 @@
static char * separator_xpm[] = {
"2 24 3 1",
" c None",
-". c #DBD3CB",
-"+ c #FCFBFA",
-" ",
+". c #888888",
+"+ c #FFFFFF",
" ",
" ",
+".+ ",
+".+",
".+",
".+",
".+",
@@ -25,6 +26,5 @@ static char * separator_xpm[] = {
".+",
".+",
".+",
-" ",
" ",
" "};
diff --git a/etc/images/smilies/README b/etc/images/smilies/README
index bd0ec8da7b..d009849e36 100644
--- a/etc/images/smilies/README
+++ b/etc/images/smilies/README
@@ -3,6 +3,5 @@ Files: blink.pbm blink.xpm braindamaged.xpm cry.xpm dead.xpm evil.xpm
sad.xpm smile.pbm smile.xpm wry.pbm wry.xpm
Authors: Reiner Steib, Simon Josefsson, Kai Grossjohann, Alex
Schroeder, Oliver Scholz, Per Abrahamsen, Kim F. Storm.
-Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1999-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/smilies/grayscale/README b/etc/images/smilies/grayscale/README
index 1cd5ff7879..dc356104a7 100644
--- a/etc/images/smilies/grayscale/README
+++ b/etc/images/smilies/grayscale/README
@@ -2,5 +2,5 @@ Files: blink.xpm braindamaged.xpm cry.xpm dead.xpm evil.xpm forced.xpm
frown.xpm grin.xpm indifferent.xpm reverse-smile.xpm sad.xpm
smile.xpm wry.xpm
Author: Adam Sj�gren
-Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2007-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/smilies/medium/README b/etc/images/smilies/medium/README
index 1cd5ff7879..dc356104a7 100644
--- a/etc/images/smilies/medium/README
+++ b/etc/images/smilies/medium/README
@@ -2,5 +2,5 @@ Files: blink.xpm braindamaged.xpm cry.xpm dead.xpm evil.xpm forced.xpm
frown.xpm grin.xpm indifferent.xpm reverse-smile.xpm sad.xpm
smile.xpm wry.xpm
Author: Adam Sj�gren
-Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2007-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/splash.svg b/etc/images/splash.svg
index 1346619f1d..68ba4d7f7d 100644
--- a/etc/images/splash.svg
+++ b/etc/images/splash.svg
@@ -1,8 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Gnu Emacs Logo
- Copyright (C) 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2008-2011 Free Software Foundation, Inc.
Author: Francesc Rocher <[email protected]>
Based on the original work by Luis Fernandes <[email protected]>
diff --git a/etc/images/splash.xpm b/etc/images/splash.xpm
index 2b42a8d845..30a587baba 100644
--- a/etc/images/splash.xpm
+++ b/etc/images/splash.xpm
@@ -1,8 +1,7 @@
/* XPM */
/* Gnu Emacs Logo
*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- * Free Software Foundation, Inc.
+ * Copyright (C) 2001-2011 Free Software Foundation, Inc.
*
* Author: Luis Fernandes <[email protected]>
*
diff --git a/etc/images/tree-widget/default/README b/etc/images/tree-widget/default/README
index ca52bb5fb7..ccc6cdbf21 100644
--- a/etc/images/tree-widget/default/README
+++ b/etc/images/tree-widget/default/README
@@ -5,6 +5,5 @@ Files: close.png close.xpm empty.png empty.xpm end-guide.png end-guide.xpm
no-guide.png no-guide.xpm no-handle.png no-handle.xpm open.png
open.xpm
Author: David Ponce <[email protected]>
-Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2004-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/tree-widget/folder/README b/etc/images/tree-widget/folder/README
index d4f24a7f85..58716db456 100644
--- a/etc/images/tree-widget/folder/README
+++ b/etc/images/tree-widget/folder/README
@@ -5,6 +5,5 @@ Files: close.png close.xpm empty.png empty.xpm end-guide.png
leaf.png leaf.xpm no-guide.png no-guide.xpm no-handle.png
no-handle.xpm open.png open.xpm
Author: David Ponce <[email protected]>
-Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2004-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/images/unchecked.xpm b/etc/images/unchecked.xpm
index ad01824d22..06e5178bce 100644
--- a/etc/images/unchecked.xpm
+++ b/etc/images/unchecked.xpm
@@ -1,5 +1,5 @@
/* XPM */
-/* Copyright (C) 2010 Free Software Foundation, Inc.
+/* Copyright (C) 2010-2011 Free Software Foundation, Inc.
*
* Author: Chong Yidong <[email protected]>
*
diff --git a/etc/nxml/00000-0007F.el b/etc/nxml/00000-0007F.el
index da2be08938..4fc236b53f 100644
--- a/etc/nxml/00000-0007F.el
+++ b/etc/nxml/00000-0007F.el
@@ -96,4 +96,3 @@
("TILDE" #x007E)
))
-;; arch-tag: c46ffe15-ef5b-46f6-837f-d6bcf56db5b2
diff --git a/etc/nxml/00080-000FF.el b/etc/nxml/00080-000FF.el
index 61fd8e0a4b..8f00b10afa 100644
--- a/etc/nxml/00080-000FF.el
+++ b/etc/nxml/00080-000FF.el
@@ -97,4 +97,3 @@
("LATIN SMALL LETTER Y WITH DIAERESIS" #x00FF)
))
-;; arch-tag: f7ca0f06-9eb7-4b7a-b014-795af10f23ac
diff --git a/etc/nxml/00100-0017F.el b/etc/nxml/00100-0017F.el
index 5c15ef91df..f78006615e 100644
--- a/etc/nxml/00100-0017F.el
+++ b/etc/nxml/00100-0017F.el
@@ -129,4 +129,3 @@
("LATIN SMALL LETTER LONG S" #x017F)
))
-;; arch-tag: 30e6e868-1bc7-4cd1-b75b-7fd4354cf8fe
diff --git a/etc/nxml/00180-0024F.el b/etc/nxml/00180-0024F.el
index 5bc138be49..fe99beef0e 100644
--- a/etc/nxml/00180-0024F.el
+++ b/etc/nxml/00180-0024F.el
@@ -180,4 +180,3 @@
("LATIN SMALL LETTER Y WITH MACRON" #x0233)
))
-;; arch-tag: d2a4e7e0-0d3a-4a29-994e-f5d0ed62cea2
diff --git a/etc/nxml/00250-002AF.el b/etc/nxml/00250-002AF.el
index 62ffa630e9..63c474c63d 100644
--- a/etc/nxml/00250-002AF.el
+++ b/etc/nxml/00250-002AF.el
@@ -95,4 +95,3 @@
("LATIN LETTER BIDENTAL PERCUSSIVE" #x02AD)
))
-;; arch-tag: edc50b43-a94e-48db-91c5-0f9ea113c93c
diff --git a/etc/nxml/002B0-002FF.el b/etc/nxml/002B0-002FF.el
index e94f58cc18..e72339e44a 100644
--- a/etc/nxml/002B0-002FF.el
+++ b/etc/nxml/002B0-002FF.el
@@ -64,4 +64,3 @@
("MODIFIER LETTER DOUBLE APOSTROPHE" #x02EE)
))
-;; arch-tag: 5fa09061-850e-4bbe-ad44-54c57a81a461
diff --git a/etc/nxml/00300-0036F.el b/etc/nxml/00300-0036F.el
index d82fa0b2fa..09024c92ec 100644
--- a/etc/nxml/00300-0036F.el
+++ b/etc/nxml/00300-0036F.el
@@ -97,4 +97,3 @@
("COMBINING LATIN SMALL LETTER X" #x036F)
))
-;; arch-tag: a3b46b6e-38fc-4043-b7f5-92a3591e2e47
diff --git a/etc/nxml/00370-003FF.el b/etc/nxml/00370-003FF.el
index 780653b57b..e127ea137a 100644
--- a/etc/nxml/00370-003FF.el
+++ b/etc/nxml/00370-003FF.el
@@ -116,4 +116,3 @@
("GREEK REVERSED LUNATE EPSILON SYMBOL" #x03F6)
))
-;; arch-tag: 033e25a2-6f9c-4e9f-b517-be5ed38829af
diff --git a/etc/nxml/00400-004FF.el b/etc/nxml/00400-004FF.el
index b041b437cc..e93109913a 100644
--- a/etc/nxml/00400-004FF.el
+++ b/etc/nxml/00400-004FF.el
@@ -247,4 +247,3 @@
("CYRILLIC SMALL LETTER YERU WITH DIAERESIS" #x04F9)
))
-;; arch-tag: 9cd8c4dd-3386-4c0a-b1dd-984efa12d958
diff --git a/etc/nxml/00500-0052F.el b/etc/nxml/00500-0052F.el
index c098c89824..ba1587a43c 100644
--- a/etc/nxml/00500-0052F.el
+++ b/etc/nxml/00500-0052F.el
@@ -17,4 +17,3 @@
("CYRILLIC SMALL LETTER KOMI TJE" #x050F)
))
-;; arch-tag: 3ae51d36-3921-4ec5-b6be-3e9c895be9f3
diff --git a/etc/nxml/00530-0058F.el b/etc/nxml/00530-0058F.el
index 2b530a5afe..83b5bdff20 100644
--- a/etc/nxml/00530-0058F.el
+++ b/etc/nxml/00530-0058F.el
@@ -87,4 +87,3 @@
("ARMENIAN HYPHEN" #x058A)
))
-;; arch-tag: 7b3d705a-d060-42de-a918-ff39dbe5d276
diff --git a/etc/nxml/00590-005FF.el b/etc/nxml/00590-005FF.el
index 764022948e..ecd07b12cf 100644
--- a/etc/nxml/00590-005FF.el
+++ b/etc/nxml/00590-005FF.el
@@ -83,4 +83,3 @@
("HEBREW PUNCTUATION GERSHAYIM" #x05F4)
))
-;; arch-tag: 262da37d-1065-4dfd-b6e4-a8259a780caf
diff --git a/etc/nxml/00600-006FF.el b/etc/nxml/00600-006FF.el
index c489a70dca..a3b997f755 100644
--- a/etc/nxml/00600-006FF.el
+++ b/etc/nxml/00600-006FF.el
@@ -209,4 +209,3 @@
("ARABIC SIGN SINDHI POSTPOSITION MEN" #x06FE)
))
-;; arch-tag: b20189fa-7cdb-4544-a41c-f4e0477d9e5e
diff --git a/etc/nxml/00700-0074F.el b/etc/nxml/00700-0074F.el
index 549387afe8..16bc7ae7f5 100644
--- a/etc/nxml/00700-0074F.el
+++ b/etc/nxml/00700-0074F.el
@@ -72,4 +72,3 @@
("SYRIAC BARREKH" #x074A)
))
-;; arch-tag: c008122a-484e-4253-b18f-eb215dbd1ecf
diff --git a/etc/nxml/00780-007BF.el b/etc/nxml/00780-007BF.el
index cda860cfeb..8d54fd5c22 100644
--- a/etc/nxml/00780-007BF.el
+++ b/etc/nxml/00780-007BF.el
@@ -51,4 +51,3 @@
("THAANA LETTER NAA" #x07B1)
))
-;; arch-tag: e1974c30-0604-412a-af3d-b6e688e0586c
diff --git a/etc/nxml/00900-0097F.el b/etc/nxml/00900-0097F.el
index 49bcde867d..3a253f67b1 100644
--- a/etc/nxml/00900-0097F.el
+++ b/etc/nxml/00900-0097F.el
@@ -105,4 +105,3 @@
("DEVANAGARI ABBREVIATION SIGN" #x0970)
))
-;; arch-tag: c9d655c5-2ec9-4b64-a13f-d4fafe0cbad7
diff --git a/etc/nxml/00980-009FF.el b/etc/nxml/00980-009FF.el
index 6c6b01e1a8..5cec96eceb 100644
--- a/etc/nxml/00980-009FF.el
+++ b/etc/nxml/00980-009FF.el
@@ -90,4 +90,3 @@
("BENGALI ISSHAR" #x09FA)
))
-;; arch-tag: 66599f15-c2b7-436a-9737-577d4f041abd
diff --git a/etc/nxml/00A00-00A7F.el b/etc/nxml/00A00-00A7F.el
index 98f221a201..be542ff3eb 100644
--- a/etc/nxml/00A00-00A7F.el
+++ b/etc/nxml/00A00-00A7F.el
@@ -76,4 +76,3 @@
("GURMUKHI EK ONKAR" #x0A74)
))
-;; arch-tag: e97fe67c-79ac-48f8-8274-22436eec2f01
diff --git a/etc/nxml/00A80-00AFF.el b/etc/nxml/00A80-00AFF.el
index 3bbd427271..029c3519f6 100644
--- a/etc/nxml/00A80-00AFF.el
+++ b/etc/nxml/00A80-00AFF.el
@@ -79,4 +79,3 @@
("GUJARATI DIGIT NINE" #x0AEF)
))
-;; arch-tag: e11e63c9-1fd7-496b-be1b-4c2bb32bdec4
diff --git a/etc/nxml/00B00-00B7F.el b/etc/nxml/00B00-00B7F.el
index 033d73b41d..5f32f4fb2c 100644
--- a/etc/nxml/00B00-00B7F.el
+++ b/etc/nxml/00B00-00B7F.el
@@ -80,4 +80,3 @@
("ORIYA ISSHAR" #x0B70)
))
-;; arch-tag: 3a780627-f875-450a-b482-6b25f28c6f96
diff --git a/etc/nxml/00B80-00BFF.el b/etc/nxml/00B80-00BFF.el
index ab5a34b821..5258288dbe 100644
--- a/etc/nxml/00B80-00BFF.el
+++ b/etc/nxml/00B80-00BFF.el
@@ -62,4 +62,3 @@
("TAMIL NUMBER ONE THOUSAND" #x0BF2)
))
-;; arch-tag: a299bfdc-4543-4405-a4a8-202d178a578f
diff --git a/etc/nxml/00C00-00C7F.el b/etc/nxml/00C00-00C7F.el
index 8ccda98c60..f33086da5d 100644
--- a/etc/nxml/00C00-00C7F.el
+++ b/etc/nxml/00C00-00C7F.el
@@ -81,4 +81,3 @@
("TELUGU DIGIT NINE" #x0C6F)
))
-;; arch-tag: 12e2c9a2-fa3a-400a-9adb-82a89e0a639b
diff --git a/etc/nxml/00C80-00CFF.el b/etc/nxml/00C80-00CFF.el
index d5251fafba..459b253275 100644
--- a/etc/nxml/00C80-00CFF.el
+++ b/etc/nxml/00C80-00CFF.el
@@ -81,4 +81,3 @@
("KANNADA DIGIT NINE" #x0CEF)
))
-;; arch-tag: b17f4e00-00e9-4e2f-8343-37b9c8e29e89
diff --git a/etc/nxml/00D00-00D7F.el b/etc/nxml/00D00-00D7F.el
index 5d4a728ae0..80001ac8f7 100644
--- a/etc/nxml/00D00-00D7F.el
+++ b/etc/nxml/00D00-00D7F.el
@@ -79,4 +79,3 @@
("MALAYALAM DIGIT NINE" #x0D6F)
))
-;; arch-tag: 1bce48f6-bdc3-4ebc-b1f0-1563c32e4926
diff --git a/etc/nxml/00D80-00DFF.el b/etc/nxml/00D80-00DFF.el
index 3130b1f919..98068983f2 100644
--- a/etc/nxml/00D80-00DFF.el
+++ b/etc/nxml/00D80-00DFF.el
@@ -81,4 +81,3 @@
("SINHALA PUNCTUATION KUNDDALIYA" #x0DF4)
))
-;; arch-tag: 3dfac4e1-97f5-433a-bd47-8cd364b09075
diff --git a/etc/nxml/00E00-00E7F.el b/etc/nxml/00E00-00E7F.el
index f265a069a5..992ee9a46d 100644
--- a/etc/nxml/00E00-00E7F.el
+++ b/etc/nxml/00E00-00E7F.el
@@ -88,4 +88,3 @@
("THAI CHARACTER KHOMUT" #x0E5B)
))
-;; arch-tag: cf6119b0-ae54-4871-a8a7-10621d74cba8
diff --git a/etc/nxml/00E80-00EFF.el b/etc/nxml/00E80-00EFF.el
index 29be3e172a..8ef8a304d1 100644
--- a/etc/nxml/00E80-00EFF.el
+++ b/etc/nxml/00E80-00EFF.el
@@ -66,4 +66,3 @@
("LAO HO MO" #x0EDD)
))
-;; arch-tag: 36f98cb4-447d-49e0-bae5-03a026adabac
diff --git a/etc/nxml/00F00-00FFF.el b/etc/nxml/00F00-00FFF.el
index 8e8be125cc..adc8fecfa9 100644
--- a/etc/nxml/00F00-00FFF.el
+++ b/etc/nxml/00F00-00FFF.el
@@ -194,4 +194,3 @@
("TIBETAN SIGN RDEL NAG GSUM" #x0FCF)
))
-;; arch-tag: 547e48c6-3ded-4dc7-be69-4ee324c604c3
diff --git a/etc/nxml/01000-0109F.el b/etc/nxml/01000-0109F.el
index 56ab64648b..56c6310415 100644
--- a/etc/nxml/01000-0109F.el
+++ b/etc/nxml/01000-0109F.el
@@ -79,4 +79,3 @@
("MYANMAR VOWEL SIGN VOCALIC LL" #x1059)
))
-;; arch-tag: 030cc7f0-2667-4504-ae9c-39c00fe146ff
diff --git a/etc/nxml/010A0-010FF.el b/etc/nxml/010A0-010FF.el
index d8c3ab7d31..e7b5916f1c 100644
--- a/etc/nxml/010A0-010FF.el
+++ b/etc/nxml/010A0-010FF.el
@@ -81,4 +81,3 @@
("GEORGIAN PARAGRAPH SEPARATOR" #x10FB)
))
-;; arch-tag: 8f5a9cec-8b71-48c9-af68-c8c51112e5b2
diff --git a/etc/nxml/01100-011FF.el b/etc/nxml/01100-011FF.el
index 7e7619d3e8..dbaa621275 100644
--- a/etc/nxml/01100-011FF.el
+++ b/etc/nxml/01100-011FF.el
@@ -241,4 +241,3 @@
("HANGUL JONGSEONG YEORINHIEUH" #x11F9)
))
-;; arch-tag: e631a2ad-7d7e-4a86-89f0-e6e4f7db5f39
diff --git a/etc/nxml/01200-0137F.el b/etc/nxml/01200-0137F.el
index 26a5a3a383..c7ac4e0ddb 100644
--- a/etc/nxml/01200-0137F.el
+++ b/etc/nxml/01200-0137F.el
@@ -346,4 +346,3 @@
("ETHIOPIC NUMBER TEN THOUSAND" #x137C)
))
-;; arch-tag: a34092f4-c605-4c01-b619-222a1241853d
diff --git a/etc/nxml/013A0-013FF.el b/etc/nxml/013A0-013FF.el
index e3fd669671..392b4f267a 100644
--- a/etc/nxml/013A0-013FF.el
+++ b/etc/nxml/013A0-013FF.el
@@ -86,4 +86,3 @@
("CHEROKEE LETTER YV" #x13F4)
))
-;; arch-tag: 42d669f3-aa0a-4b38-8f60-c1bf05b0d8be
diff --git a/etc/nxml/01400-0167F.el b/etc/nxml/01400-0167F.el
index 1dfce26a85..996d5b46d6 100644
--- a/etc/nxml/01400-0167F.el
+++ b/etc/nxml/01400-0167F.el
@@ -631,4 +631,3 @@
("CANADIAN SYLLABICS NNGAA" #x1676)
))
-;; arch-tag: 7b4079a4-dea1-44b9-9699-8826b5919ad7
diff --git a/etc/nxml/01680-0169F.el b/etc/nxml/01680-0169F.el
index 52c4cce879..ef59332874 100644
--- a/etc/nxml/01680-0169F.el
+++ b/etc/nxml/01680-0169F.el
@@ -30,4 +30,3 @@
("OGHAM REVERSED FEATHER MARK" #x169C)
))
-;; arch-tag: db8ea8fc-61b4-4f83-97f5-d2a952b9d8b6
diff --git a/etc/nxml/016A0-016FF.el b/etc/nxml/016A0-016FF.el
index 81f1df77c2..b194a0ca0d 100644
--- a/etc/nxml/016A0-016FF.el
+++ b/etc/nxml/016A0-016FF.el
@@ -82,4 +82,3 @@
("RUNIC BELGTHOR SYMBOL" #x16F0)
))
-;; arch-tag: e21b5eb5-adb4-44fa-a453-995bf3c7fdc5
diff --git a/etc/nxml/01700-0171F.el b/etc/nxml/01700-0171F.el
index 06df5066a6..2b1238c814 100644
--- a/etc/nxml/01700-0171F.el
+++ b/etc/nxml/01700-0171F.el
@@ -21,4 +21,3 @@
("TAGALOG SIGN VIRAMA" #x1714)
))
-;; arch-tag: f30d4825-3942-4534-8671-5fcd71df44ba
diff --git a/etc/nxml/01720-0173F.el b/etc/nxml/01720-0173F.el
index a7530051ce..7fb9c228b5 100644
--- a/etc/nxml/01720-0173F.el
+++ b/etc/nxml/01720-0173F.el
@@ -24,4 +24,3 @@
("PHILIPPINE DOUBLE PUNCTUATION" #x1736)
))
-;; arch-tag: d577c8e1-70e3-4afc-82f4-b61e4cf0b603
diff --git a/etc/nxml/01740-0175F.el b/etc/nxml/01740-0175F.el
index 4043bcc317..26f8f6ed7d 100644
--- a/etc/nxml/01740-0175F.el
+++ b/etc/nxml/01740-0175F.el
@@ -21,4 +21,3 @@
("BUHID VOWEL SIGN U" #x1753)
))
-;; arch-tag: a30b6352-4c93-4908-a5df-0172b643ae23
diff --git a/etc/nxml/01760-0177F.el b/etc/nxml/01760-0177F.el
index d6bb109d8d..2097b4f52e 100644
--- a/etc/nxml/01760-0177F.el
+++ b/etc/nxml/01760-0177F.el
@@ -19,4 +19,3 @@
("TAGBANWA VOWEL SIGN U" #x1773)
))
-;; arch-tag: 7ec84a4f-8077-400f-9b1a-f31b6d75fb65
diff --git a/etc/nxml/01780-017FF.el b/etc/nxml/01780-017FF.el
index 182440e5eb..762fd463d3 100644
--- a/etc/nxml/01780-017FF.el
+++ b/etc/nxml/01780-017FF.el
@@ -104,4 +104,3 @@
("KHMER DIGIT NINE" #x17E9)
))
-;; arch-tag: 2d03b253-c5f2-4595-b346-36e3b87df51c
diff --git a/etc/nxml/01800-018AF.el b/etc/nxml/01800-018AF.el
index a24ec715bc..b3701d4596 100644
--- a/etc/nxml/01800-018AF.el
+++ b/etc/nxml/01800-018AF.el
@@ -156,4 +156,3 @@
("MONGOLIAN LETTER ALI GALI DAGALGA" #x18A9)
))
-;; arch-tag: 36134d5c-514f-4042-b104-97688d5194b4
diff --git a/etc/nxml/01E00-01EFF.el b/etc/nxml/01E00-01EFF.el
index fed5cf3ca7..2f86f03995 100644
--- a/etc/nxml/01E00-01EFF.el
+++ b/etc/nxml/01E00-01EFF.el
@@ -247,4 +247,3 @@
("LATIN SMALL LETTER Y WITH TILDE" #x1EF9)
))
-;; arch-tag: 67862606-3d2a-4063-b666-45ccd6edff6b
diff --git a/etc/nxml/01F00-01FFF.el b/etc/nxml/01F00-01FFF.el
index 5da301f019..64e5f26c46 100644
--- a/etc/nxml/01F00-01FFF.el
+++ b/etc/nxml/01F00-01FFF.el
@@ -234,4 +234,3 @@
("GREEK DASIA" #x1FFE)
))
-;; arch-tag: ace2193e-e5be-4800-898e-efad7ba5d6da
diff --git a/etc/nxml/02000-0206F.el b/etc/nxml/02000-0206F.el
index 0a367cb1e1..36dedde38e 100644
--- a/etc/nxml/02000-0206F.el
+++ b/etc/nxml/02000-0206F.el
@@ -96,4 +96,3 @@
("NOMINAL DIGIT SHAPES" #x206F)
))
-;; arch-tag: 9208787e-c528-416d-a9b1-7261c9cde84e
diff --git a/etc/nxml/02070-0209F.el b/etc/nxml/02070-0209F.el
index aad7f331cc..e7c3f215ce 100644
--- a/etc/nxml/02070-0209F.el
+++ b/etc/nxml/02070-0209F.el
@@ -30,4 +30,3 @@
("SUBSCRIPT RIGHT PARENTHESIS" #x208E)
))
-;; arch-tag: 59e357e5-c021-440d-a923-921b485dcbb8
diff --git a/etc/nxml/020A0-020CF.el b/etc/nxml/020A0-020CF.el
index 98f334752b..a1df8bc204 100644
--- a/etc/nxml/020A0-020CF.el
+++ b/etc/nxml/020A0-020CF.el
@@ -19,4 +19,3 @@
("PESO SIGN" #x20B1)
))
-;; arch-tag: 2f9ece37-0ae6-4a82-b12e-dc10ac58e6ce
diff --git a/etc/nxml/020D0-020FF.el b/etc/nxml/020D0-020FF.el
index c2626c6f36..7dcc145e84 100644
--- a/etc/nxml/020D0-020FF.el
+++ b/etc/nxml/020D0-020FF.el
@@ -28,4 +28,3 @@
("COMBINING LEFTWARDS ARROW OVERLAY" #x20EA)
))
-;; arch-tag: 4b1f7ef0-287b-49a6-a9f2-910752aac517
diff --git a/etc/nxml/02100-0214F.el b/etc/nxml/02100-0214F.el
index 1c499c0c02..df92477cf6 100644
--- a/etc/nxml/02100-0214F.el
+++ b/etc/nxml/02100-0214F.el
@@ -75,4 +75,3 @@
("TURNED AMPERSAND" #x214B)
))
-;; arch-tag: 4233f761-f78d-4854-a019-2409f78514fa
diff --git a/etc/nxml/02150-0218F.el b/etc/nxml/02150-0218F.el
index ac2e7067fd..e4b7bcbac7 100644
--- a/etc/nxml/02150-0218F.el
+++ b/etc/nxml/02150-0218F.el
@@ -50,4 +50,3 @@
("ROMAN NUMERAL REVERSED ONE HUNDRED" #x2183)
))
-;; arch-tag: 9931b436-670d-471f-8214-f4c4454ae841
diff --git a/etc/nxml/02190-021FF.el b/etc/nxml/02190-021FF.el
index 4a2851a955..e8b6861b07 100644
--- a/etc/nxml/02190-021FF.el
+++ b/etc/nxml/02190-021FF.el
@@ -113,4 +113,3 @@
("LEFT RIGHT OPEN-HEADED ARROW" #x21FF)
))
-;; arch-tag: de5679de-82b6-4d64-9b7c-79c35e12521d
diff --git a/etc/nxml/02200-022FF.el b/etc/nxml/02200-022FF.el
index be8278341d..2889a1c956 100644
--- a/etc/nxml/02200-022FF.el
+++ b/etc/nxml/02200-022FF.el
@@ -257,4 +257,3 @@
("Z NOTATION BAG MEMBERSHIP" #x22FF)
))
-;; arch-tag: 12911bcf-5cc6-4b8a-9f0e-48c0b6f85566
diff --git a/etc/nxml/02300-023FF.el b/etc/nxml/02300-023FF.el
index 58526bd98e..2e7cd88ca6 100644
--- a/etc/nxml/02300-023FF.el
+++ b/etc/nxml/02300-023FF.el
@@ -208,4 +208,3 @@
("RETURN SYMBOL" #x23CE)
))
-;; arch-tag: ee70bee5-f22f-4c0e-bed6-2606b27d94cf
diff --git a/etc/nxml/02400-0243F.el b/etc/nxml/02400-0243F.el
index ff6bdce848..798a795c0c 100644
--- a/etc/nxml/02400-0243F.el
+++ b/etc/nxml/02400-0243F.el
@@ -40,4 +40,3 @@
("SYMBOL FOR SUBSTITUTE FORM TWO" #x2426)
))
-;; arch-tag: efc349c9-065d-4033-b261-7cb961c54072
diff --git a/etc/nxml/02440-0245F.el b/etc/nxml/02440-0245F.el
index 3a484cec29..019d6baecc 100644
--- a/etc/nxml/02440-0245F.el
+++ b/etc/nxml/02440-0245F.el
@@ -12,4 +12,3 @@
("OCR DOUBLE BACKSLASH" #x244A)
))
-;; arch-tag: e532db31-38fd-4eee-8e47-974316fb6dd5
diff --git a/etc/nxml/02460-024FF.el b/etc/nxml/02460-024FF.el
index 4cbea4a5f6..736ff0b937 100644
--- a/etc/nxml/02460-024FF.el
+++ b/etc/nxml/02460-024FF.el
@@ -160,4 +160,3 @@
("DOUBLE CIRCLED NUMBER TEN" #x24FE)
))
-;; arch-tag: 2ec7ede5-ce9d-48b5-a725-dd3f177060f4
diff --git a/etc/nxml/02500-0257F.el b/etc/nxml/02500-0257F.el
index 97e63df862..a8cc739c28 100644
--- a/etc/nxml/02500-0257F.el
+++ b/etc/nxml/02500-0257F.el
@@ -129,4 +129,3 @@
("BOX DRAWINGS HEAVY UP AND LIGHT DOWN" #x257F)
))
-;; arch-tag: 6870ad7c-84cf-42a0-82ce-f6863da1c7ad
diff --git a/etc/nxml/02580-0259F.el b/etc/nxml/02580-0259F.el
index bc4d6a12bf..0c7220971f 100644
--- a/etc/nxml/02580-0259F.el
+++ b/etc/nxml/02580-0259F.el
@@ -33,4 +33,3 @@
("QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT" #x259F)
))
-;; arch-tag: 51c971a7-cd90-42a5-bf18-dd9683bcab41
diff --git a/etc/nxml/025A0-025FF.el b/etc/nxml/025A0-025FF.el
index 47284d4a12..b9fbe6f95d 100644
--- a/etc/nxml/025A0-025FF.el
+++ b/etc/nxml/025A0-025FF.el
@@ -97,4 +97,3 @@
("LOWER RIGHT TRIANGLE" #x25FF)
))
-;; arch-tag: ac97acd5-57a6-4521-bee4-8c2d0a9bd06a
diff --git a/etc/nxml/02600-026FF.el b/etc/nxml/02600-026FF.el
index c0d0a065ae..72ae5c3772 100644
--- a/etc/nxml/02600-026FF.el
+++ b/etc/nxml/02600-026FF.el
@@ -134,4 +134,3 @@
("BLACK CIRCLE WITH TWO WHITE DOTS" #x2689)
))
-;; arch-tag: b976b52e-eefc-4aa3-b96c-7f4998429f77
diff --git a/etc/nxml/02700-027BF.el b/etc/nxml/02700-027BF.el
index 4759925587..5ca5d8fe4f 100644
--- a/etc/nxml/02700-027BF.el
+++ b/etc/nxml/02700-027BF.el
@@ -175,4 +175,3 @@
("OPEN-OUTLINED RIGHTWARDS ARROW" #x27BE)
))
-;; arch-tag: 183adc05-e931-4f1b-8a89-abd760a8fcd5
diff --git a/etc/nxml/027C0-027EF.el b/etc/nxml/027C0-027EF.el
index e0171576a5..04e9d5c048 100644
--- a/etc/nxml/027C0-027EF.el
+++ b/etc/nxml/027C0-027EF.el
@@ -29,4 +29,3 @@
("MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET" #x27EB)
))
-;; arch-tag: f66b9857-6560-4ad9-9adb-1f3b5fb079de
diff --git a/etc/nxml/027F0-027FF.el b/etc/nxml/027F0-027FF.el
index 5da2bc2a22..dce4f7f867 100644
--- a/etc/nxml/027F0-027FF.el
+++ b/etc/nxml/027F0-027FF.el
@@ -17,4 +17,3 @@
("LONG RIGHTWARDS SQUIGGLE ARROW" #x27FF)
))
-;; arch-tag: 64623112-13d2-4bd6-8768-5508e3a7f8a9
diff --git a/etc/nxml/02800-028FF.el b/etc/nxml/02800-028FF.el
index d936481aca..efcf879669 100644
--- a/etc/nxml/02800-028FF.el
+++ b/etc/nxml/02800-028FF.el
@@ -257,4 +257,3 @@
("BRAILLE PATTERN DOTS-12345678" #x28FF)
))
-;; arch-tag: 461f6d3c-a4fb-404c-a107-ec8afd212bd2
diff --git a/etc/nxml/02900-0297F.el b/etc/nxml/02900-0297F.el
index d1c217b0df..bf8c2002c8 100644
--- a/etc/nxml/02900-0297F.el
+++ b/etc/nxml/02900-0297F.el
@@ -129,4 +129,3 @@
("DOWN FISH TAIL" #x297F)
))
-;; arch-tag: 57fdeec3-1003-4f3e-ac93-1d698f6eacd8
diff --git a/etc/nxml/02980-029FF.el b/etc/nxml/02980-029FF.el
index 11197e31c9..9751a03c36 100644
--- a/etc/nxml/02980-029FF.el
+++ b/etc/nxml/02980-029FF.el
@@ -129,4 +129,3 @@
("MINY" #x29FF)
))
-;; arch-tag: 4ae3dcff-8f56-4f7e-b9f3-07108e543969
diff --git a/etc/nxml/02A00-02AFF.el b/etc/nxml/02A00-02AFF.el
index 3cdaa5d295..6e7cdf2e64 100644
--- a/etc/nxml/02A00-02AFF.el
+++ b/etc/nxml/02A00-02AFF.el
@@ -257,4 +257,3 @@
("N-ARY WHITE VERTICAL BAR" #x2AFF)
))
-;; arch-tag: 672a8fbf-fb4a-4862-8b8e-2379b799484c
diff --git a/etc/nxml/02E80-02EFF.el b/etc/nxml/02E80-02EFF.el
index deb81105ea..aca68f2027 100644
--- a/etc/nxml/02E80-02EFF.el
+++ b/etc/nxml/02E80-02EFF.el
@@ -116,4 +116,3 @@
("CJK RADICAL C-SIMPLIFIED TURTLE" #x2EF3)
))
-;; arch-tag: 59a2c3dd-63ee-4cba-b427-1e8eb782634f
diff --git a/etc/nxml/02F00-02FDF.el b/etc/nxml/02F00-02FDF.el
index 1a2448aa84..63ad5b758b 100644
--- a/etc/nxml/02F00-02FDF.el
+++ b/etc/nxml/02F00-02FDF.el
@@ -215,4 +215,3 @@
("KANGXI RADICAL FLUTE" #x2FD5)
))
-;; arch-tag: e7210935-b74b-4a42-88c6-de146c755742
diff --git a/etc/nxml/02FF0-02FFF.el b/etc/nxml/02FF0-02FFF.el
index f94bd1fe31..fc1eafb11e 100644
--- a/etc/nxml/02FF0-02FFF.el
+++ b/etc/nxml/02FF0-02FFF.el
@@ -13,4 +13,3 @@
("IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID" #x2FFB)
))
-;; arch-tag: dd6d1436-4620-4994-8da5-9140a8a6ec5b
diff --git a/etc/nxml/03000-0303F.el b/etc/nxml/03000-0303F.el
index 997795f31d..a2f6435cdf 100644
--- a/etc/nxml/03000-0303F.el
+++ b/etc/nxml/03000-0303F.el
@@ -65,4 +65,3 @@
("IDEOGRAPHIC HALF FILL SPACE" #x303F)
))
-;; arch-tag: 05689acc-1d48-4a36-9b60-75d5abf8a065
diff --git a/etc/nxml/03040-0309F.el b/etc/nxml/03040-0309F.el
index 18cdaa0827..2484d11b95 100644
--- a/etc/nxml/03040-0309F.el
+++ b/etc/nxml/03040-0309F.el
@@ -94,4 +94,3 @@
("HIRAGANA DIGRAPH YORI" #x309F)
))
-;; arch-tag: dc96b2bf-74f6-4885-adbb-4a81bd2884be
diff --git a/etc/nxml/030A0-030FF.el b/etc/nxml/030A0-030FF.el
index 2407060527..4507ed4083 100644
--- a/etc/nxml/030A0-030FF.el
+++ b/etc/nxml/030A0-030FF.el
@@ -97,4 +97,3 @@
("KATAKANA DIGRAPH KOTO" #x30FF)
))
-;; arch-tag: 58c48b02-037a-43f3-b225-9e9bf37a7fbd
diff --git a/etc/nxml/03100-0312F.el b/etc/nxml/03100-0312F.el
index f7fa151bb6..6ab50b1dbb 100644
--- a/etc/nxml/03100-0312F.el
+++ b/etc/nxml/03100-0312F.el
@@ -41,4 +41,3 @@
("BOPOMOFO LETTER GN" #x312C)
))
-;; arch-tag: 0aeb6bb4-ac93-4014-a836-eb793636a168
diff --git a/etc/nxml/03130-0318F.el b/etc/nxml/03130-0318F.el
index 8bf3334371..3aabfb76cf 100644
--- a/etc/nxml/03130-0318F.el
+++ b/etc/nxml/03130-0318F.el
@@ -95,4 +95,3 @@
("HANGUL LETTER ARAEAE" #x318E)
))
-;; arch-tag: 3ea3aa1e-8551-433b-8506-9591ed150673
diff --git a/etc/nxml/03190-0319F.el b/etc/nxml/03190-0319F.el
index 1fe8f164c6..6dce50e469 100644
--- a/etc/nxml/03190-0319F.el
+++ b/etc/nxml/03190-0319F.el
@@ -17,4 +17,3 @@
("IDEOGRAPHIC ANNOTATION MAN MARK" #x319F)
))
-;; arch-tag: e25f7331-0993-4daf-a193-0fe56332f9fa
diff --git a/etc/nxml/031A0-031BF.el b/etc/nxml/031A0-031BF.el
index 0119b7e78d..54d2f54b80 100644
--- a/etc/nxml/031A0-031BF.el
+++ b/etc/nxml/031A0-031BF.el
@@ -25,4 +25,3 @@
("BOPOMOFO FINAL LETTER H" #x31B7)
))
-;; arch-tag: 1821baca-d463-4e8e-bf3d-97a35af58fd4
diff --git a/etc/nxml/031F0-031FF.el b/etc/nxml/031F0-031FF.el
index 125d12d30f..d447c3b0be 100644
--- a/etc/nxml/031F0-031FF.el
+++ b/etc/nxml/031F0-031FF.el
@@ -17,4 +17,3 @@
("KATAKANA LETTER SMALL RO" #x31FF)
))
-;; arch-tag: 090acfb7-1a46-4b05-bebb-573bbc0d8a82
diff --git a/etc/nxml/03200-032FF.el b/etc/nxml/03200-032FF.el
index 8b8c84e07d..eb05e9d2f3 100644
--- a/etc/nxml/03200-032FF.el
+++ b/etc/nxml/03200-032FF.el
@@ -233,4 +233,3 @@
("CIRCLED KATAKANA WO" #x32FE)
))
-;; arch-tag: 56d35bfa-c41b-4779-be54-3999fbe11265
diff --git a/etc/nxml/03300-033FF.el b/etc/nxml/03300-033FF.el
index acf2b6899b..7d5820e08a 100644
--- a/etc/nxml/03300-033FF.el
+++ b/etc/nxml/03300-033FF.el
@@ -250,4 +250,3 @@
("IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE" #x33FE)
))
-;; arch-tag: 818090a1-7854-485f-80bc-97e89f733e75
diff --git a/etc/nxml/03400-04DBF.el b/etc/nxml/03400-04DBF.el
index 45d69119e8..6bae106687 100644
--- a/etc/nxml/03400-04DBF.el
+++ b/etc/nxml/03400-04DBF.el
@@ -1,4 +1,3 @@
(nxml-define-char-name-set 'cjk-unified-ideographs-extension-a
'())
-;; arch-tag: 571a41a5-7cc5-47c4-b98c-e98a415723bb
diff --git a/etc/nxml/0A000-0A48F.el b/etc/nxml/0A000-0A48F.el
index 9c54d94e55..e797cf13b0 100644
--- a/etc/nxml/0A000-0A48F.el
+++ b/etc/nxml/0A000-0A48F.el
@@ -1166,4 +1166,3 @@
("YI SYLLABLE YYR" #xA48C)
))
-;; arch-tag: 4c900a8b-cd84-4c41-86f4-dcb47efac01b
diff --git a/etc/nxml/0A490-0A4CF.el b/etc/nxml/0A490-0A4CF.el
index 57e731ed12..3052371a12 100644
--- a/etc/nxml/0A490-0A4CF.el
+++ b/etc/nxml/0A490-0A4CF.el
@@ -56,4 +56,3 @@
("YI RADICAL KE" #xA4C6)
))
-;; arch-tag: 2c93cdf1-e6f2-4a91-a798-3e1d7c094cf4
diff --git a/etc/nxml/0FB00-0FB4F.el b/etc/nxml/0FB00-0FB4F.el
index 52d47dd746..20b19e19ff 100644
--- a/etc/nxml/0FB00-0FB4F.el
+++ b/etc/nxml/0FB00-0FB4F.el
@@ -59,4 +59,3 @@
("HEBREW LIGATURE ALEF LAMED" #xFB4F)
))
-;; arch-tag: 06519b44-408f-43f4-89e6-3e5c1d2afe4d
diff --git a/etc/nxml/0FB50-0FDFF.el b/etc/nxml/0FB50-0FDFF.el
index 87b83cfff0..9feea5e918 100644
--- a/etc/nxml/0FB50-0FDFF.el
+++ b/etc/nxml/0FB50-0FDFF.el
@@ -595,4 +595,3 @@
("RIAL SIGN" #xFDFC)
))
-;; arch-tag: 1fbfd997-096a-43c8-88a1-9d438ddabb57
diff --git a/etc/nxml/0FE00-0FE0F.el b/etc/nxml/0FE00-0FE0F.el
index 187b58d4e6..04d855e560 100644
--- a/etc/nxml/0FE00-0FE0F.el
+++ b/etc/nxml/0FE00-0FE0F.el
@@ -17,4 +17,3 @@
("VARIATION SELECTOR-16" #xFE0F)
))
-;; arch-tag: 591c3457-10c0-4036-8bfb-6cccd23f44dd
diff --git a/etc/nxml/0FE20-0FE2F.el b/etc/nxml/0FE20-0FE2F.el
index 358dccd061..f2c9ae8a72 100644
--- a/etc/nxml/0FE20-0FE2F.el
+++ b/etc/nxml/0FE20-0FE2F.el
@@ -5,4 +5,3 @@
("COMBINING DOUBLE TILDE RIGHT HALF" #xFE23)
))
-;; arch-tag: de291a34-737a-4bbb-8d97-94f878921d05
diff --git a/etc/nxml/0FE30-0FE4F.el b/etc/nxml/0FE30-0FE4F.el
index b7fe8c00d6..cef6a39c83 100644
--- a/etc/nxml/0FE30-0FE4F.el
+++ b/etc/nxml/0FE30-0FE4F.el
@@ -31,4 +31,3 @@
("WAVY LOW LINE" #xFE4F)
))
-;; arch-tag: 6d8f4c10-304f-4d0b-b830-1e37a8386015
diff --git a/etc/nxml/0FE50-0FE6F.el b/etc/nxml/0FE50-0FE6F.el
index 966d5a21c4..eda9e89630 100644
--- a/etc/nxml/0FE50-0FE6F.el
+++ b/etc/nxml/0FE50-0FE6F.el
@@ -27,4 +27,3 @@
("SMALL COMMERCIAL AT" #xFE6B)
))
-;; arch-tag: 4facf8e4-cea2-4194-bc17-f0959c358f7f
diff --git a/etc/nxml/0FE70-0FEFF.el b/etc/nxml/0FE70-0FEFF.el
index 07b03dadc7..4de14be73c 100644
--- a/etc/nxml/0FE70-0FEFF.el
+++ b/etc/nxml/0FE70-0FEFF.el
@@ -142,4 +142,3 @@
("ZERO WIDTH NO-BREAK SPACE" #xFEFF)
))
-;; arch-tag: cdc72129-3cd8-4568-8366-c0deee767c17
diff --git a/etc/nxml/0FF00-0FFEF.el b/etc/nxml/0FF00-0FFEF.el
index fb8dd897f1..a2134af9ac 100644
--- a/etc/nxml/0FF00-0FFEF.el
+++ b/etc/nxml/0FF00-0FFEF.el
@@ -226,4 +226,3 @@
("HALFWIDTH WHITE CIRCLE" #xFFEE)
))
-;; arch-tag: 8af7a95d-6e71-47da-9679-b516b6e2f01a
diff --git a/etc/nxml/0FFF0-0FFFF.el b/etc/nxml/0FFF0-0FFFF.el
index 392312be01..e7366549d5 100644
--- a/etc/nxml/0FFF0-0FFFF.el
+++ b/etc/nxml/0FFF0-0FFFF.el
@@ -6,4 +6,3 @@
("REPLACEMENT CHARACTER" #xFFFD)
))
-;; arch-tag: 0bef6e81-4857-4032-a18a-18784233cc81
diff --git a/etc/nxml/10300-1032F.el b/etc/nxml/10300-1032F.el
index 95d2600552..cf394b58ee 100644
--- a/etc/nxml/10300-1032F.el
+++ b/etc/nxml/10300-1032F.el
@@ -36,4 +36,3 @@
("OLD ITALIC NUMERAL FIFTY" #x10323)
))
-;; arch-tag: 823cbcc4-a815-4f82-a1e9-348c2f5d237e
diff --git a/etc/nxml/10330-1034F.el b/etc/nxml/10330-1034F.el
index edd9de4050..9c6dfb6ead 100644
--- a/etc/nxml/10330-1034F.el
+++ b/etc/nxml/10330-1034F.el
@@ -28,4 +28,3 @@
("GOTHIC LETTER NINE HUNDRED" #x1034A)
))
-;; arch-tag: 29caddb6-76f0-44bc-83f9-6cef55c20600
diff --git a/etc/nxml/10400-1044F.el b/etc/nxml/10400-1044F.el
index a26005a395..8aea9e3d72 100644
--- a/etc/nxml/10400-1044F.el
+++ b/etc/nxml/10400-1044F.el
@@ -77,4 +77,3 @@
("DESERET SMALL LETTER ENG" #x1044D)
))
-;; arch-tag: 0fbf6586-41cf-41b2-88e9-d113db5d933e
diff --git a/etc/nxml/1D000-1D0FF.el b/etc/nxml/1D000-1D0FF.el
index 1c76fd0eff..5d2eb237be 100644
--- a/etc/nxml/1D000-1D0FF.el
+++ b/etc/nxml/1D000-1D0FF.el
@@ -247,4 +247,3 @@
("BYZANTINE MUSICAL SYMBOL GORGON NEO KATO" #x1D0F5)
))
-;; arch-tag: 2b360fc3-2760-43c9-9d3e-2ef3fd8452b5
diff --git a/etc/nxml/1D100-1D1FF.el b/etc/nxml/1D100-1D1FF.el
index 1bfbf2608d..9c71f5ca78 100644
--- a/etc/nxml/1D100-1D1FF.el
+++ b/etc/nxml/1D100-1D1FF.el
@@ -220,4 +220,3 @@
("MUSICAL SYMBOL PES SUBPUNCTIS" #x1D1DD)
))
-;; arch-tag: 4e6bd082-bedb-46a2-81be-06f86fbb74f4
diff --git a/etc/nxml/1D400-1D7FF.el b/etc/nxml/1D400-1D7FF.el
index f702765c55..5d4f159300 100644
--- a/etc/nxml/1D400-1D7FF.el
+++ b/etc/nxml/1D400-1D7FF.el
@@ -992,4 +992,3 @@
("MATHEMATICAL MONOSPACE DIGIT NINE" #x1D7FF)
))
-;; arch-tag: af730f58-d05e-4cd5-8a94-f914444a5351
diff --git a/etc/nxml/E0000-E007F.el b/etc/nxml/E0000-E007F.el
index 1f4da35df2..db1d8ad9a3 100644
--- a/etc/nxml/E0000-E007F.el
+++ b/etc/nxml/E0000-E007F.el
@@ -98,4 +98,3 @@
("CANCEL TAG" #xE007F)
))
-;; arch-tag: e79cd51a-999f-4f8c-8f11-a5eeb5c2de4c
diff --git a/etc/nxml/test-invalid.xml b/etc/nxml/test-invalid.xml
index 87a0031f8e..bdf6a2cb7e 100644
--- a/etc/nxml/test-invalid.xml
+++ b/etc/nxml/test-invalid.xml
@@ -6,6 +6,3 @@
<p>This XHTML document is <span class="#foo">invalid</span>.</p>
</body>
</html>
-
-<!-- arch-tag: 8127c8be-d617-46f5-bdf2-c9159a417c38
- (do not change this comment) -->
diff --git a/etc/nxml/test-valid.xml b/etc/nxml/test-valid.xml
index c11380a0e4..56a12800fa 100644
--- a/etc/nxml/test-valid.xml
+++ b/etc/nxml/test-valid.xml
@@ -6,6 +6,3 @@
<p>This is a valid, albeit boring, XHTML document.</p>
</body>
</html>
-
-<!-- arch-tag: 6f7701be-ec51-48d0-bb63-38ed564718d6
- (do not change this comment) -->
diff --git a/etc/ps-prin0.ps b/etc/ps-prin0.ps
index 52e12cbd8e..ed48807b06 100644
--- a/etc/ps-prin0.ps
+++ b/etc/ps-prin0.ps
@@ -1,8 +1,7 @@
% === BEGIN ps-print prologue 0
% version: 6.0
-% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-% Free Software Foundation, Inc.
+% Copyright (C) 2000-2011 Free Software Foundation, Inc.
% This file is part of GNU Emacs.
diff --git a/etc/ps-prin1.ps b/etc/ps-prin1.ps
index f64ca2faa0..dbb0db846b 100644
--- a/etc/ps-prin1.ps
+++ b/etc/ps-prin1.ps
@@ -1,8 +1,7 @@
% === BEGIN ps-print prologue 1
% version: 6.1
-% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-% Free Software Foundation, Inc.
+% Copyright (C) 2000-2011 Free Software Foundation, Inc.
% This file is part of GNU Emacs.
diff --git a/etc/refcards/Makefile b/etc/refcards/Makefile
index c1bddd124d..115b0ca084 100644
--- a/etc/refcards/Makefile
+++ b/etc/refcards/Makefile
@@ -1,7 +1,6 @@
### Makefile for Emacs refcards
-## Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-## 2008, 2009, 2010 Free Software Foundation, Inc.
+## Copyright (C) 1993-1994, 2001-2011 Free Software Foundation, Inc.
## This file is part of GNU Emacs.
#
@@ -29,24 +28,24 @@ REFCARDS_PDF = refcard.pdf cs-refcard.pdf de-refcard.pdf fr-refcard.pdf \
refcards_pdf: ${REFCARDS_PDF}
refcards_ps: ${REFCARDS_PDF:.pdf=.ps}
-DIRED-REFCARDS_PDF = dired-ref.pdf cs-dired-ref.pdf fr-dired-ref.pdf \
+DIRED_REFCARDS_PDF = dired-ref.pdf cs-dired-ref.pdf fr-dired-ref.pdf \
sk-dired-ref.pdf
-dired-refcards_pdf: ${DIRED-REFCARDS_PDF}
-dired-refcards_ps: ${DIRED-REFCARDS_PDF:.pdf=.ps}
+dired-refcards_pdf: ${DIRED_REFCARDS_PDF}
+dired-refcards_ps: ${DIRED_REFCARDS_PDF:.pdf=.ps}
-MISC-REFCARDS_PDF = calccard.pdf gnus-booklet.pdf gnus-refcard.pdf orgcard.pdf
-misc-refcards_pdf: ${MISC-REFCARDS_PDF}
-misc-refcards_ps: ${MISC-REFCARDS_PDF:.pdf=.ps}
+MISC_REFCARDS_PDF = calccard.pdf gnus-booklet.pdf gnus-refcard.pdf orgcard.pdf
+misc-refcards_pdf: ${MISC_REFCARDS_PDF}
+misc-refcards_ps: ${MISC_REFCARDS_PDF:.pdf=.ps}
## The following files are not included with Emacs.
-SURVIVAL-CARDS_PDF = survival.pdf cs-survival.pdf sk-survival.pdf
-survival-cards_pdf: ${SURVIVAL-CARDS_PDF}
-survival-cards_ps: ${SURVIVAL-CARDS_PDF:.pdf=.ps}
+SURVIVAL_CARDS_PDF = survival.pdf cs-survival.pdf sk-survival.pdf
+survival-cards_pdf: ${SURVIVAL_CARDS_PDF}
+survival-cards_ps: ${SURVIVAL_CARDS_PDF:.pdf=.ps}
-VIPER-CARDS_PDF = vipcard.pdf viperCard.pdf
-viper-cards_pdf: ${VIPER-CARDS_PDF}
-viper-cards_ps: ${VIPER-CARDS_PDF:.pdf=.ps}
+VIPER_CARDS_PDF = vipcard.pdf viperCard.pdf
+viper-cards_pdf: ${VIPER_CARDS_PDF}
+viper-cards_ps: ${VIPER_CARDS_PDF:.pdf=.ps}
## PDF files.
@@ -75,7 +74,7 @@ ru-refcard.pdf: %.pdf: %.tex
#gnus-logo.pdf: %.pdf: %.eps
# ps2pdf $<
-gnus-refcard.pdf: %.pdf: %.tex gnus-logo.pdf
+gnus-refcard.pdf: %.pdf: %.tex gnus-logo.pdf
pdflatex $<
gnus-booklet.pdf: gnus-refcard.tex gnus-logo.pdf
diff --git a/etc/refcards/README b/etc/refcards/README
index 7a0d3f4e2a..fa5ae9258e 100644
--- a/etc/refcards/README
+++ b/etc/refcards/README
@@ -12,6 +12,5 @@ it is reproduced here for convenience.
File: gnus-logo.eps, gnus-logo.pdf
Author: Luis Fernandes <[email protected]>
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
diff --git a/etc/refcards/calccard.tex b/etc/refcards/calccard.tex
index 3684d767a7..f60be117ad 100644
--- a/etc/refcards/calccard.tex
+++ b/etc/refcards/calccard.tex
@@ -20,8 +20,7 @@
% Typical command to format: tex calccard.tex
% Typical command to print (3 cols): dvips -t landscape calccard.dvi
-% Copyright (C) 1987, 1992, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1987, 1992, 2001-2011 Free Software Foundation, Inc.
% This file is part of GNU Emacs.
@@ -65,7 +64,7 @@
% Internet: [email protected]
\def\emacsversionnumber{23}
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
\centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
@@ -674,4 +673,3 @@ Variable names are single digits or whole words.
% compile-command: "pdftex calccard"
% End:
-% arch-tag: a2764f34-ec23-4083-bd5c-53f9e70a5da9
diff --git a/etc/refcards/cs-dired-ref.tex b/etc/refcards/cs-dired-ref.tex
index e531829f06..63239b55c1 100644
--- a/etc/refcards/cs-dired-ref.tex
+++ b/etc/refcards/cs-dired-ref.tex
@@ -1,7 +1,6 @@
% Reference Card for Dired
-% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-% 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 2000-2011 Free Software Foundation, Inc.
% Author: Evgeny Roubinchtein <[email protected]>
% Czech translation: Pavel Jan�k <[email protected]>, March 2001
@@ -43,7 +42,7 @@
\pdflayout=(0)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
% Nothing else needs to be changed.
@@ -399,4 +398,3 @@ For copies of the GNU Emacs manual, see:
\bye
-% arch-tag: dd78e947-5b89-4e5b-8bab-b6003719dce5
diff --git a/etc/refcards/cs-refcard.tex b/etc/refcards/cs-refcard.tex
index 6f902aefae..8b9456b4a6 100644
--- a/etc/refcards/cs-refcard.tex
+++ b/etc/refcards/cs-refcard.tex
@@ -1,7 +1,7 @@
% Reference Card for GNU Emacs
-% Copyright (C) 1987, 1993, 1996, 1997, 2001, 2002, 2003, 2004, 2005,
-% 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1987, 1993, 1996-1997, 2001-2011
+% Free Software Foundation, Inc.
% Author: Stephen Gildea <[email protected]>
% Czech translation: Jan Buchal <[email protected]>, January 1999
@@ -60,7 +60,7 @@
\pdflayout=(0)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
% Nothing else needs to be changed.
@@ -664,4 +664,3 @@ V�ce se dozv�te po proveden� \kbd{C-h f interactive}.
% compile-command: "csplain cs-refcard"
% End:
-% arch-tag: 24ab5519-539c-4941-9a95-4ed9d819030f
diff --git a/etc/refcards/cs-survival.tex b/etc/refcards/cs-survival.tex
index d6d7cea56c..d20d6a0836 100644
--- a/etc/refcards/cs-survival.tex
+++ b/etc/refcards/cs-survival.tex
@@ -1,7 +1,6 @@
% Title: GNU Emacs Survival Card
-% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-% 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 2000-2011 Free Software Foundation, Inc.
% Author: Wlodek Bzyl <[email protected]>
% Czech translation: Pavel Jan�k <[email protected]>, March 2001
@@ -56,7 +55,7 @@
\chyph
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
\def\copyrightnotice{\penalty-1\vfill
\vbox{\smallfont\baselineskip=0.8\baselineskip\raggedcenter
@@ -416,4 +415,3 @@ m�d� v z�vork�ch.
% compile-command: "csplain survival"
% End:
-% arch-tag: 86b21d3f-d8b6-412d-8d77-e6e8728f590e
diff --git a/etc/refcards/de-refcard.tex b/etc/refcards/de-refcard.tex
index b37c52b669..58527be9d7 100644
--- a/etc/refcards/de-refcard.tex
+++ b/etc/refcards/de-refcard.tex
@@ -1,7 +1,6 @@
% Reference Card for GNU Emacs
-% Copyright (C) 1987, 1993, 1996, 2000, 2001, 2002, 2003, 2004, 2005,
-% 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1987, 1993, 1996, 2000-2011 Free Software Foundation, Inc.
% Author: Stephen Gildea <[email protected]>
% German translation: Sven Joachim <[email protected]>
@@ -62,7 +61,7 @@
\mdqoff % deactivates the "-char
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
% Nothing else needs to be changed below this line.
@@ -680,4 +679,3 @@ wird. F\"ur n\"ahere Details geben Sie \kbd{C-h f interactive} ein.
% compile-command: "pdftex de-refcard"
% End:
-% arch-tag: af0a2666-f289-49f1-a9cc-cedab9783314
diff --git a/etc/refcards/dired-ref.tex b/etc/refcards/dired-ref.tex
index 951154da16..f1fd6808cd 100644
--- a/etc/refcards/dired-ref.tex
+++ b/etc/refcards/dired-ref.tex
@@ -1,7 +1,6 @@
% Reference Card for Dired
-% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-% 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 2000-2011 Free Software Foundation, Inc.
% Author: Evgeny Roubinchtein <[email protected]>
@@ -45,7 +44,7 @@
\pdflayout=(1)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
% Nothing else needs to be changed.
@@ -408,4 +407,3 @@ For copies of the GNU Emacs manual, see:
\bye
-% arch-tag: 483e7bb4-4576-4733-9fca-0eae1c861484
diff --git a/etc/refcards/fr-dired-ref.tex b/etc/refcards/fr-dired-ref.tex
index 66c90306a6..01afe76ff3 100644
--- a/etc/refcards/fr-dired-ref.tex
+++ b/etc/refcards/fr-dired-ref.tex
@@ -1,7 +1,6 @@
% Reference Card for Dired
-% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-% 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 2000-2011 Free Software Foundation, Inc.
% Author: Evgeny Roubinchtein <[email protected]>
% French translation: Eric Jacoboni
@@ -37,7 +36,7 @@
\pdflayout=(0)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
% Nothing else needs to be changed.
@@ -413,4 +412,3 @@ Pour obtenir des copies du manuel de GNU Emacs:
\bye
-% arch-tag: ffe6a489-24a2-4083-b8c3-5d03b621689d
diff --git a/etc/refcards/fr-refcard.tex b/etc/refcards/fr-refcard.tex
index f356c229ac..61caccbea8 100644
--- a/etc/refcards/fr-refcard.tex
+++ b/etc/refcards/fr-refcard.tex
@@ -1,7 +1,7 @@
% Reference Card for GNU Emacs
-% Copyright (C) 1987, 1993, 1996, 1997, 2001, 2002, 2003, 2004, 2005,
-% 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1987, 1993, 1996-1997, 2001-2011
+% Free Software Foundation, Inc.
% Author: Stephen Gildea <[email protected]>
% French translation: Eric Jacoboni
@@ -57,7 +57,7 @@
\pdflayout=(0l)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
% Nothing else needs to be changed below this line.
@@ -676,4 +676,3 @@ plus de pr\'ecisions.
% compile-command: "pdftex fr-refcard"
% End:
-% arch-tag: 39d6dc6e-1a4a-4071-84db-4719d4e9e40d
diff --git a/etc/refcards/fr-survival.tex b/etc/refcards/fr-survival.tex
index 168026c79f..b9c84ac680 100644
--- a/etc/refcards/fr-survival.tex
+++ b/etc/refcards/fr-survival.tex
@@ -1,8 +1,7 @@
%&tex
% Title: GNU Emacs Survival Card
-% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-% 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 2000-2011 Free Software Foundation, Inc.
% Author: Wlodek Bzyl <[email protected]>
% French translation: \'Eric Jacoboni <[email protected]>, November 2001
@@ -51,7 +50,7 @@
\pdflayout=(0)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
\def\copyrightnotice{\penalty-1\vfill
\vbox{\smallfont\baselineskip=0.8\baselineskip\raggedcenter
@@ -420,4 +419,3 @@ contient entre parenth\`eses le nom des modes en cours.
% compile-command: "pdftex survival"
% End:
-% arch-tag: 2fb4e93f-8bfa-4ab4-bc6d-b475131d766a
diff --git a/etc/refcards/gnus-logo.eps b/etc/refcards/gnus-logo.eps
index ea4eebbaf4..36659ebfb4 100644
--- a/etc/refcards/gnus-logo.eps
+++ b/etc/refcards/gnus-logo.eps
@@ -1,6 +1,5 @@
%!PS-Adobe-2.0 EPSF-2.0
-% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-% Free Software Foundation, Inc.
+% Copyright (C) 2000-2011 Free Software Foundation, Inc.
%
% Author: Luis Fernandes <[email protected]>
%
diff --git a/etc/refcards/gnus-refcard.tex b/etc/refcards/gnus-refcard.tex
index 1b23188cd9..b164a28842 100644
--- a/etc/refcards/gnus-refcard.tex
+++ b/etc/refcards/gnus-refcard.tex
@@ -120,8 +120,7 @@
%% Gnus logo by Luis Fernandes.
\newcommand{\Copyright}{%
\begin{center}
- Copyright \copyright\ 1995, 2000, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.\\*
+ Copyright \copyright\ 1995, 2000, 2002-2011 Free Software Foundation, Inc.\\*
\end{center}
Permission is granted to make and distribute copies of this reference
diff --git a/etc/refcards/orgcard.tex b/etc/refcards/orgcard.tex
index c55c55dcf9..f35ed20914 100644
--- a/etc/refcards/orgcard.tex
+++ b/etc/refcards/orgcard.tex
@@ -1,7 +1,7 @@
% Reference Card for Org Mode
\def\orgversionnumber{7.4}
\def\versionyear{2010} % latest update
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
%**start of header
\newcount\columnsperpage
@@ -17,8 +17,8 @@
\pdflayout=(0l)
% Nothing else needs to be changed below this line.
-% Copyright (C) 1987, 1993, 1996, 1997, 2001, 2002, 2003, 2004, 2005,
-% 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+% Copyright (C) 1987, 1993, 1996-1997, 2001-2011
+% Free Software Foundation, Inc.
% This file is part of GNU Emacs.
@@ -683,4 +683,3 @@ your own key as shown under INSTALLATION.
% compile-command: "tex refcard"
% End:
-% arch-tag: 139f6750-5cfc-49ca-92b5-237fe5795290
diff --git a/etc/refcards/pdflayout.sty b/etc/refcards/pdflayout.sty
index c9f5ae15ab..c7eb1913a0 100644
--- a/etc/refcards/pdflayout.sty
+++ b/etc/refcards/pdflayout.sty
@@ -1,4 +1,4 @@
-% Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 2007-2011 Free Software Foundation, Inc.
% This file is part of GNU Emacs.
@@ -41,7 +41,3 @@
\else
\def\pdflayout=(#1#2){}
\fi
-
-% archtag: 63c938a5-cc78-4964-962d-603c90d34afc
-
-% arch-tag: 3464d27c-1439-473a-bc47-a7c501e8c156
diff --git a/etc/refcards/pl-refcard.tex b/etc/refcards/pl-refcard.tex
index cded316652..2362411670 100644
--- a/etc/refcards/pl-refcard.tex
+++ b/etc/refcards/pl-refcard.tex
@@ -1,8 +1,7 @@
%&mex
% Reference Card for GNU Emacs
-% Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-% 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
% Author: Stephen Gildea <[email protected]>
% Polish translation: W{\l}odek Bzyl <[email protected]>
@@ -71,7 +70,7 @@
\pdflayout=(0)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
% Nothing else needs to be changed.
@@ -994,4 +993,3 @@ przez wywo/lanie \kbd{C-h f interactive}.
% compile-command: "pdftex pl-refcard"
% End:
-% arch-tag: 19d15a16-70be-40c8-ad91-88899aac32a9
diff --git a/etc/refcards/pt-br-refcard.tex b/etc/refcards/pt-br-refcard.tex
index c242ac2814..4091f59d1f 100644
--- a/etc/refcards/pt-br-refcard.tex
+++ b/etc/refcards/pt-br-refcard.tex
@@ -1,7 +1,7 @@
% Reference Card for GNU Emacs
-% Copyright (C) 1987, 1993, 1996, 1997, 2002, 2003, 2004, 2006, 2007,
-% 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1987, 1993, 1996-1997, 2002-2004, 2006-2011
+% Free Software Foundation, Inc.
% Author: Stephen Gildea <[email protected]>
% Portuguese translation: Rodrigo Real <[email protected]>
@@ -63,7 +63,7 @@
\pdflayout=(0l)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
% Nothing else needs to be changed below this line.
@@ -680,4 +680,3 @@ detalhes.
% coding: iso-latin-1
% End:
-% arch-tag: 56bf248c-a1f3-443d-93f7-02d7aea67d94
diff --git a/etc/refcards/refcard.tex b/etc/refcards/refcard.tex
index 735639b08e..52b9348db2 100644
--- a/etc/refcards/refcard.tex
+++ b/etc/refcards/refcard.tex
@@ -1,7 +1,7 @@
% Reference Card for GNU Emacs
-% Copyright (C) 1987, 1993, 1996, 1997, 2001, 2002, 2003, 2004, 2005,
-% 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1987, 1993, 1996-1997, 2001-2011
+% Free Software Foundation, Inc.
% Author: Stephen Gildea <[email protected]>
@@ -64,7 +64,7 @@
% Nothing else needs to be changed below this line.
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2010} % copyright year
+\def\year{2011} % copyright year
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
\centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
@@ -674,4 +674,3 @@ Type \kbd{C-h f interactive} for more details.
% compile-command: "pdftex refcard"
% End:
-% arch-tag: d67bdf5d-b77c-44eb-a22e-f4f7d25174d2
diff --git a/etc/refcards/ru-refcard.tex b/etc/refcards/ru-refcard.tex
index 4b314726e1..f2b47acc80 100644
--- a/etc/refcards/ru-refcard.tex
+++ b/etc/refcards/ru-refcard.tex
@@ -1,5 +1,4 @@
-% Copyright (C) 1997, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-% 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1997, 2002-2011 Free Software Foundation, Inc.
% Author: Stephen Gildea <[email protected]>
% Russian translation: Alex Ott <[email protected]>
@@ -23,7 +22,7 @@
\setlength{\ColThreeWidth}{25mm}
\newcommand{\versionemacs}[0]{23} % version of Emacs this is for
-\newcommand{\cyear}[0]{2010} % copyright year
+\newcommand{\cyear}[0]{2011} % copyright year
\newcommand\shortcopyrightnotice[0]{\vskip 1ex plus 2 fill
\centerline{\footnotesize \copyright\ \cyear\ Free Software Foundation, Inc.
@@ -524,4 +523,3 @@ With ARG, put point on line ARG."
% coding: cyrillic-koi8
% End:
-% arch-tag: 868a12f6-4339-4a14-a56e-4a3937277a9e
diff --git a/etc/refcards/sk-dired-ref.tex b/etc/refcards/sk-dired-ref.tex
index 5a2d04123d..12d66ce955 100644
--- a/etc/refcards/sk-dired-ref.tex
+++ b/etc/refcards/sk-dired-ref.tex
@@ -1,7 +1,6 @@
% Reference Card for Dired
-% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-% 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 2000-2011 Free Software Foundation, Inc.
% Author: Evgeny Roubinchtein <[email protected]>
% Czech translation: Pavel Jan�k <[email protected]>, March 2001
@@ -44,7 +43,7 @@
\pdflayout=(0)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
% Nothing else needs to be changed.
@@ -407,4 +406,3 @@ For copies of the GNU Emacs manual, see:
% compile-command: "csplain sk-dired-ref"
% End:
-% arch-tag: d5b57e24-16ec-4981-9315-14d3d16d3062
diff --git a/etc/refcards/sk-refcard.tex b/etc/refcards/sk-refcard.tex
index 7fd7b0d062..789bbaea92 100644
--- a/etc/refcards/sk-refcard.tex
+++ b/etc/refcards/sk-refcard.tex
@@ -1,7 +1,7 @@
% Reference Card for GNU Emacs
-% Copyright (C) 1987, 1993, 1996, 1997, 2001, 2002, 2003, 2004, 2005,
-% 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1987, 1993, 1996-1997, 2001-2011
+% Free Software Foundation, Inc.
% Author: Stephen Gildea <[email protected]>
% Czech translation: Jan Buchal <[email protected]>, January 1999
@@ -665,4 +665,3 @@ Viac sa dozviete po vykonan� \kbd{C-h f interactive}.
% coding: iso-latin-2
% End:
-% arch-tag: 9f8eacf2-daf9-4162-bc8d-4af7b269f3d3
diff --git a/etc/refcards/sk-survival.tex b/etc/refcards/sk-survival.tex
index ce499d4f52..f496ac1af0 100644
--- a/etc/refcards/sk-survival.tex
+++ b/etc/refcards/sk-survival.tex
@@ -1,7 +1,6 @@
% Title: GNU Emacs Survival Card
-% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-% 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 2000-2011 Free Software Foundation, Inc.
% Author: Wlodek Bzyl <[email protected]>
% Czech translation: Pavel Jan�k <[email protected]>, March 2001
@@ -57,7 +56,7 @@
\shyph
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
\def\copyrightnotice{\penalty-1\vfill
\vbox{\smallfont\baselineskip=0.8\baselineskip\raggedcenter
@@ -419,4 +418,3 @@ m�dov v z�tvork�ch.
% compile-command: "csplain sk-survival"
% End:
-% arch-tag: 126389ad-40b2-4bf9-ac1d-e5105d0986b9
diff --git a/etc/refcards/survival.tex b/etc/refcards/survival.tex
index d92b414dec..845bc38bc4 100644
--- a/etc/refcards/survival.tex
+++ b/etc/refcards/survival.tex
@@ -1,8 +1,7 @@
%&tex
% Title: GNU Emacs Survival Card
-% Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-% 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 2000-2011 Free Software Foundation, Inc.
% Author: Wlodek Bzyl <[email protected]>
@@ -46,7 +45,7 @@
\pdflayout=(1)
\def\versionemacs{23} % version of Emacs this is for
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
\def\copyrightnotice{\penalty-1\vfill
\vbox{\smallfont\baselineskip=0.8\baselineskip\raggedcenter
@@ -412,4 +411,3 @@ contains names of the current modes, in parentheses.
% compile-command: "pdftex survival"
% End:
-% arch-tag: 4f9a0562-617b-4843-aee1-450c41d6b22c
diff --git a/etc/refcards/vipcard.tex b/etc/refcards/vipcard.tex
index 742ef3e01b..47decbb9f7 100644
--- a/etc/refcards/vipcard.tex
+++ b/etc/refcards/vipcard.tex
@@ -1,7 +1,6 @@
% Quick Reference Card for VIP
-% Copyright (C) 1987, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-% 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1987, 2001-2011 Free Software Foundation, Inc.
% Author: Masahiko Sato <[email protected]>, <[email protected]>
@@ -51,7 +50,7 @@
\pdflayout=(1)
\def\versionemacs{18} % version of Emacs this is for
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
\def\versionvip{3.5}
% Nothing else needs to be changed.
@@ -680,4 +679,3 @@ moves 11 lines below current line to the end of buffer.
% compile-command: "pdftex vipcard"
% End:
-% arch-tag: 342a9548-4de4-499d-b864-74fb426b6729
diff --git a/etc/refcards/viperCard.tex b/etc/refcards/viperCard.tex
index 8144fb14cb..594137744f 100644
--- a/etc/refcards/viperCard.tex
+++ b/etc/refcards/viperCard.tex
@@ -1,7 +1,6 @@
% ViperCard -- The Reference Card for Viper under GNU Emacs and XEmacs
-% Copyright (C) 1995, 1996, 1997, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+% Copyright (C) 1995-1997, 2001-2011 Free Software Foundation, Inc.
% Author: Michael Kifer <[email protected]> (Viper)
% Aamod Sane <[email protected]> (VIP 4.3)
@@ -54,7 +53,7 @@
\pdflayout=(1)
\def\versionemacs{21} % version of Emacs this is for
-\def\year{2010} % latest copyright year
+\def\year{2011} % latest copyright year
\def\versionxemacs{20} % version of XEmacs this is for
\def\versionviper{3.0} % version of Viper this is for
@@ -741,4 +740,3 @@ Ex commands can be made to have history. See the manual for details.
% compile-command: "pdftex viperCard"
% End:
-% arch-tag: e287b45c-4c5e-4bf9-ae28-ead4cd9f68e3
diff --git a/etc/schema/locate.rnc b/etc/schema/locate.rnc
index 291c8bfb98..bab527107e 100644
--- a/etc/schema/locate.rnc
+++ b/etc/schema/locate.rnc
@@ -1,4 +1,4 @@
-# Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2003-2004, 2007-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
diff --git a/etc/schema/relaxng.rnc b/etc/schema/relaxng.rnc
index c0d598f08f..15b836c750 100644
--- a/etc/schema/relaxng.rnc
+++ b/etc/schema/relaxng.rnc
@@ -1,6 +1,6 @@
# RELAX NG XML syntax expressed in RELAX NG Compact syntax.
-# Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2003-2004, 2007-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
diff --git a/etc/schema/schemas.xml b/etc/schema/schemas.xml
index 314bdf1145..36c5fd873d 100644
--- a/etc/schema/schemas.xml
+++ b/etc/schema/schemas.xml
@@ -1,4 +1,4 @@
-<!-- Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+<!-- Copyright (C) 2003-2004, 2007-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -22,6 +22,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. -->
<uri pattern="*.html" typeId="XHTML"/>
<uri pattern="*.rng" typeId="RELAX NG"/>
<uri pattern="*.rdf" typeId="RDF"/>
+ <uri pattern="*.dbk" typeId="DocBook"/>
<namespace ns="http://www.w3.org/1999/XSL/Transform" typeId="XSLT"/>
<namespace ns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" typeId="RDF"/>
@@ -55,6 +56,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. -->
<typeId id="DocBook" uri="docbook.rnc"/>
<typeId id="RDF" uri="rdfxml.rnc"/>
</locatingRules>
-
-<!-- arch-tag: 1fde96fa-b401-4033-8514-c4990b1e18a5
- (do not change this comment) -->
diff --git a/etc/ses-example.ses b/etc/ses-example.ses
index d88cedcd70..842d0ad947 100644
--- a/etc/ses-example.ses
+++ b/etc/ses-example.ses
@@ -205,8 +205,7 @@ Sales summary - Acme fundraising
;;; ses--symbolic-formulas: (("Eastern area") ("West-district") ("North&South") ("Other"))
;;; End:
-;;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;;; Free Software Foundation, Inc.
+;;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;;; COPYING PERMISSIONS:
;;;
@@ -222,5 +221,3 @@ Sales summary - Acme fundraising
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: 4fcb0843-e3f9-4270-b8fb-998129190765
diff --git a/etc/srecode/cpp.srt b/etc/srecode/cpp.srt
index 85d304ee84..0b042efce6 100644
--- a/etc/srecode/cpp.srt
+++ b/etc/srecode/cpp.srt
@@ -1,6 +1,6 @@
;;; cpp.srt --- SRecode templates for c++-mode
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/etc/srecode/default.srt b/etc/srecode/default.srt
index b42de2f783..91a7632119 100644
--- a/etc/srecode/default.srt
+++ b/etc/srecode/default.srt
@@ -1,6 +1,6 @@
;;; default.srt --- SRecode templates for srecode-template-mode
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/etc/srecode/doc-cpp.srt b/etc/srecode/doc-cpp.srt
index 2abe572e39..957986e8ed 100644
--- a/etc/srecode/doc-cpp.srt
+++ b/etc/srecode/doc-cpp.srt
@@ -1,6 +1,6 @@
;; doc-c.srt --- SRecode templates for "document" applications
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/etc/srecode/doc-default.srt b/etc/srecode/doc-default.srt
index 2d3094df60..24741fa774 100644
--- a/etc/srecode/doc-default.srt
+++ b/etc/srecode/doc-default.srt
@@ -1,6 +1,6 @@
;; doc-default.srt --- SRecode templates for "document" applications
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/etc/srecode/doc-java.srt b/etc/srecode/doc-java.srt
index f6ef6c9aea..c6d2ef1fd5 100644
--- a/etc/srecode/doc-java.srt
+++ b/etc/srecode/doc-java.srt
@@ -1,6 +1,6 @@
;; doc-java.srt --- SRecode templates for "document" applications
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/etc/srecode/ede-make.srt b/etc/srecode/ede-make.srt
index 09551b4f53..48c5aae5a6 100644
--- a/etc/srecode/ede-make.srt
+++ b/etc/srecode/ede-make.srt
@@ -1,6 +1,6 @@
;; ede-make.srt --- SRecode templates for Makefiles used by EDE.
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/etc/srecode/el.srt b/etc/srecode/el.srt
index 9ef258ca85..b63d560582 100644
--- a/etc/srecode/el.srt
+++ b/etc/srecode/el.srt
@@ -1,6 +1,6 @@
;;; el.srt --- SRecode templates for Emacs Lisp mode
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric Ludlam <[email protected]>
diff --git a/etc/srecode/getset-cpp.srt b/etc/srecode/getset-cpp.srt
index 3fb15f5f9d..ebca17098d 100644
--- a/etc/srecode/getset-cpp.srt
+++ b/etc/srecode/getset-cpp.srt
@@ -1,6 +1,6 @@
;;; getset-cpp.srt --- SRecode templates for C++ class getter/setters.
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/etc/srecode/java.srt b/etc/srecode/java.srt
index d4cc986a32..3059afad60 100644
--- a/etc/srecode/java.srt
+++ b/etc/srecode/java.srt
@@ -1,6 +1,6 @@
;; java.srt
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/etc/srecode/make.srt b/etc/srecode/make.srt
index 81ce50ed46..d07d211a98 100644
--- a/etc/srecode/make.srt
+++ b/etc/srecode/make.srt
@@ -1,6 +1,6 @@
;; make.srt
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/etc/srecode/template.srt b/etc/srecode/template.srt
index dd2dce0d94..3c9aff7ff0 100644
--- a/etc/srecode/template.srt
+++ b/etc/srecode/template.srt
@@ -1,6 +1,6 @@
;;; template.srt --- Templates for Semantic Recoders
-;; Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric Ludlam <[email protected]>
diff --git a/etc/srecode/test.srt b/etc/srecode/test.srt
index 8ae5aedaee..b296f9dc51 100644
--- a/etc/srecode/test.srt
+++ b/etc/srecode/test.srt
@@ -1,6 +1,6 @@
;; test.srt --- SRecode templates for testing
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/etc/srecode/texi.srt b/etc/srecode/texi.srt
index 4d6a05942c..abf086c728 100644
--- a/etc/srecode/texi.srt
+++ b/etc/srecode/texi.srt
@@ -1,6 +1,6 @@
;; texi.srt --- SRecode templates for Texinfo
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/etc/srecode/wisent.srt b/etc/srecode/wisent.srt
index 5fe5d69e11..d45392e93d 100644
--- a/etc/srecode/wisent.srt
+++ b/etc/srecode/wisent.srt
@@ -1,6 +1,6 @@
;; wisent.srt --- SRecode templates for Emacs/WISENT grammar files.
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/etc/themes/tango-dark-theme.el b/etc/themes/tango-dark-theme.el
index f63440b4ea..613c98f505 100644
--- a/etc/themes/tango-dark-theme.el
+++ b/etc/themes/tango-dark-theme.el
@@ -1,6 +1,9 @@
;;; tango-dark-theme.el --- Tango-based custom theme for faces
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+;; Authors: Chong Yidong <cyd@stupidchicken>
+;; Jan Moringen <[email protected]>
;; This file is part of GNU Emacs.
@@ -25,63 +28,124 @@
;;; Code:
(deftheme tango-dark
- "Theme for faces, based on the Tango palette on a dark background.
-Basic, Font Lock, Isearch, Gnus, and Message faces are included.")
-
-(custom-theme-set-faces
- 'tango-dark
- '(default ((t (:foreground "#eeeeec" :background "#2e3436"))))
- '(cursor ((t (:foreground "#2e3436" :background "#fce94f"))))
- '(highlight ((t (:foreground "#2e3436" :background "#edd400"))))
- '(region ((t (:background "#555753"))))
- '(font-lock-builtin-face ((t (:foreground "#ad7fa8"))))
- '(font-lock-comment-face ((t (:foreground "#73d216"))))
- '(font-lock-constant-face ((t (:foreground "#e6a8df"))))
- '(font-lock-function-name-face ((t (:foreground "#fce94f"))))
- '(font-lock-keyword-face ((t (:foreground "#8cc4ff"))))
- '(font-lock-string-face ((t (:foreground "#e9b96e"))))
- '(font-lock-type-face ((t (:foreground "#a5ff4d"))))
- '(font-lock-variable-name-face ((t (:foreground "#fcaf3e"))))
- '(font-lock-warning-face ((t (:foreground "#ef2929"))))
- '(button ((t (:underline t :foreground "#729fcf"))))
- '(link ((t (:underline t :foreground "#729fcf"))))
- '(link-visited ((t (:underline t :foreground "#3465a4"))))
- '(mode-line ((t (:box (:line-width -1 :style released-button)
- :background "#d3d7cf" :foreground "black"))))
- '(mode-line-inactive ((t (:box (:line-width -1 :style released-button)
- :background "#555753" :foreground "white"))))
- '(isearch ((t (:foreground "#ffffff" :background "#ce5c00"))))
- '(lazy-highlight ((t (:background "#8f5902"))))
- '(gnus-group-news-1 ((t (:foreground "#ad7fa8"))))
- '(gnus-group-news-1-low ((t (:foreground "#75507b"))))
- '(gnus-group-news-2 ((t (:foreground "#729fcf"))))
- '(gnus-group-news-2-low ((t (:foreground "#3465a4"))))
- '(gnus-group-news-3 ((t (:foreground "#8ae234"))))
- '(gnus-group-news-3-low ((t (:foreground "#73d216"))))
- '(gnus-group-news-4 ((t (:foreground "#e9b9e6"))))
- '(gnus-group-news-4-low ((t (:foreground "#c17d11"))))
- '(gnus-group-news-5 ((t (:foreground "#fcaf3e"))))
- '(gnus-group-news-5-low ((t (:foreground "#f57900"))))
- '(gnus-group-news-low ((t (:foreground "#edd400"))))
- '(gnus-group-mail-1 ((t (:foreground "#ad7fa8"))))
- '(gnus-group-mail-1-low ((t (:foreground "#75507b"))))
- '(gnus-group-mail-2 ((t (:foreground "#729fcf"))))
- '(gnus-group-mail-2-low ((t (:foreground "#3465a4"))))
- '(gnus-group-mail-3 ((t (:foreground "#8ae234"))))
- '(gnus-group-mail-3-low ((t (:foreground "#73d216"))))
- '(gnus-group-mail-low ((t (:foreground "#edd400"))))
- '(gnus-header-content ((t (:weight normal :foreground "#c4a000"))))
- '(gnus-header-from ((t (:foreground "#edd400"))))
- '(gnus-header-subject ((t (:foreground "#8ae234"))))
- '(gnus-header-name ((t (:foreground "#729fcf"))))
- '(gnus-header-newsgroups ((t (:foreground "#c17d11"))))
- '(message-header-name ((t (:foreground "#729fcf"))))
- '(message-header-cc ((t (:foreground "#c4a000"))))
- '(message-header-other ((t (:foreground "#c17d11"))))
- '(message-header-subject ((t (:foreground "#8ae234"))))
- '(message-header-to ((t (:foreground "#edd400"))))
- '(message-cited-text ((t (:foreground "#8ae234"))))
- '(message-separator ((t (:foreground "#ad7fa8")))))
+ "Theme for faces, based on the Tango palette with a dark background.
+Basic, Font Lock, Isearch, Gnus, Message, Ediff, Flyspell,
+Semantic, and Ansi-Color faces are included.")
+
+(let ((class '((class color) (min-colors 89)))
+ ;; Tango palette colors.
+ (butter-1 "#fce94f") (butter-2 "#edd400") (butter-3 "#c4a000")
+ (orange-1 "#fcaf3e") (orange-2 "#f57900") (orange-3 "#ce5c00")
+ (choc-1 "#e9b96e") (choc-2 "#c17d11") (choc-3 "#8f5902")
+ (cham-1 "#8ae234") (cham-2 "#73d216") (cham-3 "#4e9a06")
+ (blue-1 "#729fcf") (blue-2 "#3465a4") (blue-3 "#204a87")
+ (plum-1 "#ad7fa8") (plum-2 "#75507b") (plum-3 "#5c3566")
+ (red-1 "#ef2929") (red-2 "#cc0000") (red-3 "#a40000")
+ (alum-1 "#eeeeec") (alum-2 "#d3d7cf") (alum-3 "#babdb6")
+ (alum-4 "#888a85") (alum-5 "#555753") (alum-6 "#2e3436")
+ ;; Not in Tango palette; used for better contrast.
+ (cham-0 "#b4fa70") (blue-0 "#8cc4ff") (plum-0 "#e6a8df")
+ (red-0 "#ff4b4b") (alum-5.5 "#41423f") (alum-7 "#212526"))
+
+ (custom-theme-set-faces
+ 'tango-dark
+ `(default ((,class (:foreground ,alum-1 :background ,alum-6))))
+ `(cursor ((,class (:foreground ,alum-6 :background ,butter-1))))
+ ;; Highlighting faces
+ `(fringe ((,class (:background ,alum-7))))
+ `(highlight ((,class (:foreground ,alum-6 :background ,butter-2))))
+ `(region ((,class (:background ,alum-5))))
+ `(secondary-selection ((,class (:background ,blue-3))))
+ `(isearch ((,class (:foreground ,alum-1 :background ,orange-3))))
+ `(lazy-highlight ((,class (:background ,choc-3))))
+ `(trailing-whitespace ((,class (:background ,red-3))))
+ ;; Mode line faces
+ `(mode-line ((,class
+ (:box (:line-width -1 :style released-button)
+ :background ,alum-2 :foreground ,alum-6))))
+ `(mode-line-inactive ((,class
+ (:box (:line-width -1 :style released-button)
+ :background ,alum-5 :foreground ,alum-1))))
+ ;; Escape and prompt faces
+ `(minibuffer-prompt ((,class (:foreground ,cham-0))))
+ `(escape-glyph ((,class (:foreground ,butter-3))))
+ ;; Font lock faces
+ `(font-lock-builtin-face ((,class (:foreground ,plum-1))))
+ `(font-lock-comment-face ((,class (:foreground ,cham-2))))
+ `(font-lock-constant-face ((,class (:foreground ,plum-0))))
+ `(font-lock-function-name-face ((,class (:foreground ,butter-1))))
+ `(font-lock-keyword-face ((,class (:foreground ,cham-0))))
+ `(font-lock-string-face ((,class (:foreground ,choc-1))))
+ `(font-lock-type-face ((,class (:foreground ,blue-0))))
+ `(font-lock-variable-name-face ((,class (:foreground ,orange-1))))
+ `(font-lock-warning-face ((,class (:foreground ,red-0))))
+ ;; Button and link faces
+ `(button ((,class (:underline t :foreground ,blue-1))))
+ `(link ((,class (:underline t :foreground ,blue-1))))
+ `(link-visited ((,class (:underline t :foreground ,blue-2))))
+ ;; Gnus faces
+ `(gnus-group-news-1 ((,class (:foreground ,plum-1))))
+ `(gnus-group-news-1-low ((,class (:foreground ,plum-2))))
+ `(gnus-group-news-2 ((,class (:foreground ,blue-1))))
+ `(gnus-group-news-2-low ((,class (:foreground ,blue-2))))
+ `(gnus-group-news-3 ((,class (:foreground ,cham-1))))
+ `(gnus-group-news-3-low ((,class (:foreground ,cham-2))))
+ `(gnus-group-news-4 ((,class (:foreground ,plum-0))))
+ `(gnus-group-news-4-low ((,class (:foreground ,choc-2))))
+ `(gnus-group-news-5 ((,class (:foreground ,orange-1))))
+ `(gnus-group-news-5-low ((,class (:foreground ,orange-2))))
+ `(gnus-group-news-low ((,class (:foreground ,butter-2))))
+ `(gnus-group-mail-1 ((,class (:foreground ,plum-1))))
+ `(gnus-group-mail-1-low ((,class (:foreground ,plum-2))))
+ `(gnus-group-mail-2 ((,class (:foreground ,blue-1))))
+ `(gnus-group-mail-2-low ((,class (:foreground ,blue-2))))
+ `(gnus-group-mail-3 ((,class (:foreground ,cham-1))))
+ `(gnus-group-mail-3-low ((,class (:foreground ,cham-2))))
+ `(gnus-group-mail-low ((,class (:foreground ,butter-2))))
+ `(gnus-header-content ((,class (:weight normal :foreground ,butter-3))))
+ `(gnus-header-from ((,class (:foreground ,butter-2))))
+ `(gnus-header-subject ((,class (:foreground ,cham-1))))
+ `(gnus-header-name ((,class (:foreground ,blue-1))))
+ `(gnus-header-newsgroups ((,class (:foreground ,choc-2))))
+ ;; Message faces
+ `(message-header-name ((,class (:foreground ,blue-1))))
+ `(message-header-cc ((,class (:foreground ,butter-3))))
+ `(message-header-other ((,class (:foreground ,choc-2))))
+ `(message-header-subject ((,class (:foreground ,cham-1))))
+ `(message-header-to ((,class (:foreground ,butter-2))))
+ `(message-cited-text ((,class (:foreground ,cham-1))))
+ `(message-separator ((,class (:foreground ,plum-1))))
+ ;; SMerge faces
+ `(smerge-refined-change ((,class (:background ,blue-3))))
+ ;; Ediff faces
+ `(ediff-current-diff-A ((,class (:background ,alum-5))))
+ `(ediff-fine-diff-A ((,class (:background ,blue-3))))
+ `(ediff-even-diff-A ((,class (:background ,alum-5.5))))
+ `(ediff-odd-diff-A ((,class (:background ,alum-5.5))))
+ `(ediff-current-diff-B ((,class (:background ,alum-5))))
+ `(ediff-fine-diff-B ((,class (:background ,choc-3))))
+ `(ediff-even-diff-B ((,class (:background ,alum-5.5))))
+ `(ediff-odd-diff-B ((,class (:background ,alum-5.5))))
+ ;; Flyspell faces
+ `(flyspell-duplicate ((,class (:underline ,orange-1))))
+ `(flyspell-incorrect ((,class (:underline ,red-1))))
+ ;; Semantic faces
+ `(semantic-decoration-on-includes ((,class (:underline ,alum-4))))
+ `(semantic-decoration-on-private-members-face
+ ((,class (:background ,plum-3))))
+ `(semantic-decoration-on-protected-members-face
+ ((,class (:background ,choc-3))))
+ `(semantic-decoration-on-unknown-includes
+ ((,class (:background ,red-3))))
+ `(semantic-decoration-on-unparsed-includes
+ ((,class (:background ,alum-5.5))))
+ `(semantic-tag-boundary-face ((,class (:overline ,blue-1))))
+ `(semantic-unmatched-syntax-face ((,class (:underline ,red-1)))))
+
+ (custom-theme-set-variables
+ 'tango-dark
+ `(ansi-color-names-vector [,alum-7 ,red-0 ,cham-0 ,butter-1
+ ,blue-1 ,plum-1 ,blue-0 ,alum-1])))
(provide-theme 'tango-dark)
diff --git a/etc/themes/tango-theme.el b/etc/themes/tango-theme.el
index f0492c048a..314b3986f2 100644
--- a/etc/themes/tango-theme.el
+++ b/etc/themes/tango-theme.el
@@ -1,6 +1,9 @@
;;; tango-theme.el --- Tango-based custom theme for faces
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+;; Authors: Chong Yidong <cyd@stupidchicken>
+;; Jan Moringen <[email protected]>
;; This file is part of GNU Emacs.
@@ -25,63 +28,117 @@
;;; Code:
(deftheme tango
- "Theme for faces, based on the Tango palette on a light background.
-Basic, Font Lock, Isearch, Gnus, and Message faces are included.")
-
-(custom-theme-set-faces
- 'tango
- '(default ((t (:foreground "#16191a" :background "#eeeeec"))))
- '(cursor ((t (:foreground "#eeeeec" :background "#204a87"))))
- '(highlight ((t (:background "#babdb6"))))
- '(region ((t (:background "#babdb6"))))
- '(font-lock-builtin-face ((t (:weight bold :foreground "#204a87"))))
- '(font-lock-comment-face ((t (:foreground "#204a87"))))
- '(font-lock-constant-face ((t (:weight bold :foreground "#5c3566"))))
- '(font-lock-function-name-face ((t (:weight bold :foreground "#ce5c00"))))
- '(font-lock-keyword-face ((t (:foreground "#a40000"))))
- '(font-lock-string-face ((t (:foreground "#5c3566"))))
- '(font-lock-type-face ((t (:weight bold :foreground "#4e9a06"))))
- '(font-lock-variable-name-face ((t (:weight bold :foreground "#c17d11"))))
- '(font-lock-warning-face ((t (:foreground "#cc0000"))))
- '(button ((t (:underline t :foreground "#204a87"))))
- '(link ((t (:underline t :foreground "#204a87"))))
- '(link-visited ((t (:underline t :foreground "#3465a4"))))
- '(mode-line ((t (:box (:line-width -1 :style released-button)
- :background "#d3d7cf" :foreground "black"))))
- '(mode-line-inactive ((t (:box (:line-width -1 :style released-button)
- :background "#babdb6" :foreground "black"))))
- '(isearch ((t (:foreground "#ffffff" :background "#ce5c00"))))
- '(lazy-highlight ((t (:background "#e9b96e"))))
- '(gnus-group-news-1 ((t (:weight bold :foreground "#5c3566"))))
- '(gnus-group-news-1-low ((t (:foreground "#5c3566"))))
- '(gnus-group-news-2 ((t (:weight bold :foreground "#204a87"))))
- '(gnus-group-news-2-low ((t (:foreground "#204a87"))))
- '(gnus-group-news-3 ((t (:weight bold :foreground "#4e0a06"))))
- '(gnus-group-news-3-low ((t (:foreground "#4e0a06"))))
- '(gnus-group-news-4 ((t (:weight bold :foreground "#7a4c02"))))
- '(gnus-group-news-4-low ((t (:foreground "#7a4c02"))))
- '(gnus-group-news-5 ((t (:weight bold :foreground "#ce5c00"))))
- '(gnus-group-news-5-low ((t (:foreground "#ce5c00"))))
- '(gnus-group-news-low ((t (:foreground "#888a85"))))
- '(gnus-group-mail-1 ((t (:weight bold :foreground "#5c3566"))))
- '(gnus-group-mail-1-low ((t (:foreground "#5c3566"))))
- '(gnus-group-mail-2 ((t (:weight bold :foreground "#204a87"))))
- '(gnus-group-mail-2-low ((t (:foreground "#204a87"))))
- '(gnus-group-mail-3 ((t (:weight bold :foreground "#4e0a06"))))
- '(gnus-group-mail-3-low ((t (:foreground "#4e0a06"))))
- '(gnus-group-mail-low ((t (:foreground "#888a85"))))
- '(gnus-header-content ((t (:foreground "#4e9a06"))))
- '(gnus-header-from ((t (:weight bold :foreground "#c4a000"))))
- '(gnus-header-subject ((t (:foreground "#4e0a06"))))
- '(gnus-header-name ((t (:foreground "#204a87"))))
- '(gnus-header-newsgroups ((t (:foreground "#888a85"))))
- '(message-header-name ((t (:foreground "#204a87"))))
- '(message-header-cc ((t (:foreground "#c4a000"))))
- '(message-header-other ((t (:foreground "#c17d11"))))
- '(message-header-subject ((t (:foreground "#4e0a06"))))
- '(message-header-to ((t (:weight bold :foreground "#c4a000"))))
- '(message-cited-text ((t (:foreground "#888a85"))))
- '(message-separator ((t (:weight bold :foreground "#4e9a06")))))
+ "Theme for faces, based on the Tango palette with a light background.
+Basic, Font Lock, Isearch, Gnus, Message, Ediff, Flyspell,
+Semantic, and Ansi-Color faces are included.")
+
+(let ((class '((class color) (min-colors 89)))
+ ;; Tango palette colors.
+ (butter-1 "#fce94f") (butter-2 "#edd400") (butter-3 "#c4a000")
+ (orange-1 "#fcaf3e") (orange-2 "#f57900") (orange-3 "#ce5c00")
+ (choc-1 "#e9b96e") (choc-2 "#c17d11") (choc-3 "#8f5902")
+ (cham-1 "#8ae234") (cham-2 "#73d216") (cham-3 "#4e9a06")
+ (blue-1 "#729fcf") (blue-2 "#3465a4") (blue-3 "#204a87")
+ (plum-1 "#ad7fa8") (plum-2 "#75507b") (plum-3 "#5c3566")
+ (red-1 "#ef2929") (red-2 "#cc0000") (red-3 "#a40000")
+ (alum-1 "#eeeeec") (alum-2 "#d3d7cf") (alum-3 "#babdb6")
+ (alum-4 "#888a85") (alum-5 "#555753") (alum-6 "#2e3436")
+ ;; Not in Tango palette; used for better contrast.
+ (cham-4 "#346604") (blue-0 "#8cc4ff"))
+
+ (custom-theme-set-faces
+ 'tango
+ `(default ((,class (:foreground ,"#16191a" :background ,alum-1))))
+ `(cursor ((,class (:foreground ,alum-1 :background ,blue-3))))
+ ;; Highlighting faces
+ `(fringe ((,class (:background ,alum-2))))
+ `(highlight ((,class (:background ,alum-3))))
+ `(region ((,class (:background ,alum-3))))
+ `(secondary-selection ((,class (:background ,blue-0))))
+ `(isearch ((,class (:foreground ,"#ffffff" :background ,orange-3))))
+ `(lazy-highlight ((,class (:background ,choc-1))))
+ `(trailing-whitespace ((,class (:background ,red-1))))
+ ;; Mode line faces
+ `(mode-line ((,class (:box (:line-width -1 :style released-button)
+ :background ,alum-2 :foreground ,alum-6))))
+ `(mode-line-inactive ((,class (:box (:line-width -1 :style released-button)
+ :background ,alum-4 :foreground ,alum-6))))
+ ;; Escape and prompt faces
+ `(minibuffer-prompt ((,class (:weight bold :foreground ,blue-3))))
+ `(escape-glyph ((,class (:foreground ,red-3))))
+ ;; Font lock faces
+ `(font-lock-builtin-face ((,class (:weight bold :foreground ,plum-3))))
+ `(font-lock-comment-face ((,class (:foreground ,cham-4))))
+ `(font-lock-constant-face ((,class (:weight bold :foreground ,blue-3))))
+ `(font-lock-function-name-face ((,class (:foreground ,red-3))))
+ `(font-lock-keyword-face ((,class (:weight bold :foreground ,choc-2))))
+ `(font-lock-string-face ((,class (:foreground ,plum-3))))
+ `(font-lock-type-face ((,class (:foreground ,blue-3))))
+ `(font-lock-variable-name-face ((,class (:weight bold :foreground ,orange-3))))
+ `(font-lock-warning-face ((,class (:foreground ,red-2))))
+ ;; Button and link faces
+ `(button ((,class (:underline t :foreground ,blue-3))))
+ `(link ((,class (:underline t :foreground ,blue-3))))
+ `(link-visited ((,class (:underline t :foreground ,blue-2))))
+ ;; Gnus faces
+ `(gnus-group-news-1 ((,class (:weight bold :foreground ,plum-3))))
+ `(gnus-group-news-1-low ((,class (:foreground ,plum-3))))
+ `(gnus-group-news-2 ((,class (:weight bold :foreground ,blue-3))))
+ `(gnus-group-news-2-low ((,class (:foreground ,blue-3))))
+ `(gnus-group-news-3 ((,class (:weight bold :foreground ,"#4e0a06"))))
+ `(gnus-group-news-3-low ((,class (:foreground ,"#4e0a06"))))
+ `(gnus-group-news-4 ((,class (:weight bold :foreground ,"#7a4c02"))))
+ `(gnus-group-news-4-low ((,class (:foreground ,"#7a4c02"))))
+ `(gnus-group-news-5 ((,class (:weight bold :foreground ,orange-3))))
+ `(gnus-group-news-5-low ((,class (:foreground ,orange-3))))
+ `(gnus-group-news-low ((,class (:foreground ,"#888a85"))))
+ `(gnus-group-mail-1 ((,class (:weight bold :foreground ,plum-3))))
+ `(gnus-group-mail-1-low ((,class (:foreground ,plum-3))))
+ `(gnus-group-mail-2 ((,class (:weight bold :foreground ,blue-3))))
+ `(gnus-group-mail-2-low ((,class (:foreground ,blue-3))))
+ `(gnus-group-mail-3 ((,class (:weight bold :foreground ,"#4e0a06"))))
+ `(gnus-group-mail-3-low ((,class (:foreground ,"#4e0a06"))))
+ `(gnus-group-mail-low ((,class (:foreground ,"#888a85"))))
+ `(gnus-header-content ((,class (:foreground ,cham-3))))
+ `(gnus-header-from ((,class (:weight bold :foreground ,butter-3))))
+ `(gnus-header-subject ((,class (:foreground ,"#4e0a06"))))
+ `(gnus-header-name ((,class (:foreground ,blue-3))))
+ `(gnus-header-newsgroups ((,class (:foreground ,"#888a85"))))
+ ;; Message faces
+ `(message-header-name ((,class (:foreground ,blue-3))))
+ `(message-header-cc ((,class (:foreground ,butter-3))))
+ `(message-header-other ((,class (:foreground ,choc-2))))
+ `(message-header-subject ((,class (:foreground ,"#4e0a06"))))
+ `(message-header-to ((,class (:weight bold :foreground ,butter-3))))
+ `(message-cited-text ((,class (:foreground ,"#888a85"))))
+ `(message-separator ((,class (:weight bold :foreground ,cham-3))))
+ ;; SMerge
+ `(smerge-refined-change ((,class (:background ,plum-1))))
+ ;; Ediff
+ `(ediff-current-diff-A ((,class (:background ,blue-1))))
+ `(ediff-fine-diff-A ((,class (:background ,plum-1))))
+ `(ediff-current-diff-B ((,class (:background ,butter-1))))
+ `(ediff-fine-diff-B ((,class (:background ,orange-1))))
+ ;; Flyspell
+ `(flyspell-duplicate ((,class (:underline ,orange-1))))
+ `(flyspell-incorrect ((,class (:underline ,red-1))))
+ ;; 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)))))
+
+ (custom-theme-set-variables
+ 'tango
+ `(ansi-color-names-vector [,alum-6 ,red-3 ,cham-3 ,butter-3
+ ,blue-3 ,plum-3 ,blue-1 ,alum-1])))
(provide-theme 'tango)
diff --git a/etc/themes/tsdh-dark-theme.el b/etc/themes/tsdh-dark-theme.el
new file mode 100644
index 0000000000..d15677114a
--- /dev/null
+++ b/etc/themes/tsdh-dark-theme.el
@@ -0,0 +1,60 @@
+;;; tsdh-dark-theme.el --- Tassilo's dark custom theme
+
+;; Copyright (C) 2011 Free Software Foundation, Inc.
+
+;; 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 tsdh-dark
+ "Theme with dark background used and created by Tassilo Horn.")
+
+(custom-theme-set-faces
+ 'tsdh-dark
+ '(default ((t (:background "gray20" :foreground "white smoke"))))
+ '(diff-added ((t (:inherit diff-changed :background "dark green"))))
+ '(diff-changed ((t (:background "midnight blue"))))
+ '(diff-indicator-added ((t (:inherit diff-indicator-changed))))
+ '(diff-indicator-changed ((t (:weight bold))))
+ '(diff-indicator-removed ((t (:inherit diff-indicator-changed))))
+ '(diff-removed ((t (:inherit diff-changed :background "dark red"))))
+ '(dired-directory ((t (:inherit font-lock-function-name-face :weight bold))))
+ '(header-line ((t (:inherit mode-line :inverse-video t))))
+ '(hl-line ((t (:background "grey28"))))
+ '(message-header-subject ((t (:foreground "SkyBlue"))))
+ '(minibuffer-prompt ((t (:background "yellow" :foreground "medium blue" :box (:line-width -1 :color "red" :style released-button) :weight bold))))
+ '(mode-line ((t (:box (:line-width -1 :color "red" :style released-button) :family "DejaVu Sans"))))
+ '(mode-line-inactive ((t (:inherit mode-line :foreground "dim gray"))))
+ '(org-agenda-date ((t (:inherit org-agenda-structure))))
+ '(org-agenda-date-today ((t (:inherit org-agenda-date :underline t))))
+ '(org-agenda-date-weekend ((t (:inherit org-agenda-date :foreground "dark green"))))
+ '(org-agenda-structure ((t (:foreground "SkyBlue" :weight bold))))
+ '(org-hide ((t (:foreground "gray30"))))
+ '(org-tag ((t (:weight bold))))
+ '(outline-1 ((t (:inherit font-lock-function-name-face :weight bold))))
+ '(outline-2 ((t (:inherit font-lock-variable-name-face :weight bold))))
+ '(outline-3 ((t (:inherit font-lock-keyword-face :weight bold))))
+ '(outline-4 ((t (:inherit font-lock-comment-face :weight bold))))
+ '(outline-5 ((t (:inherit font-lock-type-face :weight bold))))
+ '(outline-6 ((t (:inherit font-lock-constant-face :weight bold))))
+ '(outline-7 ((t (:inherit font-lock-builtin-face :weight bold))))
+ '(outline-8 ((t (:inherit font-lock-string-face :weight bold))))
+ '(region ((t (:background "SteelBlue4"))))
+ '(show-paren-match ((t (:background "DarkGreen"))))
+ '(show-paren-mismatch ((t (:background "deep pink"))))
+ '(window-number-face ((t (:foreground "red" :weight bold)))))
+
+(provide-theme 'tsdh-dark)
diff --git a/etc/themes/tsdh-light-theme.el b/etc/themes/tsdh-light-theme.el
new file mode 100644
index 0000000000..9fac27fda1
--- /dev/null
+++ b/etc/themes/tsdh-light-theme.el
@@ -0,0 +1,59 @@
+;;; tsdh-light-theme.el --- Tassilo's light custom theme
+
+;; Copyright (C) 2011 Free Software Foundation, Inc.
+
+;; 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 tsdh-light
+ "Black on white theme used and created by Tassilo Horn.")
+
+(custom-theme-set-faces
+ 'tsdh-light
+ '(default ((t (:background "white" :foreground "black"))))
+ '(diff-added ((t (:inherit diff-changed :background "light green"))))
+ '(diff-changed ((t (:background "light steel blue"))))
+ '(diff-indicator-added ((t (:inherit diff-indicator-changed))))
+ '(diff-indicator-changed ((t (:weight bold))))
+ '(diff-indicator-removed ((t (:inherit diff-indicator-changed))))
+ '(diff-removed ((t (:inherit diff-changed :background "sandy brown"))))
+ '(dired-directory ((t (:inherit font-lock-function-name-face :weight bold))))
+ '(header-line ((t (:inherit mode-line :inverse-video t))))
+ '(hl-line ((t (:background "grey95"))))
+ '(minibuffer-prompt ((t (:background "yellow" :foreground "medium blue" :box (:line-width -1 :color "red" :style released-button) :weight bold))))
+ '(mode-line ((t (:box (:line-width -1 :color "red" :style released-button) :family "DejaVu Sans"))))
+ '(mode-line-inactive ((t (:inherit mode-line :foreground "dim gray"))))
+ '(org-agenda-date ((t (:inherit org-agenda-structure))))
+ '(org-agenda-date-today ((t (:inherit org-agenda-date :underline t))))
+ '(org-agenda-date-weekend ((t (:inherit org-agenda-date :foreground "dark green"))))
+ '(org-agenda-structure ((t (:foreground "Blue1" :weight bold :height 1.1 :family "DeJaVu Sans"))))
+ '(org-hide ((t (:foreground "white"))))
+ '(org-tag ((t (:weight bold))))
+ '(outline-1 ((t (:inherit font-lock-function-name-face :weight bold))))
+ '(outline-2 ((t (:inherit font-lock-variable-name-face :weight bold))))
+ '(outline-3 ((t (:inherit font-lock-keyword-face :weight bold))))
+ '(outline-4 ((t (:inherit font-lock-comment-face :weight bold))))
+ '(outline-5 ((t (:inherit font-lock-type-face :weight bold))))
+ '(outline-6 ((t (:inherit font-lock-constant-face :weight bold))))
+ '(outline-7 ((t (:inherit font-lock-builtin-face :weight bold))))
+ '(outline-8 ((t (:inherit font-lock-string-face :weight bold))))
+ '(region ((t (:background "lightgoldenrod1"))))
+ '(show-paren-match ((t (:background "LightCyan2"))))
+ '(show-paren-mismatch ((t (:background "deep pink"))))
+ '(window-number-face ((t (:foreground "red" :weight bold)))))
+
+(provide-theme 'tsdh-light)
diff --git a/etc/themes/wheatgrass-theme.el b/etc/themes/wheatgrass-theme.el
index 848e5e9507..0b22fd25d5 100644
--- a/etc/themes/wheatgrass-theme.el
+++ b/etc/themes/wheatgrass-theme.el
@@ -1,6 +1,6 @@
;;; wheatgrass-theme.el --- custom theme for faces
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
diff --git a/etc/tutorials/TUTORIAL b/etc/tutorials/TUTORIAL
index f566df9735..ae4cfb93ed 100644
--- a/etc/tutorials/TUTORIAL
+++ b/etc/tutorials/TUTORIAL
@@ -1121,8 +1121,7 @@ starting with the one written by Stuart Cracraft for the original Emacs.
This version of the tutorial is a part of GNU Emacs. It is copyrighted
and comes with permission to distribute copies on certain conditions:
- Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1996, 1998, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -1143,4 +1142,3 @@ Please read the file COPYING and then do give copies of GNU Emacs to
your friends. Help stamp out software obstructionism ("ownership") by
using, writing, and sharing free software!
-;;; arch-tag: a0f84628-777f-4238-8865-451a73167f55
diff --git a/etc/tutorials/TUTORIAL.bg b/etc/tutorials/TUTORIAL.bg
index e8300d2665..cbbc27bd9c 100644
--- a/etc/tutorials/TUTORIAL.bg
+++ b/etc/tutorials/TUTORIAL.bg
@@ -1160,8 +1160,7 @@ Dired �� ��������� �� ������� ������� �� ������� � ���������� (� ����
This version of the tutorial, like GNU Emacs, is copyrighted, and
comes with permission to distribute copies on certain conditions:
-Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1996, 1998, 2001-2011 Free Software Foundation, Inc.
Permission is granted to anyone to make or distribute verbatim copies
of this document as received, in any medium, provided that the
@@ -1185,4 +1184,3 @@ Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004,
;;; Local Variables:
;;; coding: windows-1251
;;; End:
-;;; arch-tag: 70cf6ad7-c2e4-41fe-8199-74aa52683b0e
diff --git a/etc/tutorials/TUTORIAL.cn b/etc/tutorials/TUTORIAL.cn
index e24b3c2509..6a605f6e79 100644
--- a/etc/tutorials/TUTORIAL.cn
+++ b/etc/tutorials/TUTORIAL.cn
@@ -980,8 +980,7 @@ starting with the one written by Stuart Cracraft for the original Emacs.
This version of the tutorial, like GNU Emacs, is copyrighted, and
comes with permission to distribute copies on certain conditions:
-Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1996, 1998, 2001-2011 Free Software Foundation, Inc.
Permission is granted to anyone to make or distribute verbatim copies
of this document as received, in any medium, provided that the
@@ -1006,8 +1005,7 @@ GNU Emacs to your friends. Help stamp out software obstructionism
��ƪ�ĵ��� GNU Emacs һ��ӵ�а�Ȩ��������������������Լ���·����俽����
- Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1996, 1998, 2001-2011 Free Software Foundation, Inc.
���ĵ������ڲ�����ĵ����ݵ���������κ��˷������κ�ý���ϣ�ͬʱ����
����������Ȩ������������������������뷢������ȫ��ͬ�ġ��籾��������
@@ -1024,4 +1022,3 @@ Emacs �����İ�Ȩ������ȱ��ĵ�Ҫ����һЩ����Ҳ������ͬ�ľ��񡣾����Ķ���
;;; coding: chinese-iso-8bit
;;; End:
-;;; arch-tag: 46a53d82-a85a-46b6-bdc7-583aca063578
diff --git a/etc/tutorials/TUTORIAL.cs b/etc/tutorials/TUTORIAL.cs
index 628c3d7d8d..98dcf473ae 100644
--- a/etc/tutorials/TUTORIAL.cs
+++ b/etc/tutorials/TUTORIAL.cs
@@ -1015,8 +1015,7 @@ tutori�lem napsan�m Stuartem Cracraftem pro p�vodn� Emacs.
Tato verze tutori�lu je, podobn� jako GNU Emacs, chr�n�na copyrightem a
je ���ena se svolen�m distribuovat kopie za jist�ch podm�nek:
-Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1996, 1998, 2001-2011 Free Software Foundation, Inc.
Ka�d�mu je zaru�eno pr�vo vytv��et a distribuovat p�esn� kopie tohoto
dokumentu tak, jak jej obdr�el, na jak�mkoliv m�diu, s t�m, �e bude
@@ -1037,4 +1036,3 @@ GNU Emacsu sv�m p��tel�m. Pom�hejte pot�rat softwarovou obstrukci
;;; coding: iso-latin-2
;;; End:
-;;; arch-tag: 479ef577-3d4d-4384-aeea-9fe79d5e89ca
diff --git a/etc/tutorials/TUTORIAL.de b/etc/tutorials/TUTORIAL.de
index 4b97aa60b4..ad0b765b55 100644
--- a/etc/tutorials/TUTORIAL.de
+++ b/etc/tutorials/TUTORIAL.de
@@ -1477,8 +1477,7 @@ Beachten Sie bitte, dass im Zweifelsfalle das englische Original
dieser Urheberrechtsnotiz g�ltig ist (zu finden in der Datei
TUTORIAL).
- Copyright (C) 1985, 1996, 1997, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1996-1997, 2001-2011 Free Software Foundation, Inc.
Diese Datei ist ein Bestandteil von GNU Emacs.
@@ -1506,4 +1505,3 @@ freie Software verwenden, verteilen, oder sogar selber schreiben.
;;; coding: latin-1
;;; End:
-;;; arch-tag: a8f2fe06-631d-4ae1-887e-446f971b0baa
diff --git a/etc/tutorials/TUTORIAL.eo b/etc/tutorials/TUTORIAL.eo
index 91bf78e47a..f95f3317ab 100644
--- a/etc/tutorials/TUTORIAL.eo
+++ b/etc/tutorials/TUTORIAL.eo
@@ -1081,8 +1081,8 @@ la dosiero verkita de Stuart Cracraft por la originala Emakso.
kopirajton, kaj venas kun permeso por disdoni kopiojn se certaj
kondi�oj estas observataj:
- Copyright (C) 1985, 1999, 2001, 2002, 2005,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1999, 2001-2002, 2005, 2007-2011
+ Free Software Foundation, Inc.
�i tiu dosiero estas parto de "GNU Emacs".
@@ -1114,5 +1114,3 @@ kaj kompletigis Sergio B. Pokrovskij.
;;; Local Variables:
;;; coding: latin-3
;;; End:
-
-;; arch-tag: ee436ebb-58b6-4102-9402-1e92c33966e9
diff --git a/etc/tutorials/TUTORIAL.es b/etc/tutorials/TUTORIAL.es
index 7b8198a915..e4b2cf0d52 100644
--- a/etc/tutorials/TUTORIAL.es
+++ b/etc/tutorials/TUTORIAL.es
@@ -1179,8 +1179,7 @@ Por favor, en caso de duda, s�lo es v�lido el original en ingl�s de la
siguiente nota de derechos de reproducci�n (que puede encontrar en el
archivo TUTORIAL).
-Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1996, 1998, 2001-2011 Free Software Foundation, Inc.
Se permite a cualquiera hacer o distribuir copias literales de este
documento como se recibe, en cualquier medio, siempre que la nota
@@ -1205,4 +1204,3 @@ compartiendo software libre!
;;; coding: latin-1
;;; End:
-;;; arch-tag: 66aae86e-6f86-4a3e-b82a-44a783f774fd
diff --git a/etc/tutorials/TUTORIAL.fr b/etc/tutorials/TUTORIAL.fr
index 305f01957f..5ba4ebae9c 100644
--- a/etc/tutorials/TUTORIAL.fr
+++ b/etc/tutorials/TUTORIAL.fr
@@ -1162,8 +1162,7 @@ Cette version du didacticiel, comme GNU Emacs, est plac�e sous
copyright, et vous pouvez en distribuer des copies sous certaines
conditions :
-Copyright (C) 1985, 1996, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1996, 2001-2011 Free Software Foundation, Inc.
Chacun peut cr�er ou distribuer des copies de ce document tel qu'il
l'a re�u, sur n'importe quel support, pourvu que la note de
@@ -1192,4 +1191,3 @@ Cette traduction fran�aise a �t� effectu�e par �ric Jacoboni
;;; sentence-end-double-space: nil
;;; End:
-;;; arch-tag: f6c5c2ff-bf24-477c-bd18-32f76f51ba65
diff --git a/etc/tutorials/TUTORIAL.he b/etc/tutorials/TUTORIAL.he
index 8c376314d2..529c42a1c4 100644
--- a/etc/tutorials/TUTORIAL.he
+++ b/etc/tutorials/TUTORIAL.he
@@ -1008,7 +1008,7 @@ find-file.
גירסה זו של השיעור הינה חלק מחבילת GNU Emacs. היא מוגנת בזכויות יוצרים
וניתנת להעתקה והפצת עותקים בתנאים מסויימים כדלקמן:
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
‏GNU Emacs הינו תכנה חפשית; זכותכם להפיצו ו\או לשנותו בכפוף לתנאי
הרשיון GNU General Public License, כפי שהוא יוצא לאור ע"י Free
diff --git a/etc/tutorials/TUTORIAL.it b/etc/tutorials/TUTORIAL.it
index fda4a57add..1c9f8bc665 100644
--- a/etc/tutorials/TUTORIAL.it
+++ b/etc/tutorials/TUTORIAL.it
@@ -1085,7 +1085,7 @@ distribuito con il permesso di farne copie a determinate condizioni:
indicativo, restando comunque inteso il fatto che � quella originale a
fare fede.
-Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2003-2011 Free Software Foundation, Inc.
� permesso a chiunque copiare e distribuire attraverso ogni mezzo copie
fedeli di questo documento cos� come viene ricevuto, a condizione che
@@ -1109,4 +1109,3 @@ condividendo software libero!
;;; coding: latin-1
;;; End:
-;;; arch-tag: c6f7079d-8032-473d-91d4-36754af15719
diff --git a/etc/tutorials/TUTORIAL.ja b/etc/tutorials/TUTORIAL.ja
index fac39e3f0c..e4917d4098 100644
--- a/etc/tutorials/TUTORIAL.ja
+++ b/etc/tutorials/TUTORIAL.ja
@@ -1062,8 +1062,7 @@ starting with the one written by Stuart Cracraft for the original Emacs.
This version of the tutorial, like GNU Emacs, is copyrighted, and
comes with permission to distribute copies on certain conditions:
-Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1996, 1998, 2001-2011 Free Software Foundation, Inc.
Permission is granted to anyone to make or distribute verbatim copies
of this document as received, in any medium, provided that the
@@ -1085,4 +1084,3 @@ GNU Emacs to your friends. Help stamp out software obstructionism
;;; coding: iso-2022-jp
;;; End:
-;;; arch-tag: 7136abc2-eb97-4f51-80a2-fa690ba4cfe8
diff --git a/etc/tutorials/TUTORIAL.ko b/etc/tutorials/TUTORIAL.ko
index 5cb3c23f13..a928923832 100644
--- a/etc/tutorials/TUTORIAL.ko
+++ b/etc/tutorials/TUTORIAL.ko
@@ -981,8 +981,7 @@ C-x C-s$(C?M(B (META$(C<h3*(B EDIT$(C<h(B $(CH$@:(B $(C13C<<h0!(B $(C
GNU $(C@L8F=:?M(B $(C00@L(B $(C@L(B $(CAvD'<-(B $(CFG@:(B $(C@z@[1G@L(B $(C@V@88g(B $(CF/A$GQ(B $(CA60G@;(B $(C88A7GR(B
$(C6'?!(B $(C:9;g:;@;(B $(C9hFwGR(B $(C<v(B $(C@V4B(B $(CGc0!8&(B $(C0.0m(B $(C3*?B(B $(C0M@L4Y(B:
-Copyright (C) 1985, 1996, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1996, 2001-2011 Free Software Foundation, Inc.
$(C@L(B $(C9.<-4B(B $(C@L(B $(C@z@[1G(B $(C0x0m?M(B $(CGc?k(B $(C0x0m0!(B $(C1W4k7N(B $(C@/Av5G0m(B, $(C9hFw@Z0!(B
$(C<vCk@Z?!0T(B $(C@L(B $(C0x0m?!(B $(C5{6s(B $(CGc?k5G4B(B $(C0MC373(B $(C6G(B $(C@g:P9hGO4B(B $(C0M@;(B
@@ -998,4 +997,3 @@ COPYING$(C@L6s4B(B $(CFD@O@;(B $(C@P0m(B $(C3-(B $(CHD?!(B GNU $(C@L8
$(CAV=J=C?@(B. $(C@Z@/(B $(C<RGAF.?~>n8&(B $(C>20m(B $(C885i0m(B $(C0x@/GT@87N=a(B $(C<RGAF.?~>n(B
$(C9fGX8&(B ("$(C<R@/1G(B") $(C1Y@}GO4B5%(B $(C55?s=C4Y(B.
-;;; arch-tag: 44503bc5-b2c1-4169-962d-9d33157221a9
diff --git a/etc/tutorials/TUTORIAL.nl b/etc/tutorials/TUTORIAL.nl
index 6308c8b554..59f54c1b2d 100644
--- a/etc/tutorials/TUTORIAL.nl
+++ b/etc/tutorials/TUTORIAL.nl
@@ -1196,8 +1196,7 @@ het Engelse origineel.)
Deze versie van de inleiding valt onder copyright, net als GNU Emacs.
Je mag deze inleiding verspreiden onder bepaalde voorwaarden:
-Copyright (C) 1985, 1996, 1997, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1996-1997, 2001-2011 Free Software Foundation, Inc.
Iedereen mag letterlijke kopie�n van dit document, zowel ontvangen
als verspreiden, op elk medium, vooropgesteld dat de
@@ -1221,8 +1220,7 @@ software te gebruiken, te schrijven en te delen!
This version of the tutorial, like GNU Emacs, is copyrighted, and
comes with permission to distribute copies on certain conditions:
-Copyright (C) 1985, 1996, 1997, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1996-1997, 2001-2011 Free Software Foundation, Inc.
Permission is granted to anyone to make or distribute verbatim
copies of this document as received, in any medium, provided that
@@ -1243,5 +1241,3 @@ GNU Emacs to your friends. Help stamp out software obstructionism
;;; Local Variables:
;;; coding: latin-1
;;; End:
-
-;;; arch-tag: 3399e308-e605-4125-8fbb-b2fe91ac3149
diff --git a/etc/tutorials/TUTORIAL.pl b/etc/tutorials/TUTORIAL.pl
index 7e2f147efd..f6859612a4 100644
--- a/etc/tutorials/TUTORIAL.pl
+++ b/etc/tutorials/TUTORIAL.pl
@@ -1209,8 +1209,7 @@ z pomoc� Ryszarda Kubiaka i Janusza S. Bienia <[email protected]>.
Ta wersja samouczka, podobnie jak GNU Emacs, jest chroniona prawem
autorskim, ale wolno j� kopiowa� pod nast�puj�cymi warunkami:
-Copyright (C) 1985, 1994, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1994, 2001-2011 Free Software Foundation, Inc.
Zezwala si� na wykonywanie lub rozpowszechnianie
wiernych kopii tego dokumentu w otrzymanej formie, na dowolnym
@@ -1237,4 +1236,3 @@ u�ywaj�c, tworz�c i dziel�c si� oprogramowaniem swobodnym.
;;; sentence-end-double-space: nil
;;; End:
-;;; arch-tag: 6c6b7445-4cd5-44ca-a101-7f4697b92f60
diff --git a/etc/tutorials/TUTORIAL.pt_BR b/etc/tutorials/TUTORIAL.pt_BR
index a3feb476d3..1328c22f7b 100644
--- a/etc/tutorials/TUTORIAL.pt_BR
+++ b/etc/tutorials/TUTORIAL.pt_BR
@@ -1056,7 +1056,7 @@ Essa vers�o do tutorial foi originalmente traduzida por Marcelo Toledo
<[email protected]> e como o GNU Emacs, tem um copyright, e vem
com uma permiss�o de distribui��o de c�pias nas seguintes condi��es:
-Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2004-2011 Free Software Foundation, Inc.
Permiss�o � garantida a qualquer um para fazer ou distribuir c�pias
integrais deste documento como recebido, em qualquer meio, deixando
@@ -1078,4 +1078,3 @@ Emacs para seus amigos. Ajude a erradicar o obstrucionismo de software
;;; sentence-end-double-space: nil
;;; End:
-;;; arch-tag: 8ea256d6-2c4a-49ee-ac08-0ea6ef25bf8d
diff --git a/etc/tutorials/TUTORIAL.ro b/etc/tutorials/TUTORIAL.ro
index 1000950e70..a3ce0b79d4 100644
--- a/etc/tutorials/TUTORIAL.ro
+++ b/etc/tutorials/TUTORIAL.ro
@@ -1082,8 +1082,7 @@ continuare no�ita de copyright original� �n limba englez�.
This version of the tutorial, like GNU Emacs, is copyrighted, and
comes with permission to distribute copies on certain conditions:
-Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
Permission is granted to anyone to make or distribute verbatim copies
of this document as received, in any medium, provided that the
@@ -1105,4 +1104,3 @@ folosind, scriind �i distribuind free software!
;;; coding: iso-latin-2
;;; End:
-;;; arch-tag: dcf252cf-bd67-4f8d-a440-1ec4b8dbfd70
diff --git a/etc/tutorials/TUTORIAL.ru b/etc/tutorials/TUTORIAL.ru
index 16bf9133d1..f8127a2d82 100644
--- a/etc/tutorials/TUTORIAL.ru
+++ b/etc/tutorials/TUTORIAL.ru
@@ -1128,8 +1128,7 @@ Dired ��������� ��� ���������� ������ ������ � �������� (� �����
(copyrighted) � �������� � ������������� ��������������� ����� ��
���������� ������������:
-Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1996, 1998, 2001-2011 Free Software Foundation, Inc.
Permission is granted to anyone to make or distribute verbatim copies
of this document as received, in any medium, provided that the
@@ -1156,4 +1155,3 @@ Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004,
;;; sentence-end-double-space: nil
;;; End:
-;;; arch-tag: ad4e5698-ea8b-45b7-b236-ed5ad5b72d2b
diff --git a/etc/tutorials/TUTORIAL.sk b/etc/tutorials/TUTORIAL.sk
index ab7721e2cf..b75f4c24f0 100644
--- a/etc/tutorials/TUTORIAL.sk
+++ b/etc/tutorials/TUTORIAL.sk
@@ -1074,8 +1074,7 @@ t�torialom nap�san�m Stuartom Cracraftom pre p�vodn� Emacs.
T�to verzia t�torialu je, podobne ako GNU Emacs, chr�nen� copyrightom
a je ��ren� s povolen�m distribuova� k�pie za ist�ch podmienok:
-Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1996, 1998, 2001-2011 Free Software Foundation, Inc.
Ka�d�mu je zaru�en� pr�vo vytv�ra� a distribuova� presn� k�pie tohto
dokumentu tak, ako ho dostal, na akomko�vek m�diu, s t�m, �e bude
@@ -1096,4 +1095,3 @@ GNU Emacsu svojim priate�om. Pom�hajte potla�ova� softwarov� ob�trukciu
;;; coding: iso-latin-2
;;; End:
-;;; arch-tag: 87861cfa-5cf6-4b87-9fab-86c93c5ca9f3
diff --git a/etc/tutorials/TUTORIAL.sl b/etc/tutorials/TUTORIAL.sl
index 9692336843..e43ac32487 100644
--- a/etc/tutorials/TUTORIAL.sl
+++ b/etc/tutorials/TUTORIAL.sl
@@ -1106,8 +1106,7 @@ Emacs. V sloven��ino ga je prevedel Primo� Peterlin.
To besedilo, kot sam GNU Emacs, je avtorsko delo, in njegovo
razmno�evanje in raz�irjanje je dovoljeno pod naslednjimi pogoji:
-Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1996, 1998, 2001-2011 Free Software Foundation, Inc.
Dovoljeno je izdelovati in raz�irjati neokrnjene kopije tega spisa
v kakr�nikoli obliki pod pogojem, da je ohranjena navedba o
@@ -1129,4 +1128,3 @@ pi�ete in delite prosto programje!
;;; sentence-end-double-space: nil
;;; End:
-;;; arch-tag: 985059e4-44c6-4ac9-b627-46c8db57acf6
diff --git a/etc/tutorials/TUTORIAL.sv b/etc/tutorials/TUTORIAL.sv
index 811178ec3b..1960d35fff 100644
--- a/etc/tutorials/TUTORIAL.sv
+++ b/etc/tutorials/TUTORIAL.sv
@@ -1119,8 +1119,7 @@ Lidell �versatte den till Svenska.
This version of the tutorial, like GNU Emacs, is copyrighted, and
comes with permission to distribute copies on certain conditions:
-Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1996, 1998, 2001-2011 Free Software Foundation, Inc.
Permission is granted to anyone to make or distribute verbatim copies
of this document as received, in any medium, provided that the
@@ -1143,4 +1142,3 @@ GNU Emacs to your friends. Help stamp out software obstructionism
;;; sentence-end-double-space: nil
;;; End:
-;;; arch-tag: b352f774-622b-4cc6-85ce-43e3baf4fc1b
diff --git a/etc/tutorials/TUTORIAL.th b/etc/tutorials/TUTORIAL.th
index c53fad154e..fae084cd5e 100644
--- a/etc/tutorials/TUTORIAL.th
+++ b/etc/tutorials/TUTORIAL.th
@@ -964,8 +964,7 @@ starting with the one written by Stuart Cracraft for the original Emacs.
This version of the tutorial, like GNU Emacs, is copyrighted, and
comes with permission to distribute copies on certain conditions:
-Copyright (C) 1985, 1996, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1996, 2001-2011 Free Software Foundation, Inc.
Permission is granted to anyone to make or distribute verbatim copies
of this document as received, in any medium, provided that the
@@ -1005,4 +1004,3 @@ Translate - January 1999 by Virach Sornlertlamvanich
;;; sentence-end-double-space: nil
;;; End:
-;;; arch-tag: 79ad252a-448a-4dc9-a4cb-2097dd1ec014
diff --git a/etc/tutorials/TUTORIAL.translators b/etc/tutorials/TUTORIAL.translators
index ea0b1ec040..a69d23c471 100644
--- a/etc/tutorials/TUTORIAL.translators
+++ b/etc/tutorials/TUTORIAL.translators
@@ -96,4 +96,3 @@ Maintainer: Chao-Hong Liu <[email protected]>
;;; coding: utf-8
;;; End:
-;;; arch-tag: 8788b16b-e739-4304-a7f2-729bdb999fa0
diff --git a/etc/tutorials/TUTORIAL.zh b/etc/tutorials/TUTORIAL.zh
index 567aeb7915..a7dc9e63a4 100644
--- a/etc/tutorials/TUTORIAL.zh
+++ b/etc/tutorials/TUTORIAL.zh
@@ -1049,8 +1049,7 @@ issue here>�v�C
�o�Ӫ������ֳt���n�M GNU Emacs �@�˳��O���v�ƪ��A�åB���\�b�Y�DZ���U
���G������G
-Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1996, 1998, 2001-2011 Free Software Foundation, Inc.
Permission is granted to anyone to make or distribute verbatim copies
of this document as received, in any medium, provided that the
@@ -1083,4 +1082,3 @@ Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004,
;;; coding: chinese-big5
;;; End:
-;;; arch-tag: a51dafb4-e602-432b-8020-5d5d5f150811
diff --git a/info/.gitignore b/info/.gitignore
index 7e3bcdff84..72e8ffc0db 100644
--- a/info/.gitignore
+++ b/info/.gitignore
@@ -1,3 +1 @@
*
-
-# arch-tag: 4cf702c2-f50e-49bd-a3ff-4fd962c5975a
diff --git a/info/dir b/info/dir
index ae724d0719..06ee2ab824 100644
--- a/info/dir
+++ b/info/dir
@@ -67,6 +67,7 @@ Emacs misc features
merging programs.
* EDT: (edt). An Emacs emulation of the EDT editor.
* EIEIO: (eieio). An object system for Emacs Lisp.
+* ERT: (ert). Emacs Lisp regression testing tool.
* Eshell: (eshell). A command shell implemented in Emacs Lisp.
* Flymake: (flymake). A universal on-the-fly syntax checker.
* Forms: (forms). Emacs package for editing data bases
diff --git a/install-sh b/install-sh
index 058b26c82d..3f83ce9b55 100755
--- a/install-sh
+++ b/install-sh
@@ -1,250 +1,524 @@
-#! /bin/sh
-#
+#!/bin/sh
# install - install a program, script, or datafile
-# This comes from X11R5 (mit/util/scripts/install.sh).
+
+scriptversion=2010-02-06.18; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-# Copyright 1991 by the Massachusetts Institute of Technology
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
#
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission. M.I.T. makes no representations about the
-# suitability of this software for any purpose. It is provided "as is"
-# without express or implied warranty.
+#
+# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
-# from scratch. It can only install one file at a time, a restriction
-# shared with many OS's install programs.
+# from scratch.
+nl='
+'
+IFS=" "" $nl"
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd="$cpprog"
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd="$stripprog"
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "install: no input file specified"
- exit 1
+doit=${DOITPROG-}
+if test -z "$doit"; then
+ doit_exec=exec
else
- true
+ doit_exec=$doit
fi
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+ test "$posix_glob" != "?" || {
+ if (set -f) 2>/dev/null; then
+ posix_glob=
+ else
+ posix_glob=:
+ fi
+ }
+'
- if [ -d $dst ]; then
- instcmd=:
- else
- instcmd=mkdir
- fi
-else
+posix_mkdir=
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
+# Desired mode of installed file.
+mode=0755
- if [ -f $src -o -d $src ]
- then
- true
- else
- echo "install: $src does not exist"
- exit 1
- fi
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
- if [ x"$dst" = x ]
- then
- echo "install: no destination specified"
- exit 1
- else
- true
- fi
+src=
+dst=
+dir_arg=
+dst_arg=
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
+copy_on_change=false
+no_target_directory=
- if [ -d $dst ]
- then
- dst="$dst"/`basename $src`
- else
- true
- fi
-fi
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
+Options:
+ --help display this help and exit.
+ --version display version info and exit.
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
-'
-IFS="${IFS-${defaultIFS}}"
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+"
-pathcomp=''
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
-while [ $# -ne 0 ] ; do
- pathcomp="${pathcomp}${1}"
- shift
+ -C) copy_on_change=true;;
- if [ ! -d "${pathcomp}" ] ;
- then
- $mkdirprog "${pathcomp}"
- else
- true
- fi
-
- pathcomp="${pathcomp}/"
-done
-fi
+ -d) dir_arg=true;;
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd $dst &&
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
+ --help) echo "$usage"; exit $?;;
-# If we're going to rename the final executable, determine the name now.
+ -m) mode=$2
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename $dst`
- else
- dstfile=`basename $dst $transformbasename |
- sed $transformarg`$transformbasename
- fi
+ -o) chowncmd="$chownprog $2"
+ shift;;
-# don't allow the sed command to completely eliminate the filename
+ -s) stripcmd=$stripprog;;
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename $dst`
- else
- true
- fi
+ -t) dst_arg=$2
+ shift;;
-# Make a temp file name in the proper directory.
+ -T) no_target_directory=true;;
- dsttmp=$dstdir/#inst.$$#
+ --version) echo "$0 $scriptversion"; exit $?;;
-# Move or copy the file name to the temp name
+ --) shift
+ break;;
- $doit $instcmd $src $dsttmp &&
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
- trap "rm -f ${dsttmp}" 0 &&
+ *) break;;
+ esac
+ shift
+done
-# and set any options; do chmod last to preserve setuid bits
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ done
+fi
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
+if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call `install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+if test -z "$dir_arg"; then
+ do_exit='(exit $ret); exit $ret'
+ trap "ret=129; $do_exit" 1
+ trap "ret=130; $do_exit" 2
+ trap "ret=141; $do_exit" 13
+ trap "ret=143; $do_exit" 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
-# Now rename the file to the real destination.
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dst_arg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst;;
+ esac
- $doit $rmcmd -f $dstdir/$dstfile &&
- $doit $mvcmd $dsttmp $dstdir/$dstfile
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
-fi &&
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writeable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ -*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ eval "$initialize_posix_glob"
+
+ oIFS=$IFS
+ IFS=/
+ $posix_glob set -f
+ set fnord $dstdir
+ shift
+ $posix_glob set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test -z "$d" && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+ eval "$initialize_posix_glob" &&
+ $posix_glob set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ $posix_glob set +f &&
+
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
-exit 0
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/leim/.gitignore b/leim/.gitignore
index 5fca4a301b..02175a1deb 100644
--- a/leim/.gitignore
+++ b/leim/.gitignore
@@ -1,4 +1,2 @@
*.elc
leim-list.el
-
-# arch-tag: 652dce56-7a2f-46ff-8699-c3289ccdc165
diff --git a/leim/CXTERM-DIC/4Corner.tit b/leim/CXTERM-DIC/4Corner.tit
index b62a4ff922..e95b970d65 100644
--- a/leim/CXTERM-DIC/4Corner.tit
+++ b/leim/CXTERM-DIC/4Corner.tit
@@ -6676,4 +6676,3 @@ BEGINDICTIONARY
99903 ��
99904 �a
-# arch-tag: aa089b66-ed25-422f-97e2-78574370efa5
diff --git a/leim/CXTERM-DIC/ARRAY30.tit b/leim/CXTERM-DIC/ARRAY30.tit
index 55919c862d..f1f7f1e247 100644
--- a/leim/CXTERM-DIC/ARRAY30.tit
+++ b/leim/CXTERM-DIC/ARRAY30.tit
@@ -13185,4 +13185,3 @@ napa �� # ---> 6v1-0^1- 0
,nr\040 �� # ---> 8v6v4^ 0
weu\040 �� # ---> 2^3^7^ 0
-# arch-tag: 344d9e2d-e34b-4c61-ac52-aa46da44347d
diff --git a/leim/CXTERM-DIC/CCDOSPY.tit b/leim/CXTERM-DIC/CCDOSPY.tit
index c428f126a2..930f424839 100644
--- a/leim/CXTERM-DIC/CCDOSPY.tit
+++ b/leim/CXTERM-DIC/CCDOSPY.tit
@@ -564,4 +564,3 @@ zuj ����߬����
zun ����ߤ����
zuo ��������������������������
-# arch-tag: cc94b635-0552-40f3-8513-5edab6f13ce5
diff --git a/leim/CXTERM-DIC/ECDICT.tit b/leim/CXTERM-DIC/ECDICT.tit
index 8b3beec828..7508e6b1f2 100644
--- a/leim/CXTERM-DIC/ECDICT.tit
+++ b/leim/CXTERM-DIC/ECDICT.tit
@@ -7837,4 +7837,3 @@ zoological �ʪ��Ǫ�
zoology �ʪ���
-# arch-tag: 618eec81-84f6-42ce-b2e7-01569fb3f8cb
diff --git a/leim/CXTERM-DIC/ETZY.tit b/leim/CXTERM-DIC/ETZY.tit
index befb511f56..ab123a9fd4 100644
--- a/leim/CXTERM-DIC/ETZY.tit
+++ b/leim/CXTERM-DIC/ETZY.tit
@@ -1580,4 +1580,3 @@ z2 ���ξC�����g���R���}��v��m�l�����W�j���j
z3 �Ͷ�ͽ�D
z4 �ƿD�����Mش��鮩����j
-# arch-tag: 7f36821c-dc1c-4119-8679-f354a58ff15f
diff --git a/leim/CXTERM-DIC/PY-b5.tit b/leim/CXTERM-DIC/PY-b5.tit
index e34fd3a87d..c3d88ca39d 100644
--- a/leim/CXTERM-DIC/PY-b5.tit
+++ b/leim/CXTERM-DIC/PY-b5.tit
@@ -2299,4 +2299,3 @@ zuo3 �����w
zuo4 ���@���y�`���w�g̩�_�����Y
zuo5
-# arch-tag: cd75d187-c91f-4197-8e77-1ee1a89a38bb
diff --git a/leim/CXTERM-DIC/Punct-b5.tit b/leim/CXTERM-DIC/Punct-b5.tit
index 89ee06a3c0..adff8b9430 100644
--- a/leim/CXTERM-DIC/Punct-b5.tit
+++ b/leim/CXTERM-DIC/Punct-b5.tit
@@ -138,4 +138,3 @@ unit �a
} ���b�d
~ �\���
-# arch-tag: 6c85fd95-a46d-4b07-8a87-2121eb14e132
diff --git a/leim/CXTERM-DIC/Punct.tit b/leim/CXTERM-DIC/Punct.tit
index 61c3d4f907..09a23915bc 100644
--- a/leim/CXTERM-DIC/Punct.tit
+++ b/leim/CXTERM-DIC/Punct.tit
@@ -75,4 +75,3 @@ symbol ��������������
| ������
~ �����סء�
-# arch-tag: 4d0e14b7-4eb2-4310-9582-e981f4c4a7f0
diff --git a/leim/CXTERM-DIC/QJ-b5.tit b/leim/CXTERM-DIC/QJ-b5.tit
index 4214616b05..7ef537bd5c 100644
--- a/leim/CXTERM-DIC/QJ-b5.tit
+++ b/leim/CXTERM-DIC/QJ-b5.tit
@@ -110,4 +110,3 @@ z �C
} �b
~ ��
-# arch-tag: 5c41662d-6b85-467f-a977-ba80a6bd9f2c
diff --git a/leim/CXTERM-DIC/QJ.tit b/leim/CXTERM-DIC/QJ.tit
index d620a30fba..e2b2c529ac 100644
--- a/leim/CXTERM-DIC/QJ.tit
+++ b/leim/CXTERM-DIC/QJ.tit
@@ -110,4 +110,3 @@ z ��
} ��
~ ��
-# arch-tag: 3ee780cd-600a-49e7-a77b-85b898adc205
diff --git a/leim/CXTERM-DIC/SW.tit b/leim/CXTERM-DIC/SW.tit
index f87ae53e34..f95e24032e 100644
--- a/leim/CXTERM-DIC/SW.tit
+++ b/leim/CXTERM-DIC/SW.tit
@@ -749,4 +749,3 @@ zy ���Ե��̷շ��׺�����������������Щ����սֹ�������
zy ���������������
zz �ӿ���­Ƶ����̰է����������
-# arch-tag: 0e108249-9190-46f4-884f-6af10a9aeb89
diff --git a/leim/CXTERM-DIC/TONEPY.tit b/leim/CXTERM-DIC/TONEPY.tit
index 586987fd3c..8d7deaeae4 100644
--- a/leim/CXTERM-DIC/TONEPY.tit
+++ b/leim/CXTERM-DIC/TONEPY.tit
@@ -2121,4 +2121,3 @@ zuo3 ������
zuo4 ������������������������
zuo5
-# arch-tag: 6a2668ac-399a-4504-bb7a-5c641cb8e0ef
diff --git a/leim/CXTERM-DIC/ZOZY.tit b/leim/CXTERM-DIC/ZOZY.tit
index 5c445ffdaf..ed4a702012 100644
--- a/leim/CXTERM-DIC/ZOZY.tit
+++ b/leim/CXTERM-DIC/ZOZY.tit
@@ -1580,4 +1580,3 @@ zp4 �����ļ����T���\ʮ���������x
zp6 �X�I�W�������F���n���V�ʷ�Z�b���t�����c
zul4 ��
-# arch-tag: e40a2740-dae5-4fd9-a32e-bedf6503dc65
diff --git a/leim/ChangeLog b/leim/ChangeLog
index 1233aaf306..6f55095aac 100644
--- a/leim/ChangeLog
+++ b/leim/ChangeLog
@@ -1,3 +1,30 @@
+2011-01-28 Paul Eggert <[email protected]>
+
+ Redo spelling of Makefile variables to conform to POSIX.
+ POSIX does not allow "-" in Makefile variable names.
+ Reported by Bruno Haible in
+ <http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00990.html>.
+ * Makefile.in (BUILT_EMACS): Renamed from BUILT-EMACS.
+ (TIT_GB): Renamed from TIT-GB.
+ (CHINESE_TIT): Renamed from CHINESE-TIT.
+ (NON_TIT_GB): Renamed from NON-TIT-GB.
+ (NON_TIT_BIG5): Renamed from NON-TIT-BIG5.
+ (CHINESE_NON_TIT): Renamed from CHINESE-NON-TIT.
+ (CHINESE_GB): Renamed from CHINESE-GB.
+ (CHINESE_BIG5): Renamed from CHINESE-BIG5.
+ (TIT_MISC): Renamed from TIT-MISC.
+ (NON_TIT_MISC): Renamed from NON-TIT-MISC.
+ (TIT_SOURCES): Renamed from TIT-SOURCES.
+ (MISC_SOURCES): Renamed from MISC-SOURCES.
+
+2011-01-08 Glenn Morris <[email protected]>
+
+ * makefile.w32-in (RUN_EMACS):
+ * Makefile.in (RUN-EMACS): Add --no-site-lisp.
+
+ * makefile.w32-in (RUN_EMACS):
+ * Makefile.in (RUN-EMACS): -batch implies --no-init-file.
+
2010-08-28 Kenichi Handa <[email protected]>
* quail/japanese.el (quail-japanese-update-translation): Fix
@@ -2099,11 +2126,9 @@
;; Local Variables:
;; coding: utf-8
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1997-1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -2119,5 +2144,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: 4b364045-a476-4ff7-92ad-dde58dbd45b4
diff --git a/leim/MISC-DIC/CTLau-b5.html b/leim/MISC-DIC/CTLau-b5.html
index 56994dd71e..b7d33b0e31 100644
--- a/leim/MISC-DIC/CTLau-b5.html
+++ b/leim/MISC-DIC/CTLau-b5.html
@@ -682,6 +682,3 @@ YUNG ��e�`�Ϋi�Įe����T����������ξֶ��s��l�㸺�v�M�q�o�_�i
\YOO ���[�����{�|�D�j�C�l�\�B������ſ�������X�J�������I�������K���ϡ��k�s���n�v���������`�����������������W��
\YUK ��bߢ�L�K�E�����˵͡����s��㦡��������M�������衼�G���x���ҡ��Ъ�Ͱ������Ĥ�[�_�g�e���O�H�֡�����ӡ�
<hr></pre></body></html>
-
-<!-- arch-tag: bae78679-a82a-442d-a0cc-07d8f7f72c53
- (do not change this comment) -->
diff --git a/leim/MISC-DIC/CTLau.html b/leim/MISC-DIC/CTLau.html
index 77db00d26b..36e3581a38 100644
--- a/leim/MISC-DIC/CTLau.html
+++ b/leim/MISC-DIC/CTLau.html
@@ -682,6 +682,3 @@ YUNG ӿӹ����������������������������ӵӶӷӸӺӻӼ��ٸ������
\YOO ��������������������������������������������������������������������������������������������������������
\YUK ��������������������������������������������������������������������������������������������������
<hr></pre></body></html>
-
-<!-- arch-tag: 31cf695a-5f79-4a94-be79-54c38c444946
- (do not change this comment) -->
diff --git a/leim/Makefile.in b/leim/Makefile.in
index ba70319ca1..8c2baadf15 100644
--- a/leim/Makefile.in
+++ b/leim/Makefile.in
@@ -1,9 +1,8 @@
# Makefile for leim subdirectory in GNU Emacs.
+
+# Copyright (C) 1997-2011 Free Software Foundation, Inc.
# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
-# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010
+# 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H14PRO021
@@ -42,20 +41,20 @@ GZIP_PROG = @GZIP_PROG@
# Which Emacs to use to convert TIT files to Emacs Lisp files,
# byte-compile Emacs Lisp files, and generate the file leim-list.el.
-BUILT-EMACS = ../src/emacs
+BUILT_EMACS = ../src/emacs
buildlisppath=${srcdir}/../lisp
# How to run Emacs.
-RUN-EMACS = EMACSLOADPATH=$(buildlisppath) LC_ALL=C \
- ${BUILT-EMACS} -batch --no-init-file --no-site-file
+RUN_EMACS = EMACSLOADPATH=$(buildlisppath) LC_ALL=C \
+ ${BUILT_EMACS} -batch --no-site-file --no-site-lisp
# Subdirectories to be made if ${srcdir} is different from the current
# directory.
SUBDIRS=quail
# Files generated from TIT dictionaries for Chinese GB character set.
-TIT-GB=\
+TIT_GB=\
quail/CCDOSPY.elc \
quail/Punct.elc \
quail/QJ.elc \
@@ -73,17 +72,17 @@ TIT-BIG5=\
quail/QJ-b5.elc \
quail/ZOZY.elc
-CHINESE-TIT=${TIT-GB} ${TIT-BIG5}
+CHINESE_TIT=${TIT_GB} ${TIT_BIG5}
-NON-TIT-GB=${srcdir}/quail/py-punct.elc
+NON_TIT_GB=${srcdir}/quail/py-punct.elc
-NON-TIT-BIG5=${srcdir}/quail/pypunct-b5.elc
+NON_TIT_BIG5=${srcdir}/quail/pypunct-b5.elc
-CHINESE-NON-TIT=${NON-TIT-GB} ${NON-TIT-BIG5}
+CHINESE_NON_TIT=${NON_TIT_GB} ${NON_TIT_BIG5}
-CHINESE-GB=${TIT-GB} ${NON-TIT-GB}
+CHINESE_GB=${TIT_GB} ${NON_TIT_GB}
-CHINESE-BIG5=${TIT-BIG5} ${NON-TIT-BIG5}
+CHINESE_BIG5=${TIT_BIG5} ${NON_TIT_BIG5}
JAPANESE=${srcdir}/quail/japanese.elc ${srcdir}/ja-dic/ja-dic.elc
@@ -139,22 +138,22 @@ MISC= \
quail/CTLau.elc \
quail/CTLau-b5.elc
-CHINESE=${CHINESE-GB} ${CHINESE-BIG5}
+CHINESE=${CHINESE_GB} ${CHINESE_BIG5}
EASTASIA=${CHINESE} ${JAPANESE} ${KOREAN}
ASIA=${EASTASIA} ${THAI} ${VIETNAMESE} ${LAO} ${INDIAN} ${TIBETAN}
EUROPEAN=${LATIN} ${SLAVIC} ${GREEK} ${RUSSIAN}
WORLD=${ASIA} ${EUROPEAN} ${OTHERS} ${MISC} ${UNICODE}
-TIT-MISC=${CHINESE-TIT} ${MISC}
-NON-TIT-MISC=${CHINESE-NON-TIT} ${JAPANESE} ${KOREAN} ${EUROPEAN} ${OTHERS}
+TIT_MISC=${CHINESE_TIT} ${MISC}
+NON_TIT_MISC=${CHINESE_NON_TIT} ${JAPANESE} ${KOREAN} ${EUROPEAN} ${OTHERS}
.SUFFIXES: .elc .el
.el.elc:
@echo Compiling $<
- @${RUN-EMACS} -f batch-byte-compile $<
+ @${RUN_EMACS} -f batch-byte-compile $<
-all: ${BUILT-EMACS} ${SUBDIRS} leim-list.el ${WORLD}
+all: ${BUILT_EMACS} ${SUBDIRS} leim-list.el ${WORLD}
# To ensure that we can run Emacs. This target is ignored (never
# being hit) if a user changes default value of EMACS.
@@ -165,7 +164,7 @@ ${SUBDIRS}:
mkdir $@
touch stamp-subdir
-TIT-SOURCES= \
+TIT_SOURCES= \
${srcdir}/CXTERM-DIC/4Corner.tit \
${srcdir}/CXTERM-DIC/ARRAY30.tit \
${srcdir}/CXTERM-DIC/CCDOSPY.tit \
@@ -180,15 +179,15 @@ TIT-SOURCES= \
${srcdir}/CXTERM-DIC/TONEPY.tit \
${srcdir}/CXTERM-DIC/ZOZY.tit
-${CHINESE-TIT:.elc=.el}: changed.tit
+${CHINESE_TIT:.elc=.el}: changed.tit
@true
-changed.tit: ${TIT-SOURCES}
- ${RUN-EMACS} -l ${buildlisppath}/international/titdic-cnv \
+changed.tit: ${TIT_SOURCES}
+ ${RUN_EMACS} -l ${buildlisppath}/international/titdic-cnv \
-f batch-titdic-convert -dir quail ${srcdir}/CXTERM-DIC; \
echo "changed" > $@
-MISC-SOURCES= \
+MISC_SOURCES= \
${srcdir}/MISC-DIC/CTLau-b5.html \
${srcdir}/MISC-DIC/CTLau.html \
${srcdir}/MISC-DIC/cangjie-table.b5 \
@@ -199,20 +198,20 @@ MISC-SOURCES= \
${MISC:.elc=.el}: changed.misc
@true
-changed.misc: ${MISC-SOURCES}
- ${RUN-EMACS} -l ${buildlisppath}/international/titdic-cnv \
+changed.misc: ${MISC_SOURCES}
+ ${RUN_EMACS} -l ${buildlisppath}/international/titdic-cnv \
-f batch-miscdic-convert -dir quail ${srcdir}/MISC-DIC; \
echo "changed" > $@
-leim-list.el: ${SUBDIRS} ${TIT-MISC} changed.tit changed.misc ${srcdir}/leim-ext.el
+leim-list.el: ${SUBDIRS} ${TIT_MISC} changed.tit changed.misc ${srcdir}/leim-ext.el
rm -f leim-list.el
- ${RUN-EMACS} -l ${buildlisppath}/international/quail \
- -f batch-byte-compile-if-not-done ${TIT-MISC:.elc=.el}
+ ${RUN_EMACS} -l ${buildlisppath}/international/quail \
+ -f batch-byte-compile-if-not-done ${TIT_MISC:.elc=.el}
if [ x`(cd ${srcdir} && /bin/pwd)` = x`(/bin/pwd)` ] ; then \
- ${RUN-EMACS} -l ${buildlisppath}/international/quail \
+ ${RUN_EMACS} -l ${buildlisppath}/international/quail \
--eval "(update-leim-list-file \".\")" ; \
else \
- ${RUN-EMACS} -l ${buildlisppath}/international/quail \
+ ${RUN_EMACS} -l ${buildlisppath}/international/quail \
--eval "(update-leim-list-file \".\" \"${srcdir}\")" ; \
fi
sed -n '/^[^;]/ p' < ${srcdir}/leim-ext.el >> $@
@@ -265,7 +264,7 @@ install: all
else true ; fi
clean mostlyclean:
- rm -f ${TIT-MISC} ${TIT-MISC:.elc=.el} \
+ rm -f ${TIT_MISC} ${TIT_MISC:.elc=.el} \
leim-list.el changed.tit changed.misc
# The following target is needed because the `clean' target only removes
@@ -288,5 +287,5 @@ extraclean: maintainer-clean
.PHONY: check-declare
check-declare:
- $(RUN-EMACS) -l $(buildlisppath)/emacs-lisp/check-declare \
+ $(RUN_EMACS) -l $(buildlisppath)/emacs-lisp/check-declare \
--eval '(check-declare-directory "$(srcdir)")'
diff --git a/leim/README b/leim/README
index db7269a3f5..a47bd7664d 100644
--- a/leim/README
+++ b/leim/README
@@ -1,5 +1,4 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/leim/leim-ext.el b/leim/leim-ext.el
index c44f3e7efc..0a12fdde58 100644
--- a/leim/leim-ext.el
+++ b/leim/leim-ext.el
@@ -1,8 +1,7 @@
;; leim-ext.el -- extra leim configuration -*- coding:utf-8; -*-
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H13PRO009
@@ -89,4 +88,3 @@ HELP-TEXT is a text set in `hangul-input-method-help-text'.")
'hangul390-input-method
"Input method: korean-hangul390 (mode line indicator:한390)\n\nHangul 3-Bulsik 390 input method.")
-;; arch-tag: 75cfdfc7-de85-44f9-b408-ff67d1ec664e
diff --git a/leim/makefile.w32-in b/leim/makefile.w32-in
index f55fbbf816..08b029db86 100644
--- a/leim/makefile.w32-in
+++ b/leim/makefile.w32-in
@@ -1,6 +1,6 @@
# -*- Makefile -*- for leim subdirectory in GNU Emacs on the Microsoft W32 API.
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+
+# Copyright (C) 2000-2011 Free Software Foundation, Inc.
# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
# 2006, 2007
# National Institute of Advanced Industrial Science and Technology (AIST)
@@ -37,7 +37,7 @@ BUILT_EMACS = $(THISDIR)/$(dot)$(dot)/src/$(BLD)/emacs.exe
buildlisppath=$(CURDIR)/$(dot)$(dot)/lisp
# How to run Emacs.
-RUN_EMACS = "$(BUILT_EMACS)" -batch --no-init-file --no-site-file
+RUN_EMACS = "$(BUILT_EMACS)" -batch --no-site-file --no-site-lisp
# Set EMACSLOADPATH correctly (already defined in environment).
EMACSLOADPATH=$(buildlisppath)
diff --git a/leim/quail/.gitignore b/leim/quail/.gitignore
index c19128664e..c3f9e36f0d 100644
--- a/leim/quail/.gitignore
+++ b/leim/quail/.gitignore
@@ -20,4 +20,3 @@ quick-cns.el
tsang-b5.el
tsang-cns.el
-# arch-tag: 51d8b13a-24b5-45fb-8451-7bef7f101f26
diff --git a/leim/quail/arabic.el b/leim/quail/arabic.el
index cb77183bc9..e14fee8c88 100644
--- a/leim/quail/arabic.el
+++ b/leim/quail/arabic.el
@@ -1,6 +1,6 @@
;;; arabic.el --- Quail package for inputting Arabic -*- coding: utf-8;-*-
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: James Cloos <[email protected]>
;; Keywords: mule, input method, Arabic
@@ -112,5 +112,4 @@ Based on Arabic table in X Keyboard Configuration DB.
("." ?ز)
("/" ?ظ))
-;; arch-tag: 7e81e2af-5ea5-417f-bfe7-dfa6fd955cb5
;;; arabic.el ends here
diff --git a/leim/quail/croatian.el b/leim/quail/croatian.el
index 9073371d73..7f39497926 100644
--- a/leim/quail/croatian.el
+++ b/leim/quail/croatian.el
@@ -1,7 +1,6 @@
;;; quail/croatian.el -- Quail package for inputing Croatian -*-coding: iso-8859-2;-*-
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Hrvoje Nik�i� <[email protected]>
;; Keywords: i18n
@@ -197,5 +196,4 @@ dd -> �"
("DD" ?�)
("Dd" ?�))
-;; arch-tag: 8cb44078-9c51-4e81-9ef8-7d5b89f62e31
;;; croatian.el ends here
diff --git a/leim/quail/cyril-jis.el b/leim/quail/cyril-jis.el
index 5aef398d4a..878c6f5328 100644
--- a/leim/quail/cyril-jis.el
+++ b/leim/quail/cyril-jis.el
@@ -1,9 +1,8 @@
;;; cyril-jis.el --- Quail package for inputting JISX0208 Cyrillic letters
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -143,5 +142,4 @@
;; coding: iso-2022-7bit
;; End:
-;; arch-tag: 3a0cc2ac-de48-42fe-9e80-05d8aa6faa36
;;; cyril-jis.el ends here
diff --git a/leim/quail/cyrillic.el b/leim/quail/cyrillic.el
index 2683d601ba..7eaaab4aeb 100644
--- a/leim/quail/cyrillic.el
+++ b/leim/quail/cyrillic.el
@@ -1,9 +1,8 @@
;;; cyrillic.el --- Quail package for inputting Cyrillic characters
-;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -1405,5 +1404,4 @@ keys as being transformed into ( and ) respectively. For ( and ), use
;; coding: iso-2022-7bit
;; End:
-;; arch-tag: e6d34b16-8710-4181-a17e-819a1df0334f
;;; cyrillic.el ends here
diff --git a/leim/quail/czech.el b/leim/quail/czech.el
index 387d6c5067..334045eac3 100644
--- a/leim/quail/czech.el
+++ b/leim/quail/czech.el
@@ -1,7 +1,6 @@
;;; czech.el --- Quail package for inputting Czech -*-coding: iso-2022-7bit;-*-
-;; Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Milan Zamazal <[email protected]>
;; Maintainer: Pavel Jan,Bm(Bk <[email protected]>
@@ -566,5 +565,4 @@ All other keys are the same as on standard US keyboard."
([kp-0] ?0)
([kp-add] ?+))
-;; arch-tag: 0a27dffc-a5e1-479f-9da2-a9eb91b34d8a
;;; czech.el ends here
diff --git a/leim/quail/ethiopic.el b/leim/quail/ethiopic.el
index d7af2f7f1a..bdbb214723 100644
--- a/leim/quail/ethiopic.el
+++ b/leim/quail/ethiopic.el
@@ -1,7 +1,7 @@
;;; ethiopic.el --- Quail package for inputting Ethiopic characters -*-coding: iso-2022-7bit;-*-
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -1146,5 +1146,4 @@ C-' or `M-x ethio-gemination'
(if (ethio-prefer-amharic-p) ?$(3"c(B ?$(3"f(B)
"ethiopic"))
-;; arch-tag: 66c182a8-d802-40fa-9c0d-d8ebe2f909d5
;;; ethiopic.el ends here
diff --git a/leim/quail/georgian.el b/leim/quail/georgian.el
index a063d12666..d9d8519867 100644
--- a/leim/quail/georgian.el
+++ b/leim/quail/georgian.el
@@ -1,7 +1,6 @@
;;; georgian.el --- Quail package for inputting Georgian characters -*-coding: utf-8;-*-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Keywords: i18n
@@ -81,5 +80,4 @@
("e1" ?) ;; Letter not in Unicode (private use code).
)
-;; arch-tag: 7b26f205-7091-435e-a2cf-8778f899dc8a
;;; georgian.el ends here
diff --git a/leim/quail/greek.el b/leim/quail/greek.el
index 688b247b0b..4deeb86fb4 100644
--- a/leim/quail/greek.el
+++ b/leim/quail/greek.el
@@ -1,9 +1,8 @@
;;; greek.el --- Quail package for inputting Greek -*-coding: iso-2022-7bit-*-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -1429,5 +1428,4 @@ e.g.
(">>" ?$(Q)2(B))
-;; arch-tag: 2a37e042-db1b-4ecf-b755-117775a3c150
;;; greek.el ends here
diff --git a/leim/quail/hangul.el b/leim/quail/hangul.el
index 1fda6b4a8c..660e776362 100644
--- a/leim/quail/hangul.el
+++ b/leim/quail/hangul.el
@@ -1,6 +1,6 @@
;;; hangul.el --- Korean Hangul input method
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Jihyun Cho <[email protected]>
;; Keywords: multilingual, input method, Korean, Hangul
@@ -539,5 +539,4 @@ HELP-TEXT is a text set in `hangul-input-method-help-text'."
(provide 'hangul)
-;; arch-tag: 26bc93fc-64ee-4fb1-b26d-22220d132dbe
;;; hangul.el ends here
diff --git a/leim/quail/hanja-jis.el b/leim/quail/hanja-jis.el
index bf544d9516..2c7eebb834 100644
--- a/leim/quail/hanja-jis.el
+++ b/leim/quail/hanja-jis.el
@@ -1,7 +1,7 @@
;;; hanja-jis.el --- Quail package for inputting Korean Hanja (JISX0208) -*-coding: iso-2022-7bit;-*-
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -524,5 +524,4 @@
("glf" "$B5Merk#pvs\(B")
("unknown" "$B4#<5DNFJFdFuJ=KsL]QeRIRpS&S9SuS{T*T+T8T:T>TBTCTKTNTQTWT\T_UNU~V&V,V-V.V/V0V2V4V8VNW;WjWnWpY0YKY^Z1Zs[=[b[n\)\-\.\/\0\1\O\S\j\n\o\p\q\x]&]6]B]i^<^L^c_&_1`<a:a<a>b<bBbXbmbpbsc%c5cNcdc}d&d1d=dIdLdYdddfdhdte9eaebemenevf$g3g\h4h6hHhMhWhhiFi[ibj,jQj^jmk\lCmZmhmimzn%n}o'oZo]p#p-pXp]p`q;qIqRr;r@rGrOrZr_rer~s#s%(B"))
-;; arch-tag: 06336a2c-696e-45f1-9990-aff251e7493a
;;; hanja-jis.el ends here
diff --git a/leim/quail/hanja.el b/leim/quail/hanja.el
index 67a7a4b70c..029309f4c1 100644
--- a/leim/quail/hanja.el
+++ b/leim/quail/hanja.el
@@ -1,9 +1,8 @@
;;; hanja.el --- Quail-package for Korean Hanja (KSC5601) -*-coding: iso-2022-7bit;-*-
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -514,5 +513,4 @@
("gml" "$(C}j}k}l}m}n}o}p}q}r}s}t}u}v}w}x}y}z}{}|}}(B")
("glf" "$(C}~(B"))
-;; arch-tag: f83c4a34-ee8a-4d7f-95a2-e18816c57182
;;; hanja.el ends here
diff --git a/leim/quail/hanja3.el b/leim/quail/hanja3.el
index e1633ffb30..aa0fc7948a 100644
--- a/leim/quail/hanja3.el
+++ b/leim/quail/hanja3.el
@@ -1,7 +1,6 @@
;;; hanja3.el --- Quail-package for Korean Hanja (KSC5601) -*-coding: iso-2022-7bit;-*-
-;; Copyright (C) 1997, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Koaunghi Un <[email protected]>
;; Keywords: mule, quail, multilingual, input method, Korean, Hanja
@@ -612,5 +611,4 @@
("m8" "$(C}j}k}l}m}n}o}p}q}r}s}t}u}v}w}x}y}z}{}|}}(B")
("mdw" "$(C}~(B"))
-;; arch-tag: 2dda6492-e6e3-47a0-aa88-8d9bdf3a200f
;;; hanja3.el ends here
diff --git a/leim/quail/hebrew.el b/leim/quail/hebrew.el
index 2ef3d04bb2..828532040e 100644
--- a/leim/quail/hebrew.el
+++ b/leim/quail/hebrew.el
@@ -1,7 +1,7 @@
;;; hebrew.el --- Quail package for inputting Hebrew characters -*-coding: iso-2022-7bit;-*-
;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010
+;; 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -75,5 +75,4 @@ Hebrew letters are assigned to lowercases.
("/" ?.)
("'" ?,))
-;; arch-tag: 771b887d-15af-4a4d-b4ce-a4a86f5ca0cf
;;; hebrew.el ends here
diff --git a/leim/quail/indian.el b/leim/quail/indian.el
index 7a39f48b49..a3f3963e31 100644
--- a/leim/quail/indian.el
+++ b/leim/quail/indian.el
@@ -1,7 +1,6 @@
;;; indian.el --- Quail packages for inputting Indian
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: KAWABATA, Taichi <[email protected]>
@@ -294,5 +293,4 @@
"tamil-inscript" "Tamil" "TmlIS"
"Tamil keyboard Inscript.")
-;; arch-tag: 9e5a621e-f7d5-4fce-9543-0a51b407c940
;;; indian.el ends here
diff --git a/leim/quail/ipa.el b/leim/quail/ipa.el
index 668a44a7a6..425a0591c9 100644
--- a/leim/quail/ipa.el
+++ b/leim/quail/ipa.el
@@ -1,11 +1,11 @@
;;; ipa.el --- Quail package for inputting IPA characters -*-coding: utf-8;-*-
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Licensed to the Free Software Foundation.
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Keywords: multilingual, input method, IPA
@@ -516,5 +516,4 @@ displays them, incorrectly, as separate from the modified glyphs.")
(quail-defrule (format "%s_" implosive-x-sampa)
'ipa-x-sampa-underscore-implosive))
-;; arch-tag: cf2614cc-ecce-4ef5-ba51-37faeed41691
;;; ipa.el ends here
diff --git a/leim/quail/japanese.el b/leim/quail/japanese.el
index 42d83c6b80..f51bddbf3b 100644
--- a/leim/quail/japanese.el
+++ b/leim/quail/japanese.el
@@ -1,9 +1,8 @@
;;; japanese.el --- Quail package for inputting Japanese -*-coding: iso-2022-7bit;-*-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -550,5 +549,4 @@ qq: toggle between this input method and the input method `japanese-ascii'.
(vector (japanese-katakana (aref trans 0))))
(t trans)))))
-;; arch-tag: 47e0bfd4-6ecc-4d01-89a8-d687c5e01ff7
;;; japanese.el ends here
diff --git a/leim/quail/lao.el b/leim/quail/lao.el
index be756cb222..268ee9c2b5 100644
--- a/leim/quail/lao.el
+++ b/leim/quail/lao.el
@@ -1,7 +1,7 @@
;;; lao.el --- Quail package for inputting Lao characters -*-coding: iso-2022-7bit;-*-
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -210,5 +210,4 @@ you need to re-load it to properly re-initialize related alists.")
(v-state (lao-vowel-key-alist . t-state))
(t-state lao-tone-key-alist))))
-;; arch-tag: 23863a30-a8bf-402c-b7ce-c517a7aa8570
;;; lao.el ends here
diff --git a/leim/quail/latin-alt.el b/leim/quail/latin-alt.el
index 6d64d3f86d..2276ba3e2a 100644
--- a/leim/quail/latin-alt.el
+++ b/leim/quail/latin-alt.el
@@ -1,8 +1,8 @@
;;; latin-alt.el --- Quail package for inputting various European characters -*-coding: utf-8;-*-
-;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1997-1998, 2001-2011 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+;; 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -1713,5 +1713,4 @@ Doubling the postfix separates the letter and postfix: e.g. a'' -> a'
("z~~" ["z~"])
)
-;; arch-tag: 722466a6-363d-431c-9161-879e16e2da5d
;;; latin-alt.el ends here
diff --git a/leim/quail/latin-ltx.el b/leim/quail/latin-ltx.el
index 8b58bf39d5..b3cc647737 100644
--- a/leim/quail/latin-ltx.el
+++ b/leim/quail/latin-ltx.el
@@ -1,8 +1,8 @@
;;; latin-ltx.el --- Quail package for TeX-style input -*-coding: utf-8;-*-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+;; 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -991,5 +991,4 @@ system, including many technical ones. Examples:
("\\textreferencemark" ?※)
)
-;; arch-tag: 3daae613-2c53-446e-a0a1-ee2e1ebed15f
;;; latin-ltx.el ends here
diff --git a/leim/quail/latin-post.el b/leim/quail/latin-post.el
index f59016ce6d..bca518b512 100644
--- a/leim/quail/latin-post.el
+++ b/leim/quail/latin-post.el
@@ -1,9 +1,8 @@
;;; latin-post.el --- Quail packages for inputting various European characters -*-coding: utf-8;-*-
-;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -2490,5 +2489,4 @@ Doubling the postfix separates the letter and postfix: e.g. a'' -> a'
("s<" ?š)
("z<" ?ž))
-;; arch-tag: 170180fb-9617-4d58-9d51-65ca23c05d94
;;; latin-post.el ends here
diff --git a/leim/quail/latin-pre.el b/leim/quail/latin-pre.el
index 44cbed4689..c45a300997 100644
--- a/leim/quail/latin-pre.el
+++ b/leim/quail/latin-pre.el
@@ -1,10 +1,8 @@
;;; latin-pre.el --- Quail packages for inputting various European characters -*-coding: utf-8;-*-
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -1189,5 +1187,4 @@ of characters from a single Latin-N charset.
("~~" ?¸)
)
-;; arch-tag: 83017837-6b84-4366-b183-e0577e3ed838
;;; latin-pre.el ends here
diff --git a/leim/quail/lrt.el b/leim/quail/lrt.el
index b20251a526..d184db3317 100644
--- a/leim/quail/lrt.el
+++ b/leim/quail/lrt.el
@@ -1,9 +1,8 @@
;;; lrt.el --- Quail package for inputting Lao characters by LRT method -*-coding: iso-2022-7bit;-*-
-;; Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -78,5 +77,4 @@
lao-transcription-tone-alist)
(t-state lao-transcription-tone-alist))))
-;; arch-tag: f65e4038-e187-4906-997b-d2de7ed813d2
;;; lrt.el ends here
diff --git a/leim/quail/py-punct.el b/leim/quail/py-punct.el
index 63d919db0f..8691912801 100644
--- a/leim/quail/py-punct.el
+++ b/leim/quail/py-punct.el
@@ -1,9 +1,8 @@
;;; py-punct.el --- Quail packages for Chinese (pinyin + extra symbols) -*-coding: iso-2022-7bit;-*-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -75,5 +74,4 @@ For instance, typing `v' and `%' insert `$A#%(B'.
(quail-defrule "v" (nth 2 (assoc "chinese-punct" quail-package-alist)))
-;; arch-tag: 941fd2ac-2d26-4b0e-8458-b5e485c5aa7d
;;; py-punct.el ends here
diff --git a/leim/quail/pypunct-b5.el b/leim/quail/pypunct-b5.el
index acb32b5d51..cc1f4f535e 100644
--- a/leim/quail/pypunct-b5.el
+++ b/leim/quail/pypunct-b5.el
@@ -1,7 +1,7 @@
;;; pypunct-b5.el --- Quail packages for Chinese (pinyin + extra symbols) -*-coding: iso-2022-7bit;-*-
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -53,5 +53,4 @@ For instance, typing `v' and `%' insert `$(0"h(B'.
(quail-defrule "v" (nth 2 (assoc "chinese-punct-b5" quail-package-alist)))
-;; arch-tag: fe8176d3-b467-47d5-9ed9-75b6e27cf29b
;;; pypunct-b5.el ends here
diff --git a/leim/quail/rfc1345.el b/leim/quail/rfc1345.el
index d8512a3910..a74dd05f7e 100644
--- a/leim/quail/rfc1345.el
+++ b/leim/quail/rfc1345.el
@@ -1,7 +1,6 @@
;;; rfc1345.el --- Quail method for RFC 1345 mnemonics -*- coding: utf-8 -*-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Keywords: i18n
@@ -2062,5 +2061,4 @@ E.g. &a' -> á"
(provide 'rfc1345)
-;; arch-tag: a951cfd9-1d19-44a7-aa98-04515fc4e502
;;; rfc1345.el ends here
diff --git a/leim/quail/sgml-input.el b/leim/quail/sgml-input.el
index 92c81d1dd8..3b56987940 100644
--- a/leim/quail/sgml-input.el
+++ b/leim/quail/sgml-input.el
@@ -1,7 +1,6 @@
;;; sgml-input.el --- Quail method for Unicode entered as SGML entities -*- coding: utf-8 -*-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Keywords: i18n
@@ -1059,5 +1058,4 @@ E.g.: &aacute; -> á"
("&zwnj;" ?\‌) ;; ZERO WIDTH NON-JOINER
)
-;; arch-tag: ad2a65ea-f903-423b-b3bd-08d0912ae41f
;;; sgml-input.el ends here
diff --git a/leim/quail/sisheng.el b/leim/quail/sisheng.el
index 7928fa3ff0..40f36fa032 100644
--- a/leim/quail/sisheng.el
+++ b/leim/quail/sisheng.el
@@ -1,6 +1,6 @@
;;; sisheng.el --- sisheng input method for Chinese pinyin transliteration
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Werner LEMBERG <[email protected]>
@@ -290,5 +290,4 @@ Example: nve5 -> nüe
;; coding: utf-8
;; End:
-;; arch-tag: 1fa6ba5f-6747-44bc-bf12-30628ad3e8ad
;;; sisheng.el ends here
diff --git a/leim/quail/slovak.el b/leim/quail/slovak.el
index c6c583781b..cfc35b07ca 100644
--- a/leim/quail/slovak.el
+++ b/leim/quail/slovak.el
@@ -1,7 +1,6 @@
;;; slovak.el --- Quail package for inputting Slovak -*-coding: iso-2022-7bit;-*-
-;; Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
;; Authors: Tibor ,B)(Bimko <[email protected]>
;; Milan Zamazal <[email protected]>
@@ -477,5 +476,4 @@ All other keys are the same as on standard US keyboard."
([kp-0] ?0)
([kp-add] ?+))
-;; arch-tag: 8aedb992-e191-4eec-ad0d-71a352e02a3d
;;; slovak.el ends here
diff --git a/leim/quail/symbol-ksc.el b/leim/quail/symbol-ksc.el
index 9d798a5c1e..15e78eb986 100644
--- a/leim/quail/symbol-ksc.el
+++ b/leim/quail/symbol-ksc.el
@@ -1,9 +1,8 @@
;;; symbol-ksc.el --- Quail-package for Korean Symbol (KSC5601) -*-coding: iso-2022-7bit;-*-
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -200,5 +199,4 @@
("Russ" "$(C,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A(B")
("russ" "$(C,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q(B"))
-;; arch-tag: a77d89b9-9847-41d2-8e3a-7cce841ebb3b
;;; symbol-ksc.el ends here
diff --git a/leim/quail/thai.el b/leim/quail/thai.el
index 30630f393d..6514b6ab2a 100644
--- a/leim/quail/thai.el
+++ b/leim/quail/thai.el
@@ -1,7 +1,7 @@
;;; thai.el --- Quail package for inputting Thai characters -*-coding: iso-2022-7bit;-*-
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -109,5 +109,4 @@ The difference from the ordinal Thai keyboard:
",T;(B" ",Th(B" ",T:(B" ",TO(B" ",Tm(B" ",TF(B" ",T%(B" 0 ; x .. DEL
])
-;; arch-tag: fed6c468-0616-44b0-88bf-47347bf64825
;;; thai.el ends here
diff --git a/leim/quail/tibetan.el b/leim/quail/tibetan.el
index 92e570c155..e1a95d193c 100644
--- a/leim/quail/tibetan.el
+++ b/leim/quail/tibetan.el
@@ -1,9 +1,8 @@
;;; tibetan.el --- Quail package for inputting Tibetan characters -*-coding: iso-2022-7bit;-*-
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -453,5 +452,4 @@
(tibetan-vowel-tibkey-alist . m-state))
(m-state tibetan-modifier-tibkey-alist))))
-;; arch-tag: 828fdb1a-733f-4c7b-b882-a19d2449ac99
;;; tibetan.el ends here
diff --git a/leim/quail/uni-input.el b/leim/quail/uni-input.el
index 4577150a3d..d532b16ab0 100644
--- a/leim/quail/uni-input.el
+++ b/leim/quail/uni-input.el
@@ -1,8 +1,7 @@
;;; uni-input.el --- Hex Unicode input method
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -127,5 +126,4 @@ Input as Unicode: U<hex> or u<hex>, where <hex> is a four-digit hex number.")))
(provide 'uni-input)
-;; arch-tag: e0d91c7c-19a1-43d3-8f2b-28c0e031efaa
;;; uni-input.el ends here
diff --git a/leim/quail/viqr.el b/leim/quail/viqr.el
index 608c135521..a182c6c94c 100644
--- a/leim/quail/viqr.el
+++ b/leim/quail/viqr.el
@@ -1,7 +1,7 @@
;;; viqr.el --- Quail packages for inputting Vietnamese with VIQR system -*-coding: iso-2022-7bit;-*-
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -68,5 +68,4 @@
(viet-quail-define-rules)
-;; arch-tag: d2c29221-5a2e-46b2-898b-0e56bc4eb858
;;; viqr.el ends here
diff --git a/leim/quail/vntelex.el b/leim/quail/vntelex.el
index 4a94a4be59..40380ee27e 100644
--- a/leim/quail/vntelex.el
+++ b/leim/quail/vntelex.el
@@ -1,7 +1,6 @@
;;; vntelex.el --- Quail package for Vietnamese by Telex method
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Werner Lemberg <[email protected]>
;; Keywords: multilingual, input method, Vietnamese
@@ -426,5 +425,4 @@ and postfix: Eee -> Ee, ajj -> aj, etc.
;; coding: iso-2022-7bit
;; End:
-;; arch-tag: 60db6880-0c9f-4456-b9fe-628de053a5ab
;;; vntelex.el ends here
diff --git a/leim/quail/welsh.el b/leim/quail/welsh.el
index 6a53e0895a..3085bbc358 100644
--- a/leim/quail/welsh.el
+++ b/leim/quail/welsh.el
@@ -1,7 +1,6 @@
;;; welsh.el --- Quail package for inputting Welsh characters -*-coding: iso-2022-7bit;-*-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Keywords: i18n
@@ -199,5 +198,4 @@
;; ("w\"" ?,A>(B))
-;; arch-tag: aeef0eae-0a50-4606-9120-020d59d5e208
;;; welsh.el ends here
diff --git a/lib-src/.gitignore b/lib-src/.gitignore
index c111257cc9..e1693b13c5 100644
--- a/lib-src/.gitignore
+++ b/lib-src/.gitignore
@@ -6,5 +6,3 @@ echolisp.tmp
oo/
oo-spd/
-
-# arch-tag: bcd85c02-f779-4fe6-bd45-97a21150aadc
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 160a19099a..3f7a17e2db 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,95 @@
+2011-01-31 Paul Eggert <[email protected]>
+
+ src/emacs.c now gets version number from configure.in
+ * ebrowse.c: Adjust comment to say that.
+
+2011-01-30 Jim Meyering <[email protected]>
+
+ make-docfile: don't corrupt heap for an invalid .elc file
+ "printf '#@1a' > in.elc; ./make-docfile in.elc" would store 0
+ one byte before just-malloc'd saved_string buffer.
+ * make-docfile.c (scan_lisp_file): Diagnose an invalid dynamic
+ doc string length. Also fix an always-false while-loop test.
+
+2011-01-29 Eli Zaretskii <[email protected]>
+
+ * makefile.w32-in (LOCAL_FLAGS): Add -I../lib.
+ (GETOPTOBJS, GETOPTDEPS): Remove targets.
+ (MOVEMAILOBJS): Replace $(GETOPTOBJS) with ../lib/$(BLD)/libgnu.$(A).
+ ($(BLD)/movemail.exe): Depend on ../lib/getopt.h.
+ (ECLIENTOBJS, ETAGSOBJ, CTAGSOBJ, EBROWSEOBJ): Replace getopt.o
+ and getopt1.o with ../lib/$(BLD)/libgnu.$(A).
+ (clean): Don't remove getopt.h.
+ (getopt.h, $(BLD)/getopt.$(O), $(BLD)/getopt1.$(O)): Remove targets.
+ ($(BLD)/ctags.$(O), $(BLD)/etags.$(O)): Replace getopt.h with
+ $(EMACS_ROOT)/lib/getopt.h.
+
+2011-01-28 Chong Yidong <[email protected]>
+
+ * ntlib.c (setregid): New stub, renamed from setegid.
+
+ * ntlib.h: Update prototype.
+
+2011-01-25 Chong Yidong <[email protected]>
+
+ * movemail.c (main): Use setregid instead of setegid, which is
+ missing on older systems. Suggested by Peter O'Gorman (Bug#6811).
+
+2011-01-23 Paul Eggert <[email protected]>
+
+ Check return values of some library calls.
+ * hexl.c (main): Check fread result.
+ * make-docfile.c (main): Check chdir result.
+ (scan_c_file): Check fscanf result.
+ * movemail.c (main): Check ftruncate result.
+
+2011-01-17 Paul Eggert <[email protected]>
+
+ Include <unistd.h> unilaterally.
+ * emacsclient.c, etags.c, fakemail.c, make-docfile.c, movemail.c:
+ * pop.c, test-distrib.c, update-game-score.c:
+ Include <unistd.h> without worrying about HAVE_UNISTD_H, since
+ unistd.h is always present now, possibly supplied by gnulib.
+
+ Include <getopt.h> not "getopt.h".
+ * ebrowse.c, emacsclient.c: Include <getopt.h>, not "getopt.h".
+ Since getopt.h is no longer in this directory, there's no point
+ using the form with double-quotes.
+
+ Remove unused files.
+ * getopt.c, getopt1.c, getopt_.h, getopt_int.h: Remove.
+ These files are now in ../lib, copied from gnulib.
+
+ Use gnulib's getopt-gnu module.
+ * Makefile.in (mostlyclean): Do not clean getopt.h or getopt.h-t,
+ as these are now done by gnulib.
+ (GETOPT_H, getopt.h, GETOPTOBJS, GETOPTDEPS, getopt.o, getopt1.o):
+ Remove; now done by gnulib. All uses removed.
+
+ Automate syncing from gnulib.
+ * Makefile.in (EXE_FILES): New macro.
+ (BASE_CFLAGS): Add -I../lib and -I${srcdir}/../lib,
+ for gnulib's .h files.
+ (LOADLIBES): Add ../lib/libgnu.a.
+ ($(EXE_FILES)): Depend on ../lib/libgnu.a.
+ (../lib/libgnu.a): New rule.
+
+2011-01-08 Paul Eggert <[email protected]>
+
+ * Makefile.in (EXECUTABLES): Remove; macro unused since 1993.
+
+2011-01-08 Glenn Morris <[email protected]>
+
+ * Makefile.in (EMACSOPT): Add --no-site-lisp.
+
+ * Makefile.in (EMACSOPT): Remove --multibyte, it does nothing any more.
+
+2011-01-02 Glenn Morris <[email protected]>
+
+ * ebrowse.c (version) <emacs_copyright>:
+ * etags.c (print_version) <emacs_copyright>:
+ * rcs2log (Copyright): Set short copyright year to 2011.
+
2010-11-27 Joe Matarazzo <[email protected]> (tiny change)
* ebrowse.c (yylex): If end of input buffer encountered while
@@ -7417,12 +7509,9 @@
;; Local Variables:
;; coding: utf-8
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
- 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1988-1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -7438,5 +7527,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: 2d979296-954c-448e-95c1-b46d134513dc
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in
index b9eea846dc..9697561310 100644
--- a/lib-src/Makefile.in
+++ b/lib-src/Makefile.in
@@ -1,6 +1,5 @@
# Makefile for lib-src subdirectory in GNU Emacs.
-# Copyright (C) 1985, 1987, 1988, 1993, 1994, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009, 2010
+# Copyright (C) 1985, 1987-1988, 1993-1994, 2001-2011
# Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -25,7 +24,7 @@ SHELL = /bin/sh
# Following ../lisp/Makefile.in.
EMACS = ../src/emacs
-EMACSOPT = -batch --no-site-file --multibyte
+EMACSOPT = -batch --no-site-file --no-site-lisp
# ==================== Things `configure' will edit ====================
@@ -128,7 +127,8 @@ DONT_INSTALL= test-distrib${EXEEXT} make-docfile${EXEEXT}
SCRIPTS= rcs2log vcdiff
STAMP_SCRIPTS= stamp-rcs2log stamp-vcdiff
-EXECUTABLES= ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS}
+# All files that are created by the linker, i.e., whose names end in ${EXEEXT}.
+EXE_FILES = ${INSTALLABLES} ${UTILITIES} ${DONT_INSTALL}
# Specify additional -D flags for movemail. Options:
# -DMAIL_USE_FLOCK or -DMAIL_USE_LOCKF (use flock or lockf for file locking).
@@ -168,13 +168,15 @@ LIBS_SYSTEM = @LIBS_SYSTEM@
# defined before they know they can take advantage of the information
# in ../src/config.h.
BASE_CFLAGS = $(C_SWITCH_SYSTEM) $(C_SWITCH_MACHINE) ${C_WARNINGS_SWITCH} \
- -DHAVE_CONFIG_H -I. -I../src -I${srcdir} -I${srcdir}/../src
+ -DHAVE_CONFIG_H -I. -I../src -I../lib \
+ -I${srcdir} -I${srcdir}/../src -I${srcdir}/../lib
ALL_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${LDFLAGS} ${CPPFLAGS} ${CFLAGS}
LINK_CFLAGS = ${BASE_CFLAGS} ${LDFLAGS} ${CFLAGS}
CPP_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${CPPFLAGS} ${CFLAGS}
-LOADLIBES=$(LIBS_SYSTEM)
+LOADLIBES = ../lib/libgnu.a $(LIBS_SYSTEM)
+$(EXE_FILES): ../lib/libgnu.a
## This is the default compilation command.
## But we should never rely on it, because some make version failed to
@@ -276,7 +278,7 @@ uninstall:
fi
mostlyclean:
- -rm -f core *.o getopt.h getopt.h-t
+ -rm -f core *.o
clean: mostlyclean
-rm -f ${INSTALLABLES} ${UTILITIES} ${DONT_INSTALL}
@@ -308,19 +310,8 @@ test-distrib${EXEEXT}: ${srcdir}/test-distrib.c
$(CC) ${ALL_CFLAGS} -o test-distrib ${srcdir}/test-distrib.c
./test-distrib ${srcdir}/testfile
-## We need the following in order to create a <getopt.h> when the system
-## does not have one that works with the given compiler.
-GETOPT_H = @GETOPT_H@
-getopt.h: getopt_.h
- cp $(srcdir)/getopt_.h $@-t
- mv $@-t $@
-
-GETOPTOBJS = @GETOPTOBJS@
-GETOPTDEPS = $(GETOPTOBJS) $(GETOPT_H)
-getopt.o: ${srcdir}/getopt.c $(GETOPT_H) ${srcdir}/gettext.h
- ${CC} -c ${CPP_CFLAGS} ${srcdir}/getopt.c
-getopt1.o: ${srcdir}/getopt1.c $(GETOPT_H)
- ${CC} -c ${CPP_CFLAGS} ${srcdir}/getopt1.c
+../lib/libgnu.a: ../src/config.h
+ cd ../lib && $(MAKE) libgnu.a
REGEXPOBJ = regex.o
REGEXPDEPS = $(REGEXPOBJ) $(srcdir)/../src/regex.h
@@ -329,20 +320,20 @@ regex.o: $(srcdir)/../src/regex.c $(srcdir)/../src/regex.h ../src/config.h
${CC} -c ${CPP_CFLAGS} -DCONFIG_BROKETS -DINHIBIT_STRING_HEADER \
${srcdir}/../src/regex.c
-etags${EXEEXT}: ${srcdir}/etags.c $(GETOPTDEPS) $(REGEXPDEPS) ../src/config.h
+etags${EXEEXT}: ${srcdir}/etags.c $(REGEXPDEPS) ../src/config.h
$(CC) ${ALL_CFLAGS} -DEMACS_NAME="\"GNU Emacs\"" \
- -DVERSION="\"${version}\"" ${srcdir}/etags.c $(GETOPTOBJS) \
+ -DVERSION="\"${version}\"" ${srcdir}/etags.c \
$(REGEXPOBJ) $(LOADLIBES) -o etags
-ebrowse${EXEEXT}: ${srcdir}/ebrowse.c $(GETOPTDEPS) ../src/config.h
+ebrowse${EXEEXT}: ${srcdir}/ebrowse.c ../src/config.h
$(CC) ${ALL_CFLAGS} -DVERSION="\"${version}\"" \
- ${srcdir}/ebrowse.c $(GETOPTOBJS) $(LOADLIBES) -o ebrowse
+ ${srcdir}/ebrowse.c $(LOADLIBES) -o ebrowse
## We depend on etags to assure that parallel makes do not write two
## etags.o files on top of each other.
ctags${EXEEXT}: etags${EXEEXT}
$(CC) ${ALL_CFLAGS} -DCTAGS -DEMACS_NAME="\"GNU Emacs\"" \
- -DVERSION="\"${version}\"" ${srcdir}/etags.c $(GETOPTOBJS) \
+ -DVERSION="\"${version}\"" ${srcdir}/etags.c \
$(REGEXPOBJ) $(LOADLIBES) -o ctags
profile${EXEEXT}: ${srcdir}/profile.c ../src/config.h
@@ -352,11 +343,11 @@ make-docfile${EXEEXT}: ${srcdir}/make-docfile.c ../src/config.h
$(CC) ${ALL_CFLAGS} ${srcdir}/make-docfile.c $(LOADLIBES) \
-o make-docfile
-movemail${EXEEXT}: movemail.o pop.o $(GETOPTDEPS)
+movemail${EXEEXT}: movemail.o pop.o
$(CC) ${LINK_CFLAGS} ${MOVE_FLAGS} movemail.o pop.o \
- $(GETOPTOBJS) $(LOADLIBES) $(LIBS_MOVE) -o movemail
+ $(LOADLIBES) $(LIBS_MOVE) -o movemail
-movemail.o: ${srcdir}/movemail.c ../src/config.h $(GETOPT_H)
+movemail.o: ${srcdir}/movemail.c ../src/config.h
$(CC) -c ${CPP_CFLAGS} ${MOVE_FLAGS} ${srcdir}/movemail.c
pop.o: ${srcdir}/pop.c ../src/config.h
@@ -365,19 +356,19 @@ pop.o: ${srcdir}/pop.c ../src/config.h
fakemail${EXEEXT}: ${srcdir}/fakemail.c ../src/config.h
$(CC) ${ALL_CFLAGS} ${srcdir}/fakemail.c $(LOADLIBES) -o fakemail
-emacsclient${EXEEXT}: ${srcdir}/emacsclient.c ../src/config.h $(GETOPTDEPS)
- $(CC) ${ALL_CFLAGS} ${srcdir}/emacsclient.c $(GETOPTOBJS) \
+emacsclient${EXEEXT}: ${srcdir}/emacsclient.c ../src/config.h
+ $(CC) ${ALL_CFLAGS} ${srcdir}/emacsclient.c \
-DVERSION="\"${version}\"" \
$(LOADLIBES) -o emacsclient
hexl${EXEEXT}: ${srcdir}/hexl.c ../src/config.h
$(CC) ${ALL_CFLAGS} ${srcdir}/hexl.c $(LOADLIBES) -o hexl
-update-game-score${EXEEXT}: update-game-score.o $(GETOPTDEPS)
- $(CC) ${LINK_CFLAGS} update-game-score.o $(GETOPTOBJS) \
+update-game-score${EXEEXT}: update-game-score.o
+ $(CC) ${LINK_CFLAGS} update-game-score.o \
$(LOADLIBES) -o update-game-score
-update-game-score.o: ${srcdir}/update-game-score.c ../src/config.h $(GETOPT_H)
+update-game-score.o: ${srcdir}/update-game-score.c ../src/config.h
$(CC) -c ${CPP_CFLAGS} ${srcdir}/update-game-score.c \
-DHAVE_SHARED_GAME_DIR="\"$(gamedir)\""
diff --git a/lib-src/ebrowse.c b/lib-src/ebrowse.c
index 81067a9081..59a1dde763 100644
--- a/lib-src/ebrowse.c
+++ b/lib-src/ebrowse.c
@@ -1,8 +1,6 @@
/* ebrowse.c --- parsing files for the ebrowse C++ browser
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 1992-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -30,7 +28,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <string.h>
#include <ctype.h>
#include <assert.h>
-#include "getopt.h"
+#include <getopt.h>
/* The SunOS compiler doesn't have SEEK_END. */
#ifndef SEEK_END
@@ -3567,7 +3565,7 @@ usage (int error)
/* Display version and copyright info. The VERSION macro is set
- from the Makefile and contains the Emacs version. */
+ from config.h and contains the Emacs version. */
#ifndef VERSION
# define VERSION "21"
@@ -3577,7 +3575,7 @@ void
version (void)
{
/* Makes it easier to update automatically. */
- char emacs_copyright[] = "Copyright (C) 2010 Free Software Foundation, Inc.";
+ char emacs_copyright[] = "Copyright (C) 2011 Free Software Foundation, Inc.";
printf ("ebrowse %s\n", VERSION);
puts (emacs_copyright);
@@ -3814,7 +3812,7 @@ main (int argc, char **argv)
yyerror ("error getting size of file `%s'", out_filename);
exit (EXIT_FAILURE);
}
-
+
else if (rc == 0)
{
yyerror ("file `%s' is empty", out_filename);
@@ -3877,7 +3875,4 @@ main (int argc, char **argv)
return EXIT_SUCCESS;
}
-/* arch-tag: fc03b4bc-91a9-4c3d-b3b9-12a77fa86dd8
- (do not change this comment) */
-
/* ebrowse.c ends here */
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index 48ea3d22dc..27042ebaef 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -1,6 +1,5 @@
/* Client process that communicates with GNU Emacs acting as server.
- Copyright (C) 1986, 1987, 1994, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1986-1987, 1994, 1999-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -74,10 +73,8 @@ char *w32_getenv (char *);
#include <stdarg.h>
#include <ctype.h>
#include <stdio.h>
-#include "getopt.h"
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
+#include <getopt.h>
+#include <unistd.h>
#include <pwd.h>
#include <sys/stat.h>
@@ -1804,7 +1801,5 @@ strerror (errnum)
#endif /* ! HAVE_STRERROR */
-/* arch-tag: f39bb9c4-73eb-477e-896d-50832e2ca9a7
- (do not change this comment) */
/* emacsclient.c ends here */
diff --git a/lib-src/etags.c b/lib-src/etags.c
index abc8b06dd8..9471c0fe29 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -28,8 +28,7 @@ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-Copyright (C) 1984, 1987, 1988, 1989, 1993, 1994, 1995, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2011
Free Software Foundation, Inc.
This file is not considered part of GNU Emacs.
@@ -172,9 +171,8 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4";
# endif
#endif /* !WINDOWSNT */
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#else
+#include <unistd.h>
+#ifndef HAVE_UNISTD_H
# if defined (HAVE_GETCWD) && !defined (WINDOWSNT)
extern char *getcwd (char *buf, size_t size);
# endif
@@ -891,7 +889,7 @@ static void
print_version (void)
{
/* Makes it easier to update automatically. */
- char emacs_copyright[] = "Copyright (C) 2010 Free Software Foundation, Inc.";
+ char emacs_copyright[] = "Copyright (C) 2011 Free Software Foundation, Inc.";
printf ("%s (%s %s)\n", (CTAGS) ? "ctags" : "etags", EMACS_NAME, VERSION);
puts (emacs_copyright);
@@ -6725,7 +6723,4 @@ xrealloc (char *ptr, unsigned int size)
* End:
*/
-/* arch-tag: 8a9b748d-390c-4922-99db-2eeefa921051
- (do not change this comment) */
-
/* etags.c ends here */
diff --git a/lib-src/fakemail.c b/lib-src/fakemail.c
index 16baeb266a..4289e009e4 100644
--- a/lib-src/fakemail.c
+++ b/lib-src/fakemail.c
@@ -1,6 +1,5 @@
/* sendmail-like interface to /bin/mail for system V,
- Copyright (C) 1985, 1994, 1999, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1994, 1999, 2001-2011 Free Software Foundation, Inc.
Author: Bill Rozas <[email protected]>
(according to ack.texi)
@@ -62,9 +61,7 @@ main ()
#include <stdlib.h>
/* This is to declare cuserid. */
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
/* Type definitions */
@@ -738,7 +735,5 @@ main (int argc, char **argv)
#endif /* not MSDOS */
#endif /* not BSD 4.2 (or newer) */
-/* arch-tag: acb0afa6-315a-4c5b-b9e3-def5725c8783
- (do not change this comment) */
/* fakemail.c ends here */
diff --git a/lib-src/getopt.c b/lib-src/getopt.c
deleted file mode 100644
index 587c2e0f61..0000000000
--- a/lib-src/getopt.c
+++ /dev/null
@@ -1,1245 +0,0 @@
-/* Getopt for GNU.
- NOTE: getopt is now part of the C library, so if you don't know what
- "Keep this file name-space clean" means, talk to [email protected]
- before changing it!
- Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
- 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007 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, 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, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
-
-/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
- Ditto for AIX 3.2 and <stdlib.h>. */
-#ifndef _NO_PROTO
-# define _NO_PROTO
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdio.h>
-
-/* This needs to come after some library #include
- to get __GNU_LIBRARY__ defined. */
-#ifdef __GNU_LIBRARY__
-/* Don't include stdlib.h for non-GNU C libraries because some of them
- contain conflicting prototypes for getopt. */
-# include <stdlib.h>
-# include <unistd.h>
-#endif /* GNU C library. */
-
-#include <string.h>
-
-#ifdef VMS
-# include <unixlib.h>
-#endif
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "gettext.h"
-# define _(msgid) gettext (msgid)
-#endif
-
-#if defined _LIBC && defined USE_IN_LIBIO
-# include <wchar.h>
-#endif
-
-#ifndef attribute_hidden
-# define attribute_hidden
-#endif
-
-/* Unlike standard Unix `getopt', functions like `getopt_long'
- let the user intersperse the options with the other arguments.
-
- As `getopt_long' works, it permutes the elements of ARGV so that,
- when it is done, all the options precede everything else. Thus
- all application programs are extended to handle flexible argument order.
-
- Using `getopt' or setting the environment variable POSIXLY_CORRECT
- disables permutation.
- Then the application's behavior is completely standard.
-
- GNU application programs can use a third alternative mode in which
- they can distinguish the relative order of options and other arguments. */
-
-#include "getopt.h"
-#include "getopt_int.h"
-
-/* For communication from `getopt' to the caller.
- When `getopt' finds an option that takes an argument,
- the argument value is returned here.
- Also, when `ordering' is RETURN_IN_ORDER,
- each non-option ARGV-element is returned here. */
-
-char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
- This is used for communication to and from the caller
- and for communication between successive calls to `getopt'.
-
- On entry to `getopt', zero means this is the first call; initialize.
-
- When `getopt' returns -1, this is the index of the first of the
- non-option elements that the caller should itself scan.
-
- Otherwise, `optind' communicates from one call to the next
- how much of ARGV has been scanned so far. */
-
-/* 1003.2 says this must be 1 before any call. */
-int optind = 1;
-
-/* Callers store zero here to inhibit the error message
- for unrecognized options. */
-
-int opterr = 1;
-
-/* Set to an option character which was unrecognized.
- This must be initialized on some systems to avoid linking in the
- system's own getopt implementation. */
-
-int optopt = '?';
-
-/* Keep a global copy of all internal members of getopt_data. */
-
-static struct _getopt_data getopt_data;
-
-
-#ifndef __GNU_LIBRARY__
-
-/* Avoid depending on library functions or files
- whose names are inconsistent. */
-
-#ifndef getenv
-extern char *getenv ();
-#endif
-
-#endif /* not __GNU_LIBRARY__ */
-
-#ifdef _LIBC
-/* Stored original parameters.
- XXX This is no good solution. We should rather copy the args so
- that we can compare them later. But we must not use malloc(3). */
-extern int __libc_argc;
-extern char **__libc_argv;
-
-/* Bash 2.0 gives us an environment variable containing flags
- indicating ARGV elements that should not be considered arguments. */
-
-# ifdef USE_NONOPTION_FLAGS
-/* Defined in getopt_init.c */
-extern char *__getopt_nonoption_flags;
-# endif
-
-# ifdef USE_NONOPTION_FLAGS
-# define SWAP_FLAGS(ch1, ch2) \
- if (d->__nonoption_flags_len > 0) \
- { \
- char __tmp = __getopt_nonoption_flags[ch1]; \
- __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \
- __getopt_nonoption_flags[ch2] = __tmp; \
- }
-# else
-# define SWAP_FLAGS(ch1, ch2)
-# endif
-#else /* !_LIBC */
-# define SWAP_FLAGS(ch1, ch2)
-#endif /* _LIBC */
-
-/* Exchange two adjacent subsequences of ARGV.
- One subsequence is elements [first_nonopt,last_nonopt)
- which contains all the non-options that have been skipped so far.
- The other is elements [last_nonopt,optind), which contains all
- the options processed since those non-options were skipped.
-
- `first_nonopt' and `last_nonopt' are relocated so that they describe
- the new indices of the non-options in ARGV after they are moved. */
-
-static void
-exchange (char **argv, struct _getopt_data *d)
-{
- int bottom = d->__first_nonopt;
- int middle = d->__last_nonopt;
- int top = d->optind;
- char *tem;
-
- /* Exchange the shorter segment with the far end of the longer segment.
- That puts the shorter segment into the right place.
- It leaves the longer segment in the right place overall,
- but it consists of two parts that need to be swapped next. */
-
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
- /* First make sure the handling of the `__getopt_nonoption_flags'
- string can work normally. Our top argument must be in the range
- of the string. */
- if (d->__nonoption_flags_len > 0 && top >= d->__nonoption_flags_max_len)
- {
- /* We must extend the array. The user plays games with us and
- presents new arguments. */
- char *new_str = malloc (top + 1);
- if (new_str == NULL)
- d->__nonoption_flags_len = d->__nonoption_flags_max_len = 0;
- else
- {
- memset (__mempcpy (new_str, __getopt_nonoption_flags,
- d->__nonoption_flags_max_len),
- '\0', top + 1 - d->__nonoption_flags_max_len);
- d->__nonoption_flags_max_len = top + 1;
- __getopt_nonoption_flags = new_str;
- }
- }
-#endif
-
- while (top > middle && middle > bottom)
- {
- if (top - middle > middle - bottom)
- {
- /* Bottom segment is the short one. */
- int len = middle - bottom;
- register int i;
-
- /* Swap it with the top part of the top segment. */
- for (i = 0; i < len; i++)
- {
- tem = argv[bottom + i];
- argv[bottom + i] = argv[top - (middle - bottom) + i];
- argv[top - (middle - bottom) + i] = tem;
- SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
- }
- /* Exclude the moved bottom segment from further swapping. */
- top -= len;
- }
- else
- {
- /* Top segment is the short one. */
- int len = top - middle;
- register int i;
-
- /* Swap it with the bottom part of the bottom segment. */
- for (i = 0; i < len; i++)
- {
- tem = argv[bottom + i];
- argv[bottom + i] = argv[middle + i];
- argv[middle + i] = tem;
- SWAP_FLAGS (bottom + i, middle + i);
- }
- /* Exclude the moved top segment from further swapping. */
- bottom += len;
- }
- }
-
- /* Update records for the slots the non-options now occupy. */
-
- d->__first_nonopt += (d->optind - d->__last_nonopt);
- d->__last_nonopt = d->optind;
-}
-
-/* Initialize the internal data when the first call is made. */
-
-static const char *
-_getopt_initialize (int argc, char **argv, const char *optstring,
- int posixly_correct, struct _getopt_data *d)
-{
- /* Start processing options with ARGV-element 1 (since ARGV-element 0
- is the program name); the sequence of previously skipped
- non-option ARGV-elements is empty. */
-
- d->__first_nonopt = d->__last_nonopt = d->optind;
-
- d->__nextchar = NULL;
-
- d->__posixly_correct = posixly_correct || !!getenv ("POSIXLY_CORRECT");
-
- /* Determine how to handle the ordering of options and nonoptions. */
-
- if (optstring[0] == '-')
- {
- d->__ordering = RETURN_IN_ORDER;
- ++optstring;
- }
- else if (optstring[0] == '+')
- {
- d->__ordering = REQUIRE_ORDER;
- ++optstring;
- }
- else if (d->__posixly_correct)
- d->__ordering = REQUIRE_ORDER;
- else
- d->__ordering = PERMUTE;
-
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
- if (!d->__posixly_correct
- && argc == __libc_argc && argv == __libc_argv)
- {
- if (d->__nonoption_flags_max_len == 0)
- {
- if (__getopt_nonoption_flags == NULL
- || __getopt_nonoption_flags[0] == '\0')
- d->__nonoption_flags_max_len = -1;
- else
- {
- const char *orig_str = __getopt_nonoption_flags;
- int len = d->__nonoption_flags_max_len = strlen (orig_str);
- if (d->__nonoption_flags_max_len < argc)
- d->__nonoption_flags_max_len = argc;
- __getopt_nonoption_flags =
- (char *) malloc (d->__nonoption_flags_max_len);
- if (__getopt_nonoption_flags == NULL)
- d->__nonoption_flags_max_len = -1;
- else
- memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
- '\0', d->__nonoption_flags_max_len - len);
- }
- }
- d->__nonoption_flags_len = d->__nonoption_flags_max_len;
- }
- else
- d->__nonoption_flags_len = 0;
-#endif
-
- return optstring;
-}
-
-/* Scan elements of ARGV (whose length is ARGC) for option characters
- given in OPTSTRING.
-
- If an element of ARGV starts with '-', and is not exactly "-" or "--",
- then it is an option element. The characters of this element
- (aside from the initial '-') are option characters. If `getopt'
- is called repeatedly, it returns successively each of the option characters
- from each of the option elements.
-
- If `getopt' finds another option character, it returns that character,
- updating `optind' and `nextchar' so that the next call to `getopt' can
- resume the scan with the following option character or ARGV-element.
-
- If there are no more option characters, `getopt' returns -1.
- Then `optind' is the index in ARGV of the first ARGV-element
- that is not an option. (The ARGV-elements have been permuted
- so that those that are not options now come last.)
-
- OPTSTRING is a string containing the legitimate option characters.
- If an option character is seen that is not listed in OPTSTRING,
- return '?' after printing an error message. If you set `opterr' to
- zero, the error message is suppressed but we still return '?'.
-
- If a char in OPTSTRING is followed by a colon, that means it wants an arg,
- so the following text in the same ARGV-element, or the text of the following
- ARGV-element, is returned in `optarg'. Two colons mean an option that
- wants an optional arg; if there is text in the current ARGV-element,
- it is returned in `optarg', otherwise `optarg' is set to zero.
-
- If OPTSTRING starts with `-' or `+', it requests different methods of
- handling the non-option ARGV-elements.
- See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
-
- Long-named options begin with `--' instead of `-'.
- Their names may be abbreviated as long as the abbreviation is unique
- or is an exact match for some defined option. If they have an
- argument, it follows the option name in the same ARGV-element, separated
- from the option name by a `=', or else the in next ARGV-element.
- When `getopt' finds a long-named option, it returns 0 if that option's
- `flag' field is nonzero, the value of the option's `val' field
- if the `flag' field is zero.
-
- LONGOPTS is a vector of `struct option' terminated by an
- element containing a name which is zero.
-
- LONGIND returns the index in LONGOPT of the long-named option found.
- It is only valid when a long-named option has been found by the most
- recent call.
-
- If LONG_ONLY is nonzero, '-' as well as '--' can introduce
- long-named options.
-
- If POSIXLY_CORRECT is nonzero, behave as if the POSIXLY_CORRECT
- environment variable were set. */
-
-int
-_getopt_internal_r (int argc, char **argv, const char *optstring,
- const struct option *longopts, int *longind,
- int long_only, int posixly_correct, struct _getopt_data *d)
-{
- int print_errors = d->opterr;
- if (optstring[0] == ':')
- print_errors = 0;
-
- if (argc < 1)
- return -1;
-
- d->optarg = NULL;
-
- if (d->optind == 0 || !d->__initialized)
- {
- if (d->optind == 0)
- d->optind = 1; /* Don't scan ARGV[0], the program name. */
- optstring = _getopt_initialize (argc, argv, optstring,
- posixly_correct, d);
- d->__initialized = 1;
- }
-
- /* Test whether ARGV[optind] points to a non-option argument.
- Either it does not have option syntax, or there is an environment flag
- from the shell indicating it is not an option. The later information
- is only used when the used in the GNU libc. */
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
-# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0' \
- || (d->optind < d->__nonoption_flags_len \
- && __getopt_nonoption_flags[d->optind] == '1'))
-#else
-# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0')
-#endif
-
- if (d->__nextchar == NULL || *d->__nextchar == '\0')
- {
- /* Advance to the next ARGV-element. */
-
- /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
- moved back by the user (who may also have changed the arguments). */
- if (d->__last_nonopt > d->optind)
- d->__last_nonopt = d->optind;
- if (d->__first_nonopt > d->optind)
- d->__first_nonopt = d->optind;
-
- if (d->__ordering == PERMUTE)
- {
- /* If we have just processed some options following some non-options,
- exchange them so that the options come first. */
-
- if (d->__first_nonopt != d->__last_nonopt
- && d->__last_nonopt != d->optind)
- exchange ((char **) argv, d);
- else if (d->__last_nonopt != d->optind)
- d->__first_nonopt = d->optind;
-
- /* Skip any additional non-options
- and extend the range of non-options previously skipped. */
-
- while (d->optind < argc && NONOPTION_P)
- d->optind++;
- d->__last_nonopt = d->optind;
- }
-
- /* The special ARGV-element `--' means premature end of options.
- Skip it like a null option,
- then exchange with previous non-options as if it were an option,
- then skip everything else like a non-option. */
-
- if (d->optind != argc && !strcmp (argv[d->optind], "--"))
- {
- d->optind++;
-
- if (d->__first_nonopt != d->__last_nonopt
- && d->__last_nonopt != d->optind)
- exchange ((char **) argv, d);
- else if (d->__first_nonopt == d->__last_nonopt)
- d->__first_nonopt = d->optind;
- d->__last_nonopt = argc;
-
- d->optind = argc;
- }
-
- /* If we have done all the ARGV-elements, stop the scan
- and back over any non-options that we skipped and permuted. */
-
- if (d->optind == argc)
- {
- /* Set the next-arg-index to point at the non-options
- that we previously skipped, so the caller will digest them. */
- if (d->__first_nonopt != d->__last_nonopt)
- d->optind = d->__first_nonopt;
- return -1;
- }
-
- /* If we have come to a non-option and did not permute it,
- either stop the scan or describe it to the caller and pass it by. */
-
- if (NONOPTION_P)
- {
- if (d->__ordering == REQUIRE_ORDER)
- return -1;
- d->optarg = argv[d->optind++];
- return 1;
- }
-
- /* We have found another option-ARGV-element.
- Skip the initial punctuation. */
-
- d->__nextchar = (argv[d->optind] + 1
- + (longopts != NULL && argv[d->optind][1] == '-'));
- }
-
- /* Decode the current option-ARGV-element. */
-
- /* Check whether the ARGV-element is a long option.
-
- If long_only and the ARGV-element has the form "-f", where f is
- a valid short option, don't consider it an abbreviated form of
- a long option that starts with f. Otherwise there would be no
- way to give the -f short option.
-
- On the other hand, if there's a long option "fubar" and
- the ARGV-element is "-fu", do consider that an abbreviation of
- the long option, just like "--fu", and not "-f" with arg "u".
-
- This distinction seems to be the most useful approach. */
-
- if (longopts != NULL
- && (argv[d->optind][1] == '-'
- || (long_only && (argv[d->optind][2]
- || !strchr (optstring, argv[d->optind][1])))))
- {
- char *nameend;
- const struct option *p;
- const struct option *pfound = NULL;
- int exact = 0;
- int ambig = 0;
- int indfound = -1;
- int option_index;
-
- for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++)
- /* Do nothing. */ ;
-
- /* Test all long options for either exact match
- or abbreviated matches. */
- for (p = longopts, option_index = 0; p->name; p++, option_index++)
- if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
- {
- if ((unsigned int) (nameend - d->__nextchar)
- == (unsigned int) strlen (p->name))
- {
- /* Exact match found. */
- pfound = p;
- indfound = option_index;
- exact = 1;
- break;
- }
- else if (pfound == NULL)
- {
- /* First nonexact match found. */
- pfound = p;
- indfound = option_index;
- }
- else if (long_only
- || pfound->has_arg != p->has_arg
- || pfound->flag != p->flag
- || pfound->val != p->val)
- /* Second or later nonexact match found. */
- ambig = 1;
- }
-
- if (ambig && !exact)
- {
- if (print_errors)
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
-
- if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
- argv[0], argv[d->optind]) >= 0)
- {
- _IO_flockfile (stderr);
-
- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
- ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
- _IO_funlockfile (stderr);
-
- free (buf);
- }
-#else
- fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
- argv[0], argv[d->optind]);
-#endif
- }
- d->__nextchar += strlen (d->__nextchar);
- d->optind++;
- d->optopt = 0;
- return '?';
- }
-
- if (pfound != NULL)
- {
- option_index = indfound;
- d->optind++;
- if (*nameend)
- {
- /* Don't test has_arg with >, because some C compilers don't
- allow it to be used on enums. */
- if (pfound->has_arg)
- d->optarg = nameend + 1;
- else
- {
- if (print_errors)
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
- int n;
-#endif
-
- if (argv[d->optind - 1][1] == '-')
- {
- /* --option */
-#if defined _LIBC && defined USE_IN_LIBIO
- n = __asprintf (&buf, _("\
-%s: option `--%s' doesn't allow an argument\n"),
- argv[0], pfound->name);
-#else
- fprintf (stderr, _("\
-%s: option `--%s' doesn't allow an argument\n"),
- argv[0], pfound->name);
-#endif
- }
- else
- {
- /* +option or -option */
-#if defined _LIBC && defined USE_IN_LIBIO
- n = __asprintf (&buf, _("\
-%s: option `%c%s' doesn't allow an argument\n"),
- argv[0], argv[d->optind - 1][0],
- pfound->name);
-#else
- fprintf (stderr, _("\
-%s: option `%c%s' doesn't allow an argument\n"),
- argv[0], argv[d->optind - 1][0],
- pfound->name);
-#endif
- }
-
-#if defined _LIBC && defined USE_IN_LIBIO
- if (n >= 0)
- {
- _IO_flockfile (stderr);
-
- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
- ((_IO_FILE *) stderr)->_flags2
- |= _IO_FLAGS2_NOTCANCEL;
-
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
- _IO_funlockfile (stderr);
-
- free (buf);
- }
-#endif
- }
-
- d->__nextchar += strlen (d->__nextchar);
-
- d->optopt = pfound->val;
- return '?';
- }
- }
- else if (pfound->has_arg == 1)
- {
- if (d->optind < argc)
- d->optarg = argv[d->optind++];
- else
- {
- if (print_errors)
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
-
- if (__asprintf (&buf, _("\
-%s: option `%s' requires an argument\n"),
- argv[0], argv[d->optind - 1]) >= 0)
- {
- _IO_flockfile (stderr);
-
- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
- ((_IO_FILE *) stderr)->_flags2
- |= _IO_FLAGS2_NOTCANCEL;
-
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
- _IO_funlockfile (stderr);
-
- free (buf);
- }
-#else
- fprintf (stderr,
- _("%s: option `%s' requires an argument\n"),
- argv[0], argv[d->optind - 1]);
-#endif
- }
- d->__nextchar += strlen (d->__nextchar);
- d->optopt = pfound->val;
- return optstring[0] == ':' ? ':' : '?';
- }
- }
- d->__nextchar += strlen (d->__nextchar);
- if (longind != NULL)
- *longind = option_index;
- if (pfound->flag)
- {
- *(pfound->flag) = pfound->val;
- return 0;
- }
- return pfound->val;
- }
-
- /* Can't find it as a long option. If this is not getopt_long_only,
- or the option starts with '--' or is not a valid short
- option, then it's an error.
- Otherwise interpret it as a short option. */
- if (!long_only || argv[d->optind][1] == '-'
- || strchr (optstring, *d->__nextchar) == NULL)
- {
- if (print_errors)
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
- int n;
-#endif
-
- if (argv[d->optind][1] == '-')
- {
- /* --option */
-#if defined _LIBC && defined USE_IN_LIBIO
- n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
- argv[0], d->__nextchar);
-#else
- fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
- argv[0], d->__nextchar);
-#endif
- }
- else
- {
- /* +option or -option */
-#if defined _LIBC && defined USE_IN_LIBIO
- n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
- argv[0], argv[d->optind][0], d->__nextchar);
-#else
- fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
- argv[0], argv[d->optind][0], d->__nextchar);
-#endif
- }
-
-#if defined _LIBC && defined USE_IN_LIBIO
- if (n >= 0)
- {
- _IO_flockfile (stderr);
-
- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
- ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
- _IO_funlockfile (stderr);
-
- free (buf);
- }
-#endif
- }
- d->__nextchar = (char *) "";
- d->optind++;
- d->optopt = 0;
- return '?';
- }
- }
-
- /* Look at and handle the next short option-character. */
-
- {
- char c = *d->__nextchar++;
- char *temp = strchr (optstring, c);
-
- /* Increment `optind' when we start to process its last character. */
- if (*d->__nextchar == '\0')
- ++d->optind;
-
- if (temp == NULL || c == ':')
- {
- if (print_errors)
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
- int n;
-#endif
-
- if (d->__posixly_correct)
- {
- /* 1003.2 specifies the format of this message. */
-#if defined _LIBC && defined USE_IN_LIBIO
- n = __asprintf (&buf, _("%s: illegal option -- %c\n"),
- argv[0], c);
-#else
- fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
-#endif
- }
- else
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- n = __asprintf (&buf, _("%s: invalid option -- %c\n"),
- argv[0], c);
-#else
- fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
-#endif
- }
-
-#if defined _LIBC && defined USE_IN_LIBIO
- if (n >= 0)
- {
- _IO_flockfile (stderr);
-
- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
- ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
- _IO_funlockfile (stderr);
-
- free (buf);
- }
-#endif
- }
- d->optopt = c;
- return '?';
- }
- /* Convenience. Treat POSIX -W foo same as long option --foo */
- if (temp[0] == 'W' && temp[1] == ';')
- {
- char *nameend;
- const struct option *p;
- const struct option *pfound = NULL;
- int exact = 0;
- int ambig = 0;
- int indfound = 0;
- int option_index;
-
- /* This is an option that requires an argument. */
- if (*d->__nextchar != '\0')
- {
- d->optarg = d->__nextchar;
- /* If we end this ARGV-element by taking the rest as an arg,
- we must advance to the next element now. */
- d->optind++;
- }
- else if (d->optind == argc)
- {
- if (print_errors)
- {
- /* 1003.2 specifies the format of this message. */
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
-
- if (__asprintf (&buf,
- _("%s: option requires an argument -- %c\n"),
- argv[0], c) >= 0)
- {
- _IO_flockfile (stderr);
-
- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
- ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
- _IO_funlockfile (stderr);
-
- free (buf);
- }
-#else
- fprintf (stderr, _("%s: option requires an argument -- %c\n"),
- argv[0], c);
-#endif
- }
- d->optopt = c;
- if (optstring[0] == ':')
- c = ':';
- else
- c = '?';
- return c;
- }
- else
- /* We already incremented `d->optind' once;
- increment it again when taking next ARGV-elt as argument. */
- d->optarg = argv[d->optind++];
-
- /* optarg is now the argument, see if it's in the
- table of longopts. */
-
- for (d->__nextchar = nameend = d->optarg; *nameend && *nameend != '=';
- nameend++)
- /* Do nothing. */ ;
-
- /* Test all long options for either exact match
- or abbreviated matches. */
- for (p = longopts, option_index = 0; p->name; p++, option_index++)
- if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
- {
- if ((unsigned int) (nameend - d->__nextchar) == strlen (p->name))
- {
- /* Exact match found. */
- pfound = p;
- indfound = option_index;
- exact = 1;
- break;
- }
- else if (pfound == NULL)
- {
- /* First nonexact match found. */
- pfound = p;
- indfound = option_index;
- }
- else
- /* Second or later nonexact match found. */
- ambig = 1;
- }
- if (ambig && !exact)
- {
- if (print_errors)
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
-
- if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
- argv[0], argv[d->optind]) >= 0)
- {
- _IO_flockfile (stderr);
-
- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
- ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
- _IO_funlockfile (stderr);
-
- free (buf);
- }
-#else
- fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
- argv[0], argv[d->optind]);
-#endif
- }
- d->__nextchar += strlen (d->__nextchar);
- d->optind++;
- return '?';
- }
- if (pfound != NULL)
- {
- option_index = indfound;
- if (*nameend)
- {
- /* Don't test has_arg with >, because some C compilers don't
- allow it to be used on enums. */
- if (pfound->has_arg)
- d->optarg = nameend + 1;
- else
- {
- if (print_errors)
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
-
- if (__asprintf (&buf, _("\
-%s: option `-W %s' doesn't allow an argument\n"),
- argv[0], pfound->name) >= 0)
- {
- _IO_flockfile (stderr);
-
- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
- ((_IO_FILE *) stderr)->_flags2
- |= _IO_FLAGS2_NOTCANCEL;
-
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
- _IO_funlockfile (stderr);
-
- free (buf);
- }
-#else
- fprintf (stderr, _("\
-%s: option `-W %s' doesn't allow an argument\n"),
- argv[0], pfound->name);
-#endif
- }
-
- d->__nextchar += strlen (d->__nextchar);
- return '?';
- }
- }
- else if (pfound->has_arg == 1)
- {
- if (d->optind < argc)
- d->optarg = argv[d->optind++];
- else
- {
- if (print_errors)
- {
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
-
- if (__asprintf (&buf, _("\
-%s: option `%s' requires an argument\n"),
- argv[0], argv[d->optind - 1]) >= 0)
- {
- _IO_flockfile (stderr);
-
- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
- ((_IO_FILE *) stderr)->_flags2
- |= _IO_FLAGS2_NOTCANCEL;
-
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
- _IO_funlockfile (stderr);
-
- free (buf);
- }
-#else
- fprintf (stderr,
- _("%s: option `%s' requires an argument\n"),
- argv[0], argv[d->optind - 1]);
-#endif
- }
- d->__nextchar += strlen (d->__nextchar);
- return optstring[0] == ':' ? ':' : '?';
- }
- }
- d->__nextchar += strlen (d->__nextchar);
- if (longind != NULL)
- *longind = option_index;
- if (pfound->flag)
- {
- *(pfound->flag) = pfound->val;
- return 0;
- }
- return pfound->val;
- }
- d->__nextchar = NULL;
- return 'W'; /* Let the application handle it. */
- }
- if (temp[1] == ':')
- {
- if (temp[2] == ':')
- {
- /* This is an option that accepts an argument optionally. */
- if (*d->__nextchar != '\0')
- {
- d->optarg = d->__nextchar;
- d->optind++;
- }
- else
- d->optarg = NULL;
- d->__nextchar = NULL;
- }
- else
- {
- /* This is an option that requires an argument. */
- if (*d->__nextchar != '\0')
- {
- d->optarg = d->__nextchar;
- /* If we end this ARGV-element by taking the rest as an arg,
- we must advance to the next element now. */
- d->optind++;
- }
- else if (d->optind == argc)
- {
- if (print_errors)
- {
- /* 1003.2 specifies the format of this message. */
-#if defined _LIBC && defined USE_IN_LIBIO
- char *buf;
-
- if (__asprintf (&buf, _("\
-%s: option requires an argument -- %c\n"),
- argv[0], c) >= 0)
- {
- _IO_flockfile (stderr);
-
- int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
- ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
-
- if (_IO_fwide (stderr, 0) > 0)
- __fwprintf (stderr, L"%s", buf);
- else
- fputs (buf, stderr);
-
- ((_IO_FILE *) stderr)->_flags2 = old_flags2;
- _IO_funlockfile (stderr);
-
- free (buf);
- }
-#else
- fprintf (stderr,
- _("%s: option requires an argument -- %c\n"),
- argv[0], c);
-#endif
- }
- d->optopt = c;
- if (optstring[0] == ':')
- c = ':';
- else
- c = '?';
- }
- else
- /* We already incremented `optind' once;
- increment it again when taking next ARGV-elt as argument. */
- d->optarg = argv[d->optind++];
- d->__nextchar = NULL;
- }
- }
- return c;
- }
-}
-
-int
-_getopt_internal (int argc, char **argv, const char *optstring,
- const struct option *longopts, int *longind,
- int long_only, int posixly_correct)
-{
- int result;
-
- getopt_data.optind = optind;
- getopt_data.opterr = opterr;
-
- result = _getopt_internal_r (argc, argv, optstring, longopts, longind,
- long_only, posixly_correct, &getopt_data);
-
- optind = getopt_data.optind;
- optarg = getopt_data.optarg;
- optopt = getopt_data.optopt;
-
- return result;
-}
-
-/* glibc gets a LSB-compliant getopt.
- Standalone applications get a POSIX-compliant getopt. */
-#if _LIBC
-enum { POSIXLY_CORRECT = 0 };
-#else
-enum { POSIXLY_CORRECT = 1 };
-#endif
-
-int
-getopt (int argc, char *const *argv, const char *optstring)
-{
- return _getopt_internal (argc, (char **) argv, optstring, NULL, NULL, 0,
- POSIXLY_CORRECT);
-}
-
-
-#ifdef TEST
-
-/* Compile with -DTEST to make an executable for use in testing
- the above definition of `getopt'. */
-
-int
-main (int argc, char **argv)
-{
- int c;
- int digit_optind = 0;
-
- while (1)
- {
- int this_option_optind = optind ? optind : 1;
-
- c = getopt (argc, argv, "abc:d:0123456789");
- if (c == -1)
- break;
-
- switch (c)
- {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (digit_optind != 0 && digit_optind != this_option_optind)
- printf ("digits occur in two different argv-elements.\n");
- digit_optind = this_option_optind;
- printf ("option %c\n", c);
- break;
-
- case 'a':
- printf ("option a\n");
- break;
-
- case 'b':
- printf ("option b\n");
- break;
-
- case 'c':
- printf ("option c with value `%s'\n", optarg);
- break;
-
- case '?':
- break;
-
- default:
- printf ("?? getopt returned character code 0%o ??\n", c);
- }
- }
-
- if (optind < argc)
- {
- printf ("non-option ARGV-elements: ");
- while (optind < argc)
- printf ("%s ", argv[optind++]);
- printf ("\n");
- }
-
- exit (0);
-}
-
-#endif /* TEST */
-
-/* arch-tag: 0e6da124-7269-4785-a9de-094c263d20dc
- (do not change this comment) */
diff --git a/lib-src/getopt1.c b/lib-src/getopt1.c
deleted file mode 100644
index 25f616250c..0000000000
--- a/lib-src/getopt1.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* getopt_long and getopt_long_only entry points for GNU getopt.
- Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997,
- 1998, 2004, 2005, 2006, 2007 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, 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, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef _LIBC
-# include <getopt.h>
-#else
-# include "getopt.h"
-#endif
-#include "getopt_int.h"
-
-#include <stdio.h>
-
-/* This needs to come after some library #include
- to get __GNU_LIBRARY__ defined. */
-#ifdef __GNU_LIBRARY__
-#include <stdlib.h>
-#endif
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-int
-getopt_long (int argc, char *__getopt_argv_const *argv, const char *options,
- const struct option *long_options, int *opt_index)
-{
- return _getopt_internal (argc, (char **) argv, options, long_options,
- opt_index, 0, 0);
-}
-
-int
-_getopt_long_r (int argc, char **argv, const char *options,
- const struct option *long_options, int *opt_index,
- struct _getopt_data *d)
-{
- return _getopt_internal_r (argc, argv, options, long_options, opt_index,
- 0, 0, d);
-}
-
-/* Like getopt_long, but '-' as well as '--' can indicate a long option.
- If an option that starts with '-' (not '--') doesn't match a long option,
- but does match a short option, it is parsed as a short option
- instead. */
-
-int
-getopt_long_only (int argc, char *__getopt_argv_const *argv,
- const char *options,
- const struct option *long_options, int *opt_index)
-{
- return _getopt_internal (argc, (char **) argv, options, long_options,
- opt_index, 1, 0);
-}
-
-int
-_getopt_long_only_r (int argc, char **argv, const char *options,
- const struct option *long_options, int *opt_index,
- struct _getopt_data *d)
-{
- return _getopt_internal_r (argc, argv, options, long_options, opt_index,
- 1, 0, d);
-}
-
-
-#ifdef TEST
-
-#include <stdio.h>
-
-int
-main (int argc, char **argv)
-{
- int c;
- int digit_optind = 0;
-
- while (1)
- {
- int this_option_optind = optind ? optind : 1;
- int option_index = 0;
- static struct option long_options[] =
- {
- {"add", 1, 0, 0},
- {"append", 0, 0, 0},
- {"delete", 1, 0, 0},
- {"verbose", 0, 0, 0},
- {"create", 0, 0, 0},
- {"file", 1, 0, 0},
- {0, 0, 0, 0}
- };
-
- c = getopt_long (argc, argv, "abc:d:0123456789",
- long_options, &option_index);
- if (c == -1)
- break;
-
- switch (c)
- {
- case 0:
- printf ("option %s", long_options[option_index].name);
- if (optarg)
- printf (" with arg %s", optarg);
- printf ("\n");
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (digit_optind != 0 && digit_optind != this_option_optind)
- printf ("digits occur in two different argv-elements.\n");
- digit_optind = this_option_optind;
- printf ("option %c\n", c);
- break;
-
- case 'a':
- printf ("option a\n");
- break;
-
- case 'b':
- printf ("option b\n");
- break;
-
- case 'c':
- printf ("option c with value `%s'\n", optarg);
- break;
-
- case 'd':
- printf ("option d with value `%s'\n", optarg);
- break;
-
- case '?':
- break;
-
- default:
- printf ("?? getopt returned character code 0%o ??\n", c);
- }
- }
-
- if (optind < argc)
- {
- printf ("non-option ARGV-elements: ");
- while (optind < argc)
- printf ("%s ", argv[optind++]);
- printf ("\n");
- }
-
- exit (0);
-}
-
-#endif /* TEST */
-
-/* arch-tag: 28a5c558-b0c0-4bff-b5bc-e2e20291d4b6
- (do not change this comment) */
diff --git a/lib-src/getopt_int.h b/lib-src/getopt_int.h
deleted file mode 100644
index 049f476290..0000000000
--- a/lib-src/getopt_int.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/* Internal declarations for getopt.
- Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997, 1998, 1999,
- 2001, 2003, 2004, 2005, 2006, 2007 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, 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, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
-
-#ifndef _GETOPT_INT_H
-#define _GETOPT_INT_H 1
-
-extern int _getopt_internal (int ___argc, char **___argv,
- const char *__shortopts,
- const struct option *__longopts, int *__longind,
- int __long_only, int __posixly_correct);
-
-
-/* Reentrant versions which can handle parsing multiple argument
- vectors at the same time. */
-
-/* Data type for reentrant functions. */
-struct _getopt_data
-{
- /* These have exactly the same meaning as the corresponding global
- variables, except that they are used for the reentrant
- versions of getopt. */
- int optind;
- int opterr;
- int optopt;
- char *optarg;
-
- /* Internal members. */
-
- /* True if the internal members have been initialized. */
- int __initialized;
-
- /* The next char to be scanned in the option-element
- in which the last option character we returned was found.
- This allows us to pick up the scan where we left off.
-
- If this is zero, or a null string, it means resume the scan
- by advancing to the next ARGV-element. */
- char *__nextchar;
-
- /* Describe how to deal with options that follow non-option ARGV-elements.
-
- If the caller did not specify anything,
- the default is REQUIRE_ORDER if the environment variable
- POSIXLY_CORRECT is defined, PERMUTE otherwise.
-
- REQUIRE_ORDER means don't recognize them as options;
- stop option processing when the first non-option is seen.
- This is what Unix does.
- This mode of operation is selected by either setting the environment
- variable POSIXLY_CORRECT, or using `+' as the first character
- of the list of option characters, or by calling getopt.
-
- PERMUTE is the default. We permute the contents of ARGV as we
- scan, so that eventually all the non-options are at the end.
- This allows options to be given in any order, even with programs
- that were not written to expect this.
-
- RETURN_IN_ORDER is an option available to programs that were
- written to expect options and other ARGV-elements in any order
- and that care about the ordering of the two. We describe each
- non-option ARGV-element as if it were the argument of an option
- with character code 1. Using `-' as the first character of the
- list of option characters selects this mode of operation.
-
- The special argument `--' forces an end of option-scanning regardless
- of the value of `ordering'. In the case of RETURN_IN_ORDER, only
- `--' can cause `getopt' to return -1 with `optind' != ARGC. */
-
- enum
- {
- REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
- } __ordering;
-
- /* If the POSIXLY_CORRECT environment variable is set
- or getopt was called. */
- int __posixly_correct;
-
-
- /* Handle permutation of arguments. */
-
- /* Describe the part of ARGV that contains non-options that have
- been skipped. `first_nonopt' is the index in ARGV of the first
- of them; `last_nonopt' is the index after the last of them. */
-
- int __first_nonopt;
- int __last_nonopt;
-
-#if defined _LIBC && defined USE_NONOPTION_FLAGS
- int __nonoption_flags_max_len;
- int __nonoption_flags_len;
-# endif
-};
-
-/* The initializer is necessary to set OPTIND and OPTERR to their
- default values and to clear the initialization flag. */
-#define _GETOPT_DATA_INITIALIZER { 1, 1 }
-
-extern int _getopt_internal_r (int ___argc, char **___argv,
- const char *__shortopts,
- const struct option *__longopts, int *__longind,
- int __long_only, int __posixly_correct,
- struct _getopt_data *__data);
-
-extern int _getopt_long_r (int ___argc, char **___argv,
- const char *__shortopts,
- const struct option *__longopts, int *__longind,
- struct _getopt_data *__data);
-
-extern int _getopt_long_only_r (int ___argc, char **___argv,
- const char *__shortopts,
- const struct option *__longopts,
- int *__longind,
- struct _getopt_data *__data);
-
-#endif /* getopt_int.h */
-
-/* arch-tag: 8bfc548f-23d6-46aa-b5b5-2739b0edaf79
- (do not change this comment) */
diff --git a/lib-src/gettext.h b/lib-src/gettext.h
deleted file mode 100644
index 4a5941f86d..0000000000
--- a/lib-src/gettext.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* Convenience header for conditional use of GNU <libintl.h>.
- Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2004,
- 2005, 2006, 2007 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, 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, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
-
-#ifndef _LIBGETTEXT_H
-#define _LIBGETTEXT_H 1
-
-/* NLS can be disabled through the configure --disable-nls option. */
-#if ENABLE_NLS
-
-/* Get declarations of GNU message catalog functions. */
-# include <libintl.h>
-
-#else
-
-/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
- chokes if dcgettext is defined as a macro. So include it now, to make
- later inclusions of <locale.h> a NOP. We don't include <libintl.h>
- as well because people using "gettext.h" will not include <libintl.h>,
- and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
- is OK. */
-#if defined(__sun)
-# include <locale.h>
-#endif
-
-/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
- <libintl.h>, which chokes if dcgettext is defined as a macro. So include
- it now, to make later inclusions of <libintl.h> a NOP. */
-#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
-# include <cstdlib>
-# if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H
-# include <libintl.h>
-# endif
-#endif
-
-/* Disabled NLS.
- The casts to 'const char *' serve the purpose of producing warnings
- for invalid uses of the value returned from these functions.
- On pre-ANSI systems without 'const', the config.h file is supposed to
- contain "#define const". */
-# define gettext(Msgid) ((const char *) (Msgid))
-# define dgettext(Domainname, Msgid) ((const char *) (Msgid))
-# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid))
-# define ngettext(Msgid1, Msgid2, N) \
- ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
-# define dngettext(Domainname, Msgid1, Msgid2, N) \
- ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
-# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
- ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
-# define textdomain(Domainname) ((const char *) (Domainname))
-# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
-# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset))
-
-#endif
-
-/* A pseudo function call that serves as a marker for the automated
- extraction of messages, but does not call gettext(). The run-time
- translation is done at a different place in the code.
- The argument, String, should be a literal string. Concatenated strings
- and other string expressions won't work.
- The macro's expansion is not parenthesized, so that it is suitable as
- initializer for static 'char[]' or 'const char[]' variables. */
-#define gettext_noop(String) String
-
-#endif /* _LIBGETTEXT_H */
-
-/* arch-tag: 3d01bb8e-82e3-4674-9812-de4c4224f7d1
- (do not change this comment) */
diff --git a/lib-src/grep-changelog b/lib-src/grep-changelog
index b63ae90eaf..0c7c42dc7c 100755
--- a/lib-src/grep-changelog
+++ b/lib-src/grep-changelog
@@ -1,7 +1,6 @@
#! /usr/bin/perl
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1999-2011 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
@@ -263,5 +262,4 @@ while (defined (my $log = shift @ARGV)) {
}
-# arch-tag: 9e4f6749-e053-4bb7-b3ad-11947318418e
# grep-changelog ends here.
diff --git a/lib-src/hexl.c b/lib-src/hexl.c
index b31ab81253..89ea7d9f60 100644
--- a/lib-src/hexl.c
+++ b/lib-src/hexl.c
@@ -1,6 +1,5 @@
/* Convert files for Emacs Hexl mode.
- Copyright (C) 1989, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1989, 2001-2011 Free Software Foundation, Inc.
Author: Keith Gabryelski
(according to authors.el)
@@ -179,7 +178,9 @@ main (int argc, char **argv)
#define hexchar(x) (isdigit (x) ? x - '0' : x - 'a' + 10)
- fread (buf, 1, 10, fp); /* skip 10 bytes */
+ /* Skip 10 bytes. */
+ if (fread (buf, 1, 10, fp) != 10)
+ break;
for (i=0; i < 16; ++i)
{
@@ -207,7 +208,9 @@ main (int argc, char **argv)
if (i < 16)
break;
- fread (buf, 1, 18, fp); /* skip 18 bytes */
+ /* Skip 18 bytes. */
+ if (fread (buf, 1, 18, fp) != 18)
+ break;
}
}
}
@@ -282,7 +285,5 @@ usage (void)
exit (EXIT_FAILURE);
}
-/* arch-tag: 20e04fb7-926e-4e48-be86-64fe869ecdaa
- (do not change this comment) */
/* hexl.c ends here */
diff --git a/lib-src/make-docfile.c b/lib-src/make-docfile.c
index e2dc99214d..8addbda048 100644
--- a/lib-src/make-docfile.c
+++ b/lib-src/make-docfile.c
@@ -1,6 +1,5 @@
/* Generate doc-string file for GNU Emacs from source files.
- Copyright (C) 1985, 1986, 1992, 1993, 1994, 1997, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985-1986, 1992-1994, 1997, 1999-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -78,9 +77,7 @@ void fatal (const char *s1, const char *s2) NO_RETURN;
#undef chdir
#endif
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
/* Stdio stream for output to the DOC file. */
FILE *outfile;
@@ -160,7 +157,11 @@ main (int argc, char **argv)
}
if (argc > i + 1 && !strcmp (argv[i], "-d"))
{
- chdir (argv[i + 1]);
+ if (chdir (argv[i + 1]) != 0)
+ {
+ perror (argv[i + 1]);
+ return EXIT_FAILURE;
+ }
i += 2;
}
@@ -650,6 +651,7 @@ scan_c_file (char *filename, const char *mode)
if (defunflag && (commas == 1 || commas == 2))
{
+ int scanned = 0;
do
c = getc (infile);
while (c == ' ' || c == '\n' || c == '\r' || c == '\t');
@@ -657,12 +659,14 @@ scan_c_file (char *filename, const char *mode)
goto eof;
ungetc (c, infile);
if (commas == 2) /* pick up minargs */
- fscanf (infile, "%d", &minargs);
+ scanned = fscanf (infile, "%d", &minargs);
else /* pick up maxargs */
if (c == 'M' || c == 'U') /* MANY || UNEVALLED */
maxargs = -1;
else
- fscanf (infile, "%d", &maxargs);
+ scanned = fscanf (infile, "%d", &maxargs);
+ if (scanned < 0)
+ goto eof;
}
}
@@ -869,8 +873,8 @@ scan_lisp_file (const char *filename, const char *mode)
c = getc (infile);
if (c == '@')
{
- int length = 0;
- int i;
+ size_t length = 0;
+ size_t i;
/* Read the length. */
while ((c = getc (infile),
@@ -880,6 +884,12 @@ scan_lisp_file (const char *filename, const char *mode)
length += c - '0';
}
+ if (length <= 1)
+ fatal ("invalid dynamic doc string length", "");
+
+ if (c != ' ')
+ fatal ("space not found after dynamic doc string length", "");
+
/* The next character is a space that is counted in the length
but not part of the doc string.
We already read it, so just ignore it. */
@@ -895,7 +905,7 @@ scan_lisp_file (const char *filename, const char *mode)
but it is redundant in DOC. So get rid of it here. */
saved_string[length - 1] = 0;
/* Skip the line break. */
- while (c == '\n' && c == '\r')
+ while (c == '\n' || c == '\r')
c = getc (infile);
/* Skip the following line. */
while (c != '\n' && c != '\r')
@@ -1201,7 +1211,5 @@ scan_lisp_file (const char *filename, const char *mode)
return 0;
}
-/* arch-tag: f7203aaf-991a-4238-acb5-601db56f2894
- (do not change this comment) */
/* make-docfile.c ends here */
diff --git a/lib-src/makefile.w32-in b/lib-src/makefile.w32-in
index 5591f0edbe..3685d0e71b 100644
--- a/lib-src/makefile.w32-in
+++ b/lib-src/makefile.w32-in
@@ -1,6 +1,5 @@
# -*- Makefile -*- for GNU Emacs on the Microsoft W32 API.
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-# 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2000-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -25,8 +24,8 @@ ALL = make-docfile hexl ctags etags movemail ebrowse emacsclient
VERSION = 24.0.50
LOCAL_FLAGS = -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \
- -DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../nt/inc \
- -I../src
+ -DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../lib \
+ -I../nt/inc -I../src
LIBS = $(BASE_LIBS) $(ADVAPI32)
@@ -51,22 +50,19 @@ emacsclient: stamp_BLD $(BLD)/emacsclient.exe $(BLD)/emacsclientw.exe
test-distrib: stamp_BLD $(BLD)/test-distrib.exe
"$(BLD)/test-distrib.exe" "$(SRC)/testfile"
-GETOPTOBJS = $(BLD)/getopt.$(O) $(BLD)/getopt1.$(O)
-GETOPTDEPS = $(GETOPTOBJS) getopt.h
MOVEMAILOBJS = $(BLD)/movemail.$(O) \
$(BLD)/pop.$(O) \
- $(BLD)/ntlib.$(O) \
- $(GETOPTOBJS)
+ ../lib/$(BLD)/libgnu.$(A) \
+ $(BLD)/ntlib.$(O)
-$(BLD)/movemail.exe: $(MOVEMAILOBJS) getopt.h
+$(BLD)/movemail.exe: $(MOVEMAILOBJS) ../lib/getopt.h
# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib
$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(MOVEMAILOBJS) $(WSOCK32) $(LIBS)
ECLIENT_CFLAGS = -DHAVE_GETCWD -DHAVE_STRERROR -DVERSION="\"$(VERSION)\""
ECLIENTOBJS = $(BLD)/emacsclient.$(O) \
- $(BLD)/getopt.$(O) \
- $(BLD)/getopt1.$(O) \
- $(BLD)/ntlib.$(O)
+ $(BLD)/ntlib.$(O) \
+ ../lib/$(BLD)/libgnu.$(A)
CLIENTRES = ../nt/$(BLD)/emacsclient.res
$(CLIENTRES): ../nt/emacsclient.rc
@@ -87,8 +83,7 @@ $(BLD)/emacsclient.$(O): emacsclient.c makefile.w32-in
$(CC) $(CFLAGS) $(ECLIENT_CFLAGS) $(CC_OUT)$@ emacsclient.c
ETAGSOBJ = $(BLD)/etags.$(O) \
- $(BLD)/getopt.$(O) \
- $(BLD)/getopt1.$(O) \
+ ../lib/$(BLD)/libgnu.$(A) \
$(BLD)/ntlib.$(O) \
$(BLD)/regex.$(O)
@@ -97,8 +92,7 @@ $(BLD)/etags.exe: $(ETAGSOBJ)
EBROWSEOBJ = $(BLD)/ebrowse.$(O) \
- $(BLD)/getopt.$(O) \
- $(BLD)/getopt1.$(O) \
+ ../lib/$(BLD)/libgnu.$(A) \
$(BLD)/ntlib.$(O)
$(BLD)/ebrowse.exe: $(EBROWSEOBJ)
@@ -113,8 +107,7 @@ $(BLD)/etags.$(O): etags.c
$(CC) $(CFLAGS) $(ETAGS_CFLAGS) $(CC_OUT)$@ etags.c
CTAGSOBJ = $(BLD)/ctags.$(O) \
- $(BLD)/getopt.$(O) \
- $(BLD)/getopt1.$(O) \
+ ../lib/$(BLD)/libgnu.$(A) \
$(BLD)/ntlib.$(O) \
$(BLD)/regex.$(O)
@@ -341,7 +334,6 @@ install: $(INSTALL_FILES)
clean:
- $(DEL) DOC* $(COMPILER_TEMP_FILES)
- $(DEL) ctags.c
- - $(DEL) getopt.h
- $(DEL_TREE) $(OBJDIR)
- $(DEL) stamp_BLD
- $(DEL) echolisp.tmp
@@ -366,9 +358,6 @@ cleanall: clean
echo $(CONFIG_H) has changed. Re-run configure.bat.
exit -1
-getopt.h: getopt_.h
- $(CP) $(ALL_DEPS) $@
-
### TAGS ###
TAGS: $(BLD)/etags.exe *.c *.h
@@ -393,7 +382,7 @@ $(BLD)/ctags.$(O) : \
$(EMACS_ROOT)/src/m/intel386.h \
$(EMACS_ROOT)/lib-src/../src/config.h \
$(SRC)/ntlib.h \
- $(SRC)/getopt.h
+ $(EMACS_ROOT)/lib/getopt.h
$(BLD)/emacsclient.$(O) : \
$(SRC)/emacsclient.c \
@@ -408,7 +397,7 @@ $(BLD)/etags.$(O) : \
$(EMACS_ROOT)/src/m/intel386.h \
$(EMACS_ROOT)/lib-src/../src/config.h \
$(SRC)/ntlib.h \
- $(SRC)/getopt.h
+ $(EMACS_ROOT)/lib/getopt.h
$(BLD)/fakemail.$(O) : \
$(SRC)/fakemail.c \
@@ -425,21 +414,6 @@ $(BLD)/getdate.$(O) : \
$(EMACS_ROOT)/src/config.h \
$(MSTOOLS_SYS)/types.h
-$(BLD)/getopt.$(O) : \
- $(SRC)/getopt.c \
- $(EMACS_ROOT)/src/s/ms-w32.h \
- $(EMACS_ROOT)/src/m/intel386.h \
- $(EMACS_ROOT)/src/config.h \
- $(SRC)/ntlib.h \
- $(SRC)/getopt.h
-
-$(BLD)/getopt1.$(O) : \
- $(SRC)/getopt1.c \
- $(EMACS_ROOT)/src/s/ms-w32.h \
- $(EMACS_ROOT)/src/m/intel386.h \
- $(EMACS_ROOT)/src/config.h \
- $(SRC)/getopt.h
-
$(BLD)/hexl.$(O) : \
$(SRC)/hexl.c
@@ -501,7 +475,7 @@ $(BLD)/timer.$(O) : \
#
$(BLD)/make-docfile.$(O) $(BLD)/hexl.$(O) $(BLD)/fakemail.$(O): stamp_BLD
-$(BLD)/test-distrib.$(O) $(GETOPTOBJS) $(MOVEMAILOBJS): stamp_BLD
+$(BLD)/test-distrib.$(O) $(MOVEMAILOBJS): stamp_BLD
$(BLD)/emacsclient.$(O) $(BLD)/etags.$(O) $(BLD)/regex.$(O): stamp_BLD
diff --git a/lib-src/movemail.c b/lib-src/movemail.c
index f300942427..682aa10aa3 100644
--- a/lib-src/movemail.c
+++ b/lib-src/movemail.c
@@ -1,7 +1,8 @@
/* movemail foo bar -- move file foo to file bar,
locking file foo the way /bin/mail respects.
- Copyright (C) 1986, 1992, 1993, 1994, 1996, 1999, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1986, 1992-1994, 1996, 1999, 2001-2011
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -63,9 +64,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <time.h>
#include <getopt.h>
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
@@ -356,7 +355,7 @@ main (int argc, char **argv)
time_t touched_lock, now;
#endif
- if (setuid (getuid ()) < 0 || setegid (real_gid) < 0)
+ if (setuid (getuid ()) < 0 || setregid (-1, real_gid) < 0)
fatal ("Failed to drop privileges", 0, 0);
#ifndef MAIL_USE_MMDF
@@ -383,7 +382,7 @@ main (int argc, char **argv)
if (outdesc < 0)
pfatal_with_name (outname);
- if (setegid (priv_gid) < 0)
+ if (setregid (-1, priv_gid) < 0)
fatal ("Failed to regain privileges", 0, 0);
/* This label exists so we can retry locking
@@ -480,7 +479,7 @@ main (int argc, char **argv)
#endif
/* Prevent symlink attacks truncating other users' mailboxes */
- if (setegid (real_gid) < 0)
+ if (setregid (-1, real_gid) < 0)
fatal ("Failed to drop privileges", 0, 0);
/* Check to make sure no errors before we zap the inbox. */
@@ -490,7 +489,8 @@ main (int argc, char **argv)
#ifdef MAIL_USE_SYSTEM_LOCK
if (! preserve_mail)
{
- ftruncate (indesc, 0L);
+ if (ftruncate (indesc, 0L) != 0)
+ pfatal_with_name (inname);
}
#endif /* MAIL_USE_SYSTEM_LOCK */
@@ -515,7 +515,7 @@ main (int argc, char **argv)
#endif /* not MAIL_USE_SYSTEM_LOCK */
/* End of mailbox truncation */
- if (setegid (priv_gid) < 0)
+ if (setregid (-1, priv_gid) < 0)
fatal ("Failed to regain privileges", 0, 0);
#ifdef MAIL_USE_MAILLOCK
@@ -933,7 +933,5 @@ strerror (errnum)
#endif /* ! HAVE_STRERROR */
-/* arch-tag: 1c323112-41fe-4fe5-8de9-494de631f73f
- (do not change this comment) */
/* movemail.c ends here */
diff --git a/lib-src/ntlib.c b/lib-src/ntlib.c
index c24b35d9a1..0ecd4177d2 100644
--- a/lib-src/ntlib.c
+++ b/lib-src/ntlib.c
@@ -1,6 +1,5 @@
/* Utility and Unix shadow routines for GNU Emacs support programs on NT.
- Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -144,7 +143,7 @@ setuid (unsigned uid)
}
int
-setegid (unsigned gid)
+setregid (unsigned rgid, unsigned gid)
{
return 0;
}
@@ -374,5 +373,3 @@ stat (const char * path, struct stat * buf)
return 0;
}
-/* arch-tag: 7b63fb83-70ee-4124-8822-54e53e5d0773
- (do not change this comment) */
diff --git a/lib-src/ntlib.h b/lib-src/ntlib.h
index 4dd6a32ee3..be8d2a58a5 100644
--- a/lib-src/ntlib.h
+++ b/lib-src/ntlib.h
@@ -1,6 +1,5 @@
/* Utility and Unix shadow routines for GNU Emacs support programs on NT.
- Copyright (C) 1994, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1994, 2002-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -39,7 +38,7 @@ unsigned getuid (void);
unsigned getegid (void);
unsigned getgid (void);
int setuid (unsigned uid);
-int setegid (unsigned gid);
+int setregid (unsigned rgid, unsigned gid);
char * getpass (const char * prompt);
int fchown (int fd, unsigned uid, unsigned gid);
@@ -106,5 +105,3 @@ int fchown (int fd, unsigned uid, unsigned gid);
/* end of ntlib.h */
-/* arch-tag: 93444f66-7b98-4aa5-a5cd-01444094af28
- (do not change this comment) */
diff --git a/lib-src/pop.c b/lib-src/pop.c
index 9eabbd2041..a3fda09d44 100644
--- a/lib-src/pop.c
+++ b/lib-src/pop.c
@@ -1,6 +1,7 @@
/* pop.c: client routines for talking to a POP3-protocol post-office server
- Copyright (C) 1991, 1993, 1996, 1997, 1999, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1991, 1993, 1996-1997, 1999, 2001-2011
+ Free Software Foundation, Inc.
Author: Jonathan Kamens <[email protected]>
@@ -68,9 +69,7 @@ extern struct servent *hes_getservbyname (/* char *, char * */);
#include <string.h>
#define index strchr
#endif
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#ifdef KERBEROS
# ifdef HAVE_KRB5_H
@@ -1626,6 +1625,3 @@ find_crlf (char *in_string, int len)
}
#endif /* MAIL_USE_POP */
-
-/* arch-tag: ceb37041-b7ad-49a8-a63d-286618b8367d
- (do not change this comment) */
diff --git a/lib-src/pop.h b/lib-src/pop.h
index 2ba3fab83a..bc079fcc97 100644
--- a/lib-src/pop.h
+++ b/lib-src/pop.h
@@ -1,6 +1,5 @@
/* pop.h: Header file for the "pop.c" client POP3 protocol.
- Copyright (C) 1991, 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1993, 2001-2011 Free Software Foundation, Inc.
Author: Jonathan Kamens <[email protected]>
@@ -75,5 +74,3 @@ extern int pop_reset (popserver server);
extern int pop_quit (popserver server);
extern void pop_close (popserver);
-/* arch-tag: 76cc5f58-8e86-48fa-bc72-a7c6cb1c4f1c
- (do not change this comment) */
diff --git a/lib-src/profile.c b/lib-src/profile.c
index 37653e63c4..9ce9993f4b 100644
--- a/lib-src/profile.c
+++ b/lib-src/profile.c
@@ -1,6 +1,5 @@
/* profile.c --- generate periodic events for profiling of Emacs Lisp code.
- Copyright (C) 1992, 1994, 1999, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1992, 1994, 1999, 2001-2011 Free Software Foundation, Inc.
Author: Boaz Ben-Zvi <[email protected]>
@@ -102,7 +101,5 @@ main (void)
exit (EXIT_FAILURE);
}
-/* arch-tag: 8db68f7e-2322-4944-a315-dba349bdbf39
- (do not change this comment) */
/* profile.c ends here */
diff --git a/lib-src/rcs-checkin b/lib-src/rcs-checkin
index f82e03bdcf..6861a30b40 100755
--- a/lib-src/rcs-checkin
+++ b/lib-src/rcs-checkin
@@ -2,8 +2,7 @@
# This script accepts any number of file arguments and checks them into RCS.
-# Copyright (C) 1993, 1994, 1995, 2001, 2002, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1993-1995, 2001-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -115,4 +114,3 @@ $file"
ci -d -q -u $owner -m"entered into RCS" "$file" || exit
done
-# arch-tag: 89c86949-ef04-4380-838b-bc1444dcb074
diff --git a/lib-src/rcs2log b/lib-src/rcs2log
index 2a2eab83fc..4e1dd30697 100755
--- a/lib-src/rcs2log
+++ b/lib-src/rcs2log
@@ -2,9 +2,7 @@
# RCS to ChangeLog generator
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2001, 2002, 2003,
-# 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 1992-1998, 2001-2011 Free Software Foundation, Inc.
# Author: Paul Eggert <[email protected]>
@@ -22,7 +20,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-Copyright='Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright='Copyright (C) 2011 Free Software Foundation, Inc.
This program comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of this program
under the terms of the GNU General Public License.
@@ -777,4 +775,3 @@ exec rm -fr $logdir
# tab-width:4
# End:
-# arch-tag: cea067bd-a552-4254-ba17-078208933073
diff --git a/lib-src/test-distrib.c b/lib-src/test-distrib.c
index aca46f121f..acfb147325 100644
--- a/lib-src/test-distrib.c
+++ b/lib-src/test-distrib.c
@@ -1,7 +1,6 @@
/* test-distrib.c --- testing distribution of nonprinting chars
-Copyright (C) 1987, 1993, 1994, 1995, 1999, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1987, 1993-1995, 1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -22,10 +21,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#include <stdio.h>
#include <fcntl.h>
-
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
/* Break string in two parts to avoid buggy C compilers that ignore characters
after nulls in strings. */
@@ -88,7 +84,5 @@ have been corrupted in the files of Emacs, and it will not work.\n",
return EXIT_SUCCESS;
}
-/* arch-tag: 3a89005d-df98-4c32-aa9f-33570e16a26a
- (do not change this comment) */
/* test-distrib.c ends here */
diff --git a/lib-src/update-game-score.c b/lib-src/update-game-score.c
index b8e1147d1c..9466bf7b14 100644
--- a/lib-src/update-game-score.c
+++ b/lib-src/update-game-score.c
@@ -1,7 +1,6 @@
/* update-game-score.c --- Update a score file
-Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2002-2011 Free Software Foundation, Inc.
Author: Colin Walters <[email protected]>
@@ -34,9 +33,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#include <errno.h>
#ifdef HAVE_STRING_H
#include <string.h>
@@ -498,7 +495,5 @@ unlock_file (const char *filename, void *state)
return ret;
}
-/* arch-tag: 2bf5c52e-4beb-463a-954e-c58b9c64736b
- (do not change this comment) */
/* update-game-score.c ends here */
diff --git a/lib-src/vcdiff b/lib-src/vcdiff
index 1d08e5d194..0f975cd0ee 100755
--- a/lib-src/vcdiff
+++ b/lib-src/vcdiff
@@ -3,8 +3,8 @@
# Enhanced sccs diff utility for use with vc mode.
# This version is more compatible with rcsdiff(1).
-# Copyright (C) 1992, 1993, 1995, 1997, 2001, 2002, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1992-1993, 1995, 1997, 2001-2011
+# Free Software Foundation, Inc.
# Author: Paul Eggert
# (according to authors.el)
@@ -112,4 +112,3 @@ do
fi
done
-# arch-tag: 4344ba3a-bcbe-4f77-971c-f43c1606953a
diff --git a/lib/COPYING b/lib/COPYING
new file mode 100644
index 0000000000..94a9ed024d
--- /dev/null
+++ b/lib/COPYING
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. 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
+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 DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/lib/Makefile.am b/lib/Makefile.am
new file mode 100644
index 0000000000..6a014f6057
--- /dev/null
+++ b/lib/Makefile.am
@@ -0,0 +1,8 @@
+BUILT_SOURCES =
+EXTRA_DIST =
+MOSTLYCLEANFILES =
+noinst_LIBRARIES =
+
+DEFAULT_INCLUDES = -I. -I../src -I$(top_srcdir)/src
+
+include gnulib.mk
diff --git a/lib/Makefile.in b/lib/Makefile.in
new file mode 100644
index 0000000000..7cd9841746
--- /dev/null
+++ b/lib/Makefile.in
@@ -0,0 +1,993 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002-2011 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# 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=. --makefile-name=gnulib.mk --no-libtool --macro-prefix=gl --no-vc-files dtoastr getopt-gnu mktime strftime
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/gnulib.mk COPYING
+subdir = lib
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/gl-comp.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/src/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libgnu_a_AR = $(AR) $(ARFLAGS)
+am__DEPENDENCIES_1 =
+am_libgnu_a_OBJECTS = dtoastr.$(OBJEXT)
+libgnu_a_OBJECTS = $(am_libgnu_a_OBJECTS)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libgnu_a_SOURCES) $(EXTRA_libgnu_a_SOURCES)
+DIST_SOURCES = $(libgnu_a_SOURCES) $(EXTRA_libgnu_a_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALSA_CFLAGS = @ALSA_CFLAGS@
+ALSA_LIBS = @ALSA_LIBS@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BLESSMAIL_TARGET = @BLESSMAIL_TARGET@
+CANNOT_DUMP = @CANNOT_DUMP@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAGS_SOUND = @CFLAGS_SOUND@
+COM_ERRLIB = @COM_ERRLIB@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRT_DIR = @CRT_DIR@
+CRYPTOLIB = @CRYPTOLIB@
+CYGPATH_W = @CYGPATH_W@
+CYGWIN_OBJ = @CYGWIN_OBJ@
+C_SWITCH_MACHINE = @C_SWITCH_MACHINE@
+C_SWITCH_SYSTEM = @C_SWITCH_SYSTEM@
+C_SWITCH_X_SITE = @C_SWITCH_X_SITE@
+C_SWITCH_X_SYSTEM = @C_SWITCH_X_SYSTEM@
+C_WARNINGS_SWITCH = @C_WARNINGS_SWITCH@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DBUS_OBJ = @DBUS_OBJ@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DEPFLAGS = @DEPFLAGS@
+DESLIB = @DESLIB@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
+FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
+FONT_OBJ = @FONT_OBJ@
+FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
+FREETYPE_LIBS = @FREETYPE_LIBS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GMALLOC_OBJ = @GMALLOC_OBJ@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MKTIME = @GNULIB_MKTIME@
+GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STRPTIME = @GNULIB_STRPTIME@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_TIMEGM = @GNULIB_TIMEGM@
+GNULIB_TIME_R = @GNULIB_TIME_R@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNU_OBJC_CFLAGS = @GNU_OBJC_CFLAGS@
+GREP = @GREP@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+GTK_OBJ = @GTK_OBJ@
+GZIP_INFO = @GZIP_INFO@
+GZIP_PROG = @GZIP_PROG@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETOPT_H = @HAVE_GETOPT_H@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_MAKEINFO = @HAVE_MAKEINFO@
+HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STRPTIME = @HAVE_STRPTIME@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_TIMEGM = @HAVE_TIMEGM@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_XSERVER = @HAVE_XSERVER@
+HAVE__BOOL = @HAVE__BOOL@
+IMAGEMAGICK_CFLAGS = @IMAGEMAGICK_CFLAGS@
+IMAGEMAGICK_LIBS = @IMAGEMAGICK_LIBS@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_INFO = @INSTALL_INFO@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KMEM_GROUP = @KMEM_GROUP@
+KRB4LIB = @KRB4LIB@
+KRB5LIB = @KRB5LIB@
+LDFLAGS = @LDFLAGS@
+LD_FIRSTFLAG = @LD_FIRSTFLAG@
+LD_SWITCH_SYSTEM = @LD_SWITCH_SYSTEM@
+LD_SWITCH_SYSTEM_TEMACS = @LD_SWITCH_SYSTEM_TEMACS@
+LD_SWITCH_X_SITE = @LD_SWITCH_X_SITE@
+LD_SWITCH_X_SITE_AUX = @LD_SWITCH_X_SITE_AUX@
+LD_SWITCH_X_SITE_AUX_RPATH = @LD_SWITCH_X_SITE_AUX_RPATH@
+LIBGIF = @LIBGIF@
+LIBGNUTLS_CFLAGS = @LIBGNUTLS_CFLAGS@
+LIBGNUTLS_LIBS = @LIBGNUTLS_LIBS@
+LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
+LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
+LIBGPM = @LIBGPM@
+LIBHESIOD = @LIBHESIOD@
+LIBINTL = @LIBINTL@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBOTF_CFLAGS = @LIBOTF_CFLAGS@
+LIBOTF_LIBS = @LIBOTF_LIBS@
+LIBPNG = @LIBPNG@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSELINUX_LIBS = @LIBSELINUX_LIBS@
+LIBSOUND = @LIBSOUND@
+LIBS_MAIL = @LIBS_MAIL@
+LIBS_SYSTEM = @LIBS_SYSTEM@
+LIBS_TERMCAP = @LIBS_TERMCAP@
+LIBTIFF = @LIBTIFF@
+LIBXMENU = @LIBXMENU@
+LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
+LIBXML2_LIBS = @LIBXML2_LIBS@
+LIBXMU = @LIBXMU@
+LIBXPM = @LIBXPM@
+LIBXSM = @LIBXSM@
+LIBXTR6 = @LIBXTR6@
+LIBXT_OTHER = @LIBXT_OTHER@
+LIBX_OTHER = @LIBX_OTHER@
+LIB_GCC = @LIB_GCC@
+LIB_MATH = @LIB_MATH@
+LIB_STANDARD = @LIB_STANDARD@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+M17N_FLT_CFLAGS = @M17N_FLT_CFLAGS@
+M17N_FLT_LIBS = @M17N_FLT_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDEPDIR = @MKDEPDIR@
+MKDIR_P = @MKDIR_P@
+MOUSE_SUPPORT = @MOUSE_SUPPORT@
+M_FILE = @M_FILE@
+NEED_SETGID = @NEED_SETGID@
+NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_GETOPT_H = @NEXT_GETOPT_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NS_OBJ = @NS_OBJ@
+NS_SUPPORT = @NS_SUPPORT@
+OBJEXT = @OBJEXT@
+OLDXMENU = @OLDXMENU@
+OLDXMENU_DEPS = @OLDXMENU_DEPS@
+OLDXMENU_TARGET = @OLDXMENU_TARGET@
+OTHER_FILES = @OTHER_FILES@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POST_ALLOC_OBJ = @POST_ALLOC_OBJ@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRE_ALLOC_OBJ = @PRE_ALLOC_OBJ@
+PROFILING_CFLAGS = @PROFILING_CFLAGS@
+PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+RALLOC_OBJ = @RALLOC_OBJ@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MKTIME = @REPLACE_MKTIME@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_WRITE = @REPLACE_WRITE@
+RSVG_CFLAGS = @RSVG_CFLAGS@
+RSVG_LIBS = @RSVG_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+START_FILES = @START_FILES@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STRIP = @STRIP@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+S_FILE = @S_FILE@
+TEMACS_LDFLAGS2 = @TEMACS_LDFLAGS2@
+TERMCAP_OBJ = @TERMCAP_OBJ@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+TOOLKIT_LIBW = @TOOLKIT_LIBW@
+TOOLTIP_SUPPORT = @TOOLTIP_SUPPORT@
+UNEXEC_OBJ = @UNEXEC_OBJ@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+VERSION = @VERSION@
+VMLIMIT_OBJ = @VMLIMIT_OBJ@
+WIDGET_OBJ = @WIDGET_OBJ@
+WINDOW_SUPPORT = @WINDOW_SUPPORT@
+XFT_CFLAGS = @XFT_CFLAGS@
+XFT_LIBS = @XFT_LIBS@
+XMENU_OBJ = @XMENU_OBJ@
+XMKMF = @XMKMF@
+XOBJ = @XOBJ@
+X_TOOLKIT_TYPE = @X_TOOLKIT_TYPE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+archlibdir = @archlibdir@
+bindir = @bindir@
+bitmapdir = @bitmapdir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+canonical = @canonical@
+configuration = @configuration@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+etcdir = @etcdir@
+exec_prefix = @exec_prefix@
+gamedir = @gamedir@
+gameuser = @gameuser@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+liblockfile = @liblockfile@
+lispdir = @lispdir@
+lisppath = @lisppath@
+localedir = @localedir@
+locallisppath = @locallisppath@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+ns_appbindir = @ns_appbindir@
+ns_appdir = @ns_appdir@
+ns_appresdir = @ns_appresdir@
+ns_appsrc = @ns_appsrc@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+version = @version@
+x_default_search_path = @x_default_search_path@
+
+# The BUILT_SOURCES created by this Makefile snippet are not used via #include
+# statements but through direct file reference. Therefore this snippet must be
+# present in all Makefile.am that need it. This is ensured by the applicability
+# 'all' defined above.
+
+# The BUILT_SOURCES created by this Makefile snippet are not used via #include
+# statements but through direct file reference. Therefore this snippet must be
+# present in all Makefile.am that need it. This is ensured by the applicability
+# 'all' defined above.
+BUILT_SOURCES = arg-nonnull.h c++defs.h $(GETOPT_H) $(STDBOOL_H) \
+ $(STDDEF_H) time.h unistd.h warn-on-use.h
+EXTRA_DIST = $(top_srcdir)/./arg-nonnull.h $(top_srcdir)/./c++defs.h \
+ ftoastr.c ftoastr.h getopt.c getopt.in.h getopt1.c \
+ getopt_int.h intprops.h mktime-internal.h mktime.c \
+ stdbool.in.h stddef.in.h strftime.c strftime.h time.in.h \
+ time_r.c unistd.in.h $(top_srcdir)/./warn-on-use.h
+MOSTLYCLEANFILES = core *.stackdump arg-nonnull.h arg-nonnull.h-t \
+ c++defs.h c++defs.h-t getopt.h getopt.h-t stdbool.h \
+ stdbool.h-t stddef.h stddef.h-t time.h time.h-t unistd.h \
+ unistd.h-t warn-on-use.h warn-on-use.h-t
+noinst_LIBRARIES = libgnu.a
+DEFAULT_INCLUDES = -I. -I../src -I$(top_srcdir)/src
+libgnu_a_SOURCES = dtoastr.c gettext.h
+libgnu_a_LIBADD = $(gl_LIBOBJS)
+libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
+EXTRA_libgnu_a_SOURCES = ftoastr.c getopt.c getopt1.c mktime.c \
+ strftime.c time_r.c
+ARG_NONNULL_H = arg-nonnull.h
+CXXDEFS_H = c++defs.h
+WARN_ON_USE_H = warn-on-use.h
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/gnulib.mk $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu lib/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libgnu.a: $(libgnu_a_OBJECTS) $(libgnu_a_DEPENDENCIES)
+ -rm -f libgnu.a
+ $(libgnu_a_AR) libgnu.a $(libgnu_a_OBJECTS) $(libgnu_a_LIBADD)
+ $(RANLIB) libgnu.a
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dtoastr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftoastr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mktime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strftime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time_r.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+ -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-local
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-noinstLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-local pdf pdf-am ps ps-am tags \
+ uninstall uninstall-am
+
+# The arg-nonnull.h that gets inserted into generated .h files is the same as
+# build-aux/arg-nonnull.h, except that it has the copyright header cut off.
+arg-nonnull.h: $(top_srcdir)/./arg-nonnull.h
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ sed -n -e '/GL_ARG_NONNULL/,$$p' \
+ < $(top_srcdir)/./arg-nonnull.h \
+ > $@-t && \
+ mv $@-t $@
+# The c++defs.h that gets inserted into generated .h files is the same as
+# build-aux/c++defs.h, except that it has the copyright header cut off.
+c++defs.h: $(top_srcdir)/./c++defs.h
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ sed -n -e '/_GL_CXXDEFS/,$$p' \
+ < $(top_srcdir)/./c++defs.h \
+ > $@-t && \
+ mv $@-t $@
+
+# We need the following in order to create <getopt.h> when the system
+# doesn't have one that works with the given compiler.
+getopt.h: getopt.in.h $(ARG_NONNULL_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ < $(srcdir)/getopt.in.h; \
+ } > $@-t && \
+ mv -f $@-t $@
+
+# We need the following in order to create <stdbool.h> when the system
+# doesn't have one that works.
+stdbool.h: stdbool.in.h
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+
+# We need the following in order to create <stddef.h> when the system
+# doesn't have one that works with the given compiler.
+stddef.h: stddef.in.h
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
+ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
+ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
+ < $(srcdir)/stddef.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+
+# We need the following in order to create <time.h> when the system
+# doesn't have one that works with the given compiler.
+time.h: time.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \
+ -e 's|@''GNULIB_MKTIME''@|$(GNULIB_MKTIME)|g' \
+ -e 's|@''GNULIB_NANOSLEEP''@|$(GNULIB_NANOSLEEP)|g' \
+ -e 's|@''GNULIB_STRPTIME''@|$(GNULIB_STRPTIME)|g' \
+ -e 's|@''GNULIB_TIMEGM''@|$(GNULIB_TIMEGM)|g' \
+ -e 's|@''GNULIB_TIME_R''@|$(GNULIB_TIME_R)|g' \
+ -e 's|@''HAVE_DECL_LOCALTIME_R''@|$(HAVE_DECL_LOCALTIME_R)|g' \
+ -e 's|@''HAVE_NANOSLEEP''@|$(HAVE_NANOSLEEP)|g' \
+ -e 's|@''HAVE_STRPTIME''@|$(HAVE_STRPTIME)|g' \
+ -e 's|@''HAVE_TIMEGM''@|$(HAVE_TIMEGM)|g' \
+ -e 's|@''REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \
+ -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \
+ -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \
+ -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \
+ -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \
+ -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
+ -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+ < $(srcdir)/time.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+
+# We need the following in order to create an empty placeholder for
+# <unistd.h> when the system doesn't have one.
+unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
+ -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
+ -e 's|@''GNULIB_CLOSE''@|$(GNULIB_CLOSE)|g' \
+ -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
+ -e 's|@''GNULIB_DUP3''@|$(GNULIB_DUP3)|g' \
+ -e 's|@''GNULIB_ENVIRON''@|$(GNULIB_ENVIRON)|g' \
+ -e 's|@''GNULIB_EUIDACCESS''@|$(GNULIB_EUIDACCESS)|g' \
+ -e 's|@''GNULIB_FACCESSAT''@|$(GNULIB_FACCESSAT)|g' \
+ -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
+ -e 's|@''GNULIB_FCHOWNAT''@|$(GNULIB_FCHOWNAT)|g' \
+ -e 's|@''GNULIB_FSYNC''@|$(GNULIB_FSYNC)|g' \
+ -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
+ -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
+ -e 's|@''GNULIB_GETDOMAINNAME''@|$(GNULIB_GETDOMAINNAME)|g' \
+ -e 's|@''GNULIB_GETDTABLESIZE''@|$(GNULIB_GETDTABLESIZE)|g' \
+ -e 's|@''GNULIB_GETGROUPS''@|$(GNULIB_GETGROUPS)|g' \
+ -e 's|@''GNULIB_GETHOSTNAME''@|$(GNULIB_GETHOSTNAME)|g' \
+ -e 's|@''GNULIB_GETLOGIN''@|$(GNULIB_GETLOGIN)|g' \
+ -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
+ -e 's|@''GNULIB_GETPAGESIZE''@|$(GNULIB_GETPAGESIZE)|g' \
+ -e 's|@''GNULIB_GETUSERSHELL''@|$(GNULIB_GETUSERSHELL)|g' \
+ -e 's|@''GNULIB_LCHOWN''@|$(GNULIB_LCHOWN)|g' \
+ -e 's|@''GNULIB_LINK''@|$(GNULIB_LINK)|g' \
+ -e 's|@''GNULIB_LINKAT''@|$(GNULIB_LINKAT)|g' \
+ -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
+ -e 's|@''GNULIB_PIPE''@|$(GNULIB_PIPE)|g' \
+ -e 's|@''GNULIB_PIPE2''@|$(GNULIB_PIPE2)|g' \
+ -e 's|@''GNULIB_PREAD''@|$(GNULIB_PREAD)|g' \
+ -e 's|@''GNULIB_PWRITE''@|$(GNULIB_PWRITE)|g' \
+ -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
+ -e 's|@''GNULIB_READLINKAT''@|$(GNULIB_READLINKAT)|g' \
+ -e 's|@''GNULIB_RMDIR''@|$(GNULIB_RMDIR)|g' \
+ -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
+ -e 's|@''GNULIB_SYMLINK''@|$(GNULIB_SYMLINK)|g' \
+ -e 's|@''GNULIB_SYMLINKAT''@|$(GNULIB_SYMLINKAT)|g' \
+ -e 's|@''GNULIB_TTYNAME_R''@|$(GNULIB_TTYNAME_R)|g' \
+ -e 's|@''GNULIB_UNISTD_H_GETOPT''@|$(GNULIB_UNISTD_H_GETOPT)|g' \
+ -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
+ -e 's|@''GNULIB_UNLINK''@|$(GNULIB_UNLINK)|g' \
+ -e 's|@''GNULIB_UNLINKAT''@|$(GNULIB_UNLINKAT)|g' \
+ -e 's|@''GNULIB_USLEEP''@|$(GNULIB_USLEEP)|g' \
+ -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \
+ < $(srcdir)/unistd.in.h | \
+ sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \
+ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
+ -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \
+ -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
+ -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \
+ -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \
+ -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \
+ -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
+ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+ -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
+ -e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \
+ -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \
+ -e 's|@''HAVE_GETLOGIN''@|$(HAVE_GETLOGIN)|g' \
+ -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
+ -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \
+ -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \
+ -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \
+ -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \
+ -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \
+ -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \
+ -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \
+ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
+ -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \
+ -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
+ -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \
+ -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \
+ -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \
+ -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \
+ -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
+ -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \
+ -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \
+ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+ -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \
+ -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \
+ -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \
+ -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
+ -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
+ -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+ -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
+ -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \
+ -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
+ -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \
+ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
+ -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \
+ -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \
+ -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \
+ -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
+ -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \
+ -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \
+ -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \
+ -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
+ -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \
+ -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \
+ -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \
+ -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \
+ -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \
+ -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \
+ -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \
+ -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \
+ -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \
+ -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \
+ -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \
+ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \
+ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+ } > $@-t && \
+ mv $@-t $@
+# The warn-on-use.h that gets inserted into generated .h files is the same as
+# build-aux/warn-on-use.h, except that it has the copyright header cut off.
+warn-on-use.h: $(top_srcdir)/./warn-on-use.h
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ sed -n -e '/^.ifndef/,$$p' \
+ < $(top_srcdir)/./warn-on-use.h \
+ > $@-t && \
+ mv $@-t $@
+
+mostlyclean-local: mostlyclean-generic
+ @for dir in '' $(MOSTLYCLEANDIRS); do \
+ if test -n "$$dir" && test -d $$dir; then \
+ echo "rmdir $$dir"; rmdir $$dir; \
+ fi; \
+ done; \
+ :
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/dtoastr.c b/lib/dtoastr.c
new file mode 100644
index 0000000000..aed181d66b
--- /dev/null
+++ b/lib/dtoastr.c
@@ -0,0 +1,2 @@
+#define LENGTH 2
+#include "ftoastr.c"
diff --git a/lib/ftoastr.c b/lib/ftoastr.c
new file mode 100644
index 0000000000..ff3d87ce22
--- /dev/null
+++ b/lib/ftoastr.c
@@ -0,0 +1,136 @@
+/* floating point to accurate string
+
+ Copyright (C) 2010-2011 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. */
+
+/* This code can misbehave on some buggy or older platforms, when
+ operating on arguments on floating types other than 'double', or
+ when given unusual combinations of options. Gnulib's
+ snprintf-posix module works around many of these problems.
+
+ This code relies on sprintf, strtod, etc. operating accurately;
+ otherwise, the resulting strings could be inaccurate or too long. */
+
+#include <config.h>
+
+#include "ftoastr.h"
+
+#include "intprops.h"
+#include <float.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#if LENGTH == 3
+# define FLOAT long double
+# define FLOAT_DIG LDBL_DIG
+# define FLOAT_MIN LDBL_MIN
+# define FLOAT_PREC_BOUND _GL_LDBL_PREC_BOUND
+# define FTOASTR ldtoastr
+# define STRTOF strtold
+#elif LENGTH == 2
+# define FLOAT double
+# define FLOAT_DIG DBL_DIG
+# define FLOAT_MIN DBL_MIN
+# define FLOAT_PREC_BOUND _GL_DBL_PREC_BOUND
+# define FTOASTR dtoastr
+# define STRTOF strtod
+#else
+# define LENGTH 1
+# define FLOAT float
+# define FLOAT_DIG FLT_DIG
+# define FLOAT_MIN FLT_MIN
+# define FLOAT_PREC_BOUND _GL_FLT_PREC_BOUND
+# define FTOASTR ftoastr
+# define STRTOF strtof
+#endif
+
+/* On pre-C99 hosts, approximate strtof and strtold with strtod. This
+ may generate one or two extra digits, but that's better than not
+ working at all. Assume that strtof works if strtold does. */
+#if LENGTH != 2 && ! HAVE_C99_STRTOLD
+# undef STRTOF
+# define STRTOF strtod
+#endif
+
+/* On hosts where it's not known that snprintf works, use sprintf to
+ implement the subset needed here. Typically BUFSIZE is big enough
+ and there's little or no performance hit. */
+#if ! GNULIB_SNPRINTF
+# undef snprintf
+# define snprintf ftoastr_snprintf
+static int
+ftoastr_snprintf (char *buf, size_t bufsize, char const *format,
+ int width, int prec, FLOAT x)
+{
+ char width_0_buffer[LENGTH == 1 ? FLT_BUFSIZE_BOUND
+ : LENGTH == 2 ? DBL_BUFSIZE_BOUND
+ : LDBL_BUFSIZE_BOUND];
+ int n = width;
+ if (bufsize < sizeof width_0_buffer)
+ {
+ n = sprintf (width_0_buffer, format, 0, prec, x);
+ if (n < 0)
+ return n;
+ if (n < width)
+ n = width;
+ }
+ if (n < bufsize)
+ n = sprintf (buf, format, width, prec, x);
+ return n;
+}
+#endif
+
+int
+FTOASTR (char *buf, size_t bufsize, int flags, int width, FLOAT x)
+{
+ /* The following method is simple but slow.
+ For ideas about speeding things up, please see:
+
+ Florian Loitsch, Printing floating-point numbers quickly and accurately
+ with integers. ACM SIGPLAN notices 46, 6 (June 2010), 233-243
+ <http://dx.doi.org/10.1145/1809028.1806623>; also see the
+ 2010-03-21 draft <http://florian.loitsch.com/tmp/article.pdf>. */
+
+ char format[sizeof "%-+ 0*.*Lg"];
+ FLOAT abs_x = x < 0 ? -x : x;
+ int prec;
+
+ char *p = format;
+ *p++ = '%';
+
+ /* Support flags that generate output parsable by strtof. */
+ *p = '-'; p += (flags & FTOASTR_LEFT_JUSTIFY ) != 0;
+ *p = '+'; p += (flags & FTOASTR_ALWAYS_SIGNED ) != 0;
+ *p = ' '; p += (flags & FTOASTR_SPACE_POSITIVE) != 0;
+ *p = '0'; p += (flags & FTOASTR_ZERO_PAD ) != 0;
+
+ *p++ = '*';
+ *p++ = '.';
+ *p++ = '*';
+ *p = 'L'; p += 2 < LENGTH;
+ *p++ = flags & FTOASTR_UPPER_E ? 'G' : 'g';
+ *p = '\0';
+
+ for (prec = abs_x < FLOAT_MIN ? 1 : FLOAT_DIG; ; prec++)
+ {
+ int n = snprintf (buf, bufsize, format, width, prec, x);
+ if (n < 0
+ || FLOAT_PREC_BOUND <= prec
+ || (n < bufsize && STRTOF (buf, NULL) == x))
+ return n;
+ }
+}
diff --git a/lib/ftoastr.h b/lib/ftoastr.h
new file mode 100644
index 0000000000..6264952e8e
--- /dev/null
+++ b/lib/ftoastr.h
@@ -0,0 +1,144 @@
+/* floating point to accurate string
+
+ Copyright (C) 2010-2011 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. */
+
+#ifndef _GL_FTOASTR_H
+
+#include "intprops.h"
+#include <float.h>
+#include <stddef.h>
+
+/* Store into BUF (of size BUFSIZE) an accurate minimal-precision
+ string representation of a floating point number. FLAGS affect the
+ formatting of the number. Pad the output string with spaces as
+ necessary to width WIDTH bytes, in the style of printf. WIDTH must
+ be nonnegative. X is the floating-point number to be converted.
+
+ Return the number of bytes stored into BUF, not counting the
+ terminating null. However, do not overrun BUF: if BUF is too
+ small, return a fairly tight (but not necessarily exact) upper
+ bound on the value that would have been returned if BUF had been
+ big enough. If SIZE is zero, BUF may be a null pointer. On error
+ (e.g., returned value would exceed INT_MAX), return -1 and set
+ errno.
+
+ Example:
+
+ char buf[DBL_BUFSIZE_BOUND];
+ int r = dtoastr (buf, sizeof buf, 0, 0, 0.1);
+
+ In the C locale, this sets R to 3 and stores "0.1" into BUF. */
+
+int ftoastr (char *buf, size_t bufsize, int flags, int width, float x);
+int dtoastr (char *buf, size_t bufsize, int flags, int width, double x);
+int ldtoastr (char *buf, size_t bufsize, int flags, int width, long double x);
+
+/* Flag values for ftoastr etc. These can be ORed together. */
+enum
+ {
+ /* Left justify within the width; the default is right justification. */
+ FTOASTR_LEFT_JUSTIFY = 1,
+
+ /* Output "+" before positive numbers; the default outputs nothing. */
+ FTOASTR_ALWAYS_SIGNED = 2,
+
+ /* Output " " before positive numbers; ignored if
+ FTOASTER_ALWAYS_SIGNED is also given. */
+ FTOASTR_SPACE_POSITIVE = 4,
+
+ /* Pad with zeros instead of spaces; ignored if FTOASTR_LEFT_JUSTIFY
+ is also given. */
+ FTOASTR_ZERO_PAD = 8,
+
+ /* Use 'E' instead of 'e' before the exponent. */
+ FTOASTR_UPPER_E = 16
+ };
+
+
+/* _GL_FLT_PREC_BOUND is an upper bound on the precision needed to
+ represent a float value without losing information. Likewise for
+ _GL_DBL_PREC_BOUND and double, and _GL_LDBL_PREC_BOUND and long double. */
+
+#if FLT_RADIX == 10 /* decimal floating point */
+ enum { _GL_FLT_PREC_BOUND = FLT_MANT_DIG };
+ enum { _GL_DBL_PREC_BOUND = DBL_MANT_DIG };
+ enum { _GL_LDBL_PREC_BOUND = LDBL_MANT_DIG };
+#else
+
+/* An upper bound on the number of bits needed to represent a single
+ digit in a floating-point fraction. */
+# if FLT_RADIX == 2 /* IEEE 754 floating point, VAX floating point, etc. */
+# define _GL_FLOAT_DIG_BITS_BOUND 1
+# elif FLT_RADIX <= 16 /* IBM hex floating point has FLT_RADIX == 16. */
+# define _GL_FLOAT_DIG_BITS_BOUND 4
+# else /* no machine is this bad, but let's be complete */
+# define _GL_FLOAT_DIG_BITS_BOUND (CHAR_BIT * (int) sizeof (int) - 1)
+# endif
+
+/* An upper bound on the number of decimal digits needed to represent
+ a floating point number accurately, assuming a fraction contains
+ DIG digits. For why the "+ 1" is needed, see "Binary to Decimal
+ Conversion" in David Goldberg's paper "What Every Computer
+ Scientist Should Know About Floating-Point Arithmetic"
+ <http://docs.sun.com/source/806-3568/ncg_goldberg.html>. */
+# define _GL_FLOAT_PREC_BOUND(dig) \
+ (INT_BITS_STRLEN_BOUND ((dig) * _GL_FLOAT_DIG_BITS_BOUND) + 1)
+
+ enum { _GL_FLT_PREC_BOUND = _GL_FLOAT_PREC_BOUND ( FLT_MANT_DIG) };
+ enum { _GL_DBL_PREC_BOUND = _GL_FLOAT_PREC_BOUND ( DBL_MANT_DIG) };
+ enum { _GL_LDBL_PREC_BOUND = _GL_FLOAT_PREC_BOUND (LDBL_MANT_DIG) };
+#endif
+
+
+/* Bound on the number of bytes printed for an exponent in the range
+ MIN..MAX, where MIN < 0 < MAX; printf always prints a sign and at
+ least 2 digits. Although the maximum known exponent is 4932 for
+ IEEE 754 binary128, support tight bounds for exponents up to a
+ million, just in case. */
+#define _GL_FLOAT_EXPONENT_STRLEN_BOUND(min, max) \
+ ( -100 < (min) && (max) < 100 ? 3 \
+ : -1000 < (min) && (max) < 1000 ? 4 \
+ : -10000 < (min) && (max) < 10000 ? 5 \
+ : -100000 < (min) && (max) < 100000 ? 6 \
+ : -1000000 < (min) && (max) < 1000000 ? 7 \
+ : INT_STRLEN_BOUND (int) /* not a tight bound */)
+
+/* A reasonably tight bound on the length of a type-T floating value
+ formatted with ftoastr etc. Room is needed for sign, fraction
+ digits, decimal point, "e", and exponent. POINTLEN should be a
+ reasonably tight bound on the string length of the decimal
+ point. */
+#define _GL_FLOAT_STRLEN_BOUND_L(t, pointlen) \
+ (1 + _GL_##t##_PREC_BOUND + pointlen + 1 \
+ + _GL_FLOAT_EXPONENT_STRLEN_BOUND (t##_MIN_10_EXP, t##_MAX_10_EXP))
+#define FLT_STRLEN_BOUND_L(pointlen) _GL_FLOAT_STRLEN_BOUND_L ( FLT, pointlen)
+#define DBL_STRLEN_BOUND_L(pointlen) _GL_FLOAT_STRLEN_BOUND_L ( DBL, pointlen)
+#define LDBL_STRLEN_BOUND_L(pointlen) _GL_FLOAT_STRLEN_BOUND_L (LDBL, pointlen)
+
+/* Looser bounds that are locale-independent and are integral constant
+ expressions. */
+#define FLT_STRLEN_BOUND FLT_STRLEN_BOUND_L (MB_LEN_MAX)
+#define DBL_STRLEN_BOUND DBL_STRLEN_BOUND_L (MB_LEN_MAX)
+#define LDBL_STRLEN_BOUND LDBL_STRLEN_BOUND_L (MB_LEN_MAX)
+
+/* Looser, locale-independent bounds that include the trailing null byte. */
+#define FLT_BUFSIZE_BOUND ( FLT_STRLEN_BOUND + 1)
+#define DBL_BUFSIZE_BOUND ( DBL_STRLEN_BOUND + 1)
+#define LDBL_BUFSIZE_BOUND (LDBL_STRLEN_BOUND + 1)
+
+#endif /* _GL_FTOASTR_H */
diff --git a/lib/getopt.c b/lib/getopt.c
new file mode 100644
index 0000000000..c8b301363f
--- /dev/null
+++ b/lib/getopt.c
@@ -0,0 +1,1192 @@
+/* Getopt for GNU.
+ NOTE: getopt is part of the C library, so if you don't know what
+ "Keep this file name-space clean" means, talk to [email protected]
+ before changing it!
+ Copyright (C) 1987-1996, 1998-2004, 2006, 2008-2011 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/>. */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#include "getopt.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "gettext.h"
+# define _(msgid) gettext (msgid)
+#endif
+
+#if defined _LIBC && defined USE_IN_LIBIO
+# include <wchar.h>
+#endif
+
+/* This version of `getopt' appears to the caller like standard Unix `getopt'
+ but it behaves differently for the user, since it allows the user
+ to intersperse the options with the other arguments.
+
+ As `getopt_long' works, it permutes the elements of ARGV so that,
+ when it is done, all the options precede everything else. Thus
+ all application programs are extended to handle flexible argument order.
+
+ Using `getopt' or setting the environment variable POSIXLY_CORRECT
+ disables permutation.
+ Then the behavior is completely standard.
+
+ GNU application programs can use a third alternative mode in which
+ they can distinguish the relative order of options and other arguments. */
+
+#include "getopt_int.h"
+
+/* For communication from `getopt' to the caller.
+ When `getopt' finds an option that takes an argument,
+ the argument value is returned here.
+ Also, when `ordering' is RETURN_IN_ORDER,
+ each non-option ARGV-element is returned here. */
+
+char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+ This is used for communication to and from the caller
+ and for communication between successive calls to `getopt'.
+
+ On entry to `getopt', zero means this is the first call; initialize.
+
+ When `getopt' returns -1, this is the index of the first of the
+ non-option elements that the caller should itself scan.
+
+ Otherwise, `optind' communicates from one call to the next
+ how much of ARGV has been scanned so far. */
+
+/* 1003.2 says this must be 1 before any call. */
+int optind = 1;
+
+/* Callers store zero here to inhibit the error message
+ for unrecognized options. */
+
+int opterr = 1;
+
+/* Set to an option character which was unrecognized.
+ This must be initialized on some systems to avoid linking in the
+ system's own getopt implementation. */
+
+int optopt = '?';
+
+/* Keep a global copy of all internal members of getopt_data. */
+
+static struct _getopt_data getopt_data;
+
+
+#if defined HAVE_DECL_GETENV && !HAVE_DECL_GETENV
+extern char *getenv ();
+#endif
+
+#ifdef _LIBC
+/* Stored original parameters.
+ XXX This is no good solution. We should rather copy the args so
+ that we can compare them later. But we must not use malloc(3). */
+extern int __libc_argc;
+extern char **__libc_argv;
+
+/* Bash 2.0 gives us an environment variable containing flags
+ indicating ARGV elements that should not be considered arguments. */
+
+# ifdef USE_NONOPTION_FLAGS
+/* Defined in getopt_init.c */
+extern char *__getopt_nonoption_flags;
+# endif
+
+# ifdef USE_NONOPTION_FLAGS
+# define SWAP_FLAGS(ch1, ch2) \
+ if (d->__nonoption_flags_len > 0) \
+ { \
+ char __tmp = __getopt_nonoption_flags[ch1]; \
+ __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \
+ __getopt_nonoption_flags[ch2] = __tmp; \
+ }
+# else
+# define SWAP_FLAGS(ch1, ch2)
+# endif
+#else /* !_LIBC */
+# define SWAP_FLAGS(ch1, ch2)
+#endif /* _LIBC */
+
+/* Exchange two adjacent subsequences of ARGV.
+ One subsequence is elements [first_nonopt,last_nonopt)
+ which contains all the non-options that have been skipped so far.
+ The other is elements [last_nonopt,optind), which contains all
+ the options processed since those non-options were skipped.
+
+ `first_nonopt' and `last_nonopt' are relocated so that they describe
+ the new indices of the non-options in ARGV after they are moved. */
+
+static void
+exchange (char **argv, struct _getopt_data *d)
+{
+ int bottom = d->__first_nonopt;
+ int middle = d->__last_nonopt;
+ int top = d->optind;
+ char *tem;
+
+ /* Exchange the shorter segment with the far end of the longer segment.
+ That puts the shorter segment into the right place.
+ It leaves the longer segment in the right place overall,
+ but it consists of two parts that need to be swapped next. */
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+ /* First make sure the handling of the `__getopt_nonoption_flags'
+ string can work normally. Our top argument must be in the range
+ of the string. */
+ if (d->__nonoption_flags_len > 0 && top >= d->__nonoption_flags_max_len)
+ {
+ /* We must extend the array. The user plays games with us and
+ presents new arguments. */
+ char *new_str = malloc (top + 1);
+ if (new_str == NULL)
+ d->__nonoption_flags_len = d->__nonoption_flags_max_len = 0;
+ else
+ {
+ memset (__mempcpy (new_str, __getopt_nonoption_flags,
+ d->__nonoption_flags_max_len),
+ '\0', top + 1 - d->__nonoption_flags_max_len);
+ d->__nonoption_flags_max_len = top + 1;
+ __getopt_nonoption_flags = new_str;
+ }
+ }
+#endif
+
+ while (top > middle && middle > bottom)
+ {
+ if (top - middle > middle - bottom)
+ {
+ /* Bottom segment is the short one. */
+ int len = middle - bottom;
+ register int i;
+
+ /* Swap it with the top part of the top segment. */
+ for (i = 0; i < len; i++)
+ {
+ tem = argv[bottom + i];
+ argv[bottom + i] = argv[top - (middle - bottom) + i];
+ argv[top - (middle - bottom) + i] = tem;
+ SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
+ }
+ /* Exclude the moved bottom segment from further swapping. */
+ top -= len;
+ }
+ else
+ {
+ /* Top segment is the short one. */
+ int len = top - middle;
+ register int i;
+
+ /* Swap it with the bottom part of the bottom segment. */
+ for (i = 0; i < len; i++)
+ {
+ tem = argv[bottom + i];
+ argv[bottom + i] = argv[middle + i];
+ argv[middle + i] = tem;
+ SWAP_FLAGS (bottom + i, middle + i);
+ }
+ /* Exclude the moved top segment from further swapping. */
+ bottom += len;
+ }
+ }
+
+ /* Update records for the slots the non-options now occupy. */
+
+ d->__first_nonopt += (d->optind - d->__last_nonopt);
+ d->__last_nonopt = d->optind;
+}
+
+/* Initialize the internal data when the first call is made. */
+
+static const char *
+_getopt_initialize (int argc _GL_UNUSED,
+ char **argv _GL_UNUSED, const char *optstring,
+ struct _getopt_data *d, int posixly_correct)
+{
+ /* Start processing options with ARGV-element 1 (since ARGV-element 0
+ is the program name); the sequence of previously skipped
+ non-option ARGV-elements is empty. */
+
+ d->__first_nonopt = d->__last_nonopt = d->optind;
+
+ d->__nextchar = NULL;
+
+ d->__posixly_correct = posixly_correct || !!getenv ("POSIXLY_CORRECT");
+
+ /* Determine how to handle the ordering of options and nonoptions. */
+
+ if (optstring[0] == '-')
+ {
+ d->__ordering = RETURN_IN_ORDER;
+ ++optstring;
+ }
+ else if (optstring[0] == '+')
+ {
+ d->__ordering = REQUIRE_ORDER;
+ ++optstring;
+ }
+ else if (d->__posixly_correct)
+ d->__ordering = REQUIRE_ORDER;
+ else
+ d->__ordering = PERMUTE;
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+ if (!d->__posixly_correct
+ && argc == __libc_argc && argv == __libc_argv)
+ {
+ if (d->__nonoption_flags_max_len == 0)
+ {
+ if (__getopt_nonoption_flags == NULL
+ || __getopt_nonoption_flags[0] == '\0')
+ d->__nonoption_flags_max_len = -1;
+ else
+ {
+ const char *orig_str = __getopt_nonoption_flags;
+ int len = d->__nonoption_flags_max_len = strlen (orig_str);
+ if (d->__nonoption_flags_max_len < argc)
+ d->__nonoption_flags_max_len = argc;
+ __getopt_nonoption_flags =
+ (char *) malloc (d->__nonoption_flags_max_len);
+ if (__getopt_nonoption_flags == NULL)
+ d->__nonoption_flags_max_len = -1;
+ else
+ memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
+ '\0', d->__nonoption_flags_max_len - len);
+ }
+ }
+ d->__nonoption_flags_len = d->__nonoption_flags_max_len;
+ }
+ else
+ d->__nonoption_flags_len = 0;
+#endif
+
+ return optstring;
+}
+
+/* Scan elements of ARGV (whose length is ARGC) for option characters
+ given in OPTSTRING.
+
+ If an element of ARGV starts with '-', and is not exactly "-" or "--",
+ then it is an option element. The characters of this element
+ (aside from the initial '-') are option characters. If `getopt'
+ is called repeatedly, it returns successively each of the option characters
+ from each of the option elements.
+
+ If `getopt' finds another option character, it returns that character,
+ updating `optind' and `nextchar' so that the next call to `getopt' can
+ resume the scan with the following option character or ARGV-element.
+
+ If there are no more option characters, `getopt' returns -1.
+ Then `optind' is the index in ARGV of the first ARGV-element
+ that is not an option. (The ARGV-elements have been permuted
+ so that those that are not options now come last.)
+
+ OPTSTRING is a string containing the legitimate option characters.
+ If an option character is seen that is not listed in OPTSTRING,
+ return '?' after printing an error message. If you set `opterr' to
+ zero, the error message is suppressed but we still return '?'.
+
+ If a char in OPTSTRING is followed by a colon, that means it wants an arg,
+ so the following text in the same ARGV-element, or the text of the following
+ ARGV-element, is returned in `optarg'. Two colons mean an option that
+ wants an optional arg; if there is text in the current ARGV-element,
+ it is returned in `optarg', otherwise `optarg' is set to zero.
+
+ If OPTSTRING starts with `-' or `+', it requests different methods of
+ handling the non-option ARGV-elements.
+ See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
+
+ Long-named options begin with `--' instead of `-'.
+ Their names may be abbreviated as long as the abbreviation is unique
+ or is an exact match for some defined option. If they have an
+ argument, it follows the option name in the same ARGV-element, separated
+ from the option name by a `=', or else the in next ARGV-element.
+ When `getopt' finds a long-named option, it returns 0 if that option's
+ `flag' field is nonzero, the value of the option's `val' field
+ if the `flag' field is zero.
+
+ The elements of ARGV aren't really const, because we permute them.
+ But we pretend they're const in the prototype to be compatible
+ with other systems.
+
+ LONGOPTS is a vector of `struct option' terminated by an
+ element containing a name which is zero.
+
+ LONGIND returns the index in LONGOPT of the long-named option found.
+ It is only valid when a long-named option has been found by the most
+ recent call.
+
+ If LONG_ONLY is nonzero, '-' as well as '--' can introduce
+ long-named options. */
+
+int
+_getopt_internal_r (int argc, char **argv, const char *optstring,
+ const struct option *longopts, int *longind,
+ int long_only, struct _getopt_data *d, int posixly_correct)
+{
+ int print_errors = d->opterr;
+
+ if (argc < 1)
+ return -1;
+
+ d->optarg = NULL;
+
+ if (d->optind == 0 || !d->__initialized)
+ {
+ if (d->optind == 0)
+ d->optind = 1; /* Don't scan ARGV[0], the program name. */
+ optstring = _getopt_initialize (argc, argv, optstring, d,
+ posixly_correct);
+ d->__initialized = 1;
+ }
+ else if (optstring[0] == '-' || optstring[0] == '+')
+ optstring++;
+ if (optstring[0] == ':')
+ print_errors = 0;
+
+ /* Test whether ARGV[optind] points to a non-option argument.
+ Either it does not have option syntax, or there is an environment flag
+ from the shell indicating it is not an option. The later information
+ is only used when the used in the GNU libc. */
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0' \
+ || (d->optind < d->__nonoption_flags_len \
+ && __getopt_nonoption_flags[d->optind] == '1'))
+#else
+# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0')
+#endif
+
+ if (d->__nextchar == NULL || *d->__nextchar == '\0')
+ {
+ /* Advance to the next ARGV-element. */
+
+ /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
+ moved back by the user (who may also have changed the arguments). */
+ if (d->__last_nonopt > d->optind)
+ d->__last_nonopt = d->optind;
+ if (d->__first_nonopt > d->optind)
+ d->__first_nonopt = d->optind;
+
+ if (d->__ordering == PERMUTE)
+ {
+ /* If we have just processed some options following some non-options,
+ exchange them so that the options come first. */
+
+ if (d->__first_nonopt != d->__last_nonopt
+ && d->__last_nonopt != d->optind)
+ exchange ((char **) argv, d);
+ else if (d->__last_nonopt != d->optind)
+ d->__first_nonopt = d->optind;
+
+ /* Skip any additional non-options
+ and extend the range of non-options previously skipped. */
+
+ while (d->optind < argc && NONOPTION_P)
+ d->optind++;
+ d->__last_nonopt = d->optind;
+ }
+
+ /* The special ARGV-element `--' means premature end of options.
+ Skip it like a null option,
+ then exchange with previous non-options as if it were an option,
+ then skip everything else like a non-option. */
+
+ if (d->optind != argc && !strcmp (argv[d->optind], "--"))
+ {
+ d->optind++;
+
+ if (d->__first_nonopt != d->__last_nonopt
+ && d->__last_nonopt != d->optind)
+ exchange ((char **) argv, d);
+ else if (d->__first_nonopt == d->__last_nonopt)
+ d->__first_nonopt = d->optind;
+ d->__last_nonopt = argc;
+
+ d->optind = argc;
+ }
+
+ /* If we have done all the ARGV-elements, stop the scan
+ and back over any non-options that we skipped and permuted. */
+
+ if (d->optind == argc)
+ {
+ /* Set the next-arg-index to point at the non-options
+ that we previously skipped, so the caller will digest them. */
+ if (d->__first_nonopt != d->__last_nonopt)
+ d->optind = d->__first_nonopt;
+ return -1;
+ }
+
+ /* If we have come to a non-option and did not permute it,
+ either stop the scan or describe it to the caller and pass it by. */
+
+ if (NONOPTION_P)
+ {
+ if (d->__ordering == REQUIRE_ORDER)
+ return -1;
+ d->optarg = argv[d->optind++];
+ return 1;
+ }
+
+ /* We have found another option-ARGV-element.
+ Skip the initial punctuation. */
+
+ d->__nextchar = (argv[d->optind] + 1
+ + (longopts != NULL && argv[d->optind][1] == '-'));
+ }
+
+ /* Decode the current option-ARGV-element. */
+
+ /* Check whether the ARGV-element is a long option.
+
+ If long_only and the ARGV-element has the form "-f", where f is
+ a valid short option, don't consider it an abbreviated form of
+ a long option that starts with f. Otherwise there would be no
+ way to give the -f short option.
+
+ On the other hand, if there's a long option "fubar" and
+ the ARGV-element is "-fu", do consider that an abbreviation of
+ the long option, just like "--fu", and not "-f" with arg "u".
+
+ This distinction seems to be the most useful approach. */
+
+ if (longopts != NULL
+ && (argv[d->optind][1] == '-'
+ || (long_only && (argv[d->optind][2]
+ || !strchr (optstring, argv[d->optind][1])))))
+ {
+ char *nameend;
+ const struct option *p;
+ const struct option *pfound = NULL;
+ int exact = 0;
+ int ambig = 0;
+ int indfound = -1;
+ int option_index;
+
+ for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++)
+ /* Do nothing. */ ;
+
+ /* Test all long options for either exact match
+ or abbreviated matches. */
+ for (p = longopts, option_index = 0; p->name; p++, option_index++)
+ if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
+ {
+ if ((unsigned int) (nameend - d->__nextchar)
+ == (unsigned int) strlen (p->name))
+ {
+ /* Exact match found. */
+ pfound = p;
+ indfound = option_index;
+ exact = 1;
+ break;
+ }
+ else if (pfound == NULL)
+ {
+ /* First nonexact match found. */
+ pfound = p;
+ indfound = option_index;
+ }
+ else if (long_only
+ || pfound->has_arg != p->has_arg
+ || pfound->flag != p->flag
+ || pfound->val != p->val)
+ /* Second or later nonexact match found. */
+ ambig = 1;
+ }
+
+ if (ambig && !exact)
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+
+ if (__asprintf (&buf, _("%s: option '%s' is ambiguous\n"),
+ argv[0], argv[d->optind]) >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#else
+ fprintf (stderr, _("%s: option '%s' is ambiguous\n"),
+ argv[0], argv[d->optind]);
+#endif
+ }
+ d->__nextchar += strlen (d->__nextchar);
+ d->optind++;
+ d->optopt = 0;
+ return '?';
+ }
+
+ if (pfound != NULL)
+ {
+ option_index = indfound;
+ d->optind++;
+ if (*nameend)
+ {
+ /* Don't test has_arg with >, because some C compilers don't
+ allow it to be used on enums. */
+ if (pfound->has_arg)
+ d->optarg = nameend + 1;
+ else
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+ int n;
+#endif
+
+ if (argv[d->optind - 1][1] == '-')
+ {
+ /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+ n = __asprintf (&buf, _("\
+%s: option '--%s' doesn't allow an argument\n"),
+ argv[0], pfound->name);
+#else
+ fprintf (stderr, _("\
+%s: option '--%s' doesn't allow an argument\n"),
+ argv[0], pfound->name);
+#endif
+ }
+ else
+ {
+ /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+ n = __asprintf (&buf, _("\
+%s: option '%c%s' doesn't allow an argument\n"),
+ argv[0], argv[d->optind - 1][0],
+ pfound->name);
+#else
+ fprintf (stderr, _("\
+%s: option '%c%s' doesn't allow an argument\n"),
+ argv[0], argv[d->optind - 1][0],
+ pfound->name);
+#endif
+ }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+ if (n >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2
+ |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#endif
+ }
+
+ d->__nextchar += strlen (d->__nextchar);
+
+ d->optopt = pfound->val;
+ return '?';
+ }
+ }
+ else if (pfound->has_arg == 1)
+ {
+ if (d->optind < argc)
+ d->optarg = argv[d->optind++];
+ else
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+
+ if (__asprintf (&buf, _("\
+%s: option '--%s' requires an argument\n"),
+ argv[0], pfound->name) >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2
+ |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#else
+ fprintf (stderr,
+ _("%s: option '--%s' requires an argument\n"),
+ argv[0], pfound->name);
+#endif
+ }
+ d->__nextchar += strlen (d->__nextchar);
+ d->optopt = pfound->val;
+ return optstring[0] == ':' ? ':' : '?';
+ }
+ }
+ d->__nextchar += strlen (d->__nextchar);
+ if (longind != NULL)
+ *longind = option_index;
+ if (pfound->flag)
+ {
+ *(pfound->flag) = pfound->val;
+ return 0;
+ }
+ return pfound->val;
+ }
+
+ /* Can't find it as a long option. If this is not getopt_long_only,
+ or the option starts with '--' or is not a valid short
+ option, then it's an error.
+ Otherwise interpret it as a short option. */
+ if (!long_only || argv[d->optind][1] == '-'
+ || strchr (optstring, *d->__nextchar) == NULL)
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+ int n;
+#endif
+
+ if (argv[d->optind][1] == '-')
+ {
+ /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+ n = __asprintf (&buf, _("%s: unrecognized option '--%s'\n"),
+ argv[0], d->__nextchar);
+#else
+ fprintf (stderr, _("%s: unrecognized option '--%s'\n"),
+ argv[0], d->__nextchar);
+#endif
+ }
+ else
+ {
+ /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+ n = __asprintf (&buf, _("%s: unrecognized option '%c%s'\n"),
+ argv[0], argv[d->optind][0], d->__nextchar);
+#else
+ fprintf (stderr, _("%s: unrecognized option '%c%s'\n"),
+ argv[0], argv[d->optind][0], d->__nextchar);
+#endif
+ }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+ if (n >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#endif
+ }
+ d->__nextchar = (char *) "";
+ d->optind++;
+ d->optopt = 0;
+ return '?';
+ }
+ }
+
+ /* Look at and handle the next short option-character. */
+
+ {
+ char c = *d->__nextchar++;
+ const char *temp = strchr (optstring, c);
+
+ /* Increment `optind' when we start to process its last character. */
+ if (*d->__nextchar == '\0')
+ ++d->optind;
+
+ if (temp == NULL || c == ':' || c == ';')
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+ int n;
+#endif
+
+#if defined _LIBC && defined USE_IN_LIBIO
+ n = __asprintf (&buf, _("%s: invalid option -- '%c'\n"),
+ argv[0], c);
+#else
+ fprintf (stderr, _("%s: invalid option -- '%c'\n"), argv[0], c);
+#endif
+
+#if defined _LIBC && defined USE_IN_LIBIO
+ if (n >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#endif
+ }
+ d->optopt = c;
+ return '?';
+ }
+ /* Convenience. Treat POSIX -W foo same as long option --foo */
+ if (temp[0] == 'W' && temp[1] == ';')
+ {
+ char *nameend;
+ const struct option *p;
+ const struct option *pfound = NULL;
+ int exact = 0;
+ int ambig = 0;
+ int indfound = 0;
+ int option_index;
+
+ /* This is an option that requires an argument. */
+ if (*d->__nextchar != '\0')
+ {
+ d->optarg = d->__nextchar;
+ /* If we end this ARGV-element by taking the rest as an arg,
+ we must advance to the next element now. */
+ d->optind++;
+ }
+ else if (d->optind == argc)
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+
+ if (__asprintf (&buf,
+ _("%s: option requires an argument -- '%c'\n"),
+ argv[0], c) >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#else
+ fprintf (stderr,
+ _("%s: option requires an argument -- '%c'\n"),
+ argv[0], c);
+#endif
+ }
+ d->optopt = c;
+ if (optstring[0] == ':')
+ c = ':';
+ else
+ c = '?';
+ return c;
+ }
+ else
+ /* We already incremented `d->optind' once;
+ increment it again when taking next ARGV-elt as argument. */
+ d->optarg = argv[d->optind++];
+
+ /* optarg is now the argument, see if it's in the
+ table of longopts. */
+
+ for (d->__nextchar = nameend = d->optarg; *nameend && *nameend != '=';
+ nameend++)
+ /* Do nothing. */ ;
+
+ /* Test all long options for either exact match
+ or abbreviated matches. */
+ for (p = longopts, option_index = 0; p->name; p++, option_index++)
+ if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
+ {
+ if ((unsigned int) (nameend - d->__nextchar) == strlen (p->name))
+ {
+ /* Exact match found. */
+ pfound = p;
+ indfound = option_index;
+ exact = 1;
+ break;
+ }
+ else if (pfound == NULL)
+ {
+ /* First nonexact match found. */
+ pfound = p;
+ indfound = option_index;
+ }
+ else if (long_only
+ || pfound->has_arg != p->has_arg
+ || pfound->flag != p->flag
+ || pfound->val != p->val)
+ /* Second or later nonexact match found. */
+ ambig = 1;
+ }
+ if (ambig && !exact)
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+
+ if (__asprintf (&buf, _("%s: option '-W %s' is ambiguous\n"),
+ argv[0], d->optarg) >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#else
+ fprintf (stderr, _("%s: option '-W %s' is ambiguous\n"),
+ argv[0], d->optarg);
+#endif
+ }
+ d->__nextchar += strlen (d->__nextchar);
+ d->optind++;
+ return '?';
+ }
+ if (pfound != NULL)
+ {
+ option_index = indfound;
+ if (*nameend)
+ {
+ /* Don't test has_arg with >, because some C compilers don't
+ allow it to be used on enums. */
+ if (pfound->has_arg)
+ d->optarg = nameend + 1;
+ else
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+
+ if (__asprintf (&buf, _("\
+%s: option '-W %s' doesn't allow an argument\n"),
+ argv[0], pfound->name) >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2
+ |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#else
+ fprintf (stderr, _("\
+%s: option '-W %s' doesn't allow an argument\n"),
+ argv[0], pfound->name);
+#endif
+ }
+
+ d->__nextchar += strlen (d->__nextchar);
+ return '?';
+ }
+ }
+ else if (pfound->has_arg == 1)
+ {
+ if (d->optind < argc)
+ d->optarg = argv[d->optind++];
+ else
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+
+ if (__asprintf (&buf, _("\
+%s: option '-W %s' requires an argument\n"),
+ argv[0], pfound->name) >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2
+ |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#else
+ fprintf (stderr, _("\
+%s: option '-W %s' requires an argument\n"),
+ argv[0], pfound->name);
+#endif
+ }
+ d->__nextchar += strlen (d->__nextchar);
+ return optstring[0] == ':' ? ':' : '?';
+ }
+ }
+ else
+ d->optarg = NULL;
+ d->__nextchar += strlen (d->__nextchar);
+ if (longind != NULL)
+ *longind = option_index;
+ if (pfound->flag)
+ {
+ *(pfound->flag) = pfound->val;
+ return 0;
+ }
+ return pfound->val;
+ }
+ d->__nextchar = NULL;
+ return 'W'; /* Let the application handle it. */
+ }
+ if (temp[1] == ':')
+ {
+ if (temp[2] == ':')
+ {
+ /* This is an option that accepts an argument optionally. */
+ if (*d->__nextchar != '\0')
+ {
+ d->optarg = d->__nextchar;
+ d->optind++;
+ }
+ else
+ d->optarg = NULL;
+ d->__nextchar = NULL;
+ }
+ else
+ {
+ /* This is an option that requires an argument. */
+ if (*d->__nextchar != '\0')
+ {
+ d->optarg = d->__nextchar;
+ /* If we end this ARGV-element by taking the rest as an arg,
+ we must advance to the next element now. */
+ d->optind++;
+ }
+ else if (d->optind == argc)
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+
+ if (__asprintf (&buf, _("\
+%s: option requires an argument -- '%c'\n"),
+ argv[0], c) >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#else
+ fprintf (stderr,
+ _("%s: option requires an argument -- '%c'\n"),
+ argv[0], c);
+#endif
+ }
+ d->optopt = c;
+ if (optstring[0] == ':')
+ c = ':';
+ else
+ c = '?';
+ }
+ else
+ /* We already incremented `optind' once;
+ increment it again when taking next ARGV-elt as argument. */
+ d->optarg = argv[d->optind++];
+ d->__nextchar = NULL;
+ }
+ }
+ return c;
+ }
+}
+
+int
+_getopt_internal (int argc, char **argv, const char *optstring,
+ const struct option *longopts, int *longind, int long_only,
+ int posixly_correct)
+{
+ int result;
+
+ getopt_data.optind = optind;
+ getopt_data.opterr = opterr;
+
+ result = _getopt_internal_r (argc, argv, optstring, longopts,
+ longind, long_only, &getopt_data,
+ posixly_correct);
+
+ optind = getopt_data.optind;
+ optarg = getopt_data.optarg;
+ optopt = getopt_data.optopt;
+
+ return result;
+}
+
+/* glibc gets a LSB-compliant getopt.
+ Standalone applications get a POSIX-compliant getopt. */
+#if _LIBC
+enum { POSIXLY_CORRECT = 0 };
+#else
+enum { POSIXLY_CORRECT = 1 };
+#endif
+
+int
+getopt (int argc, char *const *argv, const char *optstring)
+{
+ return _getopt_internal (argc, (char **) argv, optstring,
+ (const struct option *) 0,
+ (int *) 0,
+ 0, POSIXLY_CORRECT);
+}
+
+#ifdef _LIBC
+int
+__posix_getopt (int argc, char *const *argv, const char *optstring)
+{
+ return _getopt_internal (argc, argv, optstring,
+ (const struct option *) 0,
+ (int *) 0,
+ 0, 1);
+}
+#endif
+
+
+#ifdef TEST
+
+/* Compile with -DTEST to make an executable for use in testing
+ the above definition of `getopt'. */
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ int digit_optind = 0;
+
+ while (1)
+ {
+ int this_option_optind = optind ? optind : 1;
+
+ c = getopt (argc, argv, "abc:d:0123456789");
+ if (c == -1)
+ break;
+
+ switch (c)
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ if (digit_optind != 0 && digit_optind != this_option_optind)
+ printf ("digits occur in two different argv-elements.\n");
+ digit_optind = this_option_optind;
+ printf ("option %c\n", c);
+ break;
+
+ case 'a':
+ printf ("option a\n");
+ break;
+
+ case 'b':
+ printf ("option b\n");
+ break;
+
+ case 'c':
+ printf ("option c with value '%s'\n", optarg);
+ break;
+
+ case '?':
+ break;
+
+ default:
+ printf ("?? getopt returned character code 0%o ??\n", c);
+ }
+ }
+
+ if (optind < argc)
+ {
+ printf ("non-option ARGV-elements: ");
+ while (optind < argc)
+ printf ("%s ", argv[optind++]);
+ printf ("\n");
+ }
+
+ exit (0);
+}
+
+#endif /* TEST */
diff --git a/lib-src/getopt_.h b/lib/getopt.in.h
index 7cccef3eee..9b0a9a58bc 100644
--- a/lib-src/getopt_.h
+++ b/lib/getopt.in.h
@@ -1,40 +1,56 @@
/* Declarations for getopt.
- Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997, 1998, 1999,
- 2001, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2007, 2009-2011 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
+ 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, or (at your option)
- any later version.
+ 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, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
-#ifndef _GETOPT_H
+#ifndef _GL_GETOPT_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* The include_next requires a split double-inclusion guard. We must
+ also inform the replacement unistd.h to not recursively use
+ <getopt.h>; our definitions will be present soon enough. */
+#if @HAVE_GETOPT_H@
+# define _GL_SYSTEM_GETOPT
+# @INCLUDE_NEXT@ @NEXT_GETOPT_H@
+# undef _GL_SYSTEM_GETOPT
+#endif
+
+#ifndef _GL_GETOPT_H
#ifndef __need_getopt
-# define _GETOPT_H 1
+# define _GL_GETOPT_H 1
#endif
/* Standalone applications should #define __GETOPT_PREFIX to an
identifier that prefixes the external functions and variables
defined in this header. When this happens, include the
headers that might declare getopt so that they will not cause
- confusion if included after this file. Then systematically rename
+ confusion if included after this file (if the system had <getopt.h>,
+ we have already included it). Then systematically rename
identifiers so that they do not collide with the system functions
and variables. Renaming avoids problems with some compilers and
linkers. */
#if defined __GETOPT_PREFIX && !defined __need_getopt
-# include <stdlib.h>
-# include <stdio.h>
-# if HAVE_UNISTD_H
+# if !@HAVE_GETOPT_H@
+# include <stdlib.h>
+# include <stdio.h>
# include <unistd.h>
# endif
# undef __need_getopt
@@ -45,6 +61,7 @@
# undef opterr
# undef optind
# undef optopt
+# undef option
# define __GETOPT_CONCAT(x, y) x ## y
# define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y)
# define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y)
@@ -55,6 +72,8 @@
# define opterr __GETOPT_ID (opterr)
# define optind __GETOPT_ID (optind)
# define optopt __GETOPT_ID (optopt)
+# define option __GETOPT_ID (option)
+# define _getopt_internal __GETOPT_ID (getopt_internal)
#endif
/* Standalone applications get correct prototypes for getopt_long and
@@ -97,13 +116,15 @@
# define __GNUC_PREREQ(maj, min) (0)
# endif
# if defined __cplusplus && __GNUC_PREREQ (2,8)
-# define __THROW throw ()
+# define __THROW throw ()
# else
# define __THROW
# endif
#endif
-#ifdef __cplusplus
+/* The definition of _GL_ARG_NONNULL is copied here. */
+
+#ifdef __cplusplus
extern "C" {
#endif
@@ -145,9 +166,9 @@ extern int optopt;
zero.
The field `has_arg' is:
- no_argument (or 0) if the option does not take an argument,
- required_argument (or 1) if the option requires an argument,
- optional_argument (or 2) if the option takes an optional argument.
+ no_argument (or 0) if the option does not take an argument,
+ required_argument (or 1) if the option requires an argument,
+ optional_argument (or 2) if the option takes an optional argument.
If the field `flag' is not NULL, it points to a variable that is set
to the value given in the field `val' when the option is found, but
@@ -172,10 +193,10 @@ struct option
/* Names for the values of the `has_arg' field of `struct option'. */
-# define no_argument 0
-# define required_argument 1
-# define optional_argument 2
-#endif /* need getopt */
+# define no_argument 0
+# define required_argument 1
+# define optional_argument 2
+#endif /* need getopt */
/* Get definitions and prototypes for functions to process the
@@ -198,26 +219,27 @@ struct option
scanning, explicitly telling `getopt' that there are no more
options.
- If OPTS begins with `--', then non-option arguments are treated as
- arguments to the option '\0'. This behavior is specific to the GNU
- `getopt'. */
+ If OPTS begins with `-', then non-option arguments are treated as
+ arguments to the option '\1'. This behavior is specific to the GNU
+ `getopt'. If OPTS begins with `+', or POSIXLY_CORRECT is set in
+ the environment, then do not permute arguments. */
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
- __THROW;
+ __THROW _GL_ARG_NONNULL ((2, 3));
#ifndef __need_getopt
extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
- const char *__shortopts,
- const struct option *__longopts, int *__longind)
- __THROW;
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind)
+ __THROW _GL_ARG_NONNULL ((2, 3));
extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
- const char *__shortopts,
- const struct option *__longopts, int *__longind)
- __THROW;
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind)
+ __THROW _GL_ARG_NONNULL ((2, 3));
#endif
-#ifdef __cplusplus
+#ifdef __cplusplus
}
#endif
@@ -225,6 +247,4 @@ extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
#undef __need_getopt
#endif /* getopt.h */
-
-/* arch-tag: e36f5607-3ac6-4cdc-9aa7-c26c6525fe9b
- (do not change this comment) */
+#endif /* getopt.h */
diff --git a/lib/getopt1.c b/lib/getopt1.c
new file mode 100644
index 0000000000..36568024cc
--- /dev/null
+++ b/lib/getopt1.c
@@ -0,0 +1,170 @@
+/* getopt_long and getopt_long_only entry points for GNU getopt.
+ Copyright (C) 1987-1994, 1996-1998, 2004, 2006, 2009-2011 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/>. */
+
+#ifdef _LIBC
+# include <getopt.h>
+#else
+# include <config.h>
+# include "getopt.h"
+#endif
+#include "getopt_int.h"
+
+#include <stdio.h>
+
+/* This needs to come after some library #include
+ to get __GNU_LIBRARY__ defined. */
+#ifdef __GNU_LIBRARY__
+#include <stdlib.h>
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+int
+getopt_long (int argc, char *__getopt_argv_const *argv, const char *options,
+ const struct option *long_options, int *opt_index)
+{
+ return _getopt_internal (argc, (char **) argv, options, long_options,
+ opt_index, 0, 0);
+}
+
+int
+_getopt_long_r (int argc, char **argv, const char *options,
+ const struct option *long_options, int *opt_index,
+ struct _getopt_data *d)
+{
+ return _getopt_internal_r (argc, argv, options, long_options, opt_index,
+ 0, d, 0);
+}
+
+/* Like getopt_long, but '-' as well as '--' can indicate a long option.
+ If an option that starts with '-' (not '--') doesn't match a long option,
+ but does match a short option, it is parsed as a short option
+ instead. */
+
+int
+getopt_long_only (int argc, char *__getopt_argv_const *argv,
+ const char *options,
+ const struct option *long_options, int *opt_index)
+{
+ return _getopt_internal (argc, (char **) argv, options, long_options,
+ opt_index, 1, 0);
+}
+
+int
+_getopt_long_only_r (int argc, char **argv, const char *options,
+ const struct option *long_options, int *opt_index,
+ struct _getopt_data *d)
+{
+ return _getopt_internal_r (argc, argv, options, long_options, opt_index,
+ 1, d, 0);
+}
+
+
+#ifdef TEST
+
+#include <stdio.h>
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ int digit_optind = 0;
+
+ while (1)
+ {
+ int this_option_optind = optind ? optind : 1;
+ int option_index = 0;
+ static const struct option long_options[] =
+ {
+ {"add", 1, 0, 0},
+ {"append", 0, 0, 0},
+ {"delete", 1, 0, 0},
+ {"verbose", 0, 0, 0},
+ {"create", 0, 0, 0},
+ {"file", 1, 0, 0},
+ {0, 0, 0, 0}
+ };
+
+ c = getopt_long (argc, argv, "abc:d:0123456789",
+ long_options, &option_index);
+ if (c == -1)
+ break;
+
+ switch (c)
+ {
+ case 0:
+ printf ("option %s", long_options[option_index].name);
+ if (optarg)
+ printf (" with arg %s", optarg);
+ printf ("\n");
+ break;
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ if (digit_optind != 0 && digit_optind != this_option_optind)
+ printf ("digits occur in two different argv-elements.\n");
+ digit_optind = this_option_optind;
+ printf ("option %c\n", c);
+ break;
+
+ case 'a':
+ printf ("option a\n");
+ break;
+
+ case 'b':
+ printf ("option b\n");
+ break;
+
+ case 'c':
+ printf ("option c with value `%s'\n", optarg);
+ break;
+
+ case 'd':
+ printf ("option d with value `%s'\n", optarg);
+ break;
+
+ case '?':
+ break;
+
+ default:
+ printf ("?? getopt returned character code 0%o ??\n", c);
+ }
+ }
+
+ if (optind < argc)
+ {
+ printf ("non-option ARGV-elements: ");
+ while (optind < argc)
+ printf ("%s ", argv[optind++]);
+ printf ("\n");
+ }
+
+ exit (0);
+}
+
+#endif /* TEST */
diff --git a/lib/getopt_.h b/lib/getopt_.h
new file mode 100644
index 0000000000..0b7ea2c3e9
--- /dev/null
+++ b/lib/getopt_.h
@@ -0,0 +1,280 @@
+/* Declarations for getopt.
+ Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2007, 2009-2011 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/>. */
+
+#ifndef _GL_GETOPT_H
+
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+
+/* The include_next requires a split double-inclusion guard. We must
+ also inform the replacement unistd.h to not recursively use
+ <getopt.h>; our definitions will be present soon enough. */
+#if HAVE_GETOPT_H
+# define _GL_SYSTEM_GETOPT
+# ifndef __GNUC__
+# include <next_getopt.h>
+# else
+# include_next <getopt.h>
+# endif
+# undef _GL_SYSTEM_GETOPT
+#endif
+
+#ifndef _GL_GETOPT_H
+
+#ifndef __need_getopt
+# define _GL_GETOPT_H 1
+#endif
+
+/* Standalone applications should #define __GETOPT_PREFIX to an
+ identifier that prefixes the external functions and variables
+ defined in this header. When this happens, include the
+ headers that might declare getopt so that they will not cause
+ confusion if included after this file (if the system had <getopt.h>,
+ we have already included it). Then systematically rename
+ identifiers so that they do not collide with the system functions
+ and variables. Renaming avoids problems with some compilers and
+ linkers. */
+#if defined __GETOPT_PREFIX && !defined __need_getopt
+# if !HAVE_GETOPT_H
+# include <stdlib.h>
+# include <stdio.h>
+# include <unistd.h>
+# endif
+# undef __need_getopt
+# undef getopt
+# undef getopt_long
+# undef getopt_long_only
+# undef optarg
+# undef opterr
+# undef optind
+# undef optopt
+# undef option
+# define __GETOPT_CONCAT(x, y) x ## y
+# define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y)
+# define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y)
+# define getopt __GETOPT_ID (getopt)
+# define getopt_long __GETOPT_ID (getopt_long)
+# define getopt_long_only __GETOPT_ID (getopt_long_only)
+# define optarg __GETOPT_ID (optarg)
+# define opterr __GETOPT_ID (opterr)
+# define optind __GETOPT_ID (optind)
+# define optopt __GETOPT_ID (optopt)
+# define option __GETOPT_ID (option)
+# define _getopt_internal __GETOPT_ID (getopt_internal)
+#endif
+
+/* Standalone applications get correct prototypes for getopt_long and
+ getopt_long_only; they declare "char **argv". libc uses prototypes
+ with "char *const *argv" that are incorrect because getopt_long and
+ getopt_long_only can permute argv; this is required for backward
+ compatibility (e.g., for LSB 2.0.1).
+
+ This used to be `#if defined __GETOPT_PREFIX && !defined __need_getopt',
+ but it caused redefinition warnings if both unistd.h and getopt.h were
+ included, since unistd.h includes getopt.h having previously defined
+ __need_getopt.
+
+ The only place where __getopt_argv_const is used is in definitions
+ of getopt_long and getopt_long_only below, but these are visible
+ only if __need_getopt is not defined, so it is quite safe to rewrite
+ the conditional as follows:
+*/
+#if !defined __need_getopt
+# if defined __GETOPT_PREFIX
+# define __getopt_argv_const /* empty */
+# else
+# define __getopt_argv_const const
+# endif
+#endif
+
+/* If __GNU_LIBRARY__ is not already defined, either we are being used
+ standalone, or this is the first header included in the source file.
+ If we are being used with glibc, we need to include <features.h>, but
+ that does not exist if we are standalone. So: if __GNU_LIBRARY__ is
+ not defined, include <ctype.h>, which will pull in <features.h> for us
+ if it's from glibc. (Why ctype.h? It's guaranteed to exist and it
+ doesn't flood the namespace with stuff the way some other headers do.) */
+#if !defined __GNU_LIBRARY__
+# include <ctype.h>
+#endif
+
+#ifndef __THROW
+# ifndef __GNUC_PREREQ
+# define __GNUC_PREREQ(maj, min) (0)
+# endif
+# if defined __cplusplus && __GNUC_PREREQ (2,8)
+# define __THROW throw ()
+# else
+# define __THROW
+# endif
+#endif
+
+/* The definition of _GL_ARG_NONNULL is copied here. */
+/* A C macro for declaring that specific arguments must not be NULL.
+ Copyright (C) 2009-2011 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
+ Lesser 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/>. */
+
+/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
+ that the values passed as arguments n, ..., m must be non-NULL pointers.
+ n = 1 stands for the first argument, n = 2 for the second argument etc. */
+#ifndef _GL_ARG_NONNULL
+# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
+# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
+# else
+# define _GL_ARG_NONNULL(params)
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+ When `getopt' finds an option that takes an argument,
+ the argument value is returned here.
+ Also, when `ordering' is RETURN_IN_ORDER,
+ each non-option ARGV-element is returned here. */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+ This is used for communication to and from the caller
+ and for communication between successive calls to `getopt'.
+
+ On entry to `getopt', zero means this is the first call; initialize.
+
+ When `getopt' returns -1, this is the index of the first of the
+ non-option elements that the caller should itself scan.
+
+ Otherwise, `optind' communicates from one call to the next
+ how much of ARGV has been scanned so far. */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+ for unrecognized options. */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized. */
+
+extern int optopt;
+
+#ifndef __need_getopt
+/* Describe the long-named options requested by the application.
+ The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+ of `struct option' terminated by an element containing a name which is
+ zero.
+
+ The field `has_arg' is:
+ no_argument (or 0) if the option does not take an argument,
+ required_argument (or 1) if the option requires an argument,
+ optional_argument (or 2) if the option takes an optional argument.
+
+ If the field `flag' is not NULL, it points to a variable that is set
+ to the value given in the field `val' when the option is found, but
+ left unchanged if the option is not found.
+
+ To have a long-named option do something other than set an `int' to
+ a compiled-in constant, such as set a value from `optarg', set the
+ option's `flag' field to zero and its `val' field to a nonzero
+ value (the equivalent single-letter option character, if there is
+ one). For long options that have a zero `flag' field, `getopt'
+ returns the contents of the `val' field. */
+
+struct option
+{
+ const char *name;
+ /* has_arg can't be an enum because some compilers complain about
+ type mismatches in all the code that assumes it is an int. */
+ int has_arg;
+ int *flag;
+ int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'. */
+
+# define no_argument 0
+# define required_argument 1
+# define optional_argument 2
+#endif /* need getopt */
+
+
+/* Get definitions and prototypes for functions to process the
+ arguments in ARGV (ARGC of them, minus the program name) for
+ options given in OPTS.
+
+ Return the option character from OPTS just read. Return -1 when
+ there are no more options. For unrecognized options, or options
+ missing arguments, `optopt' is set to the option letter, and '?' is
+ returned.
+
+ The OPTS string is a list of characters which are recognized option
+ letters, optionally followed by colons, specifying that that letter
+ takes an argument, to be placed in `optarg'.
+
+ If a letter in OPTS is followed by two colons, its argument is
+ optional. This behavior is specific to the GNU `getopt'.
+
+ The argument `--' causes premature termination of argument
+ scanning, explicitly telling `getopt' that there are no more
+ options.
+
+ If OPTS begins with `-', then non-option arguments are treated as
+ arguments to the option '\1'. This behavior is specific to the GNU
+ `getopt'. If OPTS begins with `+', or POSIXLY_CORRECT is set in
+ the environment, then do not permute arguments. */
+
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+ __THROW _GL_ARG_NONNULL ((2, 3));
+
+#ifndef __need_getopt
+extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind)
+ __THROW _GL_ARG_NONNULL ((2, 3));
+extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind)
+ __THROW _GL_ARG_NONNULL ((2, 3));
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Make sure we later can get all the definitions and declarations. */
+#undef __need_getopt
+
+#endif /* getopt.h */
+#endif /* getopt.h */
diff --git a/lib/getopt_int.h b/lib/getopt_int.h
new file mode 100644
index 0000000000..7a01a6aa42
--- /dev/null
+++ b/lib/getopt_int.h
@@ -0,0 +1,135 @@
+/* Internal declarations for getopt.
+ Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2004, 2009-2011 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/>. */
+
+#ifndef _GETOPT_INT_H
+#define _GETOPT_INT_H 1
+
+#include <getopt.h>
+
+extern int _getopt_internal (int ___argc, char **___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind,
+ int __long_only, int __posixly_correct);
+
+
+/* Reentrant versions which can handle parsing multiple argument
+ vectors at the same time. */
+
+/* Describe how to deal with options that follow non-option ARGV-elements.
+
+ If the caller did not specify anything,
+ the default is REQUIRE_ORDER if the environment variable
+ POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+ REQUIRE_ORDER means don't recognize them as options;
+ stop option processing when the first non-option is seen.
+ This is what Unix does.
+ This mode of operation is selected by either setting the environment
+ variable POSIXLY_CORRECT, or using `+' as the first character
+ of the list of option characters, or by calling getopt.
+
+ PERMUTE is the default. We permute the contents of ARGV as we
+ scan, so that eventually all the non-options are at the end.
+ This allows options to be given in any order, even with programs
+ that were not written to expect this.
+
+ RETURN_IN_ORDER is an option available to programs that were
+ written to expect options and other ARGV-elements in any order
+ and that care about the ordering of the two. We describe each
+ non-option ARGV-element as if it were the argument of an option
+ with character code 1. Using `-' as the first character of the
+ list of option characters selects this mode of operation.
+
+ The special argument `--' forces an end of option-scanning regardless
+ of the value of `ordering'. In the case of RETURN_IN_ORDER, only
+ `--' can cause `getopt' to return -1 with `optind' != ARGC. */
+
+enum __ord
+ {
+ REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+ };
+
+/* Data type for reentrant functions. */
+struct _getopt_data
+{
+ /* These have exactly the same meaning as the corresponding global
+ variables, except that they are used for the reentrant
+ versions of getopt. */
+ int optind;
+ int opterr;
+ int optopt;
+ char *optarg;
+
+ /* Internal members. */
+
+ /* True if the internal members have been initialized. */
+ int __initialized;
+
+ /* The next char to be scanned in the option-element
+ in which the last option character we returned was found.
+ This allows us to pick up the scan where we left off.
+
+ If this is zero, or a null string, it means resume the scan
+ by advancing to the next ARGV-element. */
+ char *__nextchar;
+
+ /* See __ord above. */
+ enum __ord __ordering;
+
+ /* If the POSIXLY_CORRECT environment variable is set
+ or getopt was called. */
+ int __posixly_correct;
+
+
+ /* Handle permutation of arguments. */
+
+ /* Describe the part of ARGV that contains non-options that have
+ been skipped. `first_nonopt' is the index in ARGV of the first
+ of them; `last_nonopt' is the index after the last of them. */
+
+ int __first_nonopt;
+ int __last_nonopt;
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+ int __nonoption_flags_max_len;
+ int __nonoption_flags_len;
+# endif
+};
+
+/* The initializer is necessary to set OPTIND and OPTERR to their
+ default values and to clear the initialization flag. */
+#define _GETOPT_DATA_INITIALIZER { 1, 1 }
+
+extern int _getopt_internal_r (int ___argc, char **___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind,
+ int __long_only, struct _getopt_data *__data,
+ int __posixly_correct);
+
+extern int _getopt_long_r (int ___argc, char **___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind,
+ struct _getopt_data *__data);
+
+extern int _getopt_long_only_r (int ___argc, char **___argv,
+ const char *__shortopts,
+ const struct option *__longopts,
+ int *__longind,
+ struct _getopt_data *__data);
+
+#endif /* getopt_int.h */
diff --git a/lib/gettext.h b/lib/gettext.h
new file mode 100644
index 0000000000..eb74aecb9a
--- /dev/null
+++ b/lib/gettext.h
@@ -0,0 +1,280 @@
+/* Convenience header for conditional use of GNU <libintl.h>.
+ Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2011 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, 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _LIBGETTEXT_H
+#define _LIBGETTEXT_H 1
+
+/* NLS can be disabled through the configure --disable-nls option. */
+#if ENABLE_NLS
+
+/* Get declarations of GNU message catalog functions. */
+# include <libintl.h>
+
+/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by
+ the gettext() and ngettext() macros. This is an alternative to calling
+ textdomain(), and is useful for libraries. */
+# ifdef DEFAULT_TEXT_DOMAIN
+# undef gettext
+# define gettext(Msgid) \
+ dgettext (DEFAULT_TEXT_DOMAIN, Msgid)
+# undef ngettext
+# define ngettext(Msgid1, Msgid2, N) \
+ dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N)
+# endif
+
+#else
+
+/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
+ chokes if dcgettext is defined as a macro. So include it now, to make
+ later inclusions of <locale.h> a NOP. We don't include <libintl.h>
+ as well because people using "gettext.h" will not include <libintl.h>,
+ and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
+ is OK. */
+#if defined(__sun)
+# include <locale.h>
+#endif
+
+/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
+ <libintl.h>, which chokes if dcgettext is defined as a macro. So include
+ it now, to make later inclusions of <libintl.h> a NOP. */
+#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
+# include <cstdlib>
+# if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H
+# include <libintl.h>
+# endif
+#endif
+
+/* Disabled NLS.
+ The casts to 'const char *' serve the purpose of producing warnings
+ for invalid uses of the value returned from these functions.
+ On pre-ANSI systems without 'const', the config.h file is supposed to
+ contain "#define const". */
+# undef gettext
+# define gettext(Msgid) ((const char *) (Msgid))
+# undef dgettext
+# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
+# undef dcgettext
+# define dcgettext(Domainname, Msgid, Category) \
+ ((void) (Category), dgettext (Domainname, Msgid))
+# undef ngettext
+# define ngettext(Msgid1, Msgid2, N) \
+ ((N) == 1 \
+ ? ((void) (Msgid2), (const char *) (Msgid1)) \
+ : ((void) (Msgid1), (const char *) (Msgid2)))
+# undef dngettext
+# define dngettext(Domainname, Msgid1, Msgid2, N) \
+ ((void) (Domainname), ngettext (Msgid1, Msgid2, N))
+# undef dcngettext
+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
+ ((void) (Category), dngettext (Domainname, Msgid1, Msgid2, N))
+# undef textdomain
+# define textdomain(Domainname) ((const char *) (Domainname))
+# undef bindtextdomain
+# define bindtextdomain(Domainname, Dirname) \
+ ((void) (Domainname), (const char *) (Dirname))
+# undef bind_textdomain_codeset
+# define bind_textdomain_codeset(Domainname, Codeset) \
+ ((void) (Domainname), (const char *) (Codeset))
+
+#endif
+
+/* A pseudo function call that serves as a marker for the automated
+ extraction of messages, but does not call gettext(). The run-time
+ translation is done at a different place in the code.
+ The argument, String, should be a literal string. Concatenated strings
+ and other string expressions won't work.
+ The macro's expansion is not parenthesized, so that it is suitable as
+ initializer for static 'char[]' or 'const char[]' variables. */
+#define gettext_noop(String) String
+
+/* The separator between msgctxt and msgid in a .mo file. */
+#define GETTEXT_CONTEXT_GLUE "\004"
+
+/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a
+ MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be
+ short and rarely need to change.
+ The letter 'p' stands for 'particular' or 'special'. */
+#ifdef DEFAULT_TEXT_DOMAIN
+# define pgettext(Msgctxt, Msgid) \
+ pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#else
+# define pgettext(Msgctxt, Msgid) \
+ pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#endif
+#define dpgettext(Domainname, Msgctxt, Msgid) \
+ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \
+ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category)
+#ifdef DEFAULT_TEXT_DOMAIN
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+ npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#else
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+ npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#endif
+#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \
+ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+pgettext_aux (const char *domain,
+ const char *msg_ctxt_id, const char *msgid,
+ int category)
+{
+ const char *translation = dcgettext (domain, msg_ctxt_id, category);
+ if (translation == msg_ctxt_id)
+ return msgid;
+ else
+ return translation;
+}
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+npgettext_aux (const char *domain,
+ const char *msg_ctxt_id, const char *msgid,
+ const char *msgid_plural, unsigned long int n,
+ int category)
+{
+ const char *translation =
+ dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+ if (translation == msg_ctxt_id || translation == msgid_plural)
+ return (n == 1 ? msgid : msgid_plural);
+ else
+ return translation;
+}
+
+/* The same thing extended for non-constant arguments. Here MSGCTXT and MSGID
+ can be arbitrary expressions. But for string literals these macros are
+ less efficient than those above. */
+
+#include <string.h>
+
+#define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
+ (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
+ /* || __STDC_VERSION__ >= 199901L */ )
+
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+#include <stdlib.h>
+#endif
+
+#define pgettext_expr(Msgctxt, Msgid) \
+ dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES)
+#define dpgettext_expr(Domainname, Msgctxt, Msgid) \
+ dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+dcpgettext_expr (const char *domain,
+ const char *msgctxt, const char *msgid,
+ int category)
+{
+ size_t msgctxt_len = strlen (msgctxt) + 1;
+ size_t msgid_len = strlen (msgid) + 1;
+ const char *translation;
+#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ char msg_ctxt_id[msgctxt_len + msgid_len];
+#else
+ char buf[1024];
+ char *msg_ctxt_id =
+ (msgctxt_len + msgid_len <= sizeof (buf)
+ ? buf
+ : (char *) malloc (msgctxt_len + msgid_len));
+ if (msg_ctxt_id != NULL)
+#endif
+ {
+ memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
+ msg_ctxt_id[msgctxt_len - 1] = '\004';
+ memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+ translation = dcgettext (domain, msg_ctxt_id, category);
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ if (msg_ctxt_id != buf)
+ free (msg_ctxt_id);
+#endif
+ if (translation != msg_ctxt_id)
+ return translation;
+ }
+ return msgid;
+}
+
+#define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \
+ dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+ dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+dcnpgettext_expr (const char *domain,
+ const char *msgctxt, const char *msgid,
+ const char *msgid_plural, unsigned long int n,
+ int category)
+{
+ size_t msgctxt_len = strlen (msgctxt) + 1;
+ size_t msgid_len = strlen (msgid) + 1;
+ const char *translation;
+#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ char msg_ctxt_id[msgctxt_len + msgid_len];
+#else
+ char buf[1024];
+ char *msg_ctxt_id =
+ (msgctxt_len + msgid_len <= sizeof (buf)
+ ? buf
+ : (char *) malloc (msgctxt_len + msgid_len));
+ if (msg_ctxt_id != NULL)
+#endif
+ {
+ memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
+ msg_ctxt_id[msgctxt_len - 1] = '\004';
+ memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+ translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ if (msg_ctxt_id != buf)
+ free (msg_ctxt_id);
+#endif
+ if (!(translation == msg_ctxt_id || translation == msgid_plural))
+ return translation;
+ }
+ return (n == 1 ? msgid : msgid_plural);
+}
+
+#endif /* _LIBGETTEXT_H */
diff --git a/lib/gnulib.mk b/lib/gnulib.mk
new file mode 100644
index 0000000000..ea6759e453
--- /dev/null
+++ b/lib/gnulib.mk
@@ -0,0 +1,388 @@
+## DO NOT EDIT! GENERATED AUTOMATICALLY!
+## Process this file with automake to produce Makefile.in.
+# Copyright (C) 2002-2011 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# 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=. --makefile-name=gnulib.mk --no-libtool --macro-prefix=gl --no-vc-files dtoastr getopt-gnu mktime strftime
+
+
+MOSTLYCLEANFILES += core *.stackdump
+
+noinst_LIBRARIES += libgnu.a
+
+libgnu_a_SOURCES =
+libgnu_a_LIBADD = $(gl_LIBOBJS)
+libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
+EXTRA_libgnu_a_SOURCES =
+
+## begin gnulib module arg-nonnull
+
+# The BUILT_SOURCES created by this Makefile snippet are not used via #include
+# statements but through direct file reference. Therefore this snippet must be
+# present in all Makefile.am that need it. This is ensured by the applicability
+# 'all' defined above.
+
+BUILT_SOURCES += arg-nonnull.h
+# The arg-nonnull.h that gets inserted into generated .h files is the same as
+# build-aux/arg-nonnull.h, except that it has the copyright header cut off.
+arg-nonnull.h: $(top_srcdir)/./arg-nonnull.h
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ sed -n -e '/GL_ARG_NONNULL/,$$p' \
+ < $(top_srcdir)/./arg-nonnull.h \
+ > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += arg-nonnull.h arg-nonnull.h-t
+
+ARG_NONNULL_H=arg-nonnull.h
+
+EXTRA_DIST += $(top_srcdir)/./arg-nonnull.h
+
+## end gnulib module arg-nonnull
+
+## begin gnulib module c++defs
+
+# The BUILT_SOURCES created by this Makefile snippet are not used via #include
+# statements but through direct file reference. Therefore this snippet must be
+# present in all Makefile.am that need it. This is ensured by the applicability
+# 'all' defined above.
+
+BUILT_SOURCES += c++defs.h
+# The c++defs.h that gets inserted into generated .h files is the same as
+# build-aux/c++defs.h, except that it has the copyright header cut off.
+c++defs.h: $(top_srcdir)/./c++defs.h
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ sed -n -e '/_GL_CXXDEFS/,$$p' \
+ < $(top_srcdir)/./c++defs.h \
+ > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += c++defs.h c++defs.h-t
+
+CXXDEFS_H=c++defs.h
+
+EXTRA_DIST += $(top_srcdir)/./c++defs.h
+
+## end gnulib module c++defs
+
+## begin gnulib module dtoastr
+
+libgnu_a_SOURCES += dtoastr.c
+
+EXTRA_DIST += ftoastr.c ftoastr.h
+
+EXTRA_libgnu_a_SOURCES += ftoastr.c
+
+## end gnulib module dtoastr
+
+## begin gnulib module getopt-posix
+
+BUILT_SOURCES += $(GETOPT_H)
+
+# We need the following in order to create <getopt.h> when the system
+# doesn't have one that works with the given compiler.
+getopt.h: getopt.in.h $(ARG_NONNULL_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ < $(srcdir)/getopt.in.h; \
+ } > $@-t && \
+ mv -f $@-t $@
+MOSTLYCLEANFILES += getopt.h getopt.h-t
+
+EXTRA_DIST += getopt.c getopt.in.h getopt1.c getopt_int.h
+
+EXTRA_libgnu_a_SOURCES += getopt.c getopt1.c
+
+## end gnulib module getopt-posix
+
+## begin gnulib module gettext-h
+
+libgnu_a_SOURCES += gettext.h
+
+## end gnulib module gettext-h
+
+## begin gnulib module intprops
+
+
+EXTRA_DIST += intprops.h
+
+## end gnulib module intprops
+
+## begin gnulib module mktime
+
+
+EXTRA_DIST += mktime-internal.h mktime.c
+
+EXTRA_libgnu_a_SOURCES += mktime.c
+
+## end gnulib module mktime
+
+## begin gnulib module stdbool
+
+BUILT_SOURCES += $(STDBOOL_H)
+
+# We need the following in order to create <stdbool.h> when the system
+# doesn't have one that works.
+stdbool.h: stdbool.in.h
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += stdbool.h stdbool.h-t
+
+EXTRA_DIST += stdbool.in.h
+
+## end gnulib module stdbool
+
+## begin gnulib module stddef
+
+BUILT_SOURCES += $(STDDEF_H)
+
+# We need the following in order to create <stddef.h> when the system
+# doesn't have one that works with the given compiler.
+stddef.h: stddef.in.h
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
+ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
+ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
+ < $(srcdir)/stddef.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += stddef.h stddef.h-t
+
+EXTRA_DIST += stddef.in.h
+
+## end gnulib module stddef
+
+## begin gnulib module strftime
+
+
+EXTRA_DIST += strftime.c strftime.h
+
+EXTRA_libgnu_a_SOURCES += strftime.c
+
+## end gnulib module strftime
+
+## begin gnulib module time
+
+BUILT_SOURCES += time.h
+
+# We need the following in order to create <time.h> when the system
+# doesn't have one that works with the given compiler.
+time.h: time.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \
+ -e 's|@''GNULIB_MKTIME''@|$(GNULIB_MKTIME)|g' \
+ -e 's|@''GNULIB_NANOSLEEP''@|$(GNULIB_NANOSLEEP)|g' \
+ -e 's|@''GNULIB_STRPTIME''@|$(GNULIB_STRPTIME)|g' \
+ -e 's|@''GNULIB_TIMEGM''@|$(GNULIB_TIMEGM)|g' \
+ -e 's|@''GNULIB_TIME_R''@|$(GNULIB_TIME_R)|g' \
+ -e 's|@''HAVE_DECL_LOCALTIME_R''@|$(HAVE_DECL_LOCALTIME_R)|g' \
+ -e 's|@''HAVE_NANOSLEEP''@|$(HAVE_NANOSLEEP)|g' \
+ -e 's|@''HAVE_STRPTIME''@|$(HAVE_STRPTIME)|g' \
+ -e 's|@''HAVE_TIMEGM''@|$(HAVE_TIMEGM)|g' \
+ -e 's|@''REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \
+ -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \
+ -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \
+ -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \
+ -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \
+ -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
+ -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+ < $(srcdir)/time.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += time.h time.h-t
+
+EXTRA_DIST += time.in.h
+
+## end gnulib module time
+
+## begin gnulib module time_r
+
+
+EXTRA_DIST += time_r.c
+
+EXTRA_libgnu_a_SOURCES += time_r.c
+
+## end gnulib module time_r
+
+## begin gnulib module unistd
+
+BUILT_SOURCES += unistd.h
+
+# We need the following in order to create an empty placeholder for
+# <unistd.h> when the system doesn't have one.
+unistd.h: unistd.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
+ -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
+ -e 's|@''GNULIB_CLOSE''@|$(GNULIB_CLOSE)|g' \
+ -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
+ -e 's|@''GNULIB_DUP3''@|$(GNULIB_DUP3)|g' \
+ -e 's|@''GNULIB_ENVIRON''@|$(GNULIB_ENVIRON)|g' \
+ -e 's|@''GNULIB_EUIDACCESS''@|$(GNULIB_EUIDACCESS)|g' \
+ -e 's|@''GNULIB_FACCESSAT''@|$(GNULIB_FACCESSAT)|g' \
+ -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
+ -e 's|@''GNULIB_FCHOWNAT''@|$(GNULIB_FCHOWNAT)|g' \
+ -e 's|@''GNULIB_FSYNC''@|$(GNULIB_FSYNC)|g' \
+ -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
+ -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
+ -e 's|@''GNULIB_GETDOMAINNAME''@|$(GNULIB_GETDOMAINNAME)|g' \
+ -e 's|@''GNULIB_GETDTABLESIZE''@|$(GNULIB_GETDTABLESIZE)|g' \
+ -e 's|@''GNULIB_GETGROUPS''@|$(GNULIB_GETGROUPS)|g' \
+ -e 's|@''GNULIB_GETHOSTNAME''@|$(GNULIB_GETHOSTNAME)|g' \
+ -e 's|@''GNULIB_GETLOGIN''@|$(GNULIB_GETLOGIN)|g' \
+ -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
+ -e 's|@''GNULIB_GETPAGESIZE''@|$(GNULIB_GETPAGESIZE)|g' \
+ -e 's|@''GNULIB_GETUSERSHELL''@|$(GNULIB_GETUSERSHELL)|g' \
+ -e 's|@''GNULIB_LCHOWN''@|$(GNULIB_LCHOWN)|g' \
+ -e 's|@''GNULIB_LINK''@|$(GNULIB_LINK)|g' \
+ -e 's|@''GNULIB_LINKAT''@|$(GNULIB_LINKAT)|g' \
+ -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
+ -e 's|@''GNULIB_PIPE''@|$(GNULIB_PIPE)|g' \
+ -e 's|@''GNULIB_PIPE2''@|$(GNULIB_PIPE2)|g' \
+ -e 's|@''GNULIB_PREAD''@|$(GNULIB_PREAD)|g' \
+ -e 's|@''GNULIB_PWRITE''@|$(GNULIB_PWRITE)|g' \
+ -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
+ -e 's|@''GNULIB_READLINKAT''@|$(GNULIB_READLINKAT)|g' \
+ -e 's|@''GNULIB_RMDIR''@|$(GNULIB_RMDIR)|g' \
+ -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
+ -e 's|@''GNULIB_SYMLINK''@|$(GNULIB_SYMLINK)|g' \
+ -e 's|@''GNULIB_SYMLINKAT''@|$(GNULIB_SYMLINKAT)|g' \
+ -e 's|@''GNULIB_TTYNAME_R''@|$(GNULIB_TTYNAME_R)|g' \
+ -e 's|@''GNULIB_UNISTD_H_GETOPT''@|$(GNULIB_UNISTD_H_GETOPT)|g' \
+ -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
+ -e 's|@''GNULIB_UNLINK''@|$(GNULIB_UNLINK)|g' \
+ -e 's|@''GNULIB_UNLINKAT''@|$(GNULIB_UNLINKAT)|g' \
+ -e 's|@''GNULIB_USLEEP''@|$(GNULIB_USLEEP)|g' \
+ -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \
+ < $(srcdir)/unistd.in.h | \
+ sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \
+ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
+ -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \
+ -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
+ -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \
+ -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \
+ -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \
+ -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
+ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+ -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
+ -e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \
+ -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \
+ -e 's|@''HAVE_GETLOGIN''@|$(HAVE_GETLOGIN)|g' \
+ -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
+ -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \
+ -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \
+ -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \
+ -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \
+ -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \
+ -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \
+ -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \
+ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
+ -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \
+ -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
+ -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \
+ -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \
+ -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \
+ -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \
+ -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
+ -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \
+ -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \
+ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+ -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \
+ -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \
+ -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \
+ -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
+ -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
+ -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+ -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
+ -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \
+ -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
+ -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \
+ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
+ -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \
+ -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \
+ -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \
+ -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
+ -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \
+ -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \
+ -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \
+ -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
+ -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \
+ -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \
+ -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \
+ -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \
+ -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \
+ -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \
+ -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \
+ -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \
+ -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \
+ -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \
+ -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \
+ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \
+ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+ } > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += unistd.h unistd.h-t
+
+EXTRA_DIST += unistd.in.h
+
+## end gnulib module unistd
+
+## begin gnulib module warn-on-use
+
+BUILT_SOURCES += warn-on-use.h
+# The warn-on-use.h that gets inserted into generated .h files is the same as
+# build-aux/warn-on-use.h, except that it has the copyright header cut off.
+warn-on-use.h: $(top_srcdir)/./warn-on-use.h
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ sed -n -e '/^.ifndef/,$$p' \
+ < $(top_srcdir)/./warn-on-use.h \
+ > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += warn-on-use.h warn-on-use.h-t
+
+WARN_ON_USE_H=warn-on-use.h
+
+EXTRA_DIST += $(top_srcdir)/./warn-on-use.h
+
+## end gnulib module warn-on-use
+
+
+mostlyclean-local: mostlyclean-generic
+ @for dir in '' $(MOSTLYCLEANDIRS); do \
+ if test -n "$$dir" && test -d $$dir; then \
+ echo "rmdir $$dir"; rmdir $$dir; \
+ fi; \
+ done; \
+ :
diff --git a/lib/intprops.h b/lib/intprops.h
new file mode 100644
index 0000000000..58b1b3fbf4
--- /dev/null
+++ b/lib/intprops.h
@@ -0,0 +1,86 @@
+/* intprops.h -- properties of integer types
+
+ Copyright (C) 2001-2005, 2009-2011 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. */
+
+#ifndef GL_INTPROPS_H
+# define GL_INTPROPS_H
+
+# include <limits.h>
+
+/* The extra casts in the following macros work around compiler bugs,
+ e.g., in Cray C 5.0.3.0. */
+
+/* True if the arithmetic type T is an integer type. bool counts as
+ an integer. */
+# define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
+
+/* True if negative values of the signed integer type T use two's
+ complement, ones' complement, or signed magnitude representation,
+ respectively. Much GNU code assumes two's complement, but some
+ people like to be portable to all possible C hosts. */
+# define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
+# define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
+# define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
+
+/* True if the arithmetic type T is signed. */
+# define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* The maximum and minimum values for the integer type T. These
+ macros have undefined behavior if T is signed and has padding bits.
+ If this is a problem for you, please let us know how to fix it for
+ your host. */
+# define TYPE_MINIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) 0 \
+ : TYPE_SIGNED_MAGNITUDE (t) \
+ ? ~ (t) 0 \
+ : ~ TYPE_MAXIMUM (t)))
+# define TYPE_MAXIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) -1 \
+ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
+
+/* Return zero if T can be determined to be an unsigned type.
+ Otherwise, return 1.
+ When compiling with GCC, INT_STRLEN_BOUND uses this macro to obtain a
+ tighter bound. Otherwise, it overestimates the true bound by one byte
+ when applied to unsigned types of size 2, 4, 16, ... bytes.
+ The symbol signed_type_or_expr__ is private to this header file. */
+# if __GNUC__ >= 2
+# define signed_type_or_expr__(t) TYPE_SIGNED (__typeof__ (t))
+# else
+# define signed_type_or_expr__(t) 1
+# endif
+
+/* Bound on length of the string representing an unsigned integer
+ value representable in B bits. log10 (2.0) < 146/485. The
+ smallest value of B where this bound is not tight is 2621. */
+# define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485)
+
+/* Bound on length of the string representing an integer type or expression T.
+ Subtract 1 for the sign bit if T is signed, and then add 1 more for
+ a minus sign if needed. */
+# define INT_STRLEN_BOUND(t) \
+ (INT_BITS_STRLEN_BOUND (sizeof (t) * CHAR_BIT - signed_type_or_expr__ (t)) \
+ + signed_type_or_expr__ (t))
+
+/* Bound on buffer size needed to represent an integer type or expression T,
+ including the terminating null. */
+# define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
+
+#endif /* GL_INTPROPS_H */
diff --git a/lib/makefile.w32-in b/lib/makefile.w32-in
new file mode 100644
index 0000000000..cf74288e2c
--- /dev/null
+++ b/lib/makefile.w32-in
@@ -0,0 +1,154 @@
+# -*- Makefile -*- for GNU Emacs on the Microsoft W32 API.
+# Copyright (C) 2011 Free Software Foundation, Inc.
+
+# 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/>.
+
+ALL = gnulib
+
+.PHONY: $(ALL)
+
+LOCAL_FLAGS = -DHAVE_CONFIG_H=1 -I. -I../nt/inc -I../src
+LIBS =
+
+GNULIBOBJS = $(BLD)/dtoastr.$(O) $(BLD)/getopt.$(O) $(BLD)/getopt1.$(O)
+
+#
+# Build the library
+#
+$(BLD)/libgnu.$(A): $(GNULIBOBJS)
+ - $(DEL) $@
+ $(AR) $(AR_OUT)$@ $(ALL_DEPS)
+
+gnulib: stamp_BLD $(BLD)/libgnu.$(A)
+
+#
+# Build everything
+#
+all: stamp_BLD $(ALL)
+
+### TAGS ###
+
+TAGS:
+ ../lib-src/$(BLD)/etags.exe *.c *.h
+
+### DEPENDENCIES ###
+
+EMACS_ROOT = ..
+SRC = .
+
+$(BLD)/dtoastr.$(O) : \
+ $(SRC)/dtoastr.c \
+ $(SRC)/ftoastr.c \
+ $(SRC)/ftoastr.h \
+ $(SRC)/intprops.h \
+ $(EMACS_ROOT)/src/config.h
+
+$(BLD)/getopt.$(O) : \
+ $(SRC)/getopt.c \
+ $(SRC)/getopt.h \
+ $(SRC)/getopt_int.h \
+ $(EMACS_ROOT)/src/s/ms-w32.h \
+ $(EMACS_ROOT)/src/m/intel386.h \
+ $(EMACS_ROOT)/src/config.h
+
+$(BLD)/getopt1.$(O) : \
+ $(SRC)/getopt1.c \
+ $(SRC)/getopt.h \
+ $(SRC)/getopt_int.h \
+ $(EMACS_ROOT)/src/s/ms-w32.h \
+ $(EMACS_ROOT)/src/m/intel386.h \
+ $(EMACS_ROOT)/src/config.h
+
+# The following dependencies are for supporting parallel builds, where
+# we must make sure $(BLD) exists before any compilation starts.
+#
+$(BLD)/dtoastr.$(O) $(BLD)/getopt.$(O) $(BLD)/getopt1.$(O): stamp_BLD
+
+#
+# Headers we would preprocess if we could.
+#
+getopt.h: getopt_.h
+ $(CP) $(ALL_DEPS) $@
+
+#
+# Maintenance
+#
+clean:
+ - $(DEL) $(COMPILER_TEMP_FILES)
+ - $(DEL) getopt.h
+ - $(DEL_TREE) $(OBJDIR)
+ - $(DEL) stamp_BLD
+
+distclean: cleanall
+ - $(DEL) TAGS
+ - $(DEL) Makefile
+
+maintainer-clean: distclean
+ - $(DEL) getopt_.h
+
+cleanall: clean
+ - $(DEL_TREE) obj
+ - $(DEL_TREE) obj-spd
+ - $(DEL_TREE) oo
+ - $(DEL_TREE) oo-spd
+
+# A dummy target to force other targets to be evaluated.
+doit:
+
+getopt_.h: getopt.in.h $(ARG_NONNULL_H)
+ $(MAKE) $(MFLAGS) getopt_.h-$(SHELLTYPE)
+
+getopt_.h-CMD: doit
+ @echo getopt.in.h or $(ARG_NONNULL_H) is newer than getopt_.h.
+ @echo Run "$(MAKETYPE) getopt_h" in the lib/ subdirectory.
+ @echo You will need GNU Sed to be installed.
+ exit -1
+
+getopt_.h-SH: doit
+ @echo getopt.in.h or $(ARG_NONNULL_H) is newer than getopt_.h.
+ @echo Run '"$(MAKETYPE) getopt_h"' in the lib/ subdirectory.
+ @echo You will need GNU Sed to be installed.
+ exit -1
+
+# Generating getopt_.h from getopt.in.h.
+#
+# To avoid requiring all end users to install Sed, we have below
+# a maintainer-only target that produces getopt_.h from getopt.in.h.
+# For easier maintenance, all the strings that replace the @FOO@
+# placeholder are defined as Make macros below.
+
+HAVE_GETOPT_H = HAVE_GETOPT_H
+INCLUDE_NEXT = include_next
+PRAGMA_SYSTEM_HEADER = \#pragma GCC system_header
+PRAGMA_COLUMNS =
+NEXT_GETOPT_H = <getopt.h>
+ARG_NONNULL_H = ../arg-nonnull.h
+
+getopt_h:
+ - $(DEL) getopt_.h-t getopt_.h
+ sed -e "s!@HAVE_GETOPT_H@!$(HAVE_GETOPT_H)!g" \
+ -e "s!@INCLUDE_NEXT@!$(INCLUDE_NEXT)!g" \
+ -e "s!@PRAGMA_SYSTEM_HEADER@!$(PRAGMA_SYSTEM_HEADER)!g" \
+ -e "s!@PRAGMA_COLUMNS@!$(PRAGMA_COLUMNS)!g" \
+ -e "s!@NEXT_GETOPT_H@!$(NEXT_GETOPT_H)!g" \
+ -e "/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)" \
+ -e "/^\# include_next/i # ifndef __GNUC__" \
+ -e "/^\# include_next/i # include <next_getopt.h>" \
+ -e "/^\# include_next/i # else" \
+ -e "/^\# include_next/a # endif" \
+ < getopt.in.h > getopt_.h-t
+ $(CP) getopt_.h-t getopt_.h
+ - $(DEL) getopt_.h-t
diff --git a/lib/mktime-internal.h b/lib/mktime-internal.h
new file mode 100644
index 0000000000..4287acf4ac
--- /dev/null
+++ b/lib/mktime-internal.h
@@ -0,0 +1,4 @@
+#include <time.h>
+time_t mktime_internal (struct tm *,
+ struct tm * (*) (time_t const *, struct tm *),
+ time_t *);
diff --git a/lib/mktime.c b/lib/mktime.c
new file mode 100644
index 0000000000..c68ad9ba26
--- /dev/null
+++ b/lib/mktime.c
@@ -0,0 +1,737 @@
+/* Convert a `struct tm' to a time_t value.
+ Copyright (C) 1993-1999, 2002-2007, 2009-2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Paul Eggert <[email protected]>.
+
+ 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, 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Define this to have a standalone program to test this implementation of
+ mktime. */
+/* #define DEBUG 1 */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+/* Some of the code in this file assumes that signed integer overflow
+ silently wraps around. This assumption can't easily be programmed
+ around, nor can it be checked for portably at compile-time or
+ easily eliminated at run-time.
+
+ Define WRAPV to 1 if the assumption is valid. Otherwise, define it
+ to 0; this forces the use of slower code that, while not guaranteed
+ by the C Standard, works on all production platforms that we know
+ about. */
+#ifndef WRAPV
+# if (__GNUC__ == 4 && 4 <= __GNUC_MINOR__) || 4 < __GNUC__
+# pragma GCC optimize ("wrapv")
+# define WRAPV 1
+# else
+# define WRAPV 0
+# endif
+#endif
+
+/* Assume that leap seconds are possible, unless told otherwise.
+ If the host has a `zic' command with a `-L leapsecondfilename' option,
+ then it supports leap seconds; otherwise it probably doesn't. */
+#ifndef LEAP_SECONDS_POSSIBLE
+# define LEAP_SECONDS_POSSIBLE 1
+#endif
+
+#include <time.h>
+
+#include <limits.h>
+
+#include <string.h> /* For the real memcpy prototype. */
+
+#if DEBUG
+# include <stdio.h>
+# include <stdlib.h>
+/* Make it work even if the system's libc has its own mktime routine. */
+# undef mktime
+# define mktime my_mktime
+#endif /* DEBUG */
+
+/* Verify a requirement at compile-time (unlike assert, which is runtime). */
+#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; }
+
+/* A signed type that is at least one bit wider than int. */
+#if INT_MAX <= LONG_MAX / 2
+typedef long int long_int;
+#else
+typedef long long int long_int;
+#endif
+verify (long_int_is_wide_enough, INT_MAX == INT_MAX * (long_int) 2 / 2);
+
+/* Shift A right by B bits portably, by dividing A by 2**B and
+ truncating towards minus infinity. A and B should be free of side
+ effects, and B should be in the range 0 <= B <= INT_BITS - 2, where
+ INT_BITS is the number of useful bits in an int. GNU code can
+ assume that INT_BITS is at least 32.
+
+ ISO C99 says that A >> B is implementation-defined if A < 0. Some
+ implementations (e.g., UNICOS 9.0 on a Cray Y-MP EL) don't shift
+ right in the usual way when A < 0, so SHR falls back on division if
+ ordinary A >> B doesn't seem to be the usual signed shift. */
+#define SHR(a, b) \
+ ((-1 >> 1 == -1 \
+ && (long_int) -1 >> 1 == -1 \
+ && ((time_t) -1 >> 1 == -1 || ! TYPE_SIGNED (time_t))) \
+ ? (a) >> (b) \
+ : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0))
+
+/* The extra casts in the following macros work around compiler bugs,
+ e.g., in Cray C 5.0.3.0. */
+
+/* True if the arithmetic type T is an integer type. bool counts as
+ an integer. */
+#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
+
+/* True if negative values of the signed integer type T use two's
+ complement, or if T is an unsigned integer type. */
+#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
+
+/* True if the arithmetic type T is signed. */
+#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* The maximum and minimum values for the integer type T. These
+ macros have undefined behavior if T is signed and has padding bits.
+ If this is a problem for you, please let us know how to fix it for
+ your host. */
+#define TYPE_MINIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) 0 \
+ : ~ TYPE_MAXIMUM (t)))
+#define TYPE_MAXIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) -1 \
+ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
+
+#ifndef TIME_T_MIN
+# define TIME_T_MIN TYPE_MINIMUM (time_t)
+#endif
+#ifndef TIME_T_MAX
+# define TIME_T_MAX TYPE_MAXIMUM (time_t)
+#endif
+#define TIME_T_MIDPOINT (SHR (TIME_T_MIN + TIME_T_MAX, 1) + 1)
+
+verify (time_t_is_integer, TYPE_IS_INTEGER (time_t));
+verify (twos_complement_arithmetic,
+ (TYPE_TWOS_COMPLEMENT (int)
+ && TYPE_TWOS_COMPLEMENT (long_int)
+ && TYPE_TWOS_COMPLEMENT (time_t)));
+
+#define EPOCH_YEAR 1970
+#define TM_YEAR_BASE 1900
+verify (base_year_is_a_multiple_of_100, TM_YEAR_BASE % 100 == 0);
+
+/* Return 1 if YEAR + TM_YEAR_BASE is a leap year. */
+static inline int
+leapyear (long_int year)
+{
+ /* Don't add YEAR to TM_YEAR_BASE, as that might overflow.
+ Also, work even if YEAR is negative. */
+ return
+ ((year & 3) == 0
+ && (year % 100 != 0
+ || ((year / 100) & 3) == (- (TM_YEAR_BASE / 100) & 3)));
+}
+
+/* How many days come before each month (0-12). */
+#ifndef _LIBC
+static
+#endif
+const unsigned short int __mon_yday[2][13] =
+ {
+ /* Normal years. */
+ { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 },
+ /* Leap years. */
+ { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 }
+ };
+
+
+#ifndef _LIBC
+/* Portable standalone applications should supply a <time.h> that
+ declares a POSIX-compliant localtime_r, for the benefit of older
+ implementations that lack localtime_r or have a nonstandard one.
+ See the gnulib time_r module for one way to implement this. */
+# undef __localtime_r
+# define __localtime_r localtime_r
+# define __mktime_internal mktime_internal
+# include "mktime-internal.h"
+#endif
+
+/* Return 1 if the values A and B differ according to the rules for
+ tm_isdst: A and B differ if one is zero and the other positive. */
+static int
+isdst_differ (int a, int b)
+{
+ return (!a != !b) & (0 <= a) & (0 <= b);
+}
+
+/* Return an integer value measuring (YEAR1-YDAY1 HOUR1:MIN1:SEC1) -
+ (YEAR0-YDAY0 HOUR0:MIN0:SEC0) in seconds, assuming that the clocks
+ were not adjusted between the time stamps.
+
+ The YEAR values uses the same numbering as TP->tm_year. Values
+ need not be in the usual range. However, YEAR1 must not be less
+ than 2 * INT_MIN or greater than 2 * INT_MAX.
+
+ The result may overflow. It is the caller's responsibility to
+ detect overflow. */
+
+static inline time_t
+ydhms_diff (long_int year1, long_int yday1, int hour1, int min1, int sec1,
+ int year0, int yday0, int hour0, int min0, int sec0)
+{
+ verify (C99_integer_division, -1 / 2 == 0);
+
+ /* Compute intervening leap days correctly even if year is negative.
+ Take care to avoid integer overflow here. */
+ int a4 = SHR (year1, 2) + SHR (TM_YEAR_BASE, 2) - ! (year1 & 3);
+ int b4 = SHR (year0, 2) + SHR (TM_YEAR_BASE, 2) - ! (year0 & 3);
+ int a100 = a4 / 25 - (a4 % 25 < 0);
+ int b100 = b4 / 25 - (b4 % 25 < 0);
+ int a400 = SHR (a100, 2);
+ int b400 = SHR (b100, 2);
+ int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
+
+ /* Compute the desired time in time_t precision. Overflow might
+ occur here. */
+ time_t tyear1 = year1;
+ time_t years = tyear1 - year0;
+ time_t days = 365 * years + yday1 - yday0 + intervening_leap_days;
+ time_t hours = 24 * days + hour1 - hour0;
+ time_t minutes = 60 * hours + min1 - min0;
+ time_t seconds = 60 * minutes + sec1 - sec0;
+ return seconds;
+}
+
+/* Return the average of A and B, even if A + B would overflow. */
+static time_t
+time_t_avg (time_t a, time_t b)
+{
+ return SHR (a, 1) + SHR (b, 1) + (a & b & 1);
+}
+
+/* Return 1 if A + B does not overflow. If time_t is unsigned and if
+ B's top bit is set, assume that the sum represents A - -B, and
+ return 1 if the subtraction does not wrap around. */
+static int
+time_t_add_ok (time_t a, time_t b)
+{
+ if (! TYPE_SIGNED (time_t))
+ {
+ time_t sum = a + b;
+ return (sum < a) == (TIME_T_MIDPOINT <= b);
+ }
+ else if (WRAPV)
+ {
+ time_t sum = a + b;
+ return (sum < a) == (b < 0);
+ }
+ else
+ {
+ time_t avg = time_t_avg (a, b);
+ return TIME_T_MIN / 2 <= avg && avg <= TIME_T_MAX / 2;
+ }
+}
+
+/* Return 1 if A + B does not overflow. */
+static int
+time_t_int_add_ok (time_t a, int b)
+{
+ verify (int_no_wider_than_time_t, INT_MAX <= TIME_T_MAX);
+ if (WRAPV)
+ {
+ time_t sum = a + b;
+ return (sum < a) == (b < 0);
+ }
+ else
+ {
+ int a_odd = a & 1;
+ time_t avg = SHR (a, 1) + (SHR (b, 1) + (a_odd & b));
+ return TIME_T_MIN / 2 <= avg && avg <= TIME_T_MAX / 2;
+ }
+}
+
+/* Return a time_t value corresponding to (YEAR-YDAY HOUR:MIN:SEC),
+ assuming that *T corresponds to *TP and that no clock adjustments
+ occurred between *TP and the desired time.
+ If TP is null, return a value not equal to *T; this avoids false matches.
+ If overflow occurs, yield the minimal or maximal value, except do not
+ yield a value equal to *T. */
+static time_t
+guess_time_tm (long_int year, long_int yday, int hour, int min, int sec,
+ const time_t *t, const struct tm *tp)
+{
+ if (tp)
+ {
+ time_t d = ydhms_diff (year, yday, hour, min, sec,
+ tp->tm_year, tp->tm_yday,
+ tp->tm_hour, tp->tm_min, tp->tm_sec);
+ if (time_t_add_ok (*t, d))
+ return *t + d;
+ }
+
+ /* Overflow occurred one way or another. Return the nearest result
+ that is actually in range, except don't report a zero difference
+ if the actual difference is nonzero, as that would cause a false
+ match; and don't oscillate between two values, as that would
+ confuse the spring-forward gap detector. */
+ return (*t < TIME_T_MIDPOINT
+ ? (*t <= TIME_T_MIN + 1 ? *t + 1 : TIME_T_MIN)
+ : (TIME_T_MAX - 1 <= *t ? *t - 1 : TIME_T_MAX));
+}
+
+/* Use CONVERT to convert *T to a broken down time in *TP.
+ If *T is out of range for conversion, adjust it so that
+ it is the nearest in-range value and then convert that. */
+static struct tm *
+ranged_convert (struct tm *(*convert) (const time_t *, struct tm *),
+ time_t *t, struct tm *tp)
+{
+ struct tm *r = convert (t, tp);
+
+ if (!r && *t)
+ {
+ time_t bad = *t;
+ time_t ok = 0;
+
+ /* BAD is a known unconvertible time_t, and OK is a known good one.
+ Use binary search to narrow the range between BAD and OK until
+ they differ by 1. */
+ while (bad != ok + (bad < 0 ? -1 : 1))
+ {
+ time_t mid = *t = time_t_avg (ok, bad);
+ r = convert (t, tp);
+ if (r)
+ ok = mid;
+ else
+ bad = mid;
+ }
+
+ if (!r && ok)
+ {
+ /* The last conversion attempt failed;
+ revert to the most recent successful attempt. */
+ *t = ok;
+ r = convert (t, tp);
+ }
+ }
+
+ return r;
+}
+
+
+/* Convert *TP to a time_t value, inverting
+ the monotonic and mostly-unit-linear conversion function CONVERT.
+ Use *OFFSET to keep track of a guess at the offset of the result,
+ compared to what the result would be for UTC without leap seconds.
+ If *OFFSET's guess is correct, only one CONVERT call is needed.
+ This function is external because it is used also by timegm.c. */
+time_t
+__mktime_internal (struct tm *tp,
+ struct tm *(*convert) (const time_t *, struct tm *),
+ time_t *offset)
+{
+ time_t t, gt, t0, t1, t2;
+ struct tm tm;
+
+ /* The maximum number of probes (calls to CONVERT) should be enough
+ to handle any combinations of time zone rule changes, solar time,
+ leap seconds, and oscillations around a spring-forward gap.
+ POSIX.1 prohibits leap seconds, but some hosts have them anyway. */
+ int remaining_probes = 6;
+
+ /* Time requested. Copy it in case CONVERT modifies *TP; this can
+ occur if TP is localtime's returned value and CONVERT is localtime. */
+ int sec = tp->tm_sec;
+ int min = tp->tm_min;
+ int hour = tp->tm_hour;
+ int mday = tp->tm_mday;
+ int mon = tp->tm_mon;
+ int year_requested = tp->tm_year;
+ int isdst = tp->tm_isdst;
+
+ /* 1 if the previous probe was DST. */
+ int dst2;
+
+ /* Ensure that mon is in range, and set year accordingly. */
+ int mon_remainder = mon % 12;
+ int negative_mon_remainder = mon_remainder < 0;
+ int mon_years = mon / 12 - negative_mon_remainder;
+ long_int lyear_requested = year_requested;
+ long_int year = lyear_requested + mon_years;
+
+ /* The other values need not be in range:
+ the remaining code handles minor overflows correctly,
+ assuming int and time_t arithmetic wraps around.
+ Major overflows are caught at the end. */
+
+ /* Calculate day of year from year, month, and day of month.
+ The result need not be in range. */
+ int mon_yday = ((__mon_yday[leapyear (year)]
+ [mon_remainder + 12 * negative_mon_remainder])
+ - 1);
+ long_int lmday = mday;
+ long_int yday = mon_yday + lmday;
+
+ time_t guessed_offset = *offset;
+
+ int sec_requested = sec;
+
+ if (LEAP_SECONDS_POSSIBLE)
+ {
+ /* Handle out-of-range seconds specially,
+ since ydhms_tm_diff assumes every minute has 60 seconds. */
+ if (sec < 0)
+ sec = 0;
+ if (59 < sec)
+ sec = 59;
+ }
+
+ /* Invert CONVERT by probing. First assume the same offset as last
+ time. */
+
+ t0 = ydhms_diff (year, yday, hour, min, sec,
+ EPOCH_YEAR - TM_YEAR_BASE, 0, 0, 0, - guessed_offset);
+
+ if (TIME_T_MAX / INT_MAX / 366 / 24 / 60 / 60 < 3)
+ {
+ /* time_t isn't large enough to rule out overflows, so check
+ for major overflows. A gross check suffices, since if t0
+ has overflowed, it is off by a multiple of TIME_T_MAX -
+ TIME_T_MIN + 1. So ignore any component of the difference
+ that is bounded by a small value. */
+
+ /* Approximate log base 2 of the number of time units per
+ biennium. A biennium is 2 years; use this unit instead of
+ years to avoid integer overflow. For example, 2 average
+ Gregorian years are 2 * 365.2425 * 24 * 60 * 60 seconds,
+ which is 63113904 seconds, and rint (log2 (63113904)) is
+ 26. */
+ int ALOG2_SECONDS_PER_BIENNIUM = 26;
+ int ALOG2_MINUTES_PER_BIENNIUM = 20;
+ int ALOG2_HOURS_PER_BIENNIUM = 14;
+ int ALOG2_DAYS_PER_BIENNIUM = 10;
+ int LOG2_YEARS_PER_BIENNIUM = 1;
+
+ int approx_requested_biennia =
+ (SHR (year_requested, LOG2_YEARS_PER_BIENNIUM)
+ - SHR (EPOCH_YEAR - TM_YEAR_BASE, LOG2_YEARS_PER_BIENNIUM)
+ + SHR (mday, ALOG2_DAYS_PER_BIENNIUM)
+ + SHR (hour, ALOG2_HOURS_PER_BIENNIUM)
+ + SHR (min, ALOG2_MINUTES_PER_BIENNIUM)
+ + (LEAP_SECONDS_POSSIBLE
+ ? 0
+ : SHR (sec, ALOG2_SECONDS_PER_BIENNIUM)));
+
+ int approx_biennia = SHR (t0, ALOG2_SECONDS_PER_BIENNIUM);
+ int diff = approx_biennia - approx_requested_biennia;
+ int abs_diff = diff < 0 ? -1 - diff : diff;
+
+ /* IRIX 4.0.5 cc miscalculates TIME_T_MIN / 3: it erroneously
+ gives a positive value of 715827882. Setting a variable
+ first then doing math on it seems to work.
+ time_t time_t_max = TIME_T_MAX;
+ time_t time_t_min = TIME_T_MIN;
+ time_t overflow_threshold =
+ (time_t_max / 3 - time_t_min / 3) >> ALOG2_SECONDS_PER_BIENNIUM;
+
+ if (overflow_threshold < abs_diff)
+ {
+ /* Overflow occurred. Try repairing it; this might work if
+ the time zone offset is enough to undo the overflow. */
+ time_t repaired_t0 = -1 - t0;
+ approx_biennia = SHR (repaired_t0, ALOG2_SECONDS_PER_BIENNIUM);
+ diff = approx_biennia - approx_requested_biennia;
+ abs_diff = diff < 0 ? -1 - diff : diff;
+ if (overflow_threshold < abs_diff)
+ return -1;
+ guessed_offset += repaired_t0 - t0;
+ t0 = repaired_t0;
+ }
+ }
+
+ /* Repeatedly use the error to improve the guess. */
+
+ for (t = t1 = t2 = t0, dst2 = 0;
+ (gt = guess_time_tm (year, yday, hour, min, sec, &t,
+ ranged_convert (convert, &t, &tm)),
+ t != gt);
+ t1 = t2, t2 = t, t = gt, dst2 = tm.tm_isdst != 0)
+ if (t == t1 && t != t2
+ && (tm.tm_isdst < 0
+ || (isdst < 0
+ ? dst2 <= (tm.tm_isdst != 0)
+ : (isdst != 0) != (tm.tm_isdst != 0))))
+ /* We can't possibly find a match, as we are oscillating
+ between two values. The requested time probably falls
+ within a spring-forward gap of size GT - T. Follow the common
+ practice in this case, which is to return a time that is GT - T
+ away from the requested time, preferring a time whose
+ tm_isdst differs from the requested value. (If no tm_isdst
+ was requested and only one of the two values has a nonzero
+ tm_isdst, prefer that value.) In practice, this is more
+ useful than returning -1. */
+ goto offset_found;
+ else if (--remaining_probes == 0)
+ return -1;
+
+ /* We have a match. Check whether tm.tm_isdst has the requested
+ value, if any. */
+ if (isdst_differ (isdst, tm.tm_isdst))
+ {
+ /* tm.tm_isdst has the wrong value. Look for a neighboring
+ time with the right value, and use its UTC offset.
+
+ Heuristic: probe the adjacent timestamps in both directions,
+ looking for the desired isdst. This should work for all real
+ time zone histories in the tz database. */
+
+ /* Distance between probes when looking for a DST boundary. In
+ tzdata2003a, the shortest period of DST is 601200 seconds
+ (e.g., America/Recife starting 2000-10-08 01:00), and the
+ shortest period of non-DST surrounded by DST is 694800
+ seconds (Africa/Tunis starting 1943-04-17 01:00). Use the
+ minimum of these two values, so we don't miss these short
+ periods when probing. */
+ int stride = 601200;
+
+ /* The longest period of DST in tzdata2003a is 536454000 seconds
+ (e.g., America/Jujuy starting 1946-10-01 01:00). The longest
+ period of non-DST is much longer, but it makes no real sense
+ to search for more than a year of non-DST, so use the DST
+ max. */
+ int duration_max = 536454000;
+
+ /* Search in both directions, so the maximum distance is half
+ the duration; add the stride to avoid off-by-1 problems. */
+ int delta_bound = duration_max / 2 + stride;
+
+ int delta, direction;
+
+ for (delta = stride; delta < delta_bound; delta += stride)
+ for (direction = -1; direction <= 1; direction += 2)
+ if (time_t_int_add_ok (t, delta * direction))
+ {
+ time_t ot = t + delta * direction;
+ struct tm otm;
+ ranged_convert (convert, &ot, &otm);
+ if (! isdst_differ (isdst, otm.tm_isdst))
+ {
+ /* We found the desired tm_isdst.
+ Extrapolate back to the desired time. */
+ t = guess_time_tm (year, yday, hour, min, sec, &ot, &otm);
+ ranged_convert (convert, &t, &tm);
+ goto offset_found;
+ }
+ }
+ }
+
+ offset_found:
+ *offset = guessed_offset + t - t0;
+
+ if (LEAP_SECONDS_POSSIBLE && sec_requested != tm.tm_sec)
+ {
+ /* Adjust time to reflect the tm_sec requested, not the normalized value.
+ Also, repair any damage from a false match due to a leap second. */
+ int sec_adjustment = (sec == 0 && tm.tm_sec == 60) - sec;
+ if (! time_t_int_add_ok (t, sec_requested))
+ return -1;
+ t1 = t + sec_requested;
+ if (! time_t_int_add_ok (t1, sec_adjustment))
+ return -1;
+ t2 = t1 + sec_adjustment;
+ if (! convert (&t2, &tm))
+ return -1;
+ t = t2;
+ }
+
+ *tp = tm;
+ return t;
+}
+
+
+/* FIXME: This should use a signed type wide enough to hold any UTC
+ offset in seconds. 'int' should be good enough for GNU code. We
+ can't fix this unilaterally though, as other modules invoke
+ __mktime_internal. */
+static time_t localtime_offset;
+
+/* Convert *TP to a time_t value. */
+time_t
+mktime (struct tm *tp)
+{
+#ifdef _LIBC
+ /* POSIX.1 8.1.1 requires that whenever mktime() is called, the
+ time zone names contained in the external variable `tzname' shall
+ be set as if the tzset() function had been called. */
+ __tzset ();
+#endif
+
+ return __mktime_internal (tp, __localtime_r, &localtime_offset);
+}
+
+#ifdef weak_alias
+weak_alias (mktime, timelocal)
+#endif
+
+#ifdef _LIBC
+libc_hidden_def (mktime)
+libc_hidden_weak (timelocal)
+#endif
+
+#if DEBUG
+
+static int
+not_equal_tm (const struct tm *a, const struct tm *b)
+{
+ return ((a->tm_sec ^ b->tm_sec)
+ | (a->tm_min ^ b->tm_min)
+ | (a->tm_hour ^ b->tm_hour)
+ | (a->tm_mday ^ b->tm_mday)
+ | (a->tm_mon ^ b->tm_mon)
+ | (a->tm_year ^ b->tm_year)
+ | (a->tm_yday ^ b->tm_yday)
+ | isdst_differ (a->tm_isdst, b->tm_isdst));
+}
+
+static void
+print_tm (const struct tm *tp)
+{
+ if (tp)
+ printf ("%04d-%02d-%02d %02d:%02d:%02d yday %03d wday %d isdst %d",
+ tp->tm_year + TM_YEAR_BASE, tp->tm_mon + 1, tp->tm_mday,
+ tp->tm_hour, tp->tm_min, tp->tm_sec,
+ tp->tm_yday, tp->tm_wday, tp->tm_isdst);
+ else
+ printf ("0");
+}
+
+static int
+check_result (time_t tk, struct tm tmk, time_t tl, const struct tm *lt)
+{
+ if (tk != tl || !lt || not_equal_tm (&tmk, lt))
+ {
+ printf ("mktime (");
+ print_tm (lt);
+ printf (")\nyields (");
+ print_tm (&tmk);
+ printf (") == %ld, should be %ld\n", (long int) tk, (long int) tl);
+ return 1;
+ }
+
+ return 0;
+}
+
+int
+main (int argc, char **argv)
+{
+ int status = 0;
+ struct tm tm, tmk, tml;
+ struct tm *lt;
+ time_t tk, tl, tl1;
+ char trailer;
+
+ if ((argc == 3 || argc == 4)
+ && (sscanf (argv[1], "%d-%d-%d%c",
+ &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &trailer)
+ == 3)
+ && (sscanf (argv[2], "%d:%d:%d%c",
+ &tm.tm_hour, &tm.tm_min, &tm.tm_sec, &trailer)
+ == 3))
+ {
+ tm.tm_year -= TM_YEAR_BASE;
+ tm.tm_mon--;
+ tm.tm_isdst = argc == 3 ? -1 : atoi (argv[3]);
+ tmk = tm;
+ tl = mktime (&tmk);
+ lt = localtime (&tl);
+ if (lt)
+ {
+ tml = *lt;
+ lt = &tml;
+ }
+ printf ("mktime returns %ld == ", (long int) tl);
+ print_tm (&tmk);
+ printf ("\n");
+ status = check_result (tl, tmk, tl, lt);
+ }
+ else if (argc == 4 || (argc == 5 && strcmp (argv[4], "-") == 0))
+ {
+ time_t from = atol (argv[1]);
+ time_t by = atol (argv[2]);
+ time_t to = atol (argv[3]);
+
+ if (argc == 4)
+ for (tl = from; by < 0 ? to <= tl : tl <= to; tl = tl1)
+ {
+ lt = localtime (&tl);
+ if (lt)
+ {
+ tmk = tml = *lt;
+ tk = mktime (&tmk);
+ status |= check_result (tk, tmk, tl, &tml);
+ }
+ else
+ {
+ printf ("localtime (%ld) yields 0\n", (long int) tl);
+ status = 1;
+ }
+ tl1 = tl + by;
+ if ((tl1 < tl) != (by < 0))
+ break;
+ }
+ else
+ for (tl = from; by < 0 ? to <= tl : tl <= to; tl = tl1)
+ {
+ /* Null benchmark. */
+ lt = localtime (&tl);
+ if (lt)
+ {
+ tmk = tml = *lt;
+ tk = tl;
+ status |= check_result (tk, tmk, tl, &tml);
+ }
+ else
+ {
+ printf ("localtime (%ld) yields 0\n", (long int) tl);
+ status = 1;
+ }
+ tl1 = tl + by;
+ if ((tl1 < tl) != (by < 0))
+ break;
+ }
+ }
+ else
+ printf ("Usage:\
+\t%s YYYY-MM-DD HH:MM:SS [ISDST] # Test given time.\n\
+\t%s FROM BY TO # Test values FROM, FROM+BY, ..., TO.\n\
+\t%s FROM BY TO - # Do not test those values (for benchmark).\n",
+ argv[0], argv[0], argv[0]);
+
+ return status;
+}
+
+#endif /* DEBUG */
+
+/*
+Local Variables:
+compile-command: "gcc -DDEBUG -I. -Wall -W -O2 -g mktime.c -o mktime"
+End:
+*/
diff --git a/lib/stdbool.in.h b/lib/stdbool.in.h
new file mode 100644
index 0000000000..b64dc75b20
--- /dev/null
+++ b/lib/stdbool.in.h
@@ -0,0 +1,122 @@
+/* Copyright (C) 2001-2003, 2006-2011 Free Software Foundation, Inc.
+ Written by Bruno Haible <[email protected]>, 2001.
+
+ 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, 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _GL_STDBOOL_H
+#define _GL_STDBOOL_H
+
+/* ISO C 99 <stdbool.h> for platforms that lack it. */
+
+/* Usage suggestions:
+
+ Programs that use <stdbool.h> should be aware of some limitations
+ and standards compliance issues.
+
+ Standards compliance:
+
+ - <stdbool.h> must be #included before 'bool', 'false', 'true'
+ can be used.
+
+ - You cannot assume that sizeof (bool) == 1.
+
+ - Programs should not undefine the macros bool, true, and false,
+ as C99 lists that as an "obsolescent feature".
+
+ Limitations of this substitute, when used in a C89 environment:
+
+ - <stdbool.h> must be #included before the '_Bool' type can be used.
+
+ - You cannot assume that _Bool is a typedef; it might be a macro.
+
+ - Bit-fields of type 'bool' are not supported. Portable code
+ should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'.
+
+ - In C99, casts and automatic conversions to '_Bool' or 'bool' are
+ performed in such a way that every nonzero value gets converted
+ to 'true', and zero gets converted to 'false'. This doesn't work
+ with this substitute. With this substitute, only the values 0 and 1
+ give the expected result when converted to _Bool' or 'bool'.
+
+ - C99 allows the use of (_Bool)0.0 in constant expressions, but
+ this substitute cannot always provide this property.
+
+ Also, it is suggested that programs use 'bool' rather than '_Bool';
+ this isn't required, but 'bool' is more common. */
+
+
+/* 7.16. Boolean type and values */
+
+/* BeOS <sys/socket.h> already #defines false 0, true 1. We use the same
+ definitions below, but temporarily we have to #undef them. */
+#if defined __BEOS__ && !defined __HAIKU__
+# include <OS.h> /* defines bool but not _Bool */
+# undef false
+# undef true
+#endif
+
+/* For the sake of symbolic names in gdb, we define true and false as
+ enum constants, not only as macros.
+ It is tempting to write
+ typedef enum { false = 0, true = 1 } _Bool;
+ so that gdb prints values of type 'bool' symbolically. But if we do
+ this, values of type '_Bool' may promote to 'int' or 'unsigned int'
+ (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int'
+ (see ISO C 99 6.3.1.1.(2)). So we add a negative value to the
+ enum; this ensures that '_Bool' promotes to 'int'. */
+#if defined __cplusplus || (defined __BEOS__ && !defined __HAIKU__)
+ /* A compiler known to have 'bool'. */
+ /* If the compiler already has both 'bool' and '_Bool', we can assume they
+ are the same types. */
+# if !@HAVE__BOOL@
+typedef bool _Bool;
+# endif
+#else
+# if !defined __GNUC__
+ /* If @HAVE__BOOL@:
+ Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when
+ the built-in _Bool type is used. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+ Similar bugs are likely with other compilers as well; this file
+ wouldn't be used if <stdbool.h> was working.
+ So we override the _Bool type.
+ If !@HAVE__BOOL@:
+ Need to define _Bool ourselves. As 'signed char' or as an enum type?
+ Use of a typedef, with SunPRO C, leads to a stupid
+ "warning: _Bool is a keyword in ISO C99".
+ Use of an enum type, with IRIX cc, leads to a stupid
+ "warning(1185): enumerated type mixed with another type".
+ Even the existence of an enum type, without a typedef,
+ "Invalid enumerator. (badenum)" with HP-UX cc on Tru64.
+ The only benefit of the enum, debuggability, is not important
+ with these compilers. So use 'signed char' and no enum. */
+# define _Bool signed char
+# else
+ /* With this compiler, trust the _Bool type if the compiler has it. */
+# if !@HAVE__BOOL@
+typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool;
+# endif
+# endif
+#endif
+#define bool _Bool
+
+/* The other macros must be usable in preprocessor directives. */
+#define false 0
+#define true 1
+#define __bool_true_false_are_defined 1
+
+#endif /* _GL_STDBOOL_H */
diff --git a/lib/stddef.in.h b/lib/stddef.in.h
new file mode 100644
index 0000000000..62a91a7a6a
--- /dev/null
+++ b/lib/stddef.in.h
@@ -0,0 +1,87 @@
+/* A substitute for POSIX 2008 <stddef.h>, for platforms that have issues.
+
+ Copyright (C) 2009-2011 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, 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Eric Blake. */
+
+/*
+ * POSIX 2008 <stddef.h> for platforms that have issues.
+ * <http://www.opengroup.org/susv3xbd/stddef.h.html>
+ */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined __need_wchar_t || defined __need_size_t \
+ || defined __need_ptrdiff_t || defined __need_NULL \
+ || defined __need_wint_t
+/* Special invocation convention inside gcc header files. In
+ particular, gcc provides a version of <stddef.h> that blindly
+ redefines NULL even when __need_wint_t was defined, even though
+ wint_t is not normally provided by <stddef.h>. Hence, we must
+ remember if special invocation has ever been used to obtain wint_t,
+ in which case we need to clean up NULL yet again. */
+
+# if !(defined _GL_STDDEF_H && defined _GL_STDDEF_WINT_T)
+# ifdef __need_wint_t
+# undef _GL_STDDEF_H
+# define _GL_STDDEF_WINT_T
+# endif
+# @INCLUDE_NEXT@ @NEXT_STDDEF_H@
+# endif
+
+#else
+/* Normal invocation convention. */
+
+# ifndef _GL_STDDEF_H
+
+/* The include_next requires a split double-inclusion guard. */
+
+# @INCLUDE_NEXT@ @NEXT_STDDEF_H@
+
+# ifndef _GL_STDDEF_H
+# define _GL_STDDEF_H
+
+/* On NetBSD 5.0, the definition of NULL lacks proper parentheses. */
+#if @REPLACE_NULL@
+# undef NULL
+# ifdef __cplusplus
+ /* ISO C++ says that the macro NULL must expand to an integer constant
+ expression, hence '((void *) 0)' is not allowed in C++. */
+# if __GNUG__ >= 3
+ /* GNU C++ has a __null macro that behaves like an integer ('int' or
+ 'long') but has the same size as a pointer. Use that, to avoid
+ warnings. */
+# define NULL __null
+# else
+# define NULL 0L
+# endif
+# else
+# define NULL ((void *) 0)
+# endif
+#endif
+
+/* Some platforms lack wchar_t. */
+#if !@HAVE_WCHAR_T@
+# define wchar_t int
+#endif
+
+# endif /* _GL_STDDEF_H */
+# endif /* _GL_STDDEF_H */
+#endif /* __need_XXX */
diff --git a/lib/strftime.c b/lib/strftime.c
new file mode 100644
index 0000000000..0a02b50774
--- /dev/null
+++ b/lib/strftime.c
@@ -0,0 +1,1468 @@
+/* Copyright (C) 1991-2001, 2003-2007, 2009-2011 Free Software Foundation, Inc.
+
+ NOTE: The canonical source of this file is maintained with the GNU C Library.
+ Bugs can be reported to [email protected].
+
+ 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/>. */
+
+#ifdef _LIBC
+# define HAVE_STRUCT_ERA_ENTRY 1
+# define HAVE_TM_GMTOFF 1
+# define HAVE_TM_ZONE 1
+# define HAVE_TZNAME 1
+# define HAVE_TZSET 1
+# include "../locale/localeinfo.h"
+#else
+# include <config.h>
+# if FPRINTFTIME
+# include "ignore-value.h"
+# include "fprintftime.h"
+# else
+# include "strftime.h"
+# endif
+#endif
+
+#include <ctype.h>
+#include <time.h>
+
+#if HAVE_TZNAME && !HAVE_DECL_TZNAME
+extern char *tzname[];
+#endif
+
+/* Do multibyte processing if multibytes are supported, unless
+ multibyte sequences are safe in formats. Multibyte sequences are
+ safe if they cannot contain byte sequences that look like format
+ conversion specifications. The multibyte encodings used by the
+ C library on the various platforms (UTF-8, GB2312, GBK, CP936,
+ GB18030, EUC-TW, BIG5, BIG5-HKSCS, CP950, EUC-JP, EUC-KR, CP949,
+ SHIFT_JIS, CP932, JOHAB) are safe for formats, because the byte '%'
+ cannot occur in a multibyte character except in the first byte.
+
+ The DEC-HANYU encoding used on OSF/1 is not safe for formats, but
+ this encoding has never been seen in real-life use, so we ignore
+ it. */
+#if !(defined __osf__ && 0)
+# define MULTIBYTE_IS_FORMAT_SAFE 1
+#endif
+#define DO_MULTIBYTE (! MULTIBYTE_IS_FORMAT_SAFE)
+
+#if DO_MULTIBYTE
+# include <wchar.h>
+ static const mbstate_t mbstate_zero;
+#endif
+
+#include <limits.h>
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef COMPILE_WIDE
+# include <endian.h>
+# define CHAR_T wchar_t
+# define UCHAR_T unsigned int
+# define L_(Str) L##Str
+# define NLW(Sym) _NL_W##Sym
+
+# define MEMCPY(d, s, n) __wmemcpy (d, s, n)
+# define STRLEN(s) __wcslen (s)
+
+#else
+# define CHAR_T char
+# define UCHAR_T unsigned char
+# define L_(Str) Str
+# define NLW(Sym) Sym
+
+# define MEMCPY(d, s, n) memcpy (d, s, n)
+# define STRLEN(s) strlen (s)
+
+#endif
+
+/* Shift A right by B bits portably, by dividing A by 2**B and
+ truncating towards minus infinity. A and B should be free of side
+ effects, and B should be in the range 0 <= B <= INT_BITS - 2, where
+ INT_BITS is the number of useful bits in an int. GNU code can
+ assume that INT_BITS is at least 32.
+
+ ISO C99 says that A >> B is implementation-defined if A < 0. Some
+ implementations (e.g., UNICOS 9.0 on a Cray Y-MP EL) don't shift
+ right in the usual way when A < 0, so SHR falls back on division if
+ ordinary A >> B doesn't seem to be the usual signed shift. */
+#define SHR(a, b) \
+ (-1 >> 1 == -1 \
+ ? (a) >> (b) \
+ : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0))
+
+/* Bound on length of the string representing an integer type or expression T.
+ Subtract 1 for the sign bit if t is signed; log10 (2.0) < 146/485;
+ add 1 for integer division truncation; add 1 more for a minus sign
+ if needed. */
+#define INT_STRLEN_BOUND(t) \
+ ((sizeof (t) * CHAR_BIT - 1) * 146 / 485 + 2)
+
+#define TM_YEAR_BASE 1900
+
+#ifndef __isleap
+/* Nonzero if YEAR is a leap year (every 4 years,
+ except every 100th isn't, and every 400th is). */
+# define __isleap(year) \
+ ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
+#endif
+
+
+#ifdef _LIBC
+# define tzname __tzname
+# define tzset __tzset
+#endif
+
+#if !HAVE_TM_GMTOFF
+/* Portable standalone applications should supply a "time.h" that
+ declares a POSIX-compliant localtime_r, for the benefit of older
+ implementations that lack localtime_r or have a nonstandard one.
+ See the gnulib time_r module for one way to implement this. */
+# undef __gmtime_r
+# undef __localtime_r
+# define __gmtime_r gmtime_r
+# define __localtime_r localtime_r
+#endif
+
+
+#ifndef FPRINTFTIME
+# define FPRINTFTIME 0
+#endif
+
+#if FPRINTFTIME
+# define STREAM_OR_CHAR_T FILE
+# define STRFTIME_ARG(x) /* empty */
+#else
+# define STREAM_OR_CHAR_T CHAR_T
+# define STRFTIME_ARG(x) x,
+#endif
+
+#if FPRINTFTIME
+# define memset_byte(P, Len, Byte) \
+ do { size_t _i; for (_i = 0; _i < Len; _i++) fputc (Byte, P); } while (0)
+# define memset_space(P, Len) memset_byte (P, Len, ' ')
+# define memset_zero(P, Len) memset_byte (P, Len, '0')
+#elif defined COMPILE_WIDE
+# define memset_space(P, Len) (wmemset (P, L' ', Len), (P) += (Len))
+# define memset_zero(P, Len) (wmemset (P, L'0', Len), (P) += (Len))
+#else
+# define memset_space(P, Len) (memset (P, ' ', Len), (P) += (Len))
+# define memset_zero(P, Len) (memset (P, '0', Len), (P) += (Len))
+#endif
+
+#if FPRINTFTIME
+# define advance(P, N)
+#else
+# define advance(P, N) ((P) += (N))
+#endif
+
+#define add(n, f) \
+ do \
+ { \
+ int _n = (n); \
+ int _delta = width - _n; \
+ int _incr = _n + (_delta > 0 ? _delta : 0); \
+ if ((size_t) _incr >= maxsize - i) \
+ return 0; \
+ if (p) \
+ { \
+ if (digits == 0 && _delta > 0) \
+ { \
+ if (pad == L_('0')) \
+ memset_zero (p, _delta); \
+ else \
+ memset_space (p, _delta); \
+ } \
+ f; \
+ advance (p, _n); \
+ } \
+ i += _incr; \
+ } while (0)
+
+#if FPRINTFTIME
+# define add1(C) add (1, fputc (C, p))
+#else
+# define add1(C) add (1, *p = C)
+#endif
+
+#if FPRINTFTIME
+# define cpy(n, s) \
+ add ((n), \
+ do \
+ { \
+ if (to_lowcase) \
+ fwrite_lowcase (p, (s), _n); \
+ else if (to_uppcase) \
+ fwrite_uppcase (p, (s), _n); \
+ else \
+ { \
+ /* We are ignoring the value of fwrite here, in spite of the \
+ fact that technically, that may not be valid: the fwrite \
+ specification in POSIX 2008 defers to that of fputc, which \
+ is intended to be consistent with the one from ISO C, \
+ which permits failure due to ENOMEM *without* setting the \
+ stream's error indicator. */ \
+ ignore_value (fwrite ((s), _n, 1, p)); \
+ } \
+ } \
+ while (0) \
+ )
+#else
+# define cpy(n, s) \
+ add ((n), \
+ if (to_lowcase) \
+ memcpy_lowcase (p, (s), _n LOCALE_ARG); \
+ else if (to_uppcase) \
+ memcpy_uppcase (p, (s), _n LOCALE_ARG); \
+ else \
+ MEMCPY ((void *) p, (void const *) (s), _n))
+#endif
+
+#ifdef COMPILE_WIDE
+# ifndef USE_IN_EXTENDED_LOCALE_MODEL
+# undef __mbsrtowcs_l
+# define __mbsrtowcs_l(d, s, l, st, loc) __mbsrtowcs (d, s, l, st)
+# endif
+# define widen(os, ws, l) \
+ { \
+ mbstate_t __st; \
+ const char *__s = os; \
+ memset (&__st, '\0', sizeof (__st)); \
+ l = __mbsrtowcs_l (NULL, &__s, 0, &__st, loc); \
+ ws = (wchar_t *) alloca ((l + 1) * sizeof (wchar_t)); \
+ (void) __mbsrtowcs_l (ws, &__s, l, &__st, loc); \
+ }
+#endif
+
+
+#if defined _LIBC && defined USE_IN_EXTENDED_LOCALE_MODEL
+/* We use this code also for the extended locale handling where the
+ function gets as an additional argument the locale which has to be
+ used. To access the values we have to redefine the _NL_CURRENT
+ macro. */
+# define strftime __strftime_l
+# define wcsftime __wcsftime_l
+# undef _NL_CURRENT
+# define _NL_CURRENT(category, item) \
+ (current->values[_NL_ITEM_INDEX (item)].string)
+# define LOCALE_ARG , loc
+# define LOCALE_PARAM_PROTO , __locale_t loc
+# define HELPER_LOCALE_ARG , current
+#else
+# define LOCALE_PARAM_PROTO
+# define LOCALE_ARG
+# ifdef _LIBC
+# define HELPER_LOCALE_ARG , _NL_CURRENT_DATA (LC_TIME)
+# else
+# define HELPER_LOCALE_ARG
+# endif
+#endif
+
+#ifdef COMPILE_WIDE
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# define TOUPPER(Ch, L) __towupper_l (Ch, L)
+# define TOLOWER(Ch, L) __towlower_l (Ch, L)
+# else
+# define TOUPPER(Ch, L) towupper (Ch)
+# define TOLOWER(Ch, L) towlower (Ch)
+# endif
+#else
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# define TOUPPER(Ch, L) __toupper_l (Ch, L)
+# define TOLOWER(Ch, L) __tolower_l (Ch, L)
+# else
+# define TOUPPER(Ch, L) toupper (Ch)
+# define TOLOWER(Ch, L) tolower (Ch)
+# endif
+#endif
+/* We don't use `isdigit' here since the locale dependent
+ interpretation is not what we want here. We only need to accept
+ the arabic digits in the ASCII range. One day there is perhaps a
+ more reliable way to accept other sets of digits. */
+#define ISDIGIT(Ch) ((unsigned int) (Ch) - L_('0') <= 9)
+
+#if FPRINTFTIME
+static void
+fwrite_lowcase (FILE *fp, const CHAR_T *src, size_t len)
+{
+ while (len-- > 0)
+ {
+ fputc (TOLOWER ((UCHAR_T) *src, loc), fp);
+ ++src;
+ }
+}
+
+static void
+fwrite_uppcase (FILE *fp, const CHAR_T *src, size_t len)
+{
+ while (len-- > 0)
+ {
+ fputc (TOUPPER ((UCHAR_T) *src, loc), fp);
+ ++src;
+ }
+}
+#else
+static CHAR_T *
+memcpy_lowcase (CHAR_T *dest, const CHAR_T *src,
+ size_t len LOCALE_PARAM_PROTO)
+{
+ while (len-- > 0)
+ dest[len] = TOLOWER ((UCHAR_T) src[len], loc);
+ return dest;
+}
+
+static CHAR_T *
+memcpy_uppcase (CHAR_T *dest, const CHAR_T *src,
+ size_t len LOCALE_PARAM_PROTO)
+{
+ while (len-- > 0)
+ dest[len] = TOUPPER ((UCHAR_T) src[len], loc);
+ return dest;
+}
+#endif
+
+
+#if ! HAVE_TM_GMTOFF
+/* Yield the difference between *A and *B,
+ measured in seconds, ignoring leap seconds. */
+# define tm_diff ftime_tm_diff
+static int
+tm_diff (const struct tm *a, const struct tm *b)
+{
+ /* Compute intervening leap days correctly even if year is negative.
+ Take care to avoid int overflow in leap day calculations,
+ but it's OK to assume that A and B are close to each other. */
+ int a4 = SHR (a->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (a->tm_year & 3);
+ int b4 = SHR (b->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (b->tm_year & 3);
+ int a100 = a4 / 25 - (a4 % 25 < 0);
+ int b100 = b4 / 25 - (b4 % 25 < 0);
+ int a400 = SHR (a100, 2);
+ int b400 = SHR (b100, 2);
+ int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
+ int years = a->tm_year - b->tm_year;
+ int days = (365 * years + intervening_leap_days
+ + (a->tm_yday - b->tm_yday));
+ return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour))
+ + (a->tm_min - b->tm_min))
+ + (a->tm_sec - b->tm_sec));
+}
+#endif /* ! HAVE_TM_GMTOFF */
+
+
+
+/* The number of days from the first day of the first ISO week of this
+ year to the year day YDAY with week day WDAY. ISO weeks start on
+ Monday; the first ISO week has the year's first Thursday. YDAY may
+ be as small as YDAY_MINIMUM. */
+#define ISO_WEEK_START_WDAY 1 /* Monday */
+#define ISO_WEEK1_WDAY 4 /* Thursday */
+#define YDAY_MINIMUM (-366)
+#ifdef __GNUC__
+__inline__
+#endif
+static int
+iso_week_days (int yday, int wday)
+{
+ /* Add enough to the first operand of % to make it nonnegative. */
+ int big_enough_multiple_of_7 = (-YDAY_MINIMUM / 7 + 2) * 7;
+ return (yday
+ - (yday - wday + ISO_WEEK1_WDAY + big_enough_multiple_of_7) % 7
+ + ISO_WEEK1_WDAY - ISO_WEEK_START_WDAY);
+}
+
+
+/* When compiling this file, GNU applications can #define my_strftime
+ to a symbol (typically nstrftime) to get an extended strftime with
+ extra arguments UT and NS. Emacs is a special case for now, but
+ this Emacs-specific code can be removed once Emacs's config.h
+ defines my_strftime. */
+#if defined emacs && !defined my_strftime
+# define my_strftime nstrftime
+#endif
+
+#if FPRINTFTIME
+# undef my_strftime
+# define my_strftime fprintftime
+#endif
+
+#ifdef my_strftime
+# define extra_args , ut, ns
+# define extra_args_spec , int ut, int ns
+#else
+# if defined COMPILE_WIDE
+# define my_strftime wcsftime
+# define nl_get_alt_digit _nl_get_walt_digit
+# else
+# define my_strftime strftime
+# define nl_get_alt_digit _nl_get_alt_digit
+# endif
+# define extra_args
+# define extra_args_spec
+/* We don't have this information in general. */
+# define ut 0
+# define ns 0
+#endif
+
+
+/* Just like my_strftime, below, but with one more parameter, UPCASE,
+ to indicate that the result should be converted to upper case. */
+static size_t
+strftime_case_ (bool upcase, STREAM_OR_CHAR_T *s,
+ STRFTIME_ARG (size_t maxsize)
+ const CHAR_T *format,
+ const struct tm *tp extra_args_spec LOCALE_PARAM_PROTO)
+{
+#if defined _LIBC && defined USE_IN_EXTENDED_LOCALE_MODEL
+ struct locale_data *const current = loc->__locales[LC_TIME];
+#endif
+#if FPRINTFTIME
+ size_t maxsize = (size_t) -1;
+#endif
+
+ int hour12 = tp->tm_hour;
+#ifdef _NL_CURRENT
+ /* We cannot make the following values variables since we must delay
+ the evaluation of these values until really needed since some
+ expressions might not be valid in every situation. The `struct tm'
+ might be generated by a strptime() call that initialized
+ only a few elements. Dereference the pointers only if the format
+ requires this. Then it is ok to fail if the pointers are invalid. */
+# define a_wkday \
+ ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ABDAY_1) + tp->tm_wday))
+# define f_wkday \
+ ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(DAY_1) + tp->tm_wday))
+# define a_month \
+ ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ABMON_1) + tp->tm_mon))
+# define f_month \
+ ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(MON_1) + tp->tm_mon))
+# define ampm \
+ ((const CHAR_T *) _NL_CURRENT (LC_TIME, tp->tm_hour > 11 \
+ ? NLW(PM_STR) : NLW(AM_STR)))
+
+# define aw_len STRLEN (a_wkday)
+# define am_len STRLEN (a_month)
+# define ap_len STRLEN (ampm)
+#endif
+ const char *zone;
+ size_t i = 0;
+ STREAM_OR_CHAR_T *p = s;
+ const CHAR_T *f;
+#if DO_MULTIBYTE && !defined COMPILE_WIDE
+ const char *format_end = NULL;
+#endif
+
+#if ! defined _LIBC && ! HAVE_RUN_TZSET_TEST
+ /* Solaris 2.5.x and 2.6 tzset sometimes modify the storage returned
+ by localtime. On such systems, we must either use the tzset and
+ localtime wrappers to work around the bug (which sets
+ HAVE_RUN_TZSET_TEST) or make a copy of the structure. */
+ struct tm copy = *tp;
+ tp = &copy;
+#endif
+
+ zone = NULL;
+#if HAVE_TM_ZONE
+ /* The POSIX test suite assumes that setting
+ the environment variable TZ to a new value before calling strftime()
+ will influence the result (the %Z format) even if the information in
+ TP is computed with a totally different time zone.
+ This is bogus: though POSIX allows bad behavior like this,
+ POSIX does not require it. Do the right thing instead. */
+ zone = (const char *) tp->tm_zone;
+#endif
+#if HAVE_TZNAME
+ if (ut)
+ {
+ if (! (zone && *zone))
+ zone = "GMT";
+ }
+ else
+ {
+ /* POSIX.1 requires that local time zone information be used as
+ though strftime called tzset. */
+# if HAVE_TZSET
+ tzset ();
+# endif
+ }
+#endif
+
+ if (hour12 > 12)
+ hour12 -= 12;
+ else
+ if (hour12 == 0)
+ hour12 = 12;
+
+ for (f = format; *f != '\0'; ++f)
+ {
+ int pad = 0; /* Padding for number ('-', '_', or 0). */
+ int modifier; /* Field modifier ('E', 'O', or 0). */
+ int digits = 0; /* Max digits for numeric format. */
+ int number_value; /* Numeric value to be printed. */
+ unsigned int u_number_value; /* (unsigned int) number_value. */
+ bool negative_number; /* The number is negative. */
+ bool always_output_a_sign; /* +/- should always be output. */
+ int tz_colon_mask; /* Bitmask of where ':' should appear. */
+ const CHAR_T *subfmt;
+ CHAR_T sign_char;
+ CHAR_T *bufp;
+ CHAR_T buf[1
+ + 2 /* for the two colons in a %::z or %:::z time zone */
+ + (sizeof (int) < sizeof (time_t)
+ ? INT_STRLEN_BOUND (time_t)
+ : INT_STRLEN_BOUND (int))];
+ int width = -1;
+ bool to_lowcase = false;
+ bool to_uppcase = upcase;
+ size_t colons;
+ bool change_case = false;
+ int format_char;
+
+#if DO_MULTIBYTE && !defined COMPILE_WIDE
+ switch (*f)
+ {
+ case L_('%'):
+ break;
+
+ case L_('\b'): case L_('\t'): case L_('\n'):
+ case L_('\v'): case L_('\f'): case L_('\r'):
+ case L_(' '): case L_('!'): case L_('"'): case L_('#'): case L_('&'):
+ case L_('\''): case L_('('): case L_(')'): case L_('*'): case L_('+'):
+ case L_(','): case L_('-'): case L_('.'): case L_('/'): case L_('0'):
+ case L_('1'): case L_('2'): case L_('3'): case L_('4'): case L_('5'):
+ case L_('6'): case L_('7'): case L_('8'): case L_('9'): case L_(':'):
+ case L_(';'): case L_('<'): case L_('='): case L_('>'): case L_('?'):
+ case L_('A'): case L_('B'): case L_('C'): case L_('D'): case L_('E'):
+ case L_('F'): case L_('G'): case L_('H'): case L_('I'): case L_('J'):
+ case L_('K'): case L_('L'): case L_('M'): case L_('N'): case L_('O'):
+ case L_('P'): case L_('Q'): case L_('R'): case L_('S'): case L_('T'):
+ case L_('U'): case L_('V'): case L_('W'): case L_('X'): case L_('Y'):
+ case L_('Z'): case L_('['): case L_('\\'): case L_(']'): case L_('^'):
+ case L_('_'): case L_('a'): case L_('b'): case L_('c'): case L_('d'):
+ case L_('e'): case L_('f'): case L_('g'): case L_('h'): case L_('i'):
+ case L_('j'): case L_('k'): case L_('l'): case L_('m'): case L_('n'):
+ case L_('o'): case L_('p'): case L_('q'): case L_('r'): case L_('s'):
+ case L_('t'): case L_('u'): case L_('v'): case L_('w'): case L_('x'):
+ case L_('y'): case L_('z'): case L_('{'): case L_('|'): case L_('}'):
+ case L_('~'):
+ /* The C Standard requires these 98 characters (plus '%') to
+ be in the basic execution character set. None of these
+ characters can start a multibyte sequence, so they need
+ not be analyzed further. */
+ add1 (*f);
+ continue;
+
+ default:
+ /* Copy this multibyte sequence until we reach its end, find
+ an error, or come back to the initial shift state. */
+ {
+ mbstate_t mbstate = mbstate_zero;
+ size_t len = 0;
+ size_t fsize;
+
+ if (! format_end)
+ format_end = f + strlen (f) + 1;
+ fsize = format_end - f;
+
+ do
+ {
+ size_t bytes = mbrlen (f + len, fsize - len, &mbstate);
+
+ if (bytes == 0)
+ break;
+
+ if (bytes == (size_t) -2)
+ {
+ len += strlen (f + len);
+ break;
+ }
+
+ if (bytes == (size_t) -1)
+ {
+ len++;
+ break;
+ }
+
+ len += bytes;
+ }
+ while (! mbsinit (&mbstate));
+
+ cpy (len, f);
+ f += len - 1;
+ continue;
+ }
+ }
+
+#else /* ! DO_MULTIBYTE */
+
+ /* Either multibyte encodings are not supported, they are
+ safe for formats, so any non-'%' byte can be copied through,
+ or this is the wide character version. */
+ if (*f != L_('%'))
+ {
+ add1 (*f);
+ continue;
+ }
+
+#endif /* ! DO_MULTIBYTE */
+
+ /* Check for flags that can modify a format. */
+ while (1)
+ {
+ switch (*++f)
+ {
+ /* This influences the number formats. */
+ case L_('_'):
+ case L_('-'):
+ case L_('0'):
+ pad = *f;
+ continue;
+
+ /* This changes textual output. */
+ case L_('^'):
+ to_uppcase = true;
+ continue;
+ case L_('#'):
+ change_case = true;
+ continue;
+
+ default:
+ break;
+ }
+ break;
+ }
+
+ /* As a GNU extension we allow to specify the field width. */
+ if (ISDIGIT (*f))
+ {
+ width = 0;
+ do
+ {
+ if (width > INT_MAX / 10
+ || (width == INT_MAX / 10 && *f - L_('0') > INT_MAX % 10))
+ /* Avoid overflow. */
+ width = INT_MAX;
+ else
+ {
+ width *= 10;
+ width += *f - L_('0');
+ }
+ ++f;
+ }
+ while (ISDIGIT (*f));
+ }
+
+ /* Check for modifiers. */
+ switch (*f)
+ {
+ case L_('E'):
+ case L_('O'):
+ modifier = *f++;
+ break;
+
+ default:
+ modifier = 0;
+ break;
+ }
+
+ /* Now do the specified format. */
+ format_char = *f;
+ switch (format_char)
+ {
+#define DO_NUMBER(d, v) \
+ digits = d; \
+ number_value = v; goto do_number
+#define DO_SIGNED_NUMBER(d, negative, v) \
+ digits = d; \
+ negative_number = negative; \
+ u_number_value = v; goto do_signed_number
+
+ /* The mask is not what you might think.
+ When the ordinal i'th bit is set, insert a colon
+ before the i'th digit of the time zone representation. */
+#define DO_TZ_OFFSET(d, negative, mask, v) \
+ digits = d; \
+ negative_number = negative; \
+ tz_colon_mask = mask; \
+ u_number_value = v; goto do_tz_offset
+#define DO_NUMBER_SPACEPAD(d, v) \
+ digits = d; \
+ number_value = v; goto do_number_spacepad
+
+ case L_('%'):
+ if (modifier != 0)
+ goto bad_format;
+ add1 (*f);
+ break;
+
+ case L_('a'):
+ if (modifier != 0)
+ goto bad_format;
+ if (change_case)
+ {
+ to_uppcase = true;
+ to_lowcase = false;
+ }
+#ifdef _NL_CURRENT
+ cpy (aw_len, a_wkday);
+ break;
+#else
+ goto underlying_strftime;
+#endif
+
+ case 'A':
+ if (modifier != 0)
+ goto bad_format;
+ if (change_case)
+ {
+ to_uppcase = true;
+ to_lowcase = false;
+ }
+#ifdef _NL_CURRENT
+ cpy (STRLEN (f_wkday), f_wkday);
+ break;
+#else
+ goto underlying_strftime;
+#endif
+
+ case L_('b'):
+ case L_('h'):
+ if (change_case)
+ {
+ to_uppcase = true;
+ to_lowcase = false;
+ }
+ if (modifier != 0)
+ goto bad_format;
+#ifdef _NL_CURRENT
+ cpy (am_len, a_month);
+ break;
+#else
+ goto underlying_strftime;
+#endif
+
+ case L_('B'):
+ if (modifier != 0)
+ goto bad_format;
+ if (change_case)
+ {
+ to_uppcase = true;
+ to_lowcase = false;
+ }
+#ifdef _NL_CURRENT
+ cpy (STRLEN (f_month), f_month);
+ break;
+#else
+ goto underlying_strftime;
+#endif
+
+ case L_('c'):
+ if (modifier == L_('O'))
+ goto bad_format;
+#ifdef _NL_CURRENT
+ if (! (modifier == 'E'
+ && (*(subfmt =
+ (const CHAR_T *) _NL_CURRENT (LC_TIME,
+ NLW(ERA_D_T_FMT)))
+ != '\0')))
+ subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_T_FMT));
+#else
+ goto underlying_strftime;
+#endif
+
+ subformat:
+ {
+ size_t len = strftime_case_ (to_uppcase,
+ NULL, STRFTIME_ARG ((size_t) -1)
+ subfmt,
+ tp extra_args LOCALE_ARG);
+ add (len, strftime_case_ (to_uppcase, p,
+ STRFTIME_ARG (maxsize - i)
+ subfmt,
+ tp extra_args LOCALE_ARG));
+ }
+ break;
+
+#if !(defined _NL_CURRENT && HAVE_STRUCT_ERA_ENTRY)
+ underlying_strftime:
+ {
+ /* The relevant information is available only via the
+ underlying strftime implementation, so use that. */
+ char ufmt[5];
+ char *u = ufmt;
+ char ubuf[1024]; /* enough for any single format in practice */
+ size_t len;
+ /* Make sure we're calling the actual underlying strftime.
+ In some cases, config.h contains something like
+ "#define strftime rpl_strftime". */
+# ifdef strftime
+# undef strftime
+ size_t strftime ();
+# endif
+
+ /* The space helps distinguish strftime failure from empty
+ output. */
+ *u++ = ' ';
+ *u++ = '%';
+ if (modifier != 0)
+ *u++ = modifier;
+ *u++ = format_char;
+ *u = '\0';
+ len = strftime (ubuf, sizeof ubuf, ufmt, tp);
+ if (len != 0)
+ cpy (len - 1, ubuf + 1);
+ }
+ break;
+#endif
+
+ case L_('C'):
+ if (modifier == L_('O'))
+ goto bad_format;
+ if (modifier == L_('E'))
+ {
+#if HAVE_STRUCT_ERA_ENTRY
+ struct era_entry *era = _nl_get_era_entry (tp HELPER_LOCALE_ARG);
+ if (era)
+ {
+# ifdef COMPILE_WIDE
+ size_t len = __wcslen (era->era_wname);
+ cpy (len, era->era_wname);
+# else
+ size_t len = strlen (era->era_name);
+ cpy (len, era->era_name);
+# endif
+ break;
+ }
+#else
+ goto underlying_strftime;
+#endif
+ }
+
+ {
+ int century = tp->tm_year / 100 + TM_YEAR_BASE / 100;
+ century -= tp->tm_year % 100 < 0 && 0 < century;
+ DO_SIGNED_NUMBER (2, tp->tm_year < - TM_YEAR_BASE, century);
+ }
+
+ case L_('x'):
+ if (modifier == L_('O'))
+ goto bad_format;
+#ifdef _NL_CURRENT
+ if (! (modifier == L_('E')
+ && (*(subfmt =
+ (const CHAR_T *)_NL_CURRENT (LC_TIME, NLW(ERA_D_FMT)))
+ != L_('\0'))))
+ subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_FMT));
+ goto subformat;
+#else
+ goto underlying_strftime;
+#endif
+ case L_('D'):
+ if (modifier != 0)
+ goto bad_format;
+ subfmt = L_("%m/%d/%y");
+ goto subformat;
+
+ case L_('d'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER (2, tp->tm_mday);
+
+ case L_('e'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER_SPACEPAD (2, tp->tm_mday);
+
+ /* All numeric formats set DIGITS and NUMBER_VALUE (or U_NUMBER_VALUE)
+ and then jump to one of these labels. */
+
+ do_tz_offset:
+ always_output_a_sign = true;
+ goto do_number_body;
+
+ do_number_spacepad:
+ /* Force `_' flag unless overridden by `0' or `-' flag. */
+ if (pad != L_('0') && pad != L_('-'))
+ pad = L_('_');
+
+ do_number:
+ /* Format NUMBER_VALUE according to the MODIFIER flag. */
+ negative_number = number_value < 0;
+ u_number_value = number_value;
+
+ do_signed_number:
+ always_output_a_sign = false;
+ tz_colon_mask = 0;
+
+ do_number_body:
+ /* Format U_NUMBER_VALUE according to the MODIFIER flag.
+ NEGATIVE_NUMBER is nonzero if the original number was
+ negative; in this case it was converted directly to
+ unsigned int (i.e., modulo (UINT_MAX + 1)) without
+ negating it. */
+ if (modifier == L_('O') && !negative_number)
+ {
+#ifdef _NL_CURRENT
+ /* Get the locale specific alternate representation of
+ the number. If none exist NULL is returned. */
+ const CHAR_T *cp = nl_get_alt_digit (u_number_value
+ HELPER_LOCALE_ARG);
+
+ if (cp != NULL)
+ {
+ size_t digitlen = STRLEN (cp);
+ if (digitlen != 0)
+ {
+ cpy (digitlen, cp);
+ break;
+ }
+ }
+#else
+ goto underlying_strftime;
+#endif
+ }
+
+ bufp = buf + sizeof (buf) / sizeof (buf[0]);
+
+ if (negative_number)
+ u_number_value = - u_number_value;
+
+ do
+ {
+ if (tz_colon_mask & 1)
+ *--bufp = ':';
+ tz_colon_mask >>= 1;
+ *--bufp = u_number_value % 10 + L_('0');
+ u_number_value /= 10;
+ }
+ while (u_number_value != 0 || tz_colon_mask != 0);
+
+ do_number_sign_and_padding:
+ if (digits < width)
+ digits = width;
+
+ sign_char = (negative_number ? L_('-')
+ : always_output_a_sign ? L_('+')
+ : 0);
+
+ if (pad == L_('-'))
+ {
+ if (sign_char)
+ add1 (sign_char);
+ }
+ else
+ {
+ int padding = digits - (buf + (sizeof (buf) / sizeof (buf[0]))
+ - bufp) - !!sign_char;
+
+ if (padding > 0)
+ {
+ if (pad == L_('_'))
+ {
+ if ((size_t) padding >= maxsize - i)
+ return 0;
+
+ if (p)
+ memset_space (p, padding);
+ i += padding;
+ width = width > padding ? width - padding : 0;
+ if (sign_char)
+ add1 (sign_char);
+ }
+ else
+ {
+ if ((size_t) digits >= maxsize - i)
+ return 0;
+
+ if (sign_char)
+ add1 (sign_char);
+
+ if (p)
+ memset_zero (p, padding);
+ i += padding;
+ width = 0;
+ }
+ }
+ else
+ {
+ if (sign_char)
+ add1 (sign_char);
+ }
+ }
+
+ cpy (buf + sizeof (buf) / sizeof (buf[0]) - bufp, bufp);
+ break;
+
+ case L_('F'):
+ if (modifier != 0)
+ goto bad_format;
+ subfmt = L_("%Y-%m-%d");
+ goto subformat;
+
+ case L_('H'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER (2, tp->tm_hour);
+
+ case L_('I'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER (2, hour12);
+
+ case L_('k'): /* GNU extension. */
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER_SPACEPAD (2, tp->tm_hour);
+
+ case L_('l'): /* GNU extension. */
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER_SPACEPAD (2, hour12);
+
+ case L_('j'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_SIGNED_NUMBER (3, tp->tm_yday < -1, tp->tm_yday + 1U);
+
+ case L_('M'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER (2, tp->tm_min);
+
+ case L_('m'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_SIGNED_NUMBER (2, tp->tm_mon < -1, tp->tm_mon + 1U);
+
+#ifndef _LIBC
+ case L_('N'): /* GNU extension. */
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ number_value = ns;
+ if (width == -1)
+ width = 9;
+ else
+ {
+ /* Take an explicit width less than 9 as a precision. */
+ int j;
+ for (j = width; j < 9; j++)
+ number_value /= 10;
+ }
+
+ DO_NUMBER (width, number_value);
+#endif
+
+ case L_('n'):
+ add1 (L_('\n'));
+ break;
+
+ case L_('P'):
+ to_lowcase = true;
+#ifndef _NL_CURRENT
+ format_char = L_('p');
+#endif
+ /* FALLTHROUGH */
+
+ case L_('p'):
+ if (change_case)
+ {
+ to_uppcase = false;
+ to_lowcase = true;
+ }
+#ifdef _NL_CURRENT
+ cpy (ap_len, ampm);
+ break;
+#else
+ goto underlying_strftime;
+#endif
+
+ case L_('R'):
+ subfmt = L_("%H:%M");
+ goto subformat;
+
+ case L_('r'):
+#ifdef _NL_CURRENT
+ if (*(subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME,
+ NLW(T_FMT_AMPM)))
+ == L_('\0'))
+ subfmt = L_("%I:%M:%S %p");
+ goto subformat;
+#else
+ goto underlying_strftime;
+#endif
+
+ case L_('S'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER (2, tp->tm_sec);
+
+ case L_('s'): /* GNU extension. */
+ {
+ struct tm ltm;
+ time_t t;
+
+ ltm = *tp;
+ t = mktime (&ltm);
+
+ /* Generate string value for T using time_t arithmetic;
+ this works even if sizeof (long) < sizeof (time_t). */
+
+ bufp = buf + sizeof (buf) / sizeof (buf[0]);
+ negative_number = t < 0;
+
+ do
+ {
+ int d = t % 10;
+ t /= 10;
+ *--bufp = (negative_number ? -d : d) + L_('0');
+ }
+ while (t != 0);
+
+ digits = 1;
+ always_output_a_sign = false;
+ goto do_number_sign_and_padding;
+ }
+
+ case L_('X'):
+ if (modifier == L_('O'))
+ goto bad_format;
+#ifdef _NL_CURRENT
+ if (! (modifier == L_('E')
+ && (*(subfmt =
+ (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ERA_T_FMT)))
+ != L_('\0'))))
+ subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(T_FMT));
+ goto subformat;
+#else
+ goto underlying_strftime;
+#endif
+ case L_('T'):
+ subfmt = L_("%H:%M:%S");
+ goto subformat;
+
+ case L_('t'):
+ add1 (L_('\t'));
+ break;
+
+ case L_('u'):
+ DO_NUMBER (1, (tp->tm_wday - 1 + 7) % 7 + 1);
+
+ case L_('U'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER (2, (tp->tm_yday - tp->tm_wday + 7) / 7);
+
+ case L_('V'):
+ case L_('g'):
+ case L_('G'):
+ if (modifier == L_('E'))
+ goto bad_format;
+ {
+ /* YEAR is a leap year if and only if (tp->tm_year + TM_YEAR_BASE)
+ is a leap year, except that YEAR and YEAR - 1 both work
+ correctly even when (tp->tm_year + TM_YEAR_BASE) would
+ overflow. */
+ int year = (tp->tm_year
+ + (tp->tm_year < 0
+ ? TM_YEAR_BASE % 400
+ : TM_YEAR_BASE % 400 - 400));
+ int year_adjust = 0;
+ int days = iso_week_days (tp->tm_yday, tp->tm_wday);
+
+ if (days < 0)
+ {
+ /* This ISO week belongs to the previous year. */
+ year_adjust = -1;
+ days = iso_week_days (tp->tm_yday + (365 + __isleap (year - 1)),
+ tp->tm_wday);
+ }
+ else
+ {
+ int d = iso_week_days (tp->tm_yday - (365 + __isleap (year)),
+ tp->tm_wday);
+ if (0 <= d)
+ {
+ /* This ISO week belongs to the next year. */
+ year_adjust = 1;
+ days = d;
+ }
+ }
+
+ switch (*f)
+ {
+ case L_('g'):
+ {
+ int yy = (tp->tm_year % 100 + year_adjust) % 100;
+ DO_NUMBER (2, (0 <= yy
+ ? yy
+ : tp->tm_year < -TM_YEAR_BASE - year_adjust
+ ? -yy
+ : yy + 100));
+ }
+
+ case L_('G'):
+ DO_SIGNED_NUMBER (4, tp->tm_year < -TM_YEAR_BASE - year_adjust,
+ (tp->tm_year + (unsigned int) TM_YEAR_BASE
+ + year_adjust));
+
+ default:
+ DO_NUMBER (2, days / 7 + 1);
+ }
+ }
+
+ case L_('W'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER (2, (tp->tm_yday - (tp->tm_wday - 1 + 7) % 7 + 7) / 7);
+
+ case L_('w'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER (1, tp->tm_wday);
+
+ case L_('Y'):
+ if (modifier == 'E')
+ {
+#if HAVE_STRUCT_ERA_ENTRY
+ struct era_entry *era = _nl_get_era_entry (tp HELPER_LOCALE_ARG);
+ if (era)
+ {
+# ifdef COMPILE_WIDE
+ subfmt = era->era_wformat;
+# else
+ subfmt = era->era_format;
+# endif
+ goto subformat;
+ }
+#else
+ goto underlying_strftime;
+#endif
+ }
+ if (modifier == L_('O'))
+ goto bad_format;
+ else
+ DO_SIGNED_NUMBER (4, tp->tm_year < -TM_YEAR_BASE,
+ tp->tm_year + (unsigned int) TM_YEAR_BASE);
+
+ case L_('y'):
+ if (modifier == L_('E'))
+ {
+#if HAVE_STRUCT_ERA_ENTRY
+ struct era_entry *era = _nl_get_era_entry (tp HELPER_LOCALE_ARG);
+ if (era)
+ {
+ int delta = tp->tm_year - era->start_date[0];
+ DO_NUMBER (1, (era->offset
+ + delta * era->absolute_direction));
+ }
+#else
+ goto underlying_strftime;
+#endif
+ }
+
+ {
+ int yy = tp->tm_year % 100;
+ if (yy < 0)
+ yy = tp->tm_year < - TM_YEAR_BASE ? -yy : yy + 100;
+ DO_NUMBER (2, yy);
+ }
+
+ case L_('Z'):
+ if (change_case)
+ {
+ to_uppcase = false;
+ to_lowcase = true;
+ }
+
+#if HAVE_TZNAME
+ /* The tzset() call might have changed the value. */
+ if (!(zone && *zone) && tp->tm_isdst >= 0)
+ zone = tzname[tp->tm_isdst != 0];
+#endif
+ if (! zone)
+ zone = "";
+
+#ifdef COMPILE_WIDE
+ {
+ /* The zone string is always given in multibyte form. We have
+ to transform it first. */
+ wchar_t *wczone;
+ size_t len;
+ widen (zone, wczone, len);
+ cpy (len, wczone);
+ }
+#else
+ cpy (strlen (zone), zone);
+#endif
+ break;
+
+ case L_(':'):
+ /* :, ::, and ::: are valid only just before 'z'.
+ :::: etc. are rejected later. */
+ for (colons = 1; f[colons] == L_(':'); colons++)
+ continue;
+ if (f[colons] != L_('z'))
+ goto bad_format;
+ f += colons;
+ goto do_z_conversion;
+
+ case L_('z'):
+ colons = 0;
+
+ do_z_conversion:
+ if (tp->tm_isdst < 0)
+ break;
+
+ {
+ int diff;
+ int hour_diff;
+ int min_diff;
+ int sec_diff;
+#if HAVE_TM_GMTOFF
+ diff = tp->tm_gmtoff;
+#else
+ if (ut)
+ diff = 0;
+ else
+ {
+ struct tm gtm;
+ struct tm ltm;
+ time_t lt;
+
+ ltm = *tp;
+ lt = mktime (&ltm);
+
+ if (lt == (time_t) -1)
+ {
+ /* mktime returns -1 for errors, but -1 is also a
+ valid time_t value. Check whether an error really
+ occurred. */
+ struct tm tm;
+
+ if (! __localtime_r (&lt, &tm)
+ || ((ltm.tm_sec ^ tm.tm_sec)
+ | (ltm.tm_min ^ tm.tm_min)
+ | (ltm.tm_hour ^ tm.tm_hour)
+ | (ltm.tm_mday ^ tm.tm_mday)
+ | (ltm.tm_mon ^ tm.tm_mon)
+ | (ltm.tm_year ^ tm.tm_year)))
+ break;
+ }
+
+ if (! __gmtime_r (&lt, &gtm))
+ break;
+
+ diff = tm_diff (&ltm, &gtm);
+ }
+#endif
+
+ hour_diff = diff / 60 / 60;
+ min_diff = diff / 60 % 60;
+ sec_diff = diff % 60;
+
+ switch (colons)
+ {
+ case 0: /* +hhmm */
+ DO_TZ_OFFSET (5, diff < 0, 0, hour_diff * 100 + min_diff);
+
+ case 1: tz_hh_mm: /* +hh:mm */
+ DO_TZ_OFFSET (6, diff < 0, 04, hour_diff * 100 + min_diff);
+
+ case 2: tz_hh_mm_ss: /* +hh:mm:ss */
+ DO_TZ_OFFSET (9, diff < 0, 024,
+ hour_diff * 10000 + min_diff * 100 + sec_diff);
+
+ case 3: /* +hh if possible, else +hh:mm, else +hh:mm:ss */
+ if (sec_diff != 0)
+ goto tz_hh_mm_ss;
+ if (min_diff != 0)
+ goto tz_hh_mm;
+ DO_TZ_OFFSET (3, diff < 0, 0, hour_diff);
+
+ default:
+ goto bad_format;
+ }
+ }
+
+ case L_('\0'): /* GNU extension: % at end of format. */
+ --f;
+ /* Fall through. */
+ default:
+ /* Unknown format; output the format, including the '%',
+ since this is most likely the right thing to do if a
+ multibyte string has been misparsed. */
+ bad_format:
+ {
+ int flen;
+ for (flen = 1; f[1 - flen] != L_('%'); flen++)
+ continue;
+ cpy (flen, &f[1 - flen]);
+ }
+ break;
+ }
+ }
+
+#if ! FPRINTFTIME
+ if (p && maxsize != 0)
+ *p = L_('\0');
+#endif
+
+ return i;
+}
+
+/* Write information from TP into S according to the format
+ string FORMAT, writing no more that MAXSIZE characters
+ (including the terminating '\0') and returning number of
+ characters written. If S is NULL, nothing will be written
+ anywhere, so to determine how many characters would be
+ written, use NULL for S and (size_t) -1 for MAXSIZE. */
+size_t
+my_strftime (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
+ const CHAR_T *format,
+ const struct tm *tp extra_args_spec LOCALE_PARAM_PROTO)
+{
+ return strftime_case_ (false, s, STRFTIME_ARG (maxsize)
+ format, tp extra_args LOCALE_ARG);
+}
+
+#if defined _LIBC && ! FPRINTFTIME
+libc_hidden_def (my_strftime)
+#endif
+
+
+#if defined emacs && ! FPRINTFTIME
+/* For Emacs we have a separate interface which corresponds to the normal
+ strftime function plus the ut argument, but without the ns argument. */
+size_t
+emacs_strftimeu (char *s, size_t maxsize, const char *format,
+ const struct tm *tp, int ut)
+{
+ return my_strftime (s, maxsize, format, tp, ut, 0);
+}
+#endif
diff --git a/lib/strftime.h b/lib/strftime.h
new file mode 100644
index 0000000000..3410568a9a
--- /dev/null
+++ b/lib/strftime.h
@@ -0,0 +1,34 @@
+/* declarations for strftime.c
+
+ Copyright (C) 2002, 2004, 2008-2011 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/>. */
+
+#include <time.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Just like strftime, but with two more arguments:
+ POSIX requires that strftime use the local timezone information.
+ When __UTC is nonzero and tm->tm_zone is NULL or the empty string,
+ use UTC instead. Use __NS as the number of nanoseconds in the
+ %N directive. */
+size_t nstrftime (char *, size_t, char const *, struct tm const *,
+ int __utc, int __ns);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/lib/time.in.h b/lib/time.in.h
new file mode 100644
index 0000000000..2d6da7161f
--- /dev/null
+++ b/lib/time.in.h
@@ -0,0 +1,243 @@
+/* A more-standard <time.h>.
+
+ Copyright (C) 2007-2011 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, 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* Don't get in the way of glibc when it includes time.h merely to
+ declare a few standard symbols, rather than to declare all the
+ symbols. Also, Solaris 8 <time.h> eventually includes itself
+ recursively; if that is happening, just include the system <time.h>
+ without adding our own declarations. */
+#if (defined __need_time_t || defined __need_clock_t \
+ || defined __need_timespec \
+ || defined _GL_TIME_H)
+
+# @INCLUDE_NEXT@ @NEXT_TIME_H@
+
+#else
+
+# define _GL_TIME_H
+
+# @INCLUDE_NEXT@ @NEXT_TIME_H@
+
+/* NetBSD 5.0 mis-defines NULL. */
+# include <stddef.h>
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
+
+/* The definition of _GL_ARG_NONNULL is copied here. */
+
+/* The definition of _GL_WARN_ON_USE is copied here. */
+
+/* Some systems don't define struct timespec (e.g., AIX 4.1, Ultrix 4.3).
+ Or they define it with the wrong member names or define it in <sys/time.h>
+ (e.g., FreeBSD circa 1997). Stock Mingw does not define it, but the
+ pthreads-win32 library defines it in <pthread.h>. */
+# if ! @TIME_H_DEFINES_STRUCT_TIMESPEC@
+# if @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+# include <sys/time.h>
+# elif @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+# include <pthread.h>
+/* The pthreads-win32 <pthread.h> also defines a couple of broken macros. */
+# undef asctime_r
+# undef ctime_r
+# undef gmtime_r
+# undef localtime_r
+# undef rand_r
+# undef strtok_r
+# else
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+# undef timespec
+# define timespec rpl_timespec
+struct timespec
+{
+ time_t tv_sec;
+ long int tv_nsec;
+};
+
+# ifdef __cplusplus
+}
+# endif
+
+# endif
+# endif
+
+/* Per http://austingroupbugs.net/view.php?id=327, POSIX requires
+ time_t to be an integer type, even though C99 permits floating
+ point. We don't know of any implementation that uses floating
+ point, and it is much easier to write code that doesn't have to
+ worry about that corner case, so we force the issue. */
+struct __time_t_must_be_integral {
+ unsigned int __floating_time_t_unsupported : (time_t) 1;
+};
+
+/* Sleep for at least RQTP seconds unless interrupted, If interrupted,
+ return -1 and store the remaining time into RMTP. See
+ <http://www.opengroup.org/susv3xsh/nanosleep.html>. */
+# if @GNULIB_NANOSLEEP@
+# if @REPLACE_NANOSLEEP@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define nanosleep rpl_nanosleep
+# endif
+_GL_FUNCDECL_RPL (nanosleep, int,
+ (struct timespec const *__rqtp, struct timespec *__rmtp)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (nanosleep, int,
+ (struct timespec const *__rqtp, struct timespec *__rmtp));
+# else
+# if ! @HAVE_NANOSLEEP@
+_GL_FUNCDECL_SYS (nanosleep, int,
+ (struct timespec const *__rqtp, struct timespec *__rmtp)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (nanosleep, int,
+ (struct timespec const *__rqtp, struct timespec *__rmtp));
+# endif
+_GL_CXXALIASWARN (nanosleep);
+# endif
+
+/* Return the 'time_t' representation of TP and normalize TP. */
+# if @GNULIB_MKTIME@
+# if @REPLACE_MKTIME@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define mktime rpl_mktime
+# endif
+_GL_FUNCDECL_RPL (mktime, time_t, (struct tm *__tp) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mktime, time_t, (struct tm *__tp));
+# else
+_GL_CXXALIAS_SYS (mktime, time_t, (struct tm *__tp));
+# endif
+_GL_CXXALIASWARN (mktime);
+# endif
+
+/* Convert TIMER to RESULT, assuming local time and UTC respectively. See
+ <http://www.opengroup.org/susv3xsh/localtime_r.html> and
+ <http://www.opengroup.org/susv3xsh/gmtime_r.html>. */
+# if @GNULIB_TIME_R@
+# if @REPLACE_LOCALTIME_R@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef localtime_r
+# define localtime_r rpl_localtime_r
+# endif
+_GL_FUNCDECL_RPL (localtime_r, struct tm *, (time_t const *restrict __timer,
+ struct tm *restrict __result)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (localtime_r, struct tm *, (time_t const *restrict __timer,
+ struct tm *restrict __result));
+# else
+# if ! @HAVE_DECL_LOCALTIME_R@
+_GL_FUNCDECL_SYS (localtime_r, struct tm *, (time_t const *restrict __timer,
+ struct tm *restrict __result)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (localtime_r, struct tm *, (time_t const *restrict __timer,
+ struct tm *restrict __result));
+# endif
+# if @HAVE_DECL_LOCALTIME_R@
+_GL_CXXALIASWARN (localtime_r);
+# endif
+# if @REPLACE_LOCALTIME_R@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef gmtime_r
+# define gmtime_r rpl_gmtime_r
+# endif
+_GL_FUNCDECL_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer,
+ struct tm *restrict __result)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer,
+ struct tm *restrict __result));
+# else
+# if ! @HAVE_DECL_LOCALTIME_R@
+_GL_FUNCDECL_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer,
+ struct tm *restrict __result)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer,
+ struct tm *restrict __result));
+# endif
+# if @HAVE_DECL_LOCALTIME_R@
+_GL_CXXALIASWARN (gmtime_r);
+# endif
+# endif
+
+/* Parse BUF as a time stamp, assuming FORMAT specifies its layout, and store
+ the resulting broken-down time into TM. See
+ <http://www.opengroup.org/susv3xsh/strptime.html>. */
+# if @GNULIB_STRPTIME@
+# if ! @HAVE_STRPTIME@
+_GL_FUNCDECL_SYS (strptime, char *, (char const *restrict __buf,
+ char const *restrict __format,
+ struct tm *restrict __tm)
+ _GL_ARG_NONNULL ((1, 2, 3)));
+# endif
+_GL_CXXALIAS_SYS (strptime, char *, (char const *restrict __buf,
+ char const *restrict __format,
+ struct tm *restrict __tm));
+_GL_CXXALIASWARN (strptime);
+# endif
+
+/* Convert TM to a time_t value, assuming UTC. */
+# if @GNULIB_TIMEGM@
+# if @REPLACE_TIMEGM@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef timegm
+# define timegm rpl_timegm
+# endif
+_GL_FUNCDECL_RPL (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (timegm, time_t, (struct tm *__tm));
+# else
+# if ! @HAVE_TIMEGM@
+_GL_FUNCDECL_SYS (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (timegm, time_t, (struct tm *__tm));
+# endif
+_GL_CXXALIASWARN (timegm);
+# endif
+
+/* Encourage applications to avoid unsafe functions that can overrun
+ buffers when given outlandish struct tm values. Portable
+ applications should use strftime (or even sprintf) instead. */
+# if defined GNULIB_POSIXCHECK
+# undef asctime
+_GL_WARN_ON_USE (asctime, "asctime can overrun buffers in some cases - "
+ "better use strftime (or even sprintf) instead");
+# endif
+# if defined GNULIB_POSIXCHECK
+# undef asctime_r
+_GL_WARN_ON_USE (asctime, "asctime_r can overrun buffers in some cases - "
+ "better use strftime (or even sprintf) instead");
+# endif
+# if defined GNULIB_POSIXCHECK
+# undef ctime
+_GL_WARN_ON_USE (asctime, "ctime can overrun buffers in some cases - "
+ "better use strftime (or even sprintf) instead");
+# endif
+# if defined GNULIB_POSIXCHECK
+# undef ctime_r
+_GL_WARN_ON_USE (asctime, "ctime_r can overrun buffers in some cases - "
+ "better use strftime (or even sprintf) instead");
+# endif
+
+#endif
diff --git a/lib/time_r.c b/lib/time_r.c
new file mode 100644
index 0000000000..31d010e437
--- /dev/null
+++ b/lib/time_r.c
@@ -0,0 +1,45 @@
+/* Reentrant time functions like localtime_r.
+
+ Copyright (C) 2003, 2006-2007, 2010-2011 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, 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include <time.h>
+
+static struct tm *
+copy_tm_result (struct tm *dest, struct tm const *src)
+{
+ if (! src)
+ return 0;
+ *dest = *src;
+ return dest;
+}
+
+
+struct tm *
+gmtime_r (time_t const * restrict t, struct tm * restrict tp)
+{
+ return copy_tm_result (tp, gmtime (t));
+}
+
+struct tm *
+localtime_r (time_t const * restrict t, struct tm * restrict tp)
+{
+ return copy_tm_result (tp, localtime (t));
+}
diff --git a/lib/unistd.in.h b/lib/unistd.in.h
new file mode 100644
index 0000000000..14d685e0c8
--- /dev/null
+++ b/lib/unistd.in.h
@@ -0,0 +1,1378 @@
+/* Substitute for and wrapper around <unistd.h>.
+ Copyright (C) 2003-2011 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, 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* Special invocation convention:
+ - On mingw, several headers, including <winsock2.h>, include <unistd.h>,
+ but we need to ensure that both the system <unistd.h> and <winsock2.h>
+ are completely included before we replace gethostname. */
+#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \
+ && !defined _GL_WINSOCK2_H_WITNESS && defined _WINSOCK2_H
+/* <unistd.h> is being indirectly included for the first time from
+ <winsock2.h>; avoid declaring any overrides. */
+# if @HAVE_UNISTD_H@
+# @INCLUDE_NEXT@ @NEXT_UNISTD_H@
+# else
+# error unexpected; report this to [email protected]
+# endif
+# define _GL_WINSOCK2_H_WITNESS
+
+/* Normal invocation. */
+#elif !defined _GL_UNISTD_H
+
+/* The include_next requires a split double-inclusion guard. */
+#if @HAVE_UNISTD_H@
+# @INCLUDE_NEXT@ @NEXT_UNISTD_H@
+#endif
+
+/* Get all possible declarations of gethostname(). */
+#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \
+ && !defined _GL_INCLUDING_WINSOCK2_H
+# define _GL_INCLUDING_WINSOCK2_H
+# include <winsock2.h>
+# undef _GL_INCLUDING_WINSOCK2_H
+#endif
+
+#if !defined _GL_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H
+#define _GL_UNISTD_H
+
+/* NetBSD 5.0 mis-defines NULL. Also get size_t. */
+#include <stddef.h>
+
+/* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>. */
+/* Cygwin 1.7.1 declares symlinkat in <stdio.h>, not in <unistd.h>. */
+/* But avoid namespace pollution on glibc systems. */
+#if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \
+ || ((@GNULIB_SYMLINKAT@ || defined GNULIB_POSIXCHECK) \
+ && defined __CYGWIN__)) \
+ && ! defined __GLIBC__
+# include <stdio.h>
+#endif
+
+/* Cygwin 1.7.1 declares unlinkat in <fcntl.h>, not in <unistd.h>. */
+/* But avoid namespace pollution on glibc systems. */
+#if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) && defined __CYGWIN__ \
+ && ! defined __GLIBC__
+# include <fcntl.h>
+#endif
+
+/* mingw fails to declare _exit in <unistd.h>. */
+/* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>. */
+/* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>. */
+/* But avoid namespace pollution on glibc systems. */
+#ifndef __GLIBC__
+# include <stdlib.h>
+#endif
+
+/* mingw declares getcwd in <io.h>, not in <unistd.h>. */
+#if ((@GNULIB_GETCWD@ || defined GNULIB_POSIXCHECK) \
+ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
+# include <io.h>
+#endif
+
+/* AIX and OSF/1 5.1 declare getdomainname in <netdb.h>, not in <unistd.h>.
+ NonStop Kernel declares gethostname in <netdb.h>, not in <unistd.h>. */
+/* But avoid namespace pollution on glibc systems. */
+#if ((@GNULIB_GETDOMAINNAME@ && (defined _AIX || defined __osf__)) \
+ || (@GNULIB_GETHOSTNAME@ && defined __TANDEM)) \
+ && !defined __GLIBC__
+# include <netdb.h>
+#endif
+
+#if (@GNULIB_WRITE@ || @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \
+ || @GNULIB_PREAD@ || @GNULIB_PWRITE@ || defined GNULIB_POSIXCHECK)
+/* Get ssize_t. */
+# include <sys/types.h>
+#endif
+
+/* Get getopt(), optarg, optind, opterr, optopt.
+ But avoid namespace pollution on glibc systems. */
+#if @GNULIB_UNISTD_H_GETOPT@ && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT
+# include <getopt.h>
+#endif
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
+
+/* The definition of _GL_ARG_NONNULL is copied here. */
+
+/* The definition of _GL_WARN_ON_USE is copied here. */
+
+
+#if @GNULIB_GETHOSTNAME@
+/* Get all possible declarations of gethostname(). */
+# if @UNISTD_H_HAVE_WINSOCK2_H@
+# if !defined _GL_SYS_SOCKET_H
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef socket
+# define socket socket_used_without_including_sys_socket_h
+# undef connect
+# define connect connect_used_without_including_sys_socket_h
+# undef accept
+# define accept accept_used_without_including_sys_socket_h
+# undef bind
+# define bind bind_used_without_including_sys_socket_h
+# undef getpeername
+# define getpeername getpeername_used_without_including_sys_socket_h
+# undef getsockname
+# define getsockname getsockname_used_without_including_sys_socket_h
+# undef getsockopt
+# define getsockopt getsockopt_used_without_including_sys_socket_h
+# undef listen
+# define listen listen_used_without_including_sys_socket_h
+# undef recv
+# define recv recv_used_without_including_sys_socket_h
+# undef send
+# define send send_used_without_including_sys_socket_h
+# undef recvfrom
+# define recvfrom recvfrom_used_without_including_sys_socket_h
+# undef sendto
+# define sendto sendto_used_without_including_sys_socket_h
+# undef setsockopt
+# define setsockopt setsockopt_used_without_including_sys_socket_h
+# undef shutdown
+# define shutdown shutdown_used_without_including_sys_socket_h
+# else
+ _GL_WARN_ON_USE (socket,
+ "socket() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (connect,
+ "connect() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (accept,
+ "accept() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (bind,
+ "bind() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (getpeername,
+ "getpeername() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (getsockname,
+ "getsockname() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (getsockopt,
+ "getsockopt() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (listen,
+ "listen() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (recv,
+ "recv() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (send,
+ "send() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (recvfrom,
+ "recvfrom() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (sendto,
+ "sendto() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (setsockopt,
+ "setsockopt() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (shutdown,
+ "shutdown() used without including <sys/socket.h>");
+# endif
+# endif
+# if !defined _GL_SYS_SELECT_H
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef select
+# define select select_used_without_including_sys_select_h
+# else
+ _GL_WARN_ON_USE (select,
+ "select() used without including <sys/select.h>");
+# endif
+# endif
+# endif
+#endif
+
+
+/* OS/2 EMX lacks these macros. */
+#ifndef STDIN_FILENO
+# define STDIN_FILENO 0
+#endif
+#ifndef STDOUT_FILENO
+# define STDOUT_FILENO 1
+#endif
+#ifndef STDERR_FILENO
+# define STDERR_FILENO 2
+#endif
+
+/* Ensure *_OK macros exist. */
+#ifndef F_OK
+# define F_OK 0
+# define X_OK 1
+# define W_OK 2
+# define R_OK 4
+#endif
+
+
+/* Declare overridden functions. */
+
+
+#if defined GNULIB_POSIXCHECK
+/* The access() function is a security risk. */
+_GL_WARN_ON_USE (access, "the access function is a security risk - "
+ "use the gnulib module faccessat instead");
+#endif
+
+
+#if @GNULIB_CHOWN@
+/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
+ to GID (if GID is not -1). Follow symbolic links.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/chown.html>. */
+# if @REPLACE_CHOWN@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef chown
+# define chown rpl_chown
+# endif
+_GL_FUNCDECL_RPL (chown, int, (const char *file, uid_t uid, gid_t gid)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (chown, int, (const char *file, uid_t uid, gid_t gid));
+# else
+# if !@HAVE_CHOWN@
+_GL_FUNCDECL_SYS (chown, int, (const char *file, uid_t uid, gid_t gid)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (chown, int, (const char *file, uid_t uid, gid_t gid));
+# endif
+_GL_CXXALIASWARN (chown);
+#elif defined GNULIB_POSIXCHECK
+# undef chown
+# if HAVE_RAW_DECL_CHOWN
+_GL_WARN_ON_USE (chown, "chown fails to follow symlinks on some systems and "
+ "doesn't treat a uid or gid of -1 on some systems - "
+ "use gnulib module chown for portability");
+# endif
+#endif
+
+
+#if @GNULIB_CLOSE@
+# if @REPLACE_CLOSE@
+/* Automatically included by modules that need a replacement for close. */
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef close
+# define close rpl_close
+# endif
+_GL_FUNCDECL_RPL (close, int, (int fd));
+_GL_CXXALIAS_RPL (close, int, (int fd));
+# else
+_GL_CXXALIAS_SYS (close, int, (int fd));
+# endif
+_GL_CXXALIASWARN (close);
+#elif @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+# undef close
+# define close close_used_without_requesting_gnulib_module_close
+#elif defined GNULIB_POSIXCHECK
+# undef close
+/* Assume close is always declared. */
+_GL_WARN_ON_USE (close, "close does not portably work on sockets - "
+ "use gnulib module close for portability");
+#endif
+
+
+#if @REPLACE_DUP@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define dup rpl_dup
+# endif
+_GL_FUNCDECL_RPL (dup, int, (int oldfd));
+_GL_CXXALIAS_RPL (dup, int, (int oldfd));
+#else
+_GL_CXXALIAS_SYS (dup, int, (int oldfd));
+#endif
+_GL_CXXALIASWARN (dup);
+
+
+#if @GNULIB_DUP2@
+/* Copy the file descriptor OLDFD into file descriptor NEWFD. Do nothing if
+ NEWFD = OLDFD, otherwise close NEWFD first if it is open.
+ Return newfd if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/dup2.html>. */
+# if @REPLACE_DUP2@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define dup2 rpl_dup2
+# endif
+_GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd));
+_GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd));
+# else
+# if !@HAVE_DUP2@
+_GL_FUNCDECL_SYS (dup2, int, (int oldfd, int newfd));
+# endif
+_GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd));
+# endif
+_GL_CXXALIASWARN (dup2);
+#elif defined GNULIB_POSIXCHECK
+# undef dup2
+# if HAVE_RAW_DECL_DUP2
+_GL_WARN_ON_USE (dup2, "dup2 is unportable - "
+ "use gnulib module dup2 for portability");
+# endif
+#endif
+
+
+#if @GNULIB_DUP3@
+/* Copy the file descriptor OLDFD into file descriptor NEWFD, with the
+ specified flags.
+ The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
+ and O_TEXT, O_BINARY (defined in "binary-io.h").
+ Close NEWFD first if it is open.
+ Return newfd if successful, otherwise -1 and errno set.
+ See the Linux man page at
+ <http://www.kernel.org/doc/man-pages/online/pages/man2/dup3.2.html>. */
+# if @HAVE_DUP3@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define dup3 rpl_dup3
+# endif
+_GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags));
+_GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags));
+# else
+_GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags));
+_GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags));
+# endif
+_GL_CXXALIASWARN (dup3);
+#elif defined GNULIB_POSIXCHECK
+# undef dup3
+# if HAVE_RAW_DECL_DUP3
+_GL_WARN_ON_USE (dup3, "dup3 is unportable - "
+ "use gnulib module dup3 for portability");
+# endif
+#endif
+
+
+#if @GNULIB_ENVIRON@
+# if !@HAVE_DECL_ENVIRON@
+/* Set of environment variables and values. An array of strings of the form
+ "VARIABLE=VALUE", terminated with a NULL. */
+# if defined __APPLE__ && defined __MACH__
+# include <crt_externs.h>
+# define environ (*_NSGetEnviron ())
+# else
+# ifdef __cplusplus
+extern "C" {
+# endif
+extern char **environ;
+# ifdef __cplusplus
+}
+# endif
+# endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# if HAVE_RAW_DECL_ENVIRON
+static inline char ***
+rpl_environ (void)
+{
+ return &environ;
+}
+_GL_WARN_ON_USE (rpl_environ, "environ is unportable - "
+ "use gnulib module environ for portability");
+# undef environ
+# define environ (*rpl_environ ())
+# endif
+#endif
+
+
+#if @GNULIB_EUIDACCESS@
+/* Like access(), except that it uses the effective user id and group id of
+ the current process. */
+# if !@HAVE_EUIDACCESS@
+_GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode));
+_GL_CXXALIASWARN (euidaccess);
+# if defined GNULIB_POSIXCHECK
+/* Like access(), this function is a security risk. */
+_GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - "
+ "use the gnulib module faccessat instead");
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef euidaccess
+# if HAVE_RAW_DECL_EUIDACCESS
+_GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - "
+ "use gnulib module euidaccess for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FACCESSAT@
+# if !@HAVE_FACCESSAT@
+_GL_FUNCDECL_SYS (faccessat, int,
+ (int fd, char const *file, int mode, int flag)
+ _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (faccessat, int,
+ (int fd, char const *file, int mode, int flag));
+_GL_CXXALIASWARN (faccessat);
+#elif defined GNULIB_POSIXCHECK
+# undef faccessat
+# if HAVE_RAW_DECL_FACCESSAT
+_GL_WARN_ON_USE (faccessat, "faccessat is not portable - "
+ "use gnulib module faccessat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FCHDIR@
+/* Change the process' current working directory to the directory on which
+ the given file descriptor is open.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/fchdir.html>. */
+# if ! @HAVE_FCHDIR@
+_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
+
+/* Gnulib internal hooks needed to maintain the fchdir metadata. */
+_GL_EXTERN_C int _gl_register_fd (int fd, const char *filename)
+ _GL_ARG_NONNULL ((2));
+_GL_EXTERN_C void _gl_unregister_fd (int fd);
+_GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd);
+_GL_EXTERN_C const char *_gl_directory_name (int fd);
+
+# else
+# if !@HAVE_DECL_FCHDIR@
+_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
+# endif
+# endif
+_GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/));
+_GL_CXXALIASWARN (fchdir);
+#elif defined GNULIB_POSIXCHECK
+# undef fchdir
+# if HAVE_RAW_DECL_FCHDIR
+_GL_WARN_ON_USE (fchdir, "fchdir is unportable - "
+ "use gnulib module fchdir for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FCHOWNAT@
+# if @REPLACE_FCHOWNAT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fchownat
+# define fchownat rpl_fchownat
+# endif
+_GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file,
+ uid_t owner, gid_t group, int flag)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file,
+ uid_t owner, gid_t group, int flag));
+# else
+# if !@HAVE_FCHOWNAT@
+_GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file,
+ uid_t owner, gid_t group, int flag)
+ _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file,
+ uid_t owner, gid_t group, int flag));
+# endif
+_GL_CXXALIASWARN (fchownat);
+#elif defined GNULIB_POSIXCHECK
+# undef fchownat
+# if HAVE_RAW_DECL_FCHOWNAT
+_GL_WARN_ON_USE (fchownat, "fchownat is not portable - "
+ "use gnulib module openat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FSYNC@
+/* Synchronize changes to a file.
+ Return 0 if successful, otherwise -1 and errno set.
+ See POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/fsync.html>. */
+# if !@HAVE_FSYNC@
+_GL_FUNCDECL_SYS (fsync, int, (int fd));
+# endif
+_GL_CXXALIAS_SYS (fsync, int, (int fd));
+_GL_CXXALIASWARN (fsync);
+#elif defined GNULIB_POSIXCHECK
+# undef fsync
+# if HAVE_RAW_DECL_FSYNC
+_GL_WARN_ON_USE (fsync, "fsync is unportable - "
+ "use gnulib module fsync for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FTRUNCATE@
+/* Change the size of the file to which FD is opened to become equal to LENGTH.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/ftruncate.html>. */
+# if !@HAVE_FTRUNCATE@
+_GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length));
+# endif
+_GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length));
+_GL_CXXALIASWARN (ftruncate);
+#elif defined GNULIB_POSIXCHECK
+# undef ftruncate
+# if HAVE_RAW_DECL_FTRUNCATE
+_GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - "
+ "use gnulib module ftruncate for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETCWD@
+/* Get the name of the current working directory, and put it in SIZE bytes
+ of BUF.
+ Return BUF if successful, or NULL if the directory couldn't be determined
+ or SIZE was too small.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/getcwd.html>.
+ Additionally, the gnulib module 'getcwd' guarantees the following GNU
+ extension: If BUF is NULL, an array is allocated with 'malloc'; the array
+ is SIZE bytes long, unless SIZE == 0, in which case it is as big as
+ necessary. */
+# if @REPLACE_GETCWD@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define getcwd rpl_getcwd
+# endif
+_GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size));
+_GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size));
+# else
+/* Need to cast, because on mingw, the second parameter is
+ int size. */
+_GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size));
+# endif
+_GL_CXXALIASWARN (getcwd);
+#elif defined GNULIB_POSIXCHECK
+# undef getcwd
+# if HAVE_RAW_DECL_GETCWD
+_GL_WARN_ON_USE (getcwd, "getcwd is unportable - "
+ "use gnulib module getcwd for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETDOMAINNAME@
+/* Return the NIS domain name of the machine.
+ WARNING! The NIS domain name is unrelated to the fully qualified host name
+ of the machine. It is also unrelated to email addresses.
+ WARNING! The NIS domain name is usually the empty string or "(none)" when
+ not using NIS.
+
+ Put up to LEN bytes of the NIS domain name into NAME.
+ Null terminate it if the name is shorter than LEN.
+ If the NIS domain name is longer than LEN, set errno = EINVAL and return -1.
+ Return 0 if successful, otherwise set errno and return -1. */
+# if @REPLACE_GETDOMAINNAME@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef getdomainname
+# define getdomainname rpl_getdomainname
+# endif
+_GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len));
+# else
+# if !@HAVE_DECL_GETDOMAINNAME@
+_GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len));
+# endif
+_GL_CXXALIASWARN (getdomainname);
+#elif defined GNULIB_POSIXCHECK
+# undef getdomainname
+# if HAVE_RAW_DECL_GETDOMAINNAME
+_GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - "
+ "use gnulib module getdomainname for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETDTABLESIZE@
+/* Return the maximum number of file descriptors in the current process.
+ In POSIX, this is same as sysconf (_SC_OPEN_MAX). */
+# if !@HAVE_GETDTABLESIZE@
+_GL_FUNCDECL_SYS (getdtablesize, int, (void));
+# endif
+_GL_CXXALIAS_SYS (getdtablesize, int, (void));
+_GL_CXXALIASWARN (getdtablesize);
+#elif defined GNULIB_POSIXCHECK
+# undef getdtablesize
+# if HAVE_RAW_DECL_GETDTABLESIZE
+_GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - "
+ "use gnulib module getdtablesize for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETGROUPS@
+/* Return the supplemental groups that the current process belongs to.
+ It is unspecified whether the effective group id is in the list.
+ If N is 0, return the group count; otherwise, N describes how many
+ entries are available in GROUPS. Return -1 and set errno if N is
+ not 0 and not large enough. Fails with ENOSYS on some systems. */
+# if @REPLACE_GETGROUPS@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef getgroups
+# define getgroups rpl_getgroups
+# endif
+_GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups));
+_GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups));
+# else
+# if !@HAVE_GETGROUPS@
+_GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups));
+# endif
+_GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups));
+# endif
+_GL_CXXALIASWARN (getgroups);
+#elif defined GNULIB_POSIXCHECK
+# undef getgroups
+# if HAVE_RAW_DECL_GETGROUPS
+_GL_WARN_ON_USE (getgroups, "getgroups is unportable - "
+ "use gnulib module getgroups for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETHOSTNAME@
+/* Return the standard host name of the machine.
+ WARNING! The host name may or may not be fully qualified.
+
+ Put up to LEN bytes of the host name into NAME.
+ Null terminate it if the name is shorter than LEN.
+ If the host name is longer than LEN, set errno = EINVAL and return -1.
+ Return 0 if successful, otherwise set errno and return -1. */
+# if @UNISTD_H_HAVE_WINSOCK2_H@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef gethostname
+# define gethostname rpl_gethostname
+# endif
+_GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len));
+# else
+# if !@HAVE_GETHOSTNAME@
+_GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len)
+ _GL_ARG_NONNULL ((1)));
+# endif
+/* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second
+ parameter is
+ int len. */
+_GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len));
+# endif
+_GL_CXXALIASWARN (gethostname);
+#elif @UNISTD_H_HAVE_WINSOCK2_H@
+# undef gethostname
+# define gethostname gethostname_used_without_requesting_gnulib_module_gethostname
+#elif defined GNULIB_POSIXCHECK
+# undef gethostname
+# if HAVE_RAW_DECL_GETHOSTNAME
+_GL_WARN_ON_USE (gethostname, "gethostname is unportable - "
+ "use gnulib module gethostname for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETLOGIN@
+/* Returns the user's login name, or NULL if it cannot be found. Upon error,
+ returns NULL with errno set.
+
+ See <http://www.opengroup.org/susv3xsh/getlogin.html>.
+
+ Most programs don't need to use this function, because the information is
+ available through environment variables:
+ ${LOGNAME-$USER} on Unix platforms,
+ $USERNAME on native Windows platforms.
+ */
+# if !@HAVE_GETLOGIN@
+_GL_FUNCDECL_SYS (getlogin, char *, (void));
+# endif
+_GL_CXXALIAS_SYS (getlogin, char *, (void));
+_GL_CXXALIASWARN (getlogin);
+#elif defined GNULIB_POSIXCHECK
+# undef getlogin
+# if HAVE_RAW_DECL_GETLOGIN
+_GL_WARN_ON_USE (getlogin, "getlogin is unportable - "
+ "use gnulib module getlogin for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETLOGIN_R@
+/* Copies the user's login name to NAME.
+ The array pointed to by NAME has room for SIZE bytes.
+
+ Returns 0 if successful. Upon error, an error number is returned, or -1 in
+ the case that the login name cannot be found but no specific error is
+ provided (this case is hopefully rare but is left open by the POSIX spec).
+
+ See <http://www.opengroup.org/susv3xsh/getlogin.html>.
+
+ Most programs don't need to use this function, because the information is
+ available through environment variables:
+ ${LOGNAME-$USER} on Unix platforms,
+ $USERNAME on native Windows platforms.
+ */
+# if @REPLACE_GETLOGIN_R@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define getlogin_r rpl_getlogin_r
+# endif
+_GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size));
+# else
+# if !@HAVE_DECL_GETLOGIN_R@
+_GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size)
+ _GL_ARG_NONNULL ((1)));
+# endif
+/* Need to cast, because on Solaris 10 systems, the second argument is
+ int size. */
+_GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size));
+# endif
+_GL_CXXALIASWARN (getlogin_r);
+#elif defined GNULIB_POSIXCHECK
+# undef getlogin_r
+# if HAVE_RAW_DECL_GETLOGIN_R
+_GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - "
+ "use gnulib module getlogin_r for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETPAGESIZE@
+# if @REPLACE_GETPAGESIZE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define getpagesize rpl_getpagesize
+# endif
+_GL_FUNCDECL_RPL (getpagesize, int, (void));
+_GL_CXXALIAS_RPL (getpagesize, int, (void));
+# else
+# if !@HAVE_GETPAGESIZE@
+# if !defined getpagesize
+/* This is for POSIX systems. */
+# if !defined _gl_getpagesize && defined _SC_PAGESIZE
+# if ! (defined __VMS && __VMS_VER < 70000000)
+# define _gl_getpagesize() sysconf (_SC_PAGESIZE)
+# endif
+# endif
+/* This is for older VMS. */
+# if !defined _gl_getpagesize && defined __VMS
+# ifdef __ALPHA
+# define _gl_getpagesize() 8192
+# else
+# define _gl_getpagesize() 512
+# endif
+# endif
+/* This is for BeOS. */
+# if !defined _gl_getpagesize && @HAVE_OS_H@
+# include <OS.h>
+# if defined B_PAGE_SIZE
+# define _gl_getpagesize() B_PAGE_SIZE
+# endif
+# endif
+/* This is for AmigaOS4.0. */
+# if !defined _gl_getpagesize && defined __amigaos4__
+# define _gl_getpagesize() 2048
+# endif
+/* This is for older Unix systems. */
+# if !defined _gl_getpagesize && @HAVE_SYS_PARAM_H@
+# include <sys/param.h>
+# ifdef EXEC_PAGESIZE
+# define _gl_getpagesize() EXEC_PAGESIZE
+# else
+# ifdef NBPG
+# ifndef CLSIZE
+# define CLSIZE 1
+# endif
+# define _gl_getpagesize() (NBPG * CLSIZE)
+# else
+# ifdef NBPC
+# define _gl_getpagesize() NBPC
+# endif
+# endif
+# endif
+# endif
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define getpagesize() _gl_getpagesize ()
+# else
+static inline int
+getpagesize ()
+{
+ return _gl_getpagesize ();
+}
+# endif
+# endif
+# endif
+/* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t. */
+_GL_CXXALIAS_SYS_CAST (getpagesize, int, (void));
+# endif
+# if @HAVE_DECL_GETPAGESIZE@
+_GL_CXXALIASWARN (getpagesize);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getpagesize
+# if HAVE_RAW_DECL_GETPAGESIZE
+_GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - "
+ "use gnulib module getpagesize for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETUSERSHELL@
+/* Return the next valid login shell on the system, or NULL when the end of
+ the list has been reached. */
+# if !@HAVE_DECL_GETUSERSHELL@
+_GL_FUNCDECL_SYS (getusershell, char *, (void));
+# endif
+_GL_CXXALIAS_SYS (getusershell, char *, (void));
+_GL_CXXALIASWARN (getusershell);
+#elif defined GNULIB_POSIXCHECK
+# undef getusershell
+# if HAVE_RAW_DECL_GETUSERSHELL
+_GL_WARN_ON_USE (getusershell, "getusershell is unportable - "
+ "use gnulib module getusershell for portability");
+# endif
+#endif
+
+#if @GNULIB_GETUSERSHELL@
+/* Rewind to pointer that is advanced at each getusershell() call. */
+# if !@HAVE_DECL_GETUSERSHELL@
+_GL_FUNCDECL_SYS (setusershell, void, (void));
+# endif
+_GL_CXXALIAS_SYS (setusershell, void, (void));
+_GL_CXXALIASWARN (setusershell);
+#elif defined GNULIB_POSIXCHECK
+# undef setusershell
+# if HAVE_RAW_DECL_SETUSERSHELL
+_GL_WARN_ON_USE (setusershell, "setusershell is unportable - "
+ "use gnulib module getusershell for portability");
+# endif
+#endif
+
+#if @GNULIB_GETUSERSHELL@
+/* Free the pointer that is advanced at each getusershell() call and
+ associated resources. */
+# if !@HAVE_DECL_GETUSERSHELL@
+_GL_FUNCDECL_SYS (endusershell, void, (void));
+# endif
+_GL_CXXALIAS_SYS (endusershell, void, (void));
+_GL_CXXALIASWARN (endusershell);
+#elif defined GNULIB_POSIXCHECK
+# undef endusershell
+# if HAVE_RAW_DECL_ENDUSERSHELL
+_GL_WARN_ON_USE (endusershell, "endusershell is unportable - "
+ "use gnulib module getusershell for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LCHOWN@
+/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
+ to GID (if GID is not -1). Do not follow symbolic links.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/lchown.html>. */
+# if @REPLACE_LCHOWN@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef lchown
+# define lchown rpl_lchown
+# endif
+_GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group));
+# else
+# if !@HAVE_LCHOWN@
+_GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group));
+# endif
+_GL_CXXALIASWARN (lchown);
+#elif defined GNULIB_POSIXCHECK
+# undef lchown
+# if HAVE_RAW_DECL_LCHOWN
+_GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - "
+ "use gnulib module lchown for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LINK@
+/* Create a new hard link for an existing file.
+ Return 0 if successful, otherwise -1 and errno set.
+ See POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/link.html>. */
+# if @REPLACE_LINK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define link rpl_link
+# endif
+_GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2));
+# else
+# if !@HAVE_LINK@
+_GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2));
+# endif
+_GL_CXXALIASWARN (link);
+#elif defined GNULIB_POSIXCHECK
+# undef link
+# if HAVE_RAW_DECL_LINK
+_GL_WARN_ON_USE (link, "link is unportable - "
+ "use gnulib module link for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LINKAT@
+/* Create a new hard link for an existing file, relative to two
+ directories. FLAG controls whether symlinks are followed.
+ Return 0 if successful, otherwise -1 and errno set. */
+# if @REPLACE_LINKAT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef linkat
+# define linkat rpl_linkat
+# endif
+_GL_FUNCDECL_RPL (linkat, int,
+ (int fd1, const char *path1, int fd2, const char *path2,
+ int flag)
+ _GL_ARG_NONNULL ((2, 4)));
+_GL_CXXALIAS_RPL (linkat, int,
+ (int fd1, const char *path1, int fd2, const char *path2,
+ int flag));
+# else
+# if !@HAVE_LINKAT@
+_GL_FUNCDECL_SYS (linkat, int,
+ (int fd1, const char *path1, int fd2, const char *path2,
+ int flag)
+ _GL_ARG_NONNULL ((2, 4)));
+# endif
+_GL_CXXALIAS_SYS (linkat, int,
+ (int fd1, const char *path1, int fd2, const char *path2,
+ int flag));
+# endif
+_GL_CXXALIASWARN (linkat);
+#elif defined GNULIB_POSIXCHECK
+# undef linkat
+# if HAVE_RAW_DECL_LINKAT
+_GL_WARN_ON_USE (linkat, "linkat is unportable - "
+ "use gnulib module linkat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LSEEK@
+/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END.
+ Return the new offset if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/lseek.html>. */
+# if @REPLACE_LSEEK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define lseek rpl_lseek
+# endif
+_GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence));
+_GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence));
+# else
+_GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence));
+# endif
+_GL_CXXALIASWARN (lseek);
+#elif defined GNULIB_POSIXCHECK
+# undef lseek
+# if HAVE_RAW_DECL_LSEEK
+_GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some "
+ "systems - use gnulib module lseek for portability");
+# endif
+#endif
+
+
+#if @GNULIB_PIPE@
+/* Create a pipe, defaulting to O_BINARY mode.
+ Store the read-end as fd[0] and the write-end as fd[1].
+ Return 0 upon success, or -1 with errno set upon failure. */
+# if !@HAVE_PIPE@
+_GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pipe, int, (int fd[2]));
+_GL_CXXALIASWARN (pipe);
+#elif defined GNULIB_POSIXCHECK
+# undef pipe
+# if HAVE_RAW_DECL_PIPE
+_GL_WARN_ON_USE (pipe, "pipe is unportable - "
+ "use gnulib module pipe-posix for portability");
+# endif
+#endif
+
+
+#if @GNULIB_PIPE2@
+/* Create a pipe, applying the given flags when opening the read-end of the
+ pipe and the write-end of the pipe.
+ The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
+ and O_TEXT, O_BINARY (defined in "binary-io.h").
+ Store the read-end as fd[0] and the write-end as fd[1].
+ Return 0 upon success, or -1 with errno set upon failure.
+ See also the Linux man page at
+ <http://www.kernel.org/doc/man-pages/online/pages/man2/pipe2.2.html>. */
+# if @HAVE_PIPE2@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define pipe2 rpl_pipe2
+# endif
+_GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags));
+# else
+_GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags));
+# endif
+_GL_CXXALIASWARN (pipe2);
+#elif defined GNULIB_POSIXCHECK
+# undef pipe2
+# if HAVE_RAW_DECL_PIPE2
+_GL_WARN_ON_USE (pipe2, "pipe2 is unportable - "
+ "use gnulib module pipe2 for portability");
+# endif
+#endif
+
+
+#if @GNULIB_PREAD@
+/* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET.
+ Return the number of bytes placed into BUF if successful, otherwise
+ set errno and return -1. 0 indicates EOF. See the POSIX:2001
+ specification <http://www.opengroup.org/susv3xsh/pread.html>. */
+# if @REPLACE_PREAD@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define pread rpl_pread
+# endif
+_GL_FUNCDECL_RPL (pread, ssize_t,
+ (int fd, void *buf, size_t bufsize, off_t offset)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (pread, ssize_t,
+ (int fd, void *buf, size_t bufsize, off_t offset));
+# else
+# if !@HAVE_PREAD@
+_GL_FUNCDECL_SYS (pread, ssize_t,
+ (int fd, void *buf, size_t bufsize, off_t offset)
+ _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (pread, ssize_t,
+ (int fd, void *buf, size_t bufsize, off_t offset));
+# endif
+_GL_CXXALIASWARN (pread);
+#elif defined GNULIB_POSIXCHECK
+# undef pread
+# if HAVE_RAW_DECL_PREAD
+_GL_WARN_ON_USE (pread, "pread is unportable - "
+ "use gnulib module pread for portability");
+# endif
+#endif
+
+
+#if @GNULIB_PWRITE@
+/* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET.
+ Return the number of bytes written if successful, otherwise
+ set errno and return -1. 0 indicates nothing written. See the
+ POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/pwrite.html>. */
+# if @REPLACE_PWRITE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define pwrite rpl_pwrite
+# endif
+_GL_FUNCDECL_RPL (pwrite, ssize_t,
+ (int fd, const void *buf, size_t bufsize, off_t offset)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (pwrite, ssize_t,
+ (int fd, const void *buf, size_t bufsize, off_t offset));
+# else
+# if !@HAVE_PWRITE@
+_GL_FUNCDECL_SYS (pwrite, ssize_t,
+ (int fd, const void *buf, size_t bufsize, off_t offset)
+ _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (pwrite, ssize_t,
+ (int fd, const void *buf, size_t bufsize, off_t offset));
+# endif
+_GL_CXXALIASWARN (pwrite);
+#elif defined GNULIB_POSIXCHECK
+# undef pwrite
+# if HAVE_RAW_DECL_PWRITE
+_GL_WARN_ON_USE (pwrite, "pwrite is unportable - "
+ "use gnulib module pwrite for portability");
+# endif
+#endif
+
+
+#if @GNULIB_READLINK@
+/* Read the contents of the symbolic link FILE and place the first BUFSIZE
+ bytes of it into BUF. Return the number of bytes placed into BUF if
+ successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/readlink.html>. */
+# if @REPLACE_READLINK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define readlink rpl_readlink
+# endif
+_GL_FUNCDECL_RPL (readlink, ssize_t,
+ (const char *file, char *buf, size_t bufsize)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (readlink, ssize_t,
+ (const char *file, char *buf, size_t bufsize));
+# else
+# if !@HAVE_READLINK@
+_GL_FUNCDECL_SYS (readlink, ssize_t,
+ (const char *file, char *buf, size_t bufsize)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (readlink, ssize_t,
+ (const char *file, char *buf, size_t bufsize));
+# endif
+_GL_CXXALIASWARN (readlink);
+#elif defined GNULIB_POSIXCHECK
+# undef readlink
+# if HAVE_RAW_DECL_READLINK
+_GL_WARN_ON_USE (readlink, "readlink is unportable - "
+ "use gnulib module readlink for portability");
+# endif
+#endif
+
+
+#if @GNULIB_READLINKAT@
+# if !@HAVE_READLINKAT@
+_GL_FUNCDECL_SYS (readlinkat, ssize_t,
+ (int fd, char const *file, char *buf, size_t len)
+ _GL_ARG_NONNULL ((2, 3)));
+# endif
+_GL_CXXALIAS_SYS (readlinkat, ssize_t,
+ (int fd, char const *file, char *buf, size_t len));
+_GL_CXXALIASWARN (readlinkat);
+#elif defined GNULIB_POSIXCHECK
+# undef readlinkat
+# if HAVE_RAW_DECL_READLINKAT
+_GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - "
+ "use gnulib module readlinkat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_RMDIR@
+/* Remove the directory DIR. */
+# if @REPLACE_RMDIR@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define rmdir rpl_rmdir
+# endif
+_GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (rmdir, int, (char const *name));
+# else
+_GL_CXXALIAS_SYS (rmdir, int, (char const *name));
+# endif
+_GL_CXXALIASWARN (rmdir);
+#elif defined GNULIB_POSIXCHECK
+# undef rmdir
+# if HAVE_RAW_DECL_RMDIR
+_GL_WARN_ON_USE (rmdir, "rmdir is unportable - "
+ "use gnulib module rmdir for portability");
+# endif
+#endif
+
+
+#if @GNULIB_SLEEP@
+/* Pause the execution of the current thread for N seconds.
+ Returns the number of seconds left to sleep.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/sleep.html>. */
+# if @REPLACE_SLEEP@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef sleep
+# define sleep rpl_sleep
+# endif
+_GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n));
+_GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n));
+# else
+# if !@HAVE_SLEEP@
+_GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n));
+# endif
+_GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n));
+# endif
+_GL_CXXALIASWARN (sleep);
+#elif defined GNULIB_POSIXCHECK
+# undef sleep
+# if HAVE_RAW_DECL_SLEEP
+_GL_WARN_ON_USE (sleep, "sleep is unportable - "
+ "use gnulib module sleep for portability");
+# endif
+#endif
+
+
+#if @GNULIB_SYMLINK@
+# if @REPLACE_SYMLINK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef symlink
+# define symlink rpl_symlink
+# endif
+_GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file));
+# else
+# if !@HAVE_SYMLINK@
+_GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file));
+# endif
+_GL_CXXALIASWARN (symlink);
+#elif defined GNULIB_POSIXCHECK
+# undef symlink
+# if HAVE_RAW_DECL_SYMLINK
+_GL_WARN_ON_USE (symlink, "symlink is not portable - "
+ "use gnulib module symlink for portability");
+# endif
+#endif
+
+
+#if @GNULIB_SYMLINKAT@
+# if !@HAVE_SYMLINKAT@
+_GL_FUNCDECL_SYS (symlinkat, int,
+ (char const *contents, int fd, char const *file)
+ _GL_ARG_NONNULL ((1, 3)));
+# endif
+_GL_CXXALIAS_SYS (symlinkat, int,
+ (char const *contents, int fd, char const *file));
+_GL_CXXALIASWARN (symlinkat);
+#elif defined GNULIB_POSIXCHECK
+# undef symlinkat
+# if HAVE_RAW_DECL_SYMLINKAT
+_GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - "
+ "use gnulib module symlinkat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_TTYNAME_R@
+/* Store at most BUFLEN characters of the pathname of the terminal FD is
+ open on in BUF. Return 0 on success, otherwise an error number. */
+# if @REPLACE_TTYNAME_R@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef ttyname_r
+# define ttyname_r rpl_ttyname_r
+# endif
+_GL_FUNCDECL_RPL (ttyname_r, int,
+ (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (ttyname_r, int,
+ (int fd, char *buf, size_t buflen));
+# else
+# if !@HAVE_DECL_TTYNAME_R@
+_GL_FUNCDECL_SYS (ttyname_r, int,
+ (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (ttyname_r, int,
+ (int fd, char *buf, size_t buflen));
+# endif
+_GL_CXXALIASWARN (ttyname_r);
+#elif defined GNULIB_POSIXCHECK
+# undef ttyname_r
+# if HAVE_RAW_DECL_TTYNAME_R
+_GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - "
+ "use gnulib module ttyname_r for portability");
+# endif
+#endif
+
+
+#if @GNULIB_UNLINK@
+# if @REPLACE_UNLINK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef unlink
+# define unlink rpl_unlink
+# endif
+_GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (unlink, int, (char const *file));
+# else
+_GL_CXXALIAS_SYS (unlink, int, (char const *file));
+# endif
+_GL_CXXALIASWARN (unlink);
+#elif defined GNULIB_POSIXCHECK
+# undef unlink
+# if HAVE_RAW_DECL_UNLINK
+_GL_WARN_ON_USE (unlink, "unlink is not portable - "
+ "use gnulib module unlink for portability");
+# endif
+#endif
+
+
+#if @GNULIB_UNLINKAT@
+# if @REPLACE_UNLINKAT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef unlinkat
+# define unlinkat rpl_unlinkat
+# endif
+_GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag));
+# else
+# if !@HAVE_UNLINKAT@
+_GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag)
+ _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag));
+# endif
+_GL_CXXALIASWARN (unlinkat);
+#elif defined GNULIB_POSIXCHECK
+# undef unlinkat
+# if HAVE_RAW_DECL_UNLINKAT
+_GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - "
+ "use gnulib module openat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_USLEEP@
+/* Pause the execution of the current thread for N microseconds.
+ Returns 0 on completion, or -1 on range error.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/sleep.html>. */
+# if @REPLACE_USLEEP@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef usleep
+# define usleep rpl_usleep
+# endif
+_GL_FUNCDECL_RPL (usleep, int, (useconds_t n));
+_GL_CXXALIAS_RPL (usleep, int, (useconds_t n));
+# else
+# if !@HAVE_USLEEP@
+_GL_FUNCDECL_SYS (usleep, int, (useconds_t n));
+# endif
+_GL_CXXALIAS_SYS (usleep, int, (useconds_t n));
+# endif
+_GL_CXXALIASWARN (usleep);
+#elif defined GNULIB_POSIXCHECK
+# undef usleep
+# if HAVE_RAW_DECL_USLEEP
+_GL_WARN_ON_USE (usleep, "usleep is unportable - "
+ "use gnulib module usleep for portability");
+# endif
+#endif
+
+
+#if @GNULIB_WRITE@
+/* Write up to COUNT bytes starting at BUF to file descriptor FD.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/write.html>. */
+# if @REPLACE_WRITE@ && @GNULIB_UNISTD_H_SIGPIPE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef write
+# define write rpl_write
+# endif
+_GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count));
+# else
+/* Need to cast, because on mingw, the third parameter is
+ unsigned int count
+ and the return type is 'int'. */
+_GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count));
+# endif
+_GL_CXXALIASWARN (write);
+#endif
+
+
+#endif /* _GL_UNISTD_H */
+#endif /* _GL_UNISTD_H */
diff --git a/lisp/ChangeLog.1 b/lisp/ChangeLog.1
index 6855c93574..f1c931589d 100644
--- a/lisp/ChangeLog.1
+++ b/lisp/ChangeLog.1
@@ -3247,8 +3247,7 @@
Set current buffer variables from defaults
in case user's init file has changed them.
- Copyright (C) 1985, 1986, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1985-1986, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -3264,5 +3263,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: b6060738-7fac-4c9c-80ae-67995bae78a7
diff --git a/lisp/ChangeLog.10 b/lisp/ChangeLog.10
index 32c3688f93..83ee20fa49 100644
--- a/lisp/ChangeLog.10
+++ b/lisp/ChangeLog.10
@@ -23534,8 +23534,7 @@ See ChangeLog.9 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -23552,4 +23551,3 @@ See ChangeLog.9 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;;; arch-tag: 5fcf8004-6f58-452a-b9d6-6950323a19c1
diff --git a/lisp/ChangeLog.11 b/lisp/ChangeLog.11
index 5b9fa028a9..76bac50c4b 100644
--- a/lisp/ChangeLog.11
+++ b/lisp/ChangeLog.11
@@ -14336,8 +14336,7 @@ See ChangeLog.10 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2003-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -14353,5 +14352,3 @@ See ChangeLog.10 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;; arch-tag: 2fe8d7b0-27e3-4634-a0b7-db70ff071825
diff --git a/lisp/ChangeLog.12 b/lisp/ChangeLog.12
index b95219ab33..d2f7cab27f 100644
--- a/lisp/ChangeLog.12
+++ b/lisp/ChangeLog.12
@@ -33349,7 +33349,7 @@ See ChangeLog.11 for earlier changes.
;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2005-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -33366,4 +33366,3 @@ See ChangeLog.11 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;;; arch-tag: e39939be-dab3-400e-86f5-0e2701a883c1
diff --git a/lisp/ChangeLog.13 b/lisp/ChangeLog.13
index d8ec37390f..8cbe1ad577 100644
--- a/lisp/ChangeLog.13
+++ b/lisp/ChangeLog.13
@@ -16696,7 +16696,7 @@ See ChangeLog.12 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2007-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/lisp/ChangeLog.14 b/lisp/ChangeLog.14
index cfb6b84269..7c32b11ec1 100644
--- a/lisp/ChangeLog.14
+++ b/lisp/ChangeLog.14
@@ -20551,7 +20551,7 @@ See ChangeLog.13 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2008-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -20568,4 +20568,3 @@ See ChangeLog.13 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;; arch-tag: c241c1f9-d668-48bf-920a-2897ed0340bc
diff --git a/lisp/ChangeLog.2 b/lisp/ChangeLog.2
index 90c00dc636..3604656265 100644
--- a/lisp/ChangeLog.2
+++ b/lisp/ChangeLog.2
@@ -3992,8 +3992,7 @@
See ChangeLog.1 for earlier changes.
- Copyright (C) 1986, 1987, 1988, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1986-1988, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -4010,4 +4009,3 @@ See ChangeLog.1 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;;; arch-tag: c315ba16-14ba-4b07-86e6-013a18f11be7
diff --git a/lisp/ChangeLog.3 b/lisp/ChangeLog.3
index 4c36aa9450..b54580ff0b 100644
--- a/lisp/ChangeLog.3
+++ b/lisp/ChangeLog.3
@@ -12438,8 +12438,7 @@ See ChangeLog.2 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 1989, 1993, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1989, 1993, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -12456,4 +12455,3 @@ See ChangeLog.2 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;;; arch-tag: f07a3446-5672-464a-8fdc-2ca92e8e7b2a
diff --git a/lisp/ChangeLog.4 b/lisp/ChangeLog.4
index 683ca0ed85..f9407ce20d 100644
--- a/lisp/ChangeLog.4
+++ b/lisp/ChangeLog.4
@@ -8936,8 +8936,7 @@ See ChangeLog.3 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993-1994, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -8954,4 +8953,3 @@ See ChangeLog.3 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;;; arch-tag: 91035822-35c7-44a9-8417-2454b88c3db2
diff --git a/lisp/ChangeLog.5 b/lisp/ChangeLog.5
index 8cb0e343a1..ebf1d6fb97 100644
--- a/lisp/ChangeLog.5
+++ b/lisp/ChangeLog.5
@@ -9265,8 +9265,7 @@ See ChangeLog.4 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1994-1995, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -9283,4 +9282,3 @@ See ChangeLog.4 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;;; arch-tag: 1a8fbb45-25d0-48e2-a926-29ca4e3d343a
diff --git a/lisp/ChangeLog.6 b/lisp/ChangeLog.6
index e5bd7fa9d2..2f73c29023 100644
--- a/lisp/ChangeLog.6
+++ b/lisp/ChangeLog.6
@@ -8022,8 +8022,7 @@ See ChangeLog.5 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 1995, 1996, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1995-1996, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -8040,4 +8039,3 @@ See ChangeLog.5 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;;; arch-tag: f90e8ffe-6bd0-4423-97d9-637ac4382520
diff --git a/lisp/ChangeLog.7 b/lisp/ChangeLog.7
index c68d02bc3d..7ef7fe9dff 100644
--- a/lisp/ChangeLog.7
+++ b/lisp/ChangeLog.7
@@ -23107,8 +23107,7 @@ See ChangeLog.6 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1997-1998, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -23125,4 +23124,3 @@ See ChangeLog.6 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;;; arch-tag: 0995d517-13da-45ab-9c2d-7911aa25512b
diff --git a/lisp/ChangeLog.8 b/lisp/ChangeLog.8
index 6127667ac7..ada6d98ce3 100644
--- a/lisp/ChangeLog.8
+++ b/lisp/ChangeLog.8
@@ -9993,8 +9993,7 @@ See ChangeLog.7 for earlier changes.
;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -10011,4 +10010,3 @@ See ChangeLog.7 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;;; arch-tag: efdc1531-ed46-4e14-be59-bee4b23088f3
diff --git a/lisp/ChangeLog.9 b/lisp/ChangeLog.9
index d6e9d2f8bc..14214ccc3d 100644
--- a/lisp/ChangeLog.9
+++ b/lisp/ChangeLog.9
@@ -20693,8 +20693,7 @@ See ChangeLog.8 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2000-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -20711,4 +20710,3 @@ See ChangeLog.8 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;;; arch-tag: a7cd2b86-43eb-409b-883f-3700fa85334f
diff --git a/lisp/ChangeLog.trunk b/lisp/ChangeLog.trunk
index 5b0fab21cc..584bf71c74 100644
--- a/lisp/ChangeLog.trunk
+++ b/lisp/ChangeLog.trunk
@@ -1,3 +1,1666 @@
+2011-01-31 Stefan Monnier <[email protected]>
+
+ * progmodes/compile.el (compilation--flush-directory-cache):
+ New function, extracted from compilation--remove-properties.
+ (compilation--remove-properties, compilation--parse-region): Use it.
+ (compilation--previous-directory): Handle one more case.
+ (compilation-enable-debug-messages): Remove.
+ (compilation-parse-errors, compilation--flush-parse): Just remove the
+ left over debug messages.
+
+2011-01-31 Sam Steingold <[email protected]>
+
+ * progmodes/compile.el (compilation-enable-debug-messages):
+ Add a variable to make the parsing messages introduced in
+ 2011-01-28T22:12:[email protected] optional.
+ (compilation-parse-errors, compilation--flush-parse): Use it.
+
+2011-01-31 Deniz Dogan <[email protected]>
+
+ * net/rcirc.el: Clean log filenames (Bug#7933).
+ (rcirc-log-write): Use convert-standard-filename.
+ (rcirc-log-filename-function): Documentation updates.
+
+2011-01-30 Jan Djärv <[email protected]>
+
+ * mail/emacsbug.el (report-emacs-bug-insert-to-mailer):
+ Check report-emacs-bug-can-use-osx-open and use that if t.
+ (report-emacs-bug-can-use-osx-open): New function.
+ (report-emacs-bug): Rename can-xdg-email to can-insert-mail.
+ Check report-emacs-bug-can-use-osx-open also for can-insert-mail.
+
+2011-01-29 Chong Yidong <[email protected]>
+
+ * vc/vc-dispatcher.el (vc-set-async-update): New function for
+ updating Dired or VC-dir buffers after async command completes.
+
+ * vc/vc-bzr.el (vc-bzr-async-command): Return the process buffer.
+ (vc-bzr-pull, vc-bzr-merge-branch): Use vc-set-async-update.
+
+ * vc/vc-git.el (vc-git-merge-branch): Add FETCH_HEAD to branch
+ completions if it exists. Use vc-set-async-update.
+ (vc-git-pull): Use vc-set-async-update.
+
+ * vc/vc-hg.el (vc-hg-pull): Fix default-contents arg to
+ read-shell-command. Use vc-set-async-update.
+ (vc-hg-merge-branch): Use vc-set-async-update.
+
+2011-01-29 Daiki Ueno <[email protected]>
+
+ * epg.el (epg--status-KEYEXPIRED, epg--status-KEYREVOKED):
+ Don't presume KEYEXPIRED and KEYREVOKED to be a fatal error status
+ (Bug#7931).
+
+2011-01-29 Stefan Monnier <[email protected]>
+
+ * progmodes/compile.el: Avoid an N² behavior in grep.
+ (compilation--previous-directory): New fun.
+ (compilation--previous-directory-cache): New var.
+ (compilation--remove-properties): Flush it.
+ (compilation-directory-properties, compilation-error-properties):
+ Use the new fun to speed up looking for the current directory.
+
+2011-01-29 Chong Yidong <[email protected]>
+
+ * vc/vc-hg.el (vc-hg-history): New var.
+ (vc-hg-pull): Perform default pull if called via Lisp by vc-pull.
+ (vc-hg-merge-branch): New function.
+
+ * vc/vc.el (vc-pull): Make vc-update an alias for this, instead of
+ the other way around.
+
+ * vc/vc-git.el (vc-git-branches, vc-git-pull)
+ (vc-git-merge-branch): New functions.
+ (vc-git-history): New var.
+
+2011-01-28 Chong Yidong <[email protected]>
+
+ * vc/vc-dispatcher.el (vc-do-async-command): New function.
+
+ * vc/vc-bzr.el (vc-bzr-async-command): Convert into a wrapper for
+ vc-do-async-command.
+
+ * vc/vc-bzr.el (vc-bzr-pull, vc-bzr-merge-branch):
+ Callers changed.
+
+2011-01-28 Leo <[email protected]>
+
+ * emacs-lisp/advice.el (ad-make-advised-docstring): Don't apply
+ highlighting to the "this function is advised" message.
+
+ * help-mode.el (help-mode-finish): Apply highlighting here, to
+ avoid clobbering by substitute-command-keys (Bug#6304).
+
+2011-01-28 Chong Yidong <[email protected]>
+
+ * woman.el (woman0-roff-buffer): Process roff escape sequences
+ occurring prior to the first request (Bug#7843).
+
+2011-01-28 Stefan Monnier <[email protected]>
+
+ * progmodes/compile.el: Don't use font-lock any more.
+ (compilation-error-regexp-alist-alist): Change handling of makepp
+ so it preserves the warning/error distinction on subsequent files.
+ Simplify various rules.
+ (compilation-directory-properties): Use font-lock-face.
+ Add a compilation-message property.
+ (compilation-internal-error-properties): Use font-lock-face.
+ Don't set the compilation-debug property here.
+ (compilation--put-prop, compilation--remove-properties)
+ (compilation--parse-region, compilation--ensure-parse)
+ (compilation--ensure-parse): New functions.
+ (compilation-parse-errors): New function, largely inspired of
+ compilation-mode-font-lock-keywords. Set compilation-debug here.
+ (compilation--parsed): New var.
+ (compilation--flush-parse): Use compilation--ensure-parse.
+ (compilation-start): Don't call font-lock.
+ (compilation-turn-on-font-lock): Remove.
+ (compilation-setup): Don't set font-lock-extra-managed-props not change
+ other font-lock settings, other than keywords.
+ Don't activate font-lock-mode.
+ Set change-major-mode-hook and before-change-functions.
+ (compilation--unsetup): Remove properties and hooks.
+ (compilation-next-single-property-change): New function.
+ (compilation-next-error): Use it to parse when needed.
+ (compile-goto-error): Parse buffer as needed.
+ (compilation--compat-error-properties): Don't need a dummy `face'
+ property any more.
+
+2011-01-28 Stefan Monnier <[email protected]>
+
+ * progmodes/compile.el: Use accessors for clarity and fix omake hack.
+ (compilation-process-setup-function): Fix docstring's false promises.
+ (compilation-error-regexp-alist-alist): Catch omake's continuous
+ recompilation message and avoid reuse of old markers.
+ (compilation-parse-errors-function): Declare obsolete.
+ (compilation-buffer-modtime): Remove.
+ (compilation--make-cdrloc, compilation--loc->col)
+ (compilation--loc->line, compilation--loc->file-struct)
+ (compilation--loc->marker, compilation--loc->visited)
+ (compilation--make-file-struct, compilation--file-struct->file-spec)
+ (compilation--file-struct->formats)
+ (compilation--file-struct->loc-tree): New macros. Use them.
+ (compilation--message): New defstruct. Use them.
+ (compilation-next-error-function): Don't mess with timestamps to try
+ and guess when to reparse.
+
+2011-01-28 Stefan Monnier <[email protected]>
+
+ * textmodes/tex-mode.el: Get rid of compilation-parse-errors-function
+ (tex-old-error-file-name): New function,
+ extracted from tex-compilation-parse-errors.
+ (tex-compilation-parse-errors): Remove.
+ (tex-error-regexp-alist): New var.
+ (tex-shell): Use it to avoid compilation-parse-errors-function.
+
+ * progmodes/grep.el (grep-regexp-alist): Tighten regexp.
+ (grep-mode-font-lock-keywords): Remove regexp that seems like
+ a left-over from before we used compile.el.
+ (grep-mode-font-lock-keywords): Call syntax-ppss-flush-cache when
+ modifying the buffer within with-silent-modifications.
+
+ * progmodes/compile.el: Cleanup text-properties namespace by using
+ `compilation-message' instead of `message', `compilation-directory'
+ instead of `directory', and `compilation-debug' instead of `debug'.
+ (compilation-last-buffer, compilation-parsing-end)
+ (compilation-error-list, compilation-old-error-list): Move to the
+ compatibility part of the code.
+ (compilation-error-properties): If `file' is a function, let it return
+ a file name.
+ (compilation-mode-font-lock-keywords): Be more conservative with the
+ omake "^ *" pattern prefix, to try and minimize the risk of
+ pathologically slow regexp matching.
+ (compilation-start): Use inhibit-read-only.
+ (compilation--unsetup): New function.
+ (compilation-shell-minor-mode, compilation-minor-mode): Use it.
+ (compilation-filter): Minor tweaks.
+ (compilation-next-error-function): Try and avoid abusing variables.
+ (compilation--flush-file-structure): New fun.
+ (compilation-fake-loc): Use it to improve behavior when file is reused.
+ (debug-ignored-errors): Add "Moved past last ...".
+ (compilation--compat-error-properties)
+ (compilation--compat-parse-errors): Rename by doubling the "-".
+
+ Port features from the previous prolog.el to the new one.
+ * progmodes/prolog.el (prolog-system): Add GNU and ECLiPSe options.
+ (prolog-program-name, prolog-program-switches, prolog-consult-string)
+ (prolog-compile-string, prolog-prompt-regexp): Get rid of the <foo>-i
+ variable and use a function to compute the value dynamically.
+ (prolog-prompt-regexp): Add regexp for GNU Prolog.
+ (prolog-continued-prompt-regexp): Remove, unused.
+ (prolog-find-value-by-system): Try and use the value of prolog-system
+ in the *prolog* buffer if it helps.
+ (prolog-mode-keybindings-common): Bind C-c C-z unconditionally...
+ (prolog-zip-on): ..and check prolog-system and version here instead.
+ (prolog-inferior-self-insert-command): New command.
+ (prolog-inferior-mode-map): Use it.
+ (prolog-inferior-error-regexp-alist): New var.
+ (prolog-inferior-mode): Use it, with compilation-shell-minor-mode.
+ (prolog-input-filter): Use derived-mode-p.
+ (prolog-inferior-guess-flavor): New function.
+ (prolog-ensure-process): Use it. Use make-comint-in-buffer rather than
+ make-comint to avoid running comint-mode twice.
+ (prolog-inferior-buffer): New fun.
+ (prolog-old-process-region, prolog-old-process-file):
+ Don't call prolog-bsts here...
+ (prolog-build-prolog-command): ...do it here instead.
+ (prolog-old-process-region, prolog-old-process-file):
+ Use compilation-fake-loc and compilation-forget-errors.
+ (prolog-consult-compile-region): Use bolp.
+
+2011-01-28 Chong Yidong <[email protected]>
+
+ * image-mode.el (image-display-size): Doc fix (Bug#7820).
+
+2011-01-27 Sam Steingold <[email protected]>
+
+ * midnight.el (clean-buffer-list-kill-never-buffer-names):
+ Remove "*server*" which is never created by emacs server.
+
+2011-01-27 Deniz Dogan <[email protected]>
+
+ * vc/vc-bzr.el (vc-bzr-diff): Don't pass --diff-options unless
+ there are some diff switches.
+
+2011-01-27 Stefan Monnier <[email protected]>
+
+ * progmodes/ruby-mode.el (ruby-syntax-propertize-function):
+ Copy change made to ruby-font-lock-syntactic-keywords.
+
+ * htmlfontify.el: Make it obey the font-lock-face text property.
+ Miscellaneous cleanup such as:
+ - Don't hide expressions after a closing paren.
+ - Move initial setq into let.
+ - Hoist common parts out of ifs.
+ (hfy-p-to-face, hfy-p-to-face-lennart): Remove.
+ (hfy-face-at): Use get-text-property instead.
+ (hfy-prop-invisible-p): Use invisible-p if available.
+ (htmlfontify-manual): Use \\[...].
+ (hfy-html-quote-regex): Use [...].
+ (hfy-combined-face-spec): Simplify.
+ (hfy-compile-face-map): Don't presume point-min==1.
+ (hfy-css-name, hfy-buffer, htmlfontify-buffer): Use \' rather than $ to
+ match end of string.
+ (hfy-text-p): η-reduce.
+ (hfy-tags-for-file): Receive cache-hash directly.
+ (hfy-mark-tag-names): Adjust call.
+
+2011-01-27 Glenn Morris <[email protected]>
+
+ * msb.el (msb-after-load-hooks): Make it an obsolete alias.
+ (msb-after-load-hook): Remove eval-after-load wackiness.
+
+2011-01-25 Sam Steingold <[email protected]>
+
+ * vc/vc-svn.el (vc-svn-diff): Use `diff-command' instead of the
+ literal "diff" (important for windows-nt).
+
+2011-01-25 Glenn Morris <[email protected]>
+
+ * emacs-lisp/copyright.el (copyright-at-end-flag)
+ (copyright-names-regexp): Add safety properties.
+ (copyright-year-ranges): New option.
+ (copyright-find-end): New function, split from copyright-update-year.
+ (copyright-update-year): Use copyright-find-end.
+ (copyright-fix-years): Optionally, convert years to ranges.
+ Handle years continued over comment lines.
+ Do not mess with the fill-prefix.
+ Do not call copyright-update.
+ (copyright-update-directory): Optionally, fix years rather than update.
+ Skip directories. Find files with only safe local vars.
+
+2011-01-25 Stefan Monnier <[email protected]>
+
+ * files.el (file-name-non-special): Only change buffer-file-name after
+ insert-file-contents if it's `visit'ing the file (bug#7854).
+
+2011-01-25 Chong Yidong <[email protected]>
+
+ * dired.el (dired-revert): Doc fix (Bug#7758).
+
+ * simple.el (line-move-visual): Doc fix (Bug#7594).
+
+2011-01-25 Nobuyoshi Nakada <[email protected]>
+
+ * progmodes/ruby-mode.el (ruby-here-doc-beg-match): Fix for
+ here-doc which ends with an underscore.
+ (ruby-mode-set-encoding): Skip shebang line always.
+ (ruby-mode-map): Bind C-c C-c to comment-region.
+ (ruby-font-lock-keywords): Highlight literal hash key labels as symbols.
+ (ruby-forward-sexp): Stop after literal hash key labels.
+ (ruby-font-lock-syntactic-keywords): Highlight regexp after open
+ bracket.
+
+2011-01-25 Keitaro Miyazaki <[email protected]> (tiny change)
+
+ * emacs-lisp/re-builder.el (reb-mode-map): Set case-fold-search in
+ the correct buffer (Bug#7650).
+
+2011-01-25 Glenn Morris <[email protected]>
+
+ * comint.el (comint-mode): Doc fix. (Bug#7897)
+
+ * simple.el (do-auto-fill): Give it a doc string.
+
+ * button.el (make-text-button): Doc fix. (See bug#7881)
+
+2011-01-24 Stefan Monnier <[email protected]>
+
+ * progmodes/perl-mode.el (perl-syntax-propertize-special-constructs):
+ Don't move backward, so as not to fall in an inf-loop (bug#7736).
+
+ * progmodes/ruby-mode.el (ruby-syntax-propertize-function): (bug#7735)
+ Handle ?" and friends differently (e.g. don't use backrefs).
+
+2011-01-24 Jay Belanger <[email protected]>
+
+ * calc/calc.el (calc-default-power-reference-level)
+ (calc-default-field-reference-level): New variables.
+ * calc/calc-units.el (math-standard-units): Add dB and Np.
+ (math-logunits): New variable.
+ (math-extract-logunits, math-logcombine, calcFunc-luplus)
+ (calcFunc-luminus, calc-luplus, calc-luminus, math-logunit-level)
+ (calcFunc-fieldlevel, calcFunc-powerlevel, calc-level):
+ New functions.
+ (math-find-base-units-rec): Add entry for ln(10).
+ * calc/calc-help.el (calc-u-prefix-help): Add logarithmic help.
+ (calc-ul-prefix-help): New function.
+ * calc/calc-ext.el (calc-init-extensions): Autoload new units
+ functions. Add keybindings for new units functions.
+
+2011-01-22 Giorgos Keramidas <[email protected]> (tiny change)
+
+ * net/rcirc.el (rcirc-kill-buffer-hook): Flush logs when killing
+ rcirc buffers. (Bug#4940)
+
+2011-01-22 Glenn Morris <[email protected]>
+
+ * emacs-lisp/copyright.el (copyright-find-copyright): New function,
+ split out from copyright-update-year.
+ (copyright-update): Don't mess with the GPL version if we don't own the
+ copyright. Update license regexp, and remove no longer needed
+ Esperanto stuff.
+ (copyright-fix-years): Use copyright-find-copyright.
+
+2011-01-22 Chong Yidong <[email protected]>
+
+ * vc/diff.el (diff-sentinel): Doc fix (Bug#7682).
+
+2011-01-22 Jari Aalto <[email protected]>
+
+ * play/landmark.el: Change `lm-' prefix to `landmark-' (Bug#7672).
+ (lm): Rename to landmark.
+ (lm-test-run): Rename to landmark-test-run.
+
+2011-01-22 Chong Yidong <[email protected]>
+
+ * emacs-lisp/re-builder.el (reb-mode-map): Fix logic error in
+ "Case sensitive" menu item.
+
+2011-01-22 Roland McGrath <[email protected]>
+
+ * comint.el (comint-replace-by-expanded-history-before-point): Fix
+ expansion of !$ and !!:N syntax to pick the indicated word (bug#7883).
+
+2011-01-22 Stefan Monnier <[email protected]>
+
+ * progmodes/js.el (js--regexp-literal): Count backslashes (bug#7882).
+
+2011-01-22 Jari Aalto <[email protected]>
+
+ * emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
+ Assume foo(bar) is a manpage reference rather than some unquoted
+ symbol (bug#7705).
+
+2011-01-22 Stefan Monnier <[email protected]>
+
+ * subr.el (shell-quote-argument): Properly quote \n (bug#7687).
+ Suggested by Flo <[email protected]>.
+
+2011-01-22 Glenn Morris <[email protected]>
+
+ * progmodes/compile.el (compilation-error-regexp-alist):
+ Fix custom type. (Bug#7812)
+
+2011-01-22 Ken Manheimer <[email protected]>
+
+ * allout.el (allout-prefixed-keybindings): Bind (prefixed) '#' to
+ allout-number-siblings, in keeping with what obtained due to
+ (now-defunct) allout-keybindings-list. Ditch repeat binding to
+ (prefixed) ?i.
+ (allout-before-change-handler): Better expose spots affected by
+ undo.
+
+2011-01-22 Chong Yidong <[email protected]>
+
+ * man.el (Man-highlight-references0): Use make-button (Bug#7881).
+
+2011-01-22 Phil Hagelberg <[email protected]>
+
+ * pcmpl-unix.el (pcmpl-ssh-config-file): New option.
+ (pcmpl-ssh-known-hosts): Rename from pcmpl-ssh-hosts.
+ (pcmpl-ssh-config-hosts): New function.
+ (pcmpl-ssh-hosts): Use pcmpl-ssh-config-hosts in addition to
+ pcmpl-ssh-known-hosts.
+
+2011-01-21 Jay Belanger <[email protected]>
+
+ * calc/calc-undo.el (calc-undo): Autoload it.
+ * calc/calc-ext.el (calc-init-extensions): Remove keybindings
+ and autoload for `calc-undo'.
+ * calc/calc.el (calc-mode-map): Add keybindings for `calc-undo'.
+ * calc/calc-prog.el:
+ * calc/calc-graph.el:
+ * calc/calc-map.el: Change `arglist' to `math-arglist' throughout.
+
+2011-01-21 Štěpán Němec <[email protected]> (tiny change)
+
+ * calc/calc-ext.el (calc-init-extensions): Map all `undo'
+ keybindings to `calc-undo'.
+
+2011-01-20 Stefan Monnier <[email protected]>
+
+ Don't mess with *temp*.
+ * obsolete/spell.el: Move from textmodes/spell.el.
+ (spell-string):
+ * term.el (term-read-input-ring):
+ * startup.el (display-startup-echo-area-message):
+ * progmodes/antlr-mode.el (antlr-directory-dependencies):
+ * comint.el (comint-read-input-ring): Use with-temp-buffer.
+ * international/mule.el (ctext-pre-write-conversion): Don't hardcode
+ point-min==1.
+
+2011-01-20 Ken Manheimer <[email protected]>
+
+ * allout.el: (allout-institute-keymap): Use fset instead of
+ reapplying defalias.
+
+ (allout-hotspot-key-handler): Check for non-control-modified
+ bindings for hotspot characters if there are no control-modified
+ versions.
+
+ * allout.el: Summary - migrate to defining allout mode using
+ define-minor-mode instead of defun. Significantly clean-up
+ internal keymap provisions, refactoring and, in the process,
+ removing a lot of accumulated cruft.
+
+ allout-mode-map is now a keymap by virtue of being a defalias to
+ allout-mode-map-value, which contains the actual keymap structure.
+
+ (allout-mode): Use define-minor-mode rather than defun.
+ Remove now-unnecessary minor-mode setup activities from the body.
+ Specify :keymap as allout-mode-map so the minor-mode-map-alist
+ entry will be '(allout-mode . allout-mode-map) - see
+ allout-mode-map-value, below. Adjust docstring to track changes.
+ (allout-minor-mode): Remove this defalias, now that we're using
+ define-minor-mode.
+ (allout-mode-map): Set value to be 'allout-mode-map. The actual
+ keymap is allout-mode-map-value, via defalias.
+ (allout-mode-map-value): The variable holding the actual mode
+ keymap structure, by virtue of defalias from allout-mode-map.
+ (allout-compose-and-institute-keymap): Rename from
+ allout-bind-keys, and including the binding-composition
+ functionality of the former produce-allout-mode-map and
+ allout-setup-mode-map.
+ (allout-institute-keymap): Take over the "setup" part of the former
+ allout-setup-mode-map. Reassign allout-mode-map-value value and
+ update the defalias.
+ (allout-command-prefix) (allout-prefixed-keybindings)
+ (allout-unprefixed-keybindings):
+ Use allout-compose-and-institute-keymap to process the bindings.
+ (allout-unprefixed-keybindings): Remove extraneous '?' question
+ marks.
+ (allout-prefixed-keybindings): Elide binding to (prefixed) \C-h -
+ user can customize if they want to use that binding.
+ Bind allout-copy-topic-as-kill to (prefixed) \M-k.
+ Bind allout-up-current-level to (prefixed) \C-u. (I think i mistakenly
+ elided that, previously, instead of the one for \C-h.)
+ (allout-hotspot-key-handler): Remove attempt to resolve the key
+ through the literal key-string lookup on allout-keybindings-list.
+ That probably hasn't worked for a Long Time, and removal of
+ allout-keybindings-list further simplifies the keybindings
+ situation.
+ (allout-pre-command-business): Use allout-mode-map-value instead
+ of allout-mode-map.
+ (allout-preempt-trailing-ctrl-h): Remove. The user can customize
+ the bindings if they want to use a keybinding having a trailing
+ \C-h. No deprecation needed since this feature was never in a
+ release.
+ (allout-keybindings-list): Remove. It's not been useful for a
+ while. (See allout-hotspot-key-handler changes, above.)
+ (produce-allout-mode-map): Remove. Consolidate into
+ allout-compose-and-institute-keymap.
+ (allout-mode-map-adjustments): Remove. No longer necessary with
+ removal of allout-preempt-trailing-ctrl-h.
+ (allout-setup-mode-map): Remove. Consolidate into
+ allout-compose-and-institute-keymap and allout-institute-keymap.
+
+2011-01-20 Glenn Morris <[email protected]>
+
+ * vc/vc-svn.el (vc-svn-after-dir-status): Tweak previous change.
+
+ * simple.el (read-expression-history): Remove, it's in minibuf.c.
+
+2011-01-20 Chong Yidong <[email protected]>
+
+ * subr.el (y-or-n-p): Revert 2011-01-07 change, removing ARGS.
+
+ * files.el (find-alternate-file, basic-save-buffer)
+ (basic-save-buffer-2, revert-buffer, recover-file)
+ (kill-buffer-ask, abort-if-file-too-large)
+ (set-visited-file-name, write-file, backup-buffer)
+ (basic-save-buffer, save-some-buffers):
+ * dired-aux.el (dired-compress-file): Callers changed.
+
+2011-01-19 Glenn Morris <[email protected]>
+
+ * vc/vc-svn.el (vc-svn-after-dir-status, vc-svn-parse-status):
+ Also check the property status. (Bug#7861)
+
+2011-01-18 Michael Albinus <[email protected]>
+
+ * net/tramp.el (tramp-debug-message): Extend function exclude
+ list. Use `regexp-opt'.
+
+2011-01-18 Stefan Monnier <[email protected]>
+
+ * textmodes/tex-mode.el (tex-font-lock-verb): Make sure \verb
+ highlighting doesn't spill over subsequent lines.
+
+ * emacs-lisp/easy-mmode.el (define-minor-mode): Don't re-evaluate the
+ keymap expression. Improve docstring.
+
+ * electric.el (electric-indent-post-self-insert-function):
+ Don't auto-indent for indent-to-left-margin, it's too often
+ counter-productive.
+
+2011-01-16 Tassilo Horn <[email protected]>
+
+ * strokes.el (strokes-read-stroke): Re-fill strokes buffer with
+ spaces if the frame was resized, so that the full visible buffer
+ serves as canvas for strokes.
+
+2011-01-16 Glenn Morris <[email protected]>
+
+ * info-xref.el (info-xref-docstrings): Replace cl function.
+ Also skip directories.
+
+2011-01-16 Kevin Ryde <[email protected]>
+
+ * info-xref.el: Version 3.
+ (info-xref-check, info-xref-check-all): Move commentary details
+ into docstrings for better visibility.
+ Use compilation-mode for the results buffer.
+ (info-xref-output, info-xref-output-error, info-xref-with-output)
+ (info-xref-filename, info-xref-in-progress):
+ New internals for this.
+ (info-xref-check-list, info-xref-check-buffer)
+ (info-xref-check-all-custom): Use those.
+ (info-xref-output-buffer): Rename from info-xref-results-buffer.
+ (info-xref-output-heading): Rename from info-xref-filename-heading.
+ (info-xref-good, info-xref-bad, info-xref-xfile-alist)
+ (info-xref-filename-heading): Move to output managing section.
+ (info-xref-docstrings): New command checking "Info node `(foo)Bar'"
+ (info-xref-lock-file-p, info-xref-with-file): New helpers for it.
+ (info-xref-subfile-p): Move to generic section with those two.
+ (info-xref-check-node): New function split from
+ info-xref-check-buffer, shared by info-xref-docstrings.
+ (info-xref-goto-node-p): Move to a checking section with that func.
+ (info-xref-unavail): New counter.
+ (info-xref-check-node): Use it.
+ (info-xref-with-output): Show count of unavailables at end of output.
+ (info-xref-all-info-files): Exclude ".*" dotfiles. Ignore broken
+ symlinks. Exclude .texi files. Exclude Emacs backup files.
+ (info-xref-check-all-custom): Fix quietening viper-mode and
+ gnus-registry-install -- use setq not let so as not to unbind
+ after load.
+
+2011-01-16 Juri Linkov <[email protected]>
+
+ * isearch.el (isearch-abort): Don't quit if search has
+ an incomplete regexp (isearch-error is non-nil). (Bug#7534)
+
+2011-01-15 Mark Diekhans <[email protected]>
+
+ * files.el (backup-buffer): Make last-resort backup file in
+ .emacs.d (Bug#6953).
+
+ * subr.el (locate-user-emacs-file): If .emacs.d does not exist,
+ make it with permission 700.
+
+2011-01-15 Kenichi Handa <[email protected]>
+
+ * mail/rmailmm.el (rmail-mime-insert-header):
+ Set rmail-mime-coding-system to a cons whose car is the last coding
+ system used to decode the header.
+ (rmail-mime-find-header-encoding): New function.
+ (rmail-mime-insert-decoded-text):
+ Override rmail-mime-coding-system if it is a cons.
+ (rmail-show-mime): If only a header part was decoded, find the
+ coding system while ignoring mm-charset-override-alist.
+
+2011-01-15 Chong Yidong <[email protected]>
+
+ * subr.el (event-start, event-end): Doc fix (Bug#7826).
+
+2011-01-15 Kenichi Handa <[email protected]>
+
+ * mail/rmailmm.el (rmail-mime-next-item)
+ (rmail-mime-previous-item): Delete them.
+ (rmail-mime-shown-mode): Recursively call for children.
+ (rmail-mime-hidden-mode): Delete the 2nd arg TOP.
+ Callers changed.
+ (rmail-mime-raw-mode): Recursively call for children.
+ (rmail-mode-map): Change mapping of tab and backtab to
+ forward-button and backward-button respectively.
+ (rmail-mime-insert-tagline): Always insert "Hide" or "Show"
+ button.
+ (rmail-mime-update-tagline): New function.
+ (rmail-mime-insert-text): Call rmail-mime-update-tagline if the
+ body display is changed.
+ (rmail-mime-toggle-button): Rename from rmail-mime-image.
+ (rmail-mime-image): Delete this button type.
+ (rmail-mime-toggle): New button type.
+ (rmail-mime-insert-bulk): Call rmail-mime-update-tagline if the
+ body display is changed. Change the save button label to "Save".
+ Don't process show/hide button here.
+ (rmail-mime-insert-multipart): Call rmail-mime-update-tagline if
+ the body display is changed. Unconditionally call
+ rmail-mime-insert for children.
+ (rmail-mime-handle): Update `display' vector of the just inserted
+ entity.
+ (rmail-mime-process): If mail-header-parse-content-type returns
+ nil, use "text/plain" as the fallback type.
+ (rmail-mime-insert): For raw-mode, recursively call
+ rmail-mim-insert for children.
+ (rmail-mime): Handle the case that the current buffer is not rmail
+ buffer (e.g. in summary buffer).
+
+2011-01-15 Kenichi Handa <[email protected]>
+
+ * mail/rmailmm.el (rmail-mime-next-item)
+ (rmail-mime-previous-item): Skip the body of a non-multipart
+ entity if a tagline is shown.
+
+2011-01-15 Stefan Monnier <[email protected]>
+
+ * tmm.el (tmm-get-keymap): Skip bindings without labels (bug#7721).
+ (tmm-prompt): Simplify.
+ (tmm-add-prompt): Remove unused var `win'.
+
+ * whitespace.el (global-whitespace-newline-mode): Fix call (bug#7810)
+ to minor mode which used nil accidentally to mean "turn off".
+
+2011-01-15 Michael Albinus <[email protected]>
+
+ * net/tramp-sh.el (tramp-find-inline-compress)
+ (tramp-get-inline-coding): Quote command after pipe symbol for
+ local calls under W32. (Bug#6784)
+
+2011-01-15 Michael Albinus <[email protected]>
+
+ * net/tramp.el (tramp-default-method): Initialize with pscp/plink
+ only when running under W32.
+
+2011-01-15 Eli Zaretskii <[email protected]>
+
+ * progmodes/grep.el (grep-compute-defaults): Quote the program
+ file name after the pipe symbol in Grep templates. (Bug#6784)
+ * jka-compr.el (jka-compr-partial-uncompress): Likewise.
+
+2011-01-15 Lennart Borgman <[email protected]>
+
+ * buff-menu.el (Buffer-menu-buffer-list): New var.
+ (Buffer-menu-revert-function, list-buffers-noselect): Use it, so a
+ restricted buffer list is not lost on revert (Bug#7749).
+
+2011-01-15 Eric Hanchrow <[email protected]>
+
+ * net/ldap.el (ldap-search-internal): Discard stderr output.
+
+2011-01-15 Eli Zaretskii <[email protected]>
+
+ * files.el (directory-abbrev-alist): Doc fix. (Bug#7777)
+
+2011-01-15 Stefan Monnier <[email protected]>
+
+ * vc-bzr.el (vc-bzr-annotate-time): Tweak previous change.
+
+2011-01-15 Kenichi Handa <[email protected]>
+
+ * mail/rmailmm.el (rmail-mime-insert-bulk): Display an unknown
+ part as a plain text.
+ (rmail-mime-process-multipart): Set the default content-type to
+ nil for unknown multipart subtypes (bug#7651).
+
+2011-01-14 Stefan Monnier <[email protected]>
+
+ * hexl.el (hexl-mode-old-*): Remove.
+ (hexl-mode--old-var-vals): New var to replace them.
+ (hexl-mode--minor-mode-p, hexl-mode--setq-local): New funs.
+ (hexl-mode, hexl-follow-line, hexl-activate-ruler):
+ Use them to set local vars (bug#7846).
+ (hexl-mode-exit): Use hexl-mode--old-var-vals to restore state.
+ (hexl-backward-short, hexl-backward-word, hexl-scroll-down)
+ (hexl-scroll-up, hexl-end-of-1k-page, hexl-end-of-512b-page): Simplify.
+
+ * vc/smerge-mode.el: Resolve comment conflicts more aggressively.
+ (smerge-resolve--normalize-re): New var.
+ (smerge-resolve--extract-comment, smerge-resolve--normalize): New funs.
+ (smerge-resolve): Use them.
+ * newcomment.el (comment-only-p): New function.
+ (comment-or-uncomment-region): Use it.
+
+2011-01-14 Brent Goodrick <[email protected]> (tiny change)
+
+ * abbrev.el (prepare-abbrev-list-buffer): If listing local abbrev
+ table, get the value before switching to the output buffer. (Bug#7733)
+
+2011-01-14 Stefan Monnier <[email protected]>
+
+ * progmodes/python.el (python-mode): Don't impose font-lock (bug#3628).
+
+2011-01-14 Kim F. Storm <[email protected]>
+
+ * emulation/cua-base.el (cua--init-keymaps):
+ Remap exchange-point-and-mark in cua-global-keymap.
+
+2011-01-14 Tassilo Horn <[email protected]>
+
+ * progmodes/sh-script.el (sh-other-keywords): Add ZSH's foreach
+ loop keyword.
+
+2011-01-14 Stefan Monnier <[email protected]>
+
+ * emacs-lisp/easymenu.el: Add :enable (bug#7754), and obey :label.
+ Require CL.
+ (easy-menu-create-menu, easy-menu-convert-item-1):
+ Use :label rather than nil for labels. Use `case'.
+ Add :enable as alias for :active.
+ (easy-menu-binding): Obey :label.
+
+2011-01-13 Stefan Monnier <[email protected]>
+
+ Use run-mode-hooks for major mode hooks (bug#513).
+ * textmodes/reftex-toc.el (reftex-toc-mode-map):
+ Rename from reftex-toc-map.
+ (reftex-toc-mode): Use define-derived-mode.
+ * textmodes/reftex-sel.el (reftex-select-shared-map): New map.
+ (reftex-select-label-mode-map, reftex-select-bib-mode-map):
+ Rename from reftex-select-(label|bib)-map. Move init into declaration.
+ (reftex-select-label-mode, reftex-select-bib-mode):
+ Use define-derived-mode.
+ * textmodes/reftex-index.el (reftex-index-phrases-mode-map)
+ (reftex-index-mode-map): Rename from reftex-index(-phrases)-map.
+ Move init into delcaration.
+ (reftex-index-mode, reftex-index-phrases-mode):
+ Use define-derived-mode.
+ * speedbar.el (speedbar-mode-syntax-table): Renaqme from
+ speedbar-syntax-table. Move init into declaration.
+ (speedbar-mode-map): Rename from speedbar-key-map.
+ Move init into declaration.
+ (speedbar-file-key-map): Move init into declaration.
+ (speedbar-mode): Use define-derived-mode.
+ * recentf.el (recentf-mode): Don't run hook (or message) redundantly.
+ * net/rcirc.el (rcirc-mode): Use run-mode-hooks.
+ * emacs-lisp/chart.el (chart-mode-map): Rename from chart-map.
+ (chart-face-list): Move initialization into declaration.
+ (chart-mode): Use define-derived-mode.
+ * calculator.el (calculator-mode-map): Move init into declaration.
+ (calculator-mode): Use define-derived-mode.
+
+ * mail/mail-utils.el (mail-strip-quoted-names): Make the regexp code
+ work for nested comments.
+
+ * progmodes/prolog.el: Use syntax-propertize. Further code cleanup.
+ (prolog-use-prolog-tokenizer-flag): Change default when
+ syntax-propertize can be used.
+ (prolog-syntax-propertize-function): New var.
+ (prolog-mode-variables): Move make-local-variable into `set'.
+ Don't make comment-column local since we don't set it.
+ Set comment-add (as it was in previous prolog.el). Use dolist.
+ Set syntax-propertize-function.
+ (prolog-mode, prolog-inferior-mode):
+ Call prolog(-inferior)-menu directly, not through the mode-hook.
+ (prolog-buffer-module, prolog-indent-level)
+ (prolog-paren-is-the-first-on-line-p, prolog-paren-balance)
+ (prolog-comment-limits, prolog-goto-comment-column):
+ Use line-(end|beginning)-position.
+ (prolog-build-prolog-command): Tighten up regexp.
+ (prolog-consult-compile): Move make-local-variable into `set'.
+ (prolog-consult-compile-filter, prolog-goto-next-paren)
+ (prolog-help-on-predicate, prolog-clause-info)
+ (prolog-mark-predicate): Don't let+setq.
+ (prolog-indent-line): Use indent-line-to.
+ Only call prolog-goto-comment-column if necessary.
+ (prolog-indent-level): Use bobp.
+ (prolog-first-pos-on-line): Remove, not used any more.
+ (prolog-in-string-or-comment): Use syntax-ppss if available.
+ (prolog-help-on-predicate): Use read-string.
+ (prolog-goto-predicate-info): Simplify.
+ (prolog-read-predicate): Use `default' rather than `initial'.
+ (prolog-temporary-file): Use make-temp-file to close a security hole.
+ (prolog-toggle-sicstus-sd): New command.
+ (prolog-electric-underscore, prolog-variables-to-anonymous):
+ Use dynamic-scoping as it was meant.
+ (prolog-menu): Move menu definitions to top-level.
+ Use a toggle-button for Sicstus's source debugger.
+ Change "Code" to the more usual "Prolog", and hence change "Prolog"
+ to "System".
+ (prolog-inferior-menu): Reuse prolog-menu's help menu.
+ Move other menu definition to top-level.
+
+2011-01-13 Tassilo Horn <[email protected]>
+
+ * doc-view.el (doc-view-open-text): Use meaningful text buffer
+ name. Keep original document's directory as default-directory
+ (bug#6446).
+ (doc-view-initiate-display): Fall back to normal mode when
+ doc-view-mode cannot be enabled, also when extracting the document
+ text into a separate buffer (bug#6446).
+
+ * simple.el (shell-command): Don't error out if shell command
+ buffer contains text with non-nil read-only property when erasing
+ the buffer.
+
+2011-01-13 Kim F. Storm <[email protected]>
+
+ * ido.el (ido-may-cache-directory): Move "too-big" check later.
+ (ido-next-match, ido-prev-match): Fix stray reordering of matching
+ items when cycling through the matches.
+
+2011-01-13 Tassilo Horn <[email protected]>
+
+ * dired-x.el (dired-omit-verbose): New defcustom that allows
+ disabling the omit messages.
+ (dired-omit-expunge): Use it.
+
+2011-01-13 Christian Ohler <[email protected]>
+
+ * emacs-lisp/ert.el, emacs-lisp/ert-x.el: New files.
+
+2011-01-13 Chong Yidong <[email protected]>
+
+ * font-lock.el (font-lock-verbose): Default to nil.
+
+2011-01-13 Chong Yidong <[email protected]>
+
+ * simple.el (sendmail-user-agent-compose): Move to sendmail.el.
+ (compose-mail): New arg RETURN-ACTION.
+ (compose-mail-other-window, compose-mail-other-frame): Likewise.
+
+ * mail/sendmail.el (mail-return-action): New var.
+ (mail-mode): Make it buffer-local.
+ (mail-bury): Obey it. Move special Rmail window handling to
+ rmail-mail-return.
+ (mail, mail-setup): New arg RETURN-ACTION.
+ (sendmail-user-agent-compose): Move from simple.el.
+
+ * mail/rmail.el (rmail-mail-return): New function.
+ (rmail-start-mail): Pass it to compose-mail.
+
+2011-01-12 Chong Yidong <[email protected]>
+
+ * menu-bar.el (menu-bar-custom-menu): Tweak Mule and Customize
+ menus. Add menu item for customize-themes.
+
+ * cus-theme.el (customize-themes):
+ * emacs-lisp/package.el (package--list-packages):
+ Use switch-to-buffer.
+
+2011-01-11 Johan Bockgård <[email protected]>
+
+ * emacs-lisp/unsafep.el (unsafep): Handle backquoted forms.
+
+2011-01-11 Stefan Monnier <[email protected]>
+
+ * progmodes/prolog.el: Fix up coding convention and such.
+ (prolog-indent-width): Use the same default as in
+ previous prolog.el rather than tab-width which depends on which buffer
+ is current when the file is loaded.
+ (prolog-electric-newline-flag): Only enable if electric-indent-mode
+ is not available.
+ (prolog-emacs): Remove. Use (featurep 'xemacs) instead.
+ (prolog-known-systems): Remove.
+ (prolog-mode-syntax-table, prolog-inferior-mode-map):
+ Move initialization into declaration.
+ (prolog-mode-map): Move initialization into declaration.
+ Remove system-specific mode-map vars, since they referred to the same
+ keymap anyway.
+ (prolog-mode-variables): Obey the user's preference w.r.t
+ adaptive-fill-mode. Prefer symbol-value to `eval'.
+ (prolog-mode-keybindings-edit): Add compatibility bindings.
+ (prolog-mode): Use define-derived-mode. Don't handle mercury here.
+ (mercury-mode-map): New var.
+ (mercury-mode, prolog-inferior-mode): Use define-derived-mode.
+ (prolog-ensure-process, prolog-process-insert-string)
+ (prolog-consult-compile): Use with-current-buffer.
+ (prolog-guess-fill-prefix): Simplify data flow.
+ (prolog-replace-in-string): New function to use instead of
+ replace-in-string.
+ (prolog-enable-sicstus-sd): Don't abuse `eval'.
+ (prolog-uncomment-region): Use `uncomment-region' when available.
+ (prolog-electric-colon, prolog-electric-dash): Use `eolp'.
+ (prolog-int-to-char, prolog-char-to-int): New functions to use instead
+ of int-to-char and char-to-int.
+ (prolog-mode-hook, prolog-inferior-mode-hook): Don't force font-lock.
+
+2011-01-11 Stefan Bruda <[email protected]>
+
+ * progmodes/prolog.el: Replace by a whole new file.
+
+2011-01-11 Stefan Monnier <[email protected]>
+
+ * subr.el (eval-after-load): Fix timing for features (bug#7769).
+ (declare-function, undefined, insert-for-yank)
+ (replace-regexp-in-string): Follow checkdoc's recommendations.
+
+2011-01-10 Stefan Monnier <[email protected]>
+
+ * calendar/diary-lib.el (diary-mode): Refresh *Calendar* after
+ refreshing the diary buffer.
+
+2011-01-10 Ken Manheimer <[email protected]>
+
+ * allout.el: Add 2011 to the file copyright.
+ (allout-encrypt-string): Prevent encryption from adding an extra
+ newline at the end of the topic body.
+ (allout-version): Increment to 2.3.
+
+2011-01-10 Michael Albinus <[email protected]>
+
+ * net/dbus.el (dbus-unregister-service): Complete doc.
+ Fix call of dbus-error signal.
+ (dbus-register-property): Use `dont-register' keyword.
+
+2011-01-10 Jan Moringen <[email protected]>
+
+ * net/dbus.el (dbus-unregister-service): Translate returned
+ integer into a symbol.
+ (dbus-register-property): Use `dbus-register-service' to do the
+ name registration.
+
+2011-01-09 Chong Yidong <[email protected]>
+
+ * progmodes/idlw-help.el (idlwave-help-link): Inherit from link face.
+ Suggested by Joakim Verona.
+
+ * comint.el (comint-highlight-prompt): Inherit minibuffer-prompt.
+
+ * wid-edit.el (visibility): Replace :on-image and :off-image
+ widget properties with :on-glyph and :off-glyph, for consistency
+ with the `visibility' widget.
+ (widget-toggle-value-create, widget-visibility-value-create):
+ Merge into a single function `widget-toggle-value-create'.
+
+ * cus-edit.el (custom-variable-value-create, custom-visibility)
+ (custom-face-edit-value-create, custom-face-value-create):
+ Replace :on-image and :off-image widget properties with :on-glyph and
+ :off-glyph, for consistency with the `visibility' widget.
+
+2011-01-09 Andreas Schwab <[email protected]>
+
+ * net/ldap.el (ldap-search-internal): Don't use eval.
+
+2011-01-09 Chong Yidong <[email protected]>
+
+ * subr.el (read-char-choice): Use read-key.
+
+ * custom.el (custom-safe-themes): Rename from
+ custom-safe-theme-files. Add :risky tag.
+ (load-theme, custom-theme-load-confirm): Save sha1 hashes to
+ custom-safe-themes, not filenames. Suggested by Stefan Monnier.
+
+2011-01-09 Chong Yidong <[email protected]>
+
+ * tool-bar.el (tool-bar-setup): Remove Help button. Remove label
+ from Search and add a label to Undo.
+
+ * vc/vc-dir.el (vc-dir-tool-bar-map): Rearrange, removing
+ inappropriate buttons and adding :vert-only tags.
+
+ * progmodes/compile.el (compilation-mode-tool-bar-map): Adjust to
+ removal of Help tool-bar button. Remove Undo button for space.
+
+ * info.el (info-tool-bar-map): Add :vert-only tags.
+
+2011-01-08 Tassilo Horn <[email protected]>
+
+ * doc-view.el (doc-view-mode-p): Check for png or imagemagick
+ image backend support. Either of them is fine.
+
+2011-01-08 Chong Yidong <[email protected]>
+
+ * subr.el (y-or-n-p): Doc fix.
+
+ * custom.el (custom-safe-theme-files): New defcustom.
+ (custom-theme-load-confirm): New function.
+ (load-theme): Load theme using `load', confirming with
+ custom-theme-load-confirm if necessary.
+
+ * subr.el (read-char-choice): New function, factored out from
+ dired-query and hack-local-variables-confirm.
+
+ * dired-aux.el (dired-query):
+ * files.el (hack-local-variables-confirm): Use it.
+
+ * dired-aux.el (dired-compress-file):
+ * files.el (abort-if-file-too-large, find-alternate-file)
+ (set-visited-file-name, write-file, backup-buffer)
+ (basic-save-buffer, basic-save-buffer-2, save-some-buffers)
+ (delete-directory, revert-buffer, recover-file, kill-buffer-ask):
+ Use new format string args for y-or-n-p and yes-or-no-p.
+
+2011-01-08 Andreas Schwab <[email protected]>
+
+ * progmodes/compile.el (compilation-error-regexp-alist-alist)
+ [gcc-include]: Tighten file name match, add match for column
+ number. (Bug#7806)
+ [gnu]: Remove unused group.
+
+2011-01-08 Glenn Morris <[email protected]>
+
+ * makefile.w32-in (EMACSOPT): Add --no-site-lisp.
+
+ * makefile.w32-in (EMACSOPT): -batch implies --no-init-file.
+
+2011-01-07 Sam Steingold <[email protected]>
+
+ * w32-fns.el (w32-shell-name): Use `shell-file-name' instead of
+ the `explicit-shell-file-name' because that is the
+ non-interactive shell.
+
+2011-01-07 Chong Yidong <[email protected]>
+
+ * subr.el (y-or-n-p): Accept format string args.
+
+2011-01-07 Glenn Morris <[email protected]>
+
+ * Makefile.in (EMACSOPT): Add --no-site-lisp.
+
+2011-01-06 Ken Manheimer <[email protected]>
+
+ * allout.el (allout-back-to-current-heading): Ensure return to
+ the visible containing topic, rather than a collapsed one.
+ (allout-view-change-hook): Remove hook that was deprecated long ago.
+ (allout-exposure-change-hook): Remove documentation remarks
+ concerning removed allout-view-change-hook.
+ (allout-flag-region): Remove invocation of and documentation
+ remarks concerning allout-view-change-hook.
+
+2011-01-06 Glenn Morris <[email protected]>
+
+ * vc/vc-bzr.el (vc-bzr-annotate-command, vc-bzr-annotate-time)
+ (vc-bzr-annotate-extract-revision-at-line):
+ Handle authors with embedded spaces. (Bug#7792)
+
+2011-01-05 Tassilo Horn <[email protected]>
+
+ * doc-view.el (doc-view-image-width): New variable.
+ (doc-view-enlarge, doc-view-insert-image): Prefer imagemagick
+ backend for PNG images, and do dynamic rescaling instead of
+ reconverting the whole doc.
+
+2011-01-05 Glenn Morris <[email protected]>
+
+ * emacs-lisp/rx.el (rx-repeat): Replace CL function.
+
+2011-01-04 Ken Manheimer <[email protected]>
+
+ * allout.el: Reconcile with changes in line movement behavior for
+ long text lines that cross more than a single physical window
+ line, ie when truncate-lines is nil.
+ (allout-next-visible-heading): Provide for change in line-move
+ behavior on long lines when truncate-lines is nil. In that case,
+ line-move can wind up on the same textual line when it moves to
+ the next window line, and moving to the bullet position after the
+ move yields zero advancement. Add logic to detect and compensate
+ for the lack of progress.
+ (allout-current-topic-collapsed-p): move-end-of-line respect for
+ field boundaries is different when operating with body lines
+ shorter than window width versus ones greater than window width,
+ which can yield false negatives in this function. Avoid
+ difference by applying move-end-of-line while field-text-motion is
+ inhibited.
+
+2011-01-04 Glenn Morris <[email protected]>
+
+ * textmodes/rst.el (rst-compile-toolsets):
+ Add pdf and s5 to option alist.
+
+2011-01-04 Jan Moringen <[email protected]>
+
+ * net/dbus.el (dbus-register-property): Add optional parameter
+ dont-register-service. Updated docstring accordingly.
+
+2011-01-04 Andreas Schwab <[email protected]>
+
+ * textmodes/rst.el (rst-compile-pdf-preview)
+ (rst-compile-slides-preview): Remove extra line.
+
+2011-01-04 Glenn Morris <[email protected]>
+
+ * textmodes/rst.el (rst-compile-toolsets): Make it a defcustom.
+ Add `pdf' and `s5' entries. Use `prog.py' if found, otherwise
+ default to `prog' without a .py extension.
+ (rst-compile-pdf-preview, rst-compile-slides-preview):
+ Use program names from rst-compile-toolsets, rather than hard-coding.
+ (rst-portable-mark-active-p): Fix presumed typo.
+
+2011-01-02 Eli Zaretskii <[email protected]>
+
+ * term/w32-win.el (dynamic-library-alist): Set up correctly for
+ libpng versions both before and after 1.4.0. (Bug#7716)
+
+2011-01-02 Eli Zaretskii <[email protected]>
+
+ * time.el (display-time-mode): Mention display-time-interval in
+ the doc string. (Bug#7713)
+
+2011-01-02 Kenichi Handa <[email protected]>
+
+ * mail/rmailmm.el (rmail-mime-parse): Perform parsing in
+ condition-case and return an error message string if something
+ goes wrong.
+ (rmail-show-mime): Adjust for the above change. Insert the
+ header by rmail-mime-insert-header.
+
+2011-01-02 Kenichi Handa <[email protected]>
+
+ * mail/rmailmm.el: New key bindings for rmail-mime-next-item,
+ rmail-mime-previous-item, and rmail-mime-toggle-hidden.
+ (rmail-mime-mbox-buffer)
+ (rmail-mime-view-buffer, rmail-mime-coding-system): New variables.
+ (rmail-mime-entity): Argument changed. All codes handling an
+ entity object are changed.
+ (rmail-mime-entity-header, rmail-mime-entity-body): Adjust for
+ the above change.
+ (rmail-mime-entity-children, rmail-mime-entity-handler)
+ (rmail-mime-entity-tagline): New functions.
+ (rmail-mime-message-p): New function.
+ (rmail-mime-save): Bind rmail-mime-mbox-buffer.
+ (rmail-mime-entity-segment, rmail-mime-next-item)
+ (rmail-mime-previous-item, rmail-mime-shown-mode)
+ (rmail-mime-hidden-mode, rmail-mime-raw-mode)
+ (rmail-mime-toggle-raw, rmail-mime-toggle-hidden)
+ (rmail-mime-insert-tagline, rmail-mime-insert-header):
+ New functions.
+ (rmail-mime-text-handler): Call rmail-mime-insert-text.
+ (rmail-mime-insert-decoded-text): New function.
+ (rmail-mime-insert-text): Call rmail-mime-insert-decoded-text.
+ (rmail-mime-insert-image): Argument changed. Caller changed.
+ (rmail-mime-image): Call rmail-mime-toggle-hidden.
+ (rmail-mime-set-bulk-data): New funciton.
+ (rmail-mime-insert-bulk): Argument changed.
+ (rmail-mime-multipart-handler): Return t.
+ (rmail-mime-process-multipart): Argument changed.
+ Handle "multipart/alternative" here.
+ (rmail-mime-process): Argument changed.
+ (rmail-mime-parse): Bind rmail-mime-mbox-buffer.
+ (rmail-mime-insert): Argument changed. Handle raw display mode.
+ (rmail-mime): Argument changed. Handle toggling of raw display
+ mode.
+ (rmail-show-mime): Bind rmail-mime-mbox-buffer and
+ rmail-mime-view-buffer.
+ (rmail-insert-mime-forwarded-message): Likewise.
+ (rmail-search-mime-message): Likewise. Don't bind rmail-buffer.
+
+ * mail/rmail.el (rmail-show-message-1): If rmail-enable-mime is
+ non-nil, handle the header in rmail-show-mime-function.
+
+2011-01-02 Leo <[email protected]>
+
+ * help-fns.el (describe-variable): Fix previous change.
+
+2011-01-02 Juri Linkov <[email protected]>
+
+ * isearch.el (isearch-lazy-highlight-error): New variable.
+ (isearch-lazy-highlight-new-loop): Compare `isearch-error' and
+ `isearch-lazy-highlight-error'. Set `isearch-lazy-highlight-error'
+ to the current value of `isearch-error' (Bug#7468).
+
+2011-01-02 Chong Yidong <[email protected]>
+
+ * help-fns.el (describe-variable): Don't emit trailing whitespace
+ (Bug#7511).
+
+2011-01-02 Chong Yidong <[email protected]>
+
+ * textmodes/rst.el (rst-compile-pdf-preview)
+ (rst-compile-slides-preview): Use make-temp-file (Bug#7646).
+
+2011-01-02 Kevin Gallagher <[email protected]>
+
+ * emulation/edt-mapper.el: Override mapping of function keys so
+ that the later call to read-key-sequence works.
+
+2011-01-02 Eli Zaretskii <[email protected]>
+
+ * mail/smtpmail.el (smtpmail-send-it): Write queued mail body with
+ Unix EOLs. (Bug#7589)
+
+2011-01-02 Leo <[email protected]>
+
+ * eshell/em-hist.el (eshell-previous-matching-input): Signal error
+ if point is not behind eshell-last-output-end (Bug#7585).
+
+2011-01-02 Stefan Monnier <[email protected]>
+
+ * files.el (file-local-variables-alist):
+ Make permanent-local (bug#7767).
+
+2011-01-02 Glenn Morris <[email protected]>
+
+ * version.el (emacs-copyright): Set short copyright year to 2011.
+
+2011-01-02 Mark Lillibridge <[email protected]> (tiny change)
+
+ * mail/mail-utils.el (mail-strip-quoted-names): Avoid clobbering
+ an existing temp buffer. (Bug#7746)
+
+2011-01-02 Glenn Morris <[email protected]>
+
+ * mail/mail-utils.el (mail-mbox-from): Handle From: headers with
+ multiple addresses. (Bug#7760)
+
+2011-01-01 Ken Manheimer <[email protected]>
+
+ * allout.el (allout-auto-fill): Do not infinitely recurse - use
+ do-auto-fill if everything points back to allout-auto-fill.
+ (allout-mode-deactivate-hook): Declare obsolete, in favor of
+ standard-formed minor-mode deactivate hook, allout-mode-off-hook.
+
+2010-12-31 Michael Albinus <[email protected]>
+
+ * net/tramp-sh.el (tramp-methods): Add recursive options to "scpc"
+ and "scpx".
+
+2010-12-30 Tassilo Horn <[email protected]>
+
+ * doc-view.el (doc-view-set-doc-type): New function refactored
+ from doc-view-mode.
+ (doc-view-fallback-mode): New function.
+ (doc-view-mode): Use it.
+ (doc-view-mode-maybe): New function that checks if doc-view-mode
+ can be used and falls back to the next best mode otherwise.
+
+ * files.el (auto-mode-alist): Use doc-view-mode-maybe for PDF,
+ DVI, OpenDocument, and MS Office files.
+
+2010-12-30 Andreas Schwab <[email protected]>
+
+ * emacs-lisp/rx.el (rx-syntax): Fix typo.
+
+2010-12-30 Tassilo Horn <[email protected]>
+
+ * doc-view.el (doc-view-toggle-display): Perform rassq-delete-all
+ on a copy of auto-mode-alist, because that deletes with side
+ effects.
+
+2010-12-30 Tassilo Horn <[email protected]>
+
+ * doc-view.el (doc-view-mode, doc-view-toggle-display):
+ Use normal-mode without doc-view-mode bindings in auto-mode-alist as
+ fallback instead of hard coding fundamental mode.
+
+2010-12-30 Tassilo Horn <[email protected]>
+
+ * doc-view.el (doc-view-doc->txt): Handle OpenDocument (or MS
+ Office) files also for searching.
+
+2010-12-30 Tassilo Horn <[email protected]>
+
+ * doc-view.el: Implement viewing of OpenDocument (and Microsoft
+ Office) files. Not yet enabled via auto-mode-list.
+ (doc-view-unoconv-program): New custom variable.
+ (doc-view-mode-p): Handle new odf document type.
+ (doc-view-odf->pdf): New conversion function.
+ (doc-view-convert-current-doc): Call it for odf files.
+ (doc-view-mode): Recognize newly supported file extensions.
+
+2010-12-30 Michael Albinus <[email protected]>
+
+ * net/tramp.el (tramp-default-method-alist)
+ (tramp-default-user-alist)
+ (tramp-local-host-regexp, tramp-prefix-domain-format)
+ (tramp-prefix-domain-regexp): Set tramp-autoload cookie.
+
+ * net/tramp-ftp.el:
+ * net/tramp-gvfs.el:
+ * net/tramp-gw.el:
+ * net/tramp-imap.el:
+ * net/tramp-sh.el:
+ * net/tramp-smb.el: Add tramp-autoload cookie for initialisation
+ code of `tramp-default-method-alist' and `tramp-default-user-alist'.
+
+2010-12-29 Karl Fogel <[email protected]>
+
+ * saveplace.el (save-place-alist-to-file): Save list sorted and
+ pretty-printed, so that it is mergeable by line-based text merging,
+ as suggested by Iain Dalton <iain.dalton {_AT_} gmail.com>.
+
+2010-12-28 Ken Manheimer <[email protected]>
+
+ * allout.el (allout-v18/19-file-var-hack): Obsolete, remove.
+ (allout-mode): Argument "toggle" => "force".
+ Refine the docstring.
+ Remove special provisions for reactivation, besides the 'force'
+ argument.
+ Consolidate layout provisions coce directly into the activation
+ condition branch, now that we've removed those provisions.
+ (allout-unload-function): Explicitly activate the mode before
+ deactivating, if it's initially deactivated.
+ (allout-set-buffer-multibyte): Properly prevent byte-compiler
+ warnings for version of function used only where
+ set-buffer-multibyte is unavailable.
+
+2010-12-28 Chong Yidong <[email protected]>
+
+ * tool-bar.el (tool-bar-setup): Remove :enable conditions, which
+ are handled by the menu-bar entries. As before, don't use
+ :visibile to avoid changing the tool-bar.
+
+2010-12-27 Michael Albinus <[email protected]>
+
+ * net/secrets.el (secrets-delete-alias): New defun.
+
+2010-12-27 Michael Albinus <[email protected]>
+
+ * net/tramp.el (tramp-default-user-alist): Do not add "ssh" based
+ methods, otherwise ~/.ssh/config would be ignored.
+
+2010-12-26 Stefan Monnier <[email protected]>
+
+ * emacs-lisp/rx.el: Make it a superset of sregex.
+ (rx-constituents): Add `any => "."', mark `repeat' as taking any number
+ of args, add `regex' alias.
+ (rx-info): Add arg to distinguish head and standalone forms.
+ (rx-check, rx-form): Pass the corresponding arg.
+ (rx-**): Simplify.
+ (rx-repeat): Make it work for any number of args.
+ (rx-syntax): Make it accept syntax chars as is.
+ * obsolete/sregex.el: Move from emacs-lisp/.
+ * emacs-lisp/re-builder.el: Remove sregex support.
+ * emacs-lisp/edebug.el (sregexq, rx): Remove redundant defs.
+
+2010-12-25 Eli Zaretskii <[email protected]>
+
+ * mouse.el (mouse-yank-primary): On MS-Windows, try the (emulated)
+ PRIMARY first, then the clipboard. (Bug#7699)
+
+2010-12-22 Stefan Monnier <[email protected]>
+
+ * emacs-lisp/bytecomp.el (byte-compile-output-docform): Fix up use of
+ print-number-table.
+
+2010-12-21 Chong Yidong <[email protected]>
+
+ * help-fns.el (find-lisp-object-file-name): Locate .emacs from
+ .emacs.elc (Bug#7530).
+
+ * wid-edit.el (widget-image-find): Remove bogus :ascent spec from
+ image spec (Bug#7480).
+
+2010-12-21 Daiki Ueno <[email protected]>
+
+ * obsolete/pgg-parse.el, obsolete/pgg-pgp5.el, obsolete/pgg-pgp.el,
+ * obsolete/pgg-gpg.el, obsolete/pgg-def.el, obsolete/pgg.el:
+ Move from lisp/.
+
+2010-12-20 Leo <[email protected]>
+
+ * dnd.el (dnd-get-local-file-name): Unhex of file name shall
+ always be performed (Bug#7680).
+
+2010-12-20 Chong Yidong <[email protected]>
+
+ * menu-bar.el (menu-bar-kill-ring-save): Make obsolete.
+ (menu-bar-edit-menu): Bind "Copy" to kill-ring-save. Don't use
+ mouse-region-match.
+
+ * color.el: Move from gnus/.
+
+ * vc/diff.el (diff-better-file-name): Function deleted.
+ abbreviating file names causes problems with shell-quote-argument.
+ (diff-no-select): Just use expand-file-name.
+
+ * tool-bar.el (tool-bar--image-expression): New function.
+ (tool-bar-local-item, tool-bar--image-exp): Use it.
+ (tool-bar-setup): Initialize tool-bar-separator-image-expression.
+ Use :enable instead of :visible to avoid changing the tool-bar
+ configuration unnecessarily.
+
+ * info.el (info-tool-bar-map): Add separators.
+
+2010-12-17 Ken Brown <[email protected]>
+
+ * loadup.el: Use version numbers in Cygwin build.
+
+2010-12-17 Ryan Twitchell <[email protected]> (tiny change)
+
+ * ido.el (ido-file-internal): Ask for confirmation before
+ overwriting an existing file (Bug#1238).
+
+2010-12-16 Chong Yidong <[email protected]>
+
+ * tool-bar.el (tool-bar-setup): Add separators.
+
+ * menu-bar.el (featurep): Use menu-bar-separator.
+
+2010-12-16 Ken Manheimer <[email protected]>
+
+ Migrate allout encryption provisions from pgg to epg.
+
+ * allout.el (allout-toggle-current-subtree-encryption)
+ (allout-toggle-subtree-encryption): Adjust docstrings to reflect
+ defaulting policy and other changes. Change fetch-pass to keymode-cue,
+ for simpler universal argument interpretation.
+ (allout-toggle-subtree-encryption): Adjust docstring to describe
+ changed encryption provisions. Change fetch-pass to keymode-cue, for
+ simpler universal argument interpretation. Remove provisions for
+ handling key type and identity - they'll all be within
+ allout-encrypt-string or epg/epg or even contained all the way in gpg.
+ (allout-encrypt-string): Include keymode-cue, for optionally prompting
+ for keypair recipients (universal argument > 1) and, in addition,
+ associating the specified recipients with the outline (universal
+ argument > 4) using a file local variable setting for
+ 'epa-file-encrypt-to'.
+ Require epa, for recipients handling.
+ Change how regexp filtering elements are named.
+ Describe the problem with caching of incorrect symmetric-decryption
+ keys.
+ Use the epa-passphrase-callback-function, in case the user is using
+ GnuPG v1.
+ Support saving of the selected keypair recipients when invoked with a
+ keymode-cue > 4.
+ Remove obsolete arguments 'fetch-pass', 'target-cache-id', 'retried'.
+ Require 'epa.
+ Establish epg-context with armoring and default epg-protocol.
+ Remove all passphrase cache, verification, and hinting code.
+ (allout-passphrase-verifier-handling, allout-passphrase-hint-handling):
+ No longer used, delete.
+ (allout-mode): Adjust docstring to describe changed encryption
+ provisions. Describe the problem with caching of incorrect
+ symmetric-decryption keys.
+ (allout-obtain-passphrase, allout-epg-passphrase-callback-function)
+ (allout-make-passphrase-state, allout-passphrase-state-passphrase)
+ (allout-encrypted-key-info, allout-update-passphrase-mnemonic-aids)
+ (allout-get-encryption-passphrase-verifier, allout-verify-passphrase):
+ Obsolete, remove.
+
+2010-12-16 Daiki Ueno <[email protected]>
+
+ * epa-file.el (epa-file-select-keys): Accept 'silent to inhibit
+ key selection prompt; make 'silent as default (Bug#7487).
+
+2010-12-16 Leo <[email protected]>
+
+ * eshell/eshell.el (eshell-directory-name):
+ Use locate-user-emacs-file (Bug#7578).
+
+2010-12-15 Glenn Morris <[email protected]>
+
+ * loadup.el (symbol-file-load-history-loaded): Remove; unused.
+
+2010-12-15 Jari Aalto <[email protected]>
+ Scott Evans <[email protected]>
+
+ * rect.el (rectange--default-line-number-format)
+ (rectangle-number-line-callback): New functions.
+ (rectangle-number-lines): New command, bound to C-x r N (Bug#4382).
+
+2010-12-15 Chong Yidong <[email protected]>
+
+ * rect.el (operate-on-rectangle-lines, string-rectangle-string):
+ Delete unused variables.
+ (move-to-column-force): Remove function obsolete since 21.2.
+
+2010-12-14 Michael Albinus <[email protected]>
+
+ * net/tramp.el (tramp-temp-buffer-file-name): Make it permanent-local.
+ (tramp-handle-insert-file-contents): Do not set permanent-local
+ property.
+
+ * net/tramp-cache.el (tramp-persistency-file-name):
+ Use `locate-user-emacs-file' if fboundp.
+
+ * net/tramp-sh.el (tramp-methods): Add "ksu".
+ (tramp-default-user-alist): Add "ksu". Use `regexp-opt' for
+ method list.
+
+2010-12-14 Glenn Morris <[email protected]>
+
+ * progmodes/js.el: Doc't require font-lock, etags, or easymenu.
+ (find-tag-marker-ring): Declare.
+ (js-find-symbol): Require etags.
+
+ * mail/sendmail.el: Don't require rmail or mailalias when compiling.
+ Require mail-utils.
+ (mail-alias-file): Don't autoload. Doc fix.
+ (mail-bury-selects-summary, mail-send-nonascii): Don't autoload.
+ (mail-mailer-swallows-blank-line): Default to nil. Doc fix.
+ Mark as obsolete, and risky.
+ (mail-setup): Simplify.
+
+ * mail/mailalias.el (build-mail-aliases): Make it interactive.
+ * mail/sendmail.el (build-mail-aliases): Update autoload.
+
+ * dired.el (dired-trivial-filenames, dired-chown-program)
+ (dired-auto-revert-buffer): Remove autoload cookies.
+ * mail/sendmail.el (mail-recover-1): Require 'dired.
+
+ * dired.el (dired-subdir-switches, dired-chown-program)
+ (dired-use-ls-dired, dired-chmod-program, dired-touch-program):
+ Make into defcustoms.
+ (dired-chown-program): Simplify initialization.
+
+ * mail/mail-utils.el: No need to require lisp-mode, it's in loadup.
+
+2010-12-13 Romain Francoise <[email protected]>
+
+ * net/gnutls.el (gnutls-negotiate): Fix setting of default trustfiles.
+
+2010-12-13 Lars Magne Ingebrigtsen <[email protected]>
+
+ * net/netrc.el (netrc-point-at-eol): Remove the unused
+ netrc-point-at-old and netrc-bound-and-true-p bindings.
+ (netrc-parse): Cache the netrc contents.
+
+2010-12-13 Eli Zaretskii <[email protected]>
+
+ * subr.el (posn-col-row): Evaluate header-line-format in the
+ context of the POSITION window's buffer.
+
+2010-12-13 Glenn Morris <[email protected]>
+
+ * subr.el (member-ignore-case, run-mode-hooks, insert-for-yank-1)
+ (with-silent-modifications): Doc fixes.
+
+2010-12-13 Michael Albinus <[email protected]>
+
+ * net/tramp.el (tramp-action-password, tramp-process-actions):
+ Revert previous from. Use `save-restriction'.
+
+2010-12-13 Stephen Berman <[email protected]>
+
+ * calendar/diary-lib.el (diary-list-sexp-entries):
+ Handle case of no newline at end of file. (Bug#7536)
+
+2010-12-13 Glenn Morris <[email protected]>
+
+ * mail/smtpmail.el (smtpmail-send-it): Revert previous change.
+
+2010-12-13 Michael Albinus <[email protected]>
+
+ * net/tramp.el (tramp-action-password): Delete region, do not narrow.
+ (tramp-process-actions): Do not widen.
+
+ * net/tramp-sh.el (tramp-sh-handle-start-file-process):
+ Protect buffer-modified value. (Bug#7557)
+
+2010-12-13 Jan Moringen <[email protected]>
+
+ * log-edit.el (log-edit-changelog-entries):
+ Regexp quote filename. (Bug#7505)
+
+2010-12-13 Tom Breton <[email protected]>
+
+ * cus-edit.el (custom-save-all):
+ Bind print-length and print-level to nil. (Bug#7581)
+
+2010-12-13 Glenn Morris <[email protected]>
+
+ * mouse.el (mouse-menu-major-mode-map, mouse-menu-bar-map):
+ Run hooks to update menu contents. (Bug#7586)
+
+ * mail/smtpmail.el (smtpmail-send-it): Avoid colons in the queued
+ file names, for the sake of MS Windows. (Bug#7588)
+
+2010-12-13 Stefan Monnier <[email protected]>
+
+ * diff-mode.el (diff-refine-hunk): Make it work when the hunk contains
+ empty lines without a leading space.
+
+2010-12-13 Leo <[email protected]>
+
+ * dired-aux.el (dired-do-redisplay): Postpone dired-after-readin-hook
+ while mapping over marks (Bug#6810).
+
+2010-12-13 Chong Yidong <[email protected]>
+
+ * image-dired.el (image-dired-db-file)
+ (image-dired-temp-image-file, image-dired-gallery-dir)
+ (image-dired-temp-rotate-image-file): Set default values relative
+ to image-dired-dir (Bug#7518).
+
+2010-12-13 Lawrence Mitchell <[email protected]>
+
+ * format.el (format-decode-run-method): Pass args FROM and TO, not
+ point-min and point-max, to shell-command-on-region (Bug#7488).
+
+2010-12-13 Jan Djärv <[email protected]>
+
+ * frame.el (blink-cursor-mode): Make default t for ns.
+
+2010-12-13 Bob Rogers <[email protected]>
+
+ * vc-dir.el (vc-dir-query-replace-regexp): Doc fix (Bug#7501).
+
+2010-12-13 Chong Yidong <[email protected]>
+
+ * comint.el (comint-dynamic-list-input-ring)
+ (comint-dynamic-complete-filename)
+ (comint-replace-by-expanded-filename)
+ (comint-dynamic-simple-complete)
+ (comint-dynamic-list-filename-completions)
+ (comint-dynamic-list-completions): Doc fix (Bug#7499).
+
+ * subr.el (posn-x-y, posn-object-x-y, posn-object-width-height):
+ Doc fix (Bug#7471).
+
+2010-12-13 Martin Rudalics <[email protected]>
+
+ * dired.el (dired-pop-to-buffer): Bind pop-up-frames to nil
+ (Bug#7533).
+
+2010-12-13 W. Martin Borgert <[email protected]> (tiny change)
+
+ * files.el (auto-mode-alist): Handle .dbk (DocBook) with xml-mode.
+ (Bug#7491).
+
+2010-12-13 Eli Zaretskii <[email protected]>
+
+ * files.el (file-relative-name): Handle UNC file names on
+ DOS/Windows. (Bug#4674)
+
+2010-12-13 Daiki Ueno <[email protected]>
+
+ * epg.el (epg-digest-algorithm-alist): Replace "RMD160" with
+ "RIPEMD160" (Bug#7490). Reported by Daniel Kahn Gillmor.
+ (epg-context-set-passphrase-callback): Mention that the callback
+ is not called when used with GnuPG 2.x.
+
+2010-12-13 Glenn Morris <[email protected]>
+
+ * ps-print.el (ps-line-lengths-internal, ps-nb-pages):
+ Ensure ps-footer-font-size-internal is initialized.
+ Call ps-get-page-dimensions before trying to use ps-font-for-text.
+
+2010-12-13 Kenichi Handa <[email protected]>
+
+ * mail/rmailmm.el (rmail-mime-parse): Call rmail-mime-process
+ within condition-case.
+ (rmail-show-mime): Don't use condition-case.
+ (rmail-search-mime-message): New function.
+ (rmail-search-mime-message-function): Set to
+ rmail-search-mime-message.
+
+2010-12-13 Leo <[email protected]>
+
+ * ido.el (ido-common-initialization): New function. (bug#3274)
+ (ido-mode): Use it.
+ (ido-completing-read): Call it.
+
2010-12-12 Karl Fogel <[email protected]>
* bookmark.el (bookmark-name-from-full-record): Rename back to
@@ -437,17 +2100,15 @@
(rmail-mime-save): Handle the case that the button's `data' is a
MIME entity.
(rmail-mime-insert-text): New function.
- (rmail-mime-insert-image): Handle the case that DATA is a MIME
- entity.
+ (rmail-mime-insert-image): Handle the case that DATA is a MIME entity.
(rmail-mime-bulk-handler): Just call rmail-mime-insert-bulk.
(rmail-mime-insert-bulk): New function mostly copied from the old
rmail-mime-bulk-handler.
- (rmail-mime-multipart-handler): Just call
- rmail-mime-process-multipart.
- (rmail-mime-process-multipart): New funciton mostly copied from
+ (rmail-mime-multipart-handler): Just call rmail-mime-process-multipart.
+ (rmail-mime-process-multipart): New function mostly copied from
the old rmail-mime-multipart-handler.
(rmail-mime-show): Just call rmail-mime-process.
- (rmail-mime-process): New funciton mostly copied from the old
+ (rmail-mime-process): New function mostly copied from the old
rmail-mime-show.
(rmail-mime-insert-multipart, rmail-mime-parse)
(rmail-mime-insert, rmail-show-mime)
@@ -5911,7 +7572,7 @@
2010-07-20 Michael R. Mauger <[email protected]>
* progmodes/sql.el: Version 2.3.
- (sql-connection-alist): Changed keys from symbols to strings;
+ (sql-connection-alist): Change keys from symbols to strings;
enhanced the widget definition.
(sql-mode-menu): Add submenu to select connections.
(sql-interactive-mode-menu): Add "Save Connection" item.
@@ -9441,8 +11102,9 @@
Fix bug#5620: recalculate all markers on compilation buffer
modifications, not on file modifications.
- * progmodes/compile.el (buffer-modtime): New buffer-local variable:
- the buffer modification time, for buffers not associated with files.
+ * progmodes/compile.el (compilation-buffer-modtime): New buffer-local
+ variable: the buffer modification time, for buffers not associated with
+ files.
(compilation-mode): Create it.
(compilation-filter): Update it.
(compilation-next-error-function): Use it instead of
@@ -19870,7 +21532,7 @@ See ChangeLog.14 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2009-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index fc7ba7120e..374358e4aa 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -1,6 +1,5 @@
# Maintenance productions for the Lisp directory
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-# 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2000-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -35,7 +34,7 @@ EMACS = ${abs_top_builddir}/src/emacs
# Command line flags for Emacs.
-EMACSOPT = -batch --no-site-file
+EMACSOPT = -batch --no-site-file --no-site-lisp
# Extra flags to pass to the byte compiler
BYTE_COMPILE_EXTRA_FLAGS =
diff --git a/lisp/abbrev.el b/lisp/abbrev.el
index 9d0e86fbce..fbca214a64 100644
--- a/lisp/abbrev.el
+++ b/lisp/abbrev.el
@@ -1,7 +1,6 @@
;;; abbrev.el --- abbrev mode commands for Emacs
-;; Copyright (C) 1985, 1986, 1987, 1992, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1992, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: abbrev convenience
@@ -118,17 +117,18 @@ Otherwise display all abbrevs."
found))
(defun prepare-abbrev-list-buffer (&optional local)
- (with-current-buffer (get-buffer-create "*Abbrevs*")
- (erase-buffer)
- (if local
- (insert-abbrev-table-description
- (abbrev-table-name local-abbrev-table) t)
- (dolist (table abbrev-table-name-list)
- (insert-abbrev-table-description table t)))
- (goto-char (point-min))
- (set-buffer-modified-p nil)
- (edit-abbrevs-mode)
- (current-buffer)))
+ (let ((local-table local-abbrev-table))
+ (with-current-buffer (get-buffer-create "*Abbrevs*")
+ (erase-buffer)
+ (if local
+ (insert-abbrev-table-description
+ (abbrev-table-name local-table) t)
+ (dolist (table abbrev-table-name-list)
+ (insert-abbrev-table-description table t)))
+ (goto-char (point-min))
+ (set-buffer-modified-p nil)
+ (edit-abbrevs-mode)
+ (current-buffer))))
(defun edit-abbrevs-mode ()
"Major mode for editing the list of abbrev definitions.
diff --git a/lisp/abbrevlist.el b/lisp/abbrevlist.el
index 5f9cbee2cf..7908078000 100644
--- a/lisp/abbrevlist.el
+++ b/lisp/abbrevlist.el
@@ -1,7 +1,6 @@
;;; abbrevlist.el --- list one abbrev table alphabetically ordered
-;; Copyright (C) 1986, 1992, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1992, 2001-2011 Free Software Foundation, Inc.
;; Suggested by a previous version by Gildea.
;; Maintainer: FSF
@@ -53,5 +52,4 @@
(provide 'abbrevlist)
-;; arch-tag: 178f0638-6597-4c16-bcee-576c3d8e9217
;;; abbrevlist.el ends here
diff --git a/lisp/align.el b/lisp/align.el
index 0812d36287..83e27daece 100644
--- a/lisp/align.el
+++ b/lisp/align.el
@@ -1,7 +1,6 @@
;;; align.el --- align text to a specific column, by regexp
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
;; Maintainer: FSF
@@ -1605,5 +1604,4 @@ aligner would have dealt with are."
(run-hooks 'align-load-hook)
-;; arch-tag: ef79cccf-1db8-4888-a8a1-d7ce2d1532f7
;;; align.el ends here
diff --git a/lisp/allout.el b/lisp/allout.el
index b497c82f0b..d965ac3533 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -1,12 +1,11 @@
;;; allout.el --- extensive outline mode for use alone and with other modes
-;; Copyright (C) 1992, 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992-1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Ken Manheimer <ken dot manheimer at gmail dot com>
;; Maintainer: Ken Manheimer <ken dot manheimer at gmail dot com>
;; Created: Dec 1991 -- first release to usenet
-;; Version: 2.2.2
+;; Version: 2.3
;; Keywords: outlines wp languages
;; Website: http://myriadicity.net/Sundry/EmacsAllout
@@ -43,9 +42,8 @@
;; - Symmetric-key and key-pair topic encryption, plus symmetric passphrase
;; mnemonic support, with verification against an established passphrase
;; (using a stashed encrypted dummy string) and user-supplied hint
-;; maintenance. (See allout-toggle-current-subtree-encryption docstring.
-;; Currently only GnuPG encryption is supported, and integration
-;; with gpg-agent is not yet implemented.)
+;; maintenance. Encryption is via the Emacs 'epg' library. See
+;; allout-toggle-current-subtree-encryption docstring.
;; - Automatic topic-number maintenance
;; - "Hot-spot" operation, for single-keystroke maneuvering and
;; exposure control (see the allout-mode docstring)
@@ -84,11 +82,10 @@
;;;_* Dependency autoloads
(require 'overlay)
(eval-when-compile
- ;; Most of the requires here are for stuff covered by autoloads.
- ;; Since just byte-compiling doesn't trigger autoloads, so that
- ;; "function not found" warnings would occur without these requires.
- (require 'pgg)
- (require 'pgg-gpg)
+ ;; Most of the requires here are for stuff covered by autoloads, which
+ ;; byte-compiling doesn't trigger.
+ (require 'epg)
+ (require 'epa)
(require 'overlay)
;; `cl' is required for `assert'. `assert' is not covered by a standard
;; autoload, but it is a macro, so that eval-when-compile is sufficient
@@ -110,23 +107,39 @@
;;;_ + Layout, Mode, and Topic Header Configuration
(defvar allout-command-prefix) ; defined below
-(defvar allout-mode-map)
;;;_ > allout-keybindings incidentals:
-;;;_ > allout-bind-keys &optional varname value
-(defun allout-bind-keys (&optional varname value)
- "Rebuild the `allout-mode-map' according to the keybinding specs.
-
-Useful standalone, to init the map, or in customizing the
+;;;_ : internal key binding stuff - in this section for load-order.
+;;;_ = allout-mode-map
+(defvar allout-mode-map 'allout-mode-map
+ "Keybindings place-holder for (allout) outline minor mode.
+
+Do NOT set the value of this variable. Instead, customize
+`allout-command-prefix', `allout-prefixed-keybindings', and
+`allout-unprefixed-keybindings'.")
+;;;_ = allout-mode-map-value
+(defvar allout-mode-map-value nil
+ "Keymap for allout outline minor mode.
+
+Do NOT set the value of this variable. Instead, customize
+`allout-command-prefix', `allout-prefixed-keybindings', and
+`allout-unprefixed-keybindings'.")
+;;;_ = make allout-mode-map-value an alias for allout-mode-map:
+;; this needs to be revised when the value is changed, sigh.
+(defalias 'allout-mode-map allout-mode-map-value)
+;;;_ > allout-compose-and-institute-keymap (&optional varname value)
+(defun allout-compose-and-institute-keymap (&optional varname value)
+ "Create the allout keymap according to the keybinding specs, and set it.
+
+Useful standalone or to effect customizations of the
respective allout-mode keybinding variables, `allout-command-prefix',
`allout-prefixed-keybindings', and `allout-unprefixed-keybindings'"
;; Set the customization variable, if any:
(when varname
(set-default varname value))
- (let ((map (make-sparse-keymap))
- key)
+ (let ((map (make-sparse-keymap)))
(when (boundp 'allout-prefixed-keybindings)
- ;; Be tolerant of the moments when the variables are first being defined.
+ ;; tolerate first definitions of the variables:
(dolist (entry allout-prefixed-keybindings)
(define-key map
;; XXX vector vs non-vector key descriptions?
@@ -136,9 +149,34 @@ respective allout-mode keybinding variables, `allout-command-prefix',
(when (boundp 'allout-unprefixed-keybindings)
(dolist (entry allout-unprefixed-keybindings)
(define-key map (car (read-from-string (car entry))) (cadr entry))))
- (setq allout-mode-map map)
- map
- ))
+ (substitute-key-definition 'beginning-of-line 'allout-beginning-of-line
+ map global-map)
+ (substitute-key-definition 'move-beginning-of-line 'allout-beginning-of-line
+ map global-map)
+ (substitute-key-definition 'end-of-line 'allout-end-of-line
+ map global-map)
+ (substitute-key-definition 'move-end-of-line 'allout-end-of-line
+ map global-map)
+ (allout-institute-keymap map)))
+;;;_ > allout-institute-keymap (map)
+(defun allout-institute-keymap (map)
+ "Associate allout-mode bindings with allout as a minor mode."
+ ;; Architecture:
+ ;; allout-mode-map var is a keymap by virtue of being a defalias for
+ ;; allout-mode-map-value, which has the actual keymap value.
+ ;; allout-mode-map's symbol value is just 'allout-mode-map, so it can be
+ ;; used in minor-mode-map-alist to indirect to the actual
+ ;; allout-mode-map-var value, which can be adjusted and reassigned.
+
+ ;; allout-mode-map-value for keymap reference in various places:
+ (setq allout-mode-map-value map)
+ ;; the function value keymap of allout-mode-map is used in
+ ;; minor-mode-map-alist - update it:
+ (fset allout-mode-map allout-mode-map-value))
+;;;_ * intialize the mode map:
+;; ensure that allout-mode-map has some setting even if allout-mode hasn't
+;; been invoked:
+(allout-compose-and-institute-keymap)
;;;_ = allout-command-prefix
(defcustom allout-command-prefix "\C-c "
"Key sequence to be used as prefix for outline mode command key bindings.
@@ -147,7 +185,7 @@ Default is '\C-c<space>'; just '\C-c' is more short-and-sweet, if you're
willing to let allout use a bunch of \C-c keybindings."
:type 'string
:group 'allout-keybindings
- :set 'allout-bind-keys)
+ :set 'allout-compose-and-institute-keymap)
;;;_ = allout-keybindings-binding
(define-widget 'allout-keybindings-binding 'lazy
"Structure of allout keybindings customization items."
@@ -159,16 +197,16 @@ willing to let allout use a bunch of \C-c keybindings."
(defcustom allout-prefixed-keybindings
'(("[(control ?n)]" allout-next-visible-heading)
("[(control ?p)]" allout-previous-visible-heading)
-;; ("[(control ?u)]" allout-up-current-level)
+ ("[(control ?u)]" allout-up-current-level)
("[(control ?f)]" allout-forward-current-level)
("[(control ?b)]" allout-backward-current-level)
("[(control ?a)]" allout-beginning-of-current-entry)
("[(control ?e)]" allout-end-of-entry)
("[(control ?i)]" allout-show-children)
- ("[(control ?i)]" allout-show-children)
("[(control ?s)]" allout-show-current-subtree)
("[(control ?t)]" allout-toggle-current-subtree-exposure)
- ("[(control ?h)]" allout-hide-current-subtree)
+;; Let user customize if they want to preempt describe-prefix-bindings ^h use.
+;; ("[(control ?h)]" allout-hide-current-subtree)
("[?h]" allout-hide-current-subtree)
("[(control ?o)]" allout-show-current-entry)
("[?!]" allout-show-all)
@@ -181,9 +219,9 @@ willing to let allout use a bunch of \C-c keybindings."
("[?<]" allout-shift-out)
("[(control ?m)]" allout-rebullet-topic)
("[?*]" allout-rebullet-current-heading)
- ("[?']" allout-number-siblings)
+ ("[?#]" allout-number-siblings)
("[(control ?k)]" allout-kill-topic)
- ("[??]" allout-copy-topic-as-kill)
+ ("[(meta ?k)]" allout-copy-topic-as-kill)
("[?@]" allout-resolve-xref)
("[?=?c]" allout-copy-exposed-to-buffer)
("[?=?i]" allout-indented-exposed-to-buffer)
@@ -207,14 +245,14 @@ multiple functions will not work - the last binding for a key
prevails."
:type 'allout-keybindings-binding
:group 'allout-keybindings
- :set 'allout-bind-keys
+ :set 'allout-compose-and-institute-keymap
)
;;;_ = allout-unprefixed-keybindings
(defcustom allout-unprefixed-keybindings
'(("[(control ?k)]" allout-kill-line)
- ("[??(meta ?k)]" allout-copy-line-as-kill)
+ ("[(meta ?k)]" allout-copy-line-as-kill)
("[(control ?y)]" allout-yank)
- ("[??(meta ?y)]" allout-yank-pop)
+ ("[(meta ?y)]" allout-yank-pop)
)
"Allout-mode functions bound to keys without any added prefix.
@@ -230,69 +268,9 @@ Use vector format for the keys:
See the existing keys for examples."
:type 'allout-keybindings-binding
:group 'allout-keybindings
- :set 'allout-bind-keys
+ :set 'allout-compose-and-institute-keymap
)
-;;;_ = allout-preempt-trailing-ctrl-h
-(defcustom allout-preempt-trailing-ctrl-h nil
- "Use <prefix>-\C-h, instead of leaving it for describe-prefix-bindings?"
- :type 'boolean
- :group 'allout)
-
-;;;_ = allout-keybindings-list
-;;; You have to reactivate allout-mode -- `(allout-mode t)' -- to
-;;; institute changes to this var.
-(defvar allout-keybindings-list ()
- "*List of `allout-mode' key / function bindings, for `allout-mode-map'.
-String or vector key will be prefaced with `allout-command-prefix',
-unless optional third, non-nil element is present.")
-(setq allout-keybindings-list
- '(
- ; Motion commands:
- ("\C-n" allout-next-visible-heading)
- ("\C-p" allout-previous-visible-heading)
- ("\C-u" allout-up-current-level)
- ("\C-f" allout-forward-current-level)
- ("\C-b" allout-backward-current-level)
- ("\C-a" allout-beginning-of-current-entry)
- ("\C-e" allout-end-of-entry)
- ; Exposure commands:
- ([(control i)] allout-show-children) ; xemacs translates "\C-i" to tab
- ("\C-i" allout-show-children) ; but we still need this for hotspot
- ("\C-s" allout-show-current-subtree)
- ;; binding to \C-h is included if allout-preempt-trailing-ctrl-h,
- ;; so user controls whether or not to preempt the conventional ^H
- ;; binding to help-command.
- ("\C-h" allout-hide-current-subtree)
- ("\C-t" allout-toggle-current-subtree-exposure)
- ("h" allout-hide-current-subtree)
- ("\C-o" allout-show-current-entry)
- ("!" allout-show-all)
- ("x" allout-toggle-current-subtree-encryption)
- ; Alteration commands:
- (" " allout-open-sibtopic)
- ("." allout-open-subtopic)
- ("," allout-open-supertopic)
- ("'" allout-shift-in)
- (">" allout-shift-in)
- ("<" allout-shift-out)
- ("\C-m" allout-rebullet-topic)
- ("*" allout-rebullet-current-heading)
- ("#" allout-number-siblings)
- ("\C-k" allout-kill-line t)
- ([?\M-k] allout-copy-line-as-kill t)
- ("\C-y" allout-yank t)
- ([?\M-y] allout-yank-pop t)
- ("\C-k" allout-kill-topic)
- ([?\M-k] allout-copy-topic-as-kill)
- ; Miscellaneous commands:
- ;([?\C-\ ] allout-mark-topic)
- ("@" allout-resolve-xref)
- ("=c" allout-copy-exposed-to-buffer)
- ("=i" allout-indented-exposed-to-buffer)
- ("=t" allout-latexify-exposed)
- ("=p" allout-flatten-exposed-to-buffer)))
-
;;;_ = allout-auto-activation
(defcustom allout-auto-activation nil
"Regulates auto-activation modality of allout outlines -- see `allout-init'.
@@ -572,7 +550,7 @@ themselves:
`!' - exclamation point/bang -- emphatic
`[' - open square bracket -- meta-note, about item instead of item's subject
`\"' - double quote -- a quotation or other citation
- `=' - equal sign -- an assignement, equating a name with some connotation
+ `=' - equal sign -- an assignment, some kind of definition
`^' - carat -- relates to something above
Some are more elusive, but their rationale may be recognizable:
@@ -818,32 +796,6 @@ formatted copy."
:type '(choice (const nil) string)
:version "22.1"
:group 'allout-encryption)
-;;;_ = allout-passphrase-verifier-handling
-(defcustom allout-passphrase-verifier-handling t
- "Enable use of symmetric encryption passphrase verifier if non-nil.
-
-See the docstring for the `allout-enable-file-variable-adjustment'
-variable for details about allout ajustment of file variables."
- :type 'boolean
- :version "22.1"
- :group 'allout-encryption)
-(make-variable-buffer-local 'allout-passphrase-verifier-handling)
-;;;_ = allout-passphrase-hint-handling
-(defcustom allout-passphrase-hint-handling 'always
- "Dictate outline encryption passphrase reminder handling:
-
- always -- always show reminder when prompting
- needed -- show reminder on passphrase entry failure
- disabled -- never present or adjust reminder
-
-See the docstring for the `allout-enable-file-variable-adjustment'
-variable for details about allout ajustment of file variables."
- :type '(choice (const always)
- (const needed)
- (const disabled))
- :version "22.1"
- :group 'allout-encryption)
-(make-variable-buffer-local 'allout-passphrase-hint-handling)
;;;_ = allout-encrypt-unencrypted-on-saves
(defcustom allout-encrypt-unencrypted-on-saves t
"When saving, should topics pending encryption be encrypted?
@@ -920,7 +872,7 @@ For details, see `allout-toggle-current-subtree-encryption's docstring."
;;;_ #1 Internal Outline Formatting and Configuration
;;;_ : Version
;;;_ = allout-version
-(defvar allout-version "2.2.2"
+(defvar allout-version "2.3"
"Version of currently loaded outline package. (allout.el)")
;;;_ > allout-version
(defun allout-version (&optional here)
@@ -1268,36 +1220,6 @@ Also refresh various data structures that hinge on the regexp."
"[^" allout-primary-bullet "]"))
"\\)"
))))
-;;;_ : Key bindings
-;;;_ = allout-mode-map
-(defvar allout-mode-map nil "Keybindings for (allout) outline minor mode.")
-;;;_ > produce-allout-mode-map (keymap-alist &optional base-map)
-(defun produce-allout-mode-map (keymap-list &optional base-map)
- "Produce keymap for use as `allout-mode-map', from KEYMAP-LIST.
-
-Built on top of optional BASE-MAP, or empty sparse map if none specified.
-See doc string for `allout-keybindings-list' for format of binding list."
- (let ((map (or base-map (make-sparse-keymap)))
- (pref (list allout-command-prefix)))
- (mapc (function
- (lambda (cell)
- (let ((add-pref (null (cdr (cdr cell))))
- (key-suff (list (car cell))))
- (apply 'define-key
- (list map
- (apply 'vconcat (if add-pref
- (append pref key-suff)
- key-suff))
- (car (cdr cell)))))))
- keymap-list)
- map))
-;;;_ > allout-mode-map-adjustments (base-map)
-(defun allout-mode-map-adjustments (base-map)
- "Do conditional additions to specified base-map, like inclusion of \\C-h."
- (if allout-preempt-trailing-ctrl-h
- (cons '("\C-h" allout-hide-current-subtree) base-map)
- base-map)
- )
;;;_ : Menu bar
(defvar allout-mode-exposure-menu)
(defvar allout-mode-editing-menu)
@@ -1306,7 +1228,7 @@ See doc string for `allout-keybindings-list' for format of binding list."
(defun produce-allout-mode-menubar-entries ()
(require 'easymenu)
(easy-menu-define allout-mode-exposure-menu
- allout-mode-map
+ allout-mode-map-value
"Allout outline exposure menu."
'("Exposure"
["Show Entry" allout-show-current-entry t]
@@ -1317,7 +1239,7 @@ See doc string for `allout-keybindings-list' for format of binding list."
"----"
["Show All" allout-show-all t]))
(easy-menu-define allout-mode-editing-menu
- allout-mode-map
+ allout-mode-map-value
"Allout outline editing menu."
'("Headings"
["Open Sibling" allout-open-sibtopic t]
@@ -1334,7 +1256,7 @@ See doc string for `allout-keybindings-list' for format of binding list."
allout-toggle-current-subtree-encryption
(> (allout-current-depth) 1)]))
(easy-menu-define allout-mode-navigation-menu
- allout-mode-map
+ allout-mode-map-value
"Allout outline navigation menu."
'("Navigation"
["Next Visible Heading" allout-next-visible-heading t]
@@ -1351,7 +1273,7 @@ See doc string for `allout-keybindings-list' for format of binding list."
["End of Entry" allout-end-of-entry t]
["End of Subtree" allout-end-of-current-subtree t]))
(easy-menu-define allout-mode-misc-menu
- allout-mode-map
+ allout-mode-map-value
"Allout outlines miscellaneous bindings."
'("Misc"
["Version" allout-version t]
@@ -1461,17 +1383,11 @@ their settings before allout-mode was started."
;;;_ = allout-mode-deactivate-hook
(defvar allout-mode-deactivate-hook nil
"*Hook that's run when allout mode ends.")
+(define-obsolete-variable-alias 'allout-mode-deactivate-hook
+ 'allout-mode-off-hook "future")
;;;_ = allout-exposure-category
(defvar allout-exposure-category nil
"Symbol for use as allout invisible-text overlay category.")
-;;;_ x allout-view-change-hook
-(defvar allout-view-change-hook nil
- "*(Deprecated) A hook run after allout outline exposure changes.
-
-Switch to using `allout-exposure-change-hook' instead. Both hooks are
-currently respected, but the other conveys the details of the exposure
-change via explicit parameters, and this one will eventually be disabled in
-a subsequent allout version.")
;;;_ = allout-exposure-change-hook
(defvar allout-exposure-change-hook nil
"*Hook that's run after allout outline subtree exposure changes.
@@ -1484,10 +1400,7 @@ Functions on the hook must take three arguments:
- TO -- integer indicating the point of the end of the change.
- FLAG -- change mode: nil for exposure, otherwise concealment.
-This hook might be invoked multiple times by a single command.
-
-This hook is replacing `allout-view-change-hook', which is being deprecated
-and eventually will not be invoked.")
+This hook might be invoked multiple times by a single command.")
;;;_ = allout-structure-added-hook
(defvar allout-structure-added-hook nil
"*Hook that's run after addition of items to the outline.
@@ -1497,9 +1410,6 @@ Functions on the hook should take two arguments:
- NEW-START -- integer indicating position of start of the first new item.
- NEW-END -- integer indicating position of end of the last new item.
-Some edits that introduce new items may missed by this hook:
-specifically edits that native allout routines do not control.
-
This hook might be invoked multiple times by a single command.")
;;;_ = allout-structure-deleted-hook
(defvar allout-structure-deleted-hook nil
@@ -1534,11 +1444,8 @@ This hook might be invoked multiple times by a single command.")
Used by allout-auto-fill to do the mandated normal-auto-fill-function
wrapped within allout's automatic fill-prefix setting.")
(make-variable-buffer-local 'allout-outside-normal-auto-fill-function)
-;;;_ = file-var-bug hack
-(defvar allout-v18/19-file-var-hack nil
- "Horrible hack used to prevent invalid multiple triggering of outline
-mode from prop-line file-var activation. Used by `allout-mode' function
-to track repeats.")
+;;;_ = prevent redundant activation by desktop mode:
+(add-to-list 'desktop-minor-mode-handlers '(allout-mode . nil))
;;;_ = allout-passphrase-verifier-string
(defvar allout-passphrase-verifier-string nil
"Setting used to test solicited encryption passphrases against the one
@@ -1554,6 +1461,8 @@ The verifier string is retained as an Emacs file variable, as well as in
the Emacs buffer state, if file variable adjustments are enabled. See
`allout-enable-file-variable-adjustment' for details about that.")
(make-variable-buffer-local 'allout-passphrase-verifier-string)
+(make-obsolete 'allout-passphrase-verifier-string
+ 'allout-passphrase-verifier-string "23.3")
;;;###autoload
(put 'allout-passphrase-verifier-string 'safe-local-variable 'stringp)
;;;_ = allout-passphrase-hint-string
@@ -1568,6 +1477,8 @@ state, if file variable adjustments are enabled. See
`allout-enable-file-variable-adjustment' for details about that.")
(make-variable-buffer-local 'allout-passphrase-hint-string)
(setq-default allout-passphrase-hint-string "")
+(make-obsolete 'allout-passphrase-hint-string
+ 'allout-passphrase-hint-string "23.3")
;;;###autoload
(put 'allout-passphrase-hint-string 'safe-local-variable 'stringp)
;;;_ = allout-after-save-decrypt
@@ -1599,15 +1510,15 @@ substition is used against the regexp matches, a la `replace-match'.")
(defvar allout-encryption-ciphertext-rejection-regexps nil
"Variable for regexps matching plaintext to remove before encryption.
-This is for the sake of redoing encryption in cases where the ciphertext
-incidentally contains strings that would disrupt mode operation --
-for example, a line that happens to look like an allout-mode topic prefix.
+This is used to detect strings in encryption results that would
+register as allout mode structural elements, for exmple, as a
+topic prefix.
Entries must be symbols that are bound to the desired regexp values.
-The encryption will be retried up to
-`allout-encryption-ciphertext-rejection-limit' times, after which an error
-is raised.")
+Encryptions that result in matches will be retried, up to
+`allout-encryption-ciphertext-rejection-limit' times, after which
+an error is raised.")
(make-variable-buffer-local 'allout-encryption-ciphertext-rejection-regexps)
;;;_ = allout-encryption-ciphertext-rejection-ceiling
@@ -1813,24 +1724,22 @@ the following two lines in your Emacs init file:
'(allout-overlay-insert-in-front-handler)))
(put 'allout-exposure-category 'modification-hooks
'(allout-overlay-interior-modification-handler)))
-;;;_ > allout-mode (&optional toggle)
+;;;_ > define-minor-mode allout-mode
;;;_ : Defun:
;;;###autoload
-(defun allout-mode (&optional toggle)
+(define-minor-mode allout-mode
;;;_ . Doc string:
"Toggle minor mode for controlling exposure and editing of text outlines.
-\\<allout-mode-map>
+\\<allout-mode-map-value>
-Optional prefix argument TOGGLE forces the mode to re-initialize
-if it is positive, otherwise it turns the mode off. Allout
-outline mode always runs as a minor mode.
+Allout outline mode always runs as a minor mode.
-Allout outline mode provides extensive outline oriented formatting and
-manipulation. It enables structural editing of outlines, as well as
-navigation and exposure. It also is specifically aimed at
-accommodating syntax-sensitive text like programming languages. (For
-an example, see the allout code itself, which is organized as an allout
-outline.)
+Allout outline mode provides extensive outline oriented
+formatting and manipulation. It enables structural editing of
+outlines, as well as navigation and exposure. It also is
+specifically aimed at accommodating syntax-sensitive text like
+programming languages. \(For example, see the allout code itself,
+which is organized as an allout outline.)
In addition to typical outline navigation and exposure, allout includes:
@@ -1838,27 +1747,30 @@ In addition to typical outline navigation and exposure, allout includes:
repositioning, promotion/demotion, cut, and paste
- incremental search with dynamic exposure and reconcealment of hidden text
- adjustable format, so programming code can be developed in outline-structure
- - easy topic encryption and decryption
+ - easy topic encryption and decryption, symmetric or key-pair
- \"Hot-spot\" operation, for single-keystroke maneuvering and exposure control
- integral outline layout, for automatic initial exposure when visiting a file
- independent extensibility, using comprehensive exposure and authoring hooks
and many other features.
-Below is a description of the key bindings, and then explanation of
-special `allout-mode' features and terminology. See also the outline
-menubar additions for quick reference to many of the features, and see
-the docstring of the function `allout-init' for instructions on
-priming your emacs session for automatic activation of `allout-mode'.
-
-The bindings are dictated by the customizable `allout-keybindings-list'
-variable. We recommend customizing `allout-command-prefix' to use just
-`\\C-c' as the command prefix, if the allout bindings don't conflict with
-any personal bindings you have on \\C-c. In any case, outline structure
-navigation and authoring is simplified by positioning the cursor on an
-item's bullet character, the \"hot-spot\" -- then you can invoke allout
-commands with just the un-prefixed, un-control-shifted command letters.
-This is described further in the HOT-SPOT Operation section.
+Below is a description of the key bindings, and then description
+of special `allout-mode' features and terminology. See also the
+outline menubar additions for quick reference to many of the
+features, and see the docstring of the function `allout-init' for
+instructions on priming your emacs session for automatic
+activation of `allout-mode'.
+
+The bindings are those listed in `allout-prefixed-keybindings'
+and `allout-unprefixed-keybindings'. We recommend customizing
+`allout-command-prefix' to use just `\\C-c' as the command
+prefix, if the allout bindings don't conflict with any personal
+bindings you have on \\C-c. In any case, outline structure
+navigation and authoring is simplified by positioning the cursor
+on an item's bullet character, the \"hot-spot\" -- then you can
+invoke allout commands with just the un-prefixed,
+un-control-shifted command letters. This is described further in
+the HOT-SPOT Operation section.
Exposure Control:
----------------
@@ -1937,19 +1849,22 @@ M-x outlineify-sticky Activate outline mode for current buffer,
Topic Encryption
Outline mode supports gpg encryption of topics, with support for
-symmetric and key-pair modes, passphrase timeout, passphrase
-consistency checking, user-provided hinting for symmetric key
-mode, and auto-encryption of topics pending encryption on save.
+symmetric and key-pair modes, and auto-encryption of topics
+pending encryption on save.
Topics pending encryption are, by default, automatically
-encrypted during file saves. If the contents of the topic
-containing the cursor was encrypted for a save, it is
-automatically decrypted for continued editing.
-
-The aim of these measures is reliable topic privacy while
-preventing accidents like neglected encryption before saves,
-forgetting which passphrase was used, and other practical
-pitfalls.
+encrypted during file saves, including checkpoint saves, to avoid
+exposing the plain text of encrypted topics in the file system.
+If the content of the topic containing the cursor was encrypted
+for a save, it is automatically decrypted for continued editing.
+
+NOTE: A few GnuPG v2 versions improperly preserve incorrect
+symmetric decryption keys, preventing entry of the correct key on
+subsequent decryption attempts until the cache times-out. That
+can take several minutes. \(Decryption of other entries is not
+affected.) Upgrade your EasyPG version, if you can, and you can
+deliberately clear your gpg-agent's cache by sending it a '-HUP'
+signal.
See `allout-toggle-current-subtree-encryption' function docstring
and `allout-encrypt-unencrypted-on-saves' customization variable
@@ -1987,7 +1902,8 @@ hooks, by which independent code can cooperate with allout
without changes to the allout core. Here are key ones:
`allout-mode-hook'
-`allout-mode-deactivate-hook'
+`allout-mode-deactivate-hook' \(deprecated)
+`allout-mode-off-hook'
`allout-exposure-change-hook'
`allout-structure-added-hook'
`allout-structure-deleted-hook'
@@ -2074,76 +1990,41 @@ CONCEALED:
CLOSED: A TOPIC whose immediate OFFSPRING and body-text is CONCEALED.
OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
;;;_ . Code
- (interactive "P")
-
- (let* ((active (and (not (equal major-mode 'outline))
- (allout-mode-p)))
- ; Massage universal-arg `toggle' val:
- (toggle (and toggle
- (or (and (listp toggle)(car toggle))
- toggle)))
- ; Activation specifically demanded?
- (explicit-activation (and toggle
- (or (symbolp toggle)
- (and (wholenump toggle)
- (not (zerop toggle))))))
- ;; allout-mode already called once during this complex command?
- (same-complex-command (eq allout-v18/19-file-var-hack
- (car command-history)))
- (write-file-hook-var-name (cond ((boundp 'write-file-functions)
- 'write-file-functions)
- ((boundp 'write-file-hooks)
- 'write-file-hooks)
- (t 'local-write-file-hooks)))
- do-layout
- )
-
- ; See comments below re v19.18,.19 bug.
- (setq allout-v18/19-file-var-hack (car command-history))
-
- (cond
-
- ;; Provision for v19.18, 19.19 bug --
- ;; Emacs v 19.18, 19.19 file-var code invokes prop-line-designated
- ;; modes twice when file is visited. We have to avoid toggling mode
- ;; off on second invocation, so we detect it as best we can, and
- ;; skip everything.
- ((and same-complex-command ; Still in same complex command
- ; as last time `allout-mode' invoked.
- active ; Already activated.
- (not explicit-activation) ; Prop-line file-vars don't have args.
- (string-match "^19.1[89]" ; Bug only known to be in v19.18 and
- emacs-version)); 19.19.
- t)
-
- ;; Deactivation:
- ((and (not explicit-activation)
- (or active toggle))
- ; Activation not explicitly
- ; requested, and either in
- ; active state or *de*activation
- ; specifically requested:
- (setq allout-explicitly-deactivated t)
-
- (allout-do-resumptions)
-
- (remove-from-invisibility-spec '(allout . t))
- (remove-hook 'pre-command-hook 'allout-pre-command-business t)
- (remove-hook 'post-command-hook 'allout-post-command-business t)
- (remove-hook 'before-change-functions 'allout-before-change-handler t)
- (remove-hook 'isearch-mode-end-hook 'allout-isearch-end-handler t)
- (remove-hook write-file-hook-var-name 'allout-write-file-hook-handler t)
- (remove-hook 'auto-save-hook 'allout-auto-save-hook-handler t)
-
- (remove-overlays (point-min) (point-max)
- 'category 'allout-exposure-category)
-
- (setq allout-mode nil)
- (run-hooks 'allout-mode-deactivate-hook))
-
- ;; Activation:
- ((not active)
- (setq allout-explicitly-deactivated nil)
+ :lighter " Allout"
+ :keymap 'allout-mode-map
+
+ (let ((write-file-hook-var-name (cond ((boundp 'write-file-functions)
+ 'write-file-functions)
+ ((boundp 'write-file-hooks)
+ 'write-file-hooks)
+ (t 'local-write-file-hooks)))
+ (use-layout (if (listp allout-layout)
+ allout-layout
+ allout-default-layout)))
+
+ (if (not (allout-mode-p))
+ (progn
+ ;; Deactivation:
+
+ ; Activation not explicitly
+ ; requested, and either in
+ ; active state or *de*activation
+ ; specifically requested:
+ (allout-do-resumptions)
+
+ (remove-from-invisibility-spec '(allout . t))
+ (remove-hook 'pre-command-hook 'allout-pre-command-business t)
+ (remove-hook 'post-command-hook 'allout-post-command-business t)
+ (remove-hook 'before-change-functions 'allout-before-change-handler t)
+ (remove-hook 'isearch-mode-end-hook 'allout-isearch-end-handler t)
+ (remove-hook write-file-hook-var-name
+ 'allout-write-file-hook-handler t)
+ (remove-hook 'auto-save-hook 'allout-auto-save-hook-handler t)
+
+ (remove-overlays (point-min) (point-max)
+ 'category 'allout-exposure-category))
+
+ ;; Activating:
(if allout-old-style-prefixes
;; Inhibit all the fancy formatting:
(allout-add-resumptions '(allout-primary-bullet "*")))
@@ -2154,45 +2035,31 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
(allout-infer-body-reindent)
(set-allout-regexp)
- (allout-add-resumptions
- '(allout-encryption-ciphertext-rejection-regexps
- allout-line-boundary-regexp
- extend)
- '(allout-encryption-ciphertext-rejection-regexps
- allout-bob-regexp
- extend))
-
- ;; Produce map from current version of allout-keybindings-list:
- (allout-setup-mode-map)
+ (allout-add-resumptions '(allout-encryption-ciphertext-rejection-regexps
+ allout-line-boundary-regexp
+ extend)
+ '(allout-encryption-ciphertext-rejection-regexps
+ allout-bob-regexp
+ extend))
+
+ (allout-compose-and-institute-keymap)
(produce-allout-mode-menubar-entries)
- ;; Include on minor-mode-map-alist, if not already there:
- (if (not (member '(allout-mode . allout-mode-map)
- minor-mode-map-alist))
- (setq minor-mode-map-alist
- (cons '(allout-mode . allout-mode-map)
- minor-mode-map-alist)))
-
(add-to-invisibility-spec '(allout . t))
(allout-add-resumptions '(line-move-ignore-invisible t))
(add-hook 'pre-command-hook 'allout-pre-command-business nil t)
(add-hook 'post-command-hook 'allout-post-command-business nil t)
- (add-hook 'before-change-functions 'allout-before-change-handler
- nil t)
+ (add-hook 'before-change-functions 'allout-before-change-handler nil t)
(add-hook 'isearch-mode-end-hook 'allout-isearch-end-handler nil t)
(add-hook write-file-hook-var-name 'allout-write-file-hook-handler
nil t)
- (add-hook 'auto-save-hook 'allout-auto-save-hook-handler
- nil t)
+ (add-hook 'auto-save-hook 'allout-auto-save-hook-handler nil t)
;; Stash auto-fill settings and adjust so custom allout auto-fill
;; func will be used if auto-fill is active or activated. (The
;; custom func respects topic headline, maintains hanging-indents,
;; etc.)
- (if (and auto-fill-function (not allout-inhibit-auto-fill))
- ;; allout-auto-fill will use the stashed values and so forth.
- (allout-add-resumptions '(auto-fill-function allout-auto-fill)))
(allout-add-resumptions (list 'allout-former-auto-filler
auto-fill-function)
;; Register allout-auto-fill to be used if
@@ -2207,91 +2074,51 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
(list 'paragraph-separate
(concat paragraph-separate "\\|^\\("
allout-regexp "\\)")))
- (or (assq 'allout-mode minor-mode-alist)
- (setq minor-mode-alist
- (cons '(allout-mode " Allout") minor-mode-alist)))
+ (if (and auto-fill-function (not allout-inhibit-auto-fill))
+ ;; allout-auto-fill will use the stashed values and so forth.
+ (allout-add-resumptions '(auto-fill-function allout-auto-fill)))
(allout-setup-menubar)
- (if allout-layout
- (setq do-layout t))
-
- (setq allout-mode t)
- (run-hooks 'allout-mode-hook))
-
- ;; Reactivation:
- ((setq do-layout t)
- (allout-infer-body-reindent))
- ) ;; end of activation-mode cases.
-
- ;; Do auto layout if warranted:
- (let ((use-layout (if (listp allout-layout)
- allout-layout
- allout-default-layout)))
- (if (and do-layout
- allout-auto-activation
- use-layout
- (and (not (eq allout-auto-activation 'activate))
- (if (eq allout-auto-activation 'ask)
- (if (y-or-n-p (format "Expose %s with layout '%s'? "
- (buffer-name)
- use-layout))
- t
- (message "Skipped %s layout." (buffer-name))
- nil)
- t)))
- (save-excursion
- (message "Adjusting '%s' exposure..." (buffer-name))
- (goto-char 0)
- (allout-this-or-next-heading)
- (condition-case err
- (progn
- (apply 'allout-expose-topic (list use-layout))
- (message "Adjusting '%s' exposure... done." (buffer-name)))
- ;; Problem applying exposure -- notify user, but don't
- ;; interrupt, eg, file visit:
- (error (message "%s" (car (cdr err)))
- (sit-for 1))))))
- allout-mode
- ) ; let*
- ) ; defun
-
-(defun allout-setup-mode-map ()
- "Establish allout-mode bindings."
- (setq-default allout-mode-map
- (produce-allout-mode-map
- (allout-mode-map-adjustments allout-keybindings-list)))
- (setq allout-mode-map
- (produce-allout-mode-map
- (allout-mode-map-adjustments allout-keybindings-list)))
- (substitute-key-definition 'beginning-of-line
- 'allout-beginning-of-line
- allout-mode-map global-map)
- (substitute-key-definition 'move-beginning-of-line
- 'allout-beginning-of-line
- allout-mode-map global-map)
- (substitute-key-definition 'end-of-line
- 'allout-end-of-line
- allout-mode-map global-map)
- (substitute-key-definition 'move-end-of-line
- 'allout-end-of-line
- allout-mode-map global-map)
- (fset 'allout-mode-map allout-mode-map))
-
-;; ensure that allout-mode-map has some setting even if allout-mode hasn't
-;; been invoked:
-(allout-setup-mode-map)
-
-;;;_ > allout-minor-mode
+ ;; Do auto layout if warranted:
+ (when (and allout-layout
+ allout-auto-activation
+ use-layout
+ (and (not (eq allout-auto-activation 'activate))
+ (if (eq allout-auto-activation 'ask)
+ (if (y-or-n-p (format "Expose %s with layout '%s'? "
+ (buffer-name)
+ use-layout))
+ t
+ (message "Skipped %s layout." (buffer-name))
+ nil)
+ t)))
+ (save-excursion
+ (message "Adjusting '%s' exposure..." (buffer-name))
+ (goto-char 0)
+ (allout-this-or-next-heading)
+ (condition-case err
+ (progn
+ (apply 'allout-expose-topic (list use-layout))
+ (message "Adjusting '%s' exposure... done."
+ (buffer-name)))
+ ;; Problem applying exposure -- notify user, but don't
+ ;; interrupt, eg, file visit:
+ (error (message "%s" (car (cdr err)))
+ (sit-for 1))))
+ ) ; when allout-layout
+ ) ; if (allout-mode-p)
+ ) ; let (())
+ ) ; define-minor-mode
+;;;_ > allout-minor-mode alias
(defalias 'allout-minor-mode 'allout-mode)
-
;;;_ > allout-unload-function
(defun allout-unload-function ()
"Unload the allout outline library."
(save-current-buffer
(dolist (buffer (buffer-list))
(set-buffer buffer)
- (when allout-mode (allout-mode -1))))
+ (when (allout-mode-p) (allout-mode))))
;; continue standard unloading
nil)
@@ -2360,8 +2187,8 @@ internal functions use this feature cohesively bunch changes."
See `allout-overlay-interior-modification-handler' for details."
- (if (and (allout-mode-p) undo-in-progress (allout-hidden-p))
- (allout-show-to-offshoot))
+ (when (and (allout-mode-p) undo-in-progress (allout-hidden-p))
+ (allout-show-children))
;; allout-overlay-interior-modification-handler on an overlay handles
;; this in other emacs, via `allout-exposure-category's 'modification-hooks.
@@ -3058,13 +2885,19 @@ of (before any) topics, in which case we return nil."
(allout-beginning-of-current-line)
(let ((bol-point (point)))
- (if (allout-goto-prefix-doublechecked)
- (if (<= (point) bol-point)
+ (when (allout-goto-prefix-doublechecked)
+ (if (<= (point) bol-point)
+ (progn
+ (setq bol-point (point))
+ (allout-beginning-of-current-line)
+ (if (not (= bol-point (point)))
+ (if (looking-at allout-regexp)
+ (allout-prefix-data)))
(if interactive
(allout-end-of-prefix)
- (point))
- (goto-char (point-min))
- nil))))
+ (point)))
+ (goto-char (point-min))
+ nil))))
;;;_ > allout-back-to-heading ()
(defalias 'allout-back-to-heading 'allout-back-to-current-heading)
;;;_ > allout-pre-next-prefix ()
@@ -3389,6 +3222,7 @@ Move to buffer limit in indicated direction if headings are exhausted."
(let* ((inhibit-field-text-motion t)
(backward (if (< arg 0) (setq arg (* -1 arg))))
(step (if backward -1 1))
+ (progress (allout-current-bullet-pos))
prev got)
(while (> arg 0)
@@ -3398,7 +3232,17 @@ Move to buffer limit in indicated direction if headings are exhausted."
;; Move, skipping over all concealed lines in one fell swoop:
(prog1 (condition-case nil (or (line-move step) t)
(error nil))
- (allout-beginning-of-current-line))
+ (allout-beginning-of-current-line)
+ ;; line-move can wind up on the same line if long.
+ ;; when moving forward, that would yield no-progress
+ (when (and (not backward)
+ (<= (point) progress))
+ ;; ensure progress by doing line-move from end-of-line:
+ (end-of-line)
+ (condition-case nil (or (line-move step) t)
+ (error nil))
+ (allout-beginning-of-current-line)
+ (setq progress (point))))
;; Deal with apparent header line:
(save-match-data
(if (not (looking-at allout-regexp))
@@ -3481,7 +3325,7 @@ When set, tells post-processing to reposition on topic bullet, and
then unset it. Set by `allout-pre-command-business' when implementing
hot-spot operation, where literal characters typed over a topic bullet
are mapped to the command of the corresponding control-key on the
-`allout-mode-map'.")
+`allout-mode-map-value'.")
(make-variable-buffer-local 'allout-post-goto-bullet)
;;;_ = allout-command-counter
(defvar allout-command-counter 0
@@ -3520,11 +3364,12 @@ coordinating with allout activity.")
Among other things, implements special behavior when the cursor is on the
topic bullet character.
-When the cursor is on the bullet character, self-insert characters are
-reinterpreted as the corresponding control-character in the
-`allout-mode-map'. The `allout-mode' `post-command-hook' insures that
-the cursor which has moved as a result of such reinterpretation is
-positioned on the bullet character of the destination topic.
+When the cursor is on the bullet character, self-insert
+characters are reinterpreted as the corresponding
+control-character in the `allout-mode-map-value'. The
+`allout-mode' `post-command-hook' insures that the cursor which
+has moved as a result of such reinterpretation is positioned on
+the bullet character of the destination topic.
The upshot is that you can get easy, single (ie, unmodified) key
outline maneuvering operations by positioning the cursor on the bullet
@@ -3551,9 +3396,6 @@ this-command accordingly.
Returns the qualifying command, if any, else nil."
(interactive)
(let* ((modified (event-modifiers last-command-event))
- (key-string (if (numberp last-command-event)
- (char-to-string
- (event-basic-type last-command-event))))
(key-num (cond ((numberp last-command-event) last-command-event)
;; for XEmacs character type:
((and (fboundp 'characterp)
@@ -3570,16 +3412,18 @@ Returns the qualifying command, if any, else nil."
(not modified)
(<= 33 key-num)
(setq mapped-binding
- (or (and (assoc key-string allout-keybindings-list)
- ;; translate literal membership on list:
- (cadr (assoc key-string allout-keybindings-list)))
- ;; translate as a keybinding:
- (key-binding (vconcat allout-command-prefix
- (vector
- (if (and (<= 97 key-num) ; "a"
- (>= 122 key-num)) ; "z"
- (- key-num 96) key-num)))
- t))))
+ (or
+ ;; try control-modified versions of keys:
+ (key-binding (vconcat allout-command-prefix
+ (vector
+ (if (and (<= 97 key-num) ; "a"
+ (>= 122 key-num)) ; "z"
+ (- key-num 96) key-num)))
+ t)
+ ;; try non-modified versions of keys:
+ (key-binding (vconcat allout-command-prefix
+ (vector key-num))
+ t))))
;; Qualified as an allout command -- do hot-spot operation.
(setq allout-post-goto-bullet t)
;; accept-defaults nil, or else we get allout-item-icon-key-handler.
@@ -3600,7 +3444,7 @@ See `allout-init' for setup instructions."
(if (and allout-auto-activation
(not (allout-mode-p))
allout-layout)
- (allout-mode t)))
+ (allout-mode)))
;;;_ - Topic Format Assessment
;;;_ > allout-solicit-alternate-bullet (depth &optional current-bullet)
@@ -4047,9 +3891,13 @@ Maintains outline hanging topic indentation if
(make-string (progn (allout-end-of-prefix)
(current-column))
?\ ))))))
- (use-auto-fill-function (or allout-outside-normal-auto-fill-function
- auto-fill-function
- 'do-auto-fill)))
+ (use-auto-fill-function
+ (if (and (eq allout-outside-normal-auto-fill-function
+ 'allout-auto-fill)
+ (eq auto-fill-function 'allout-auto-fill))
+ 'do-auto-fill
+ (or allout-outside-normal-auto-fill-function
+ auto-fill-function))))
(if (or allout-former-auto-filler allout-use-hanging-indents)
(funcall use-auto-fill-function)))))
;;;_ > allout-reindent-body (old-depth new-depth &optional number)
@@ -4914,9 +4762,7 @@ by pops to non-distinctive yanks. Bug..."
"Conceal text between FROM and TO if FLAG is non-nil, else reveal it.
Exposure-change hook `allout-exposure-change-hook' is run with the same
-arguments as this function, after the exposure changes are made. (The old
-`allout-view-change-hook' is being deprecated, and eventually will not be
-invoked.)"
+arguments as this function, after the exposure changes are made."
;; We use outline invisibility spec.
(remove-overlays from to 'category 'allout-exposure-category)
@@ -4930,7 +4776,6 @@ invoked.)"
;; as of 2008-02-27, xemacs lacks modification-hooks
(overlay-put o (pop props) (pop props))
(error nil)))))))
- (run-hooks 'allout-view-change-hook)
(run-hook-with-args 'allout-exposure-change-hook from to flag))
;;;_ > allout-flag-current-subtree (flag)
(defun allout-flag-current-subtree (flag)
@@ -5132,7 +4977,8 @@ default, they are treated as being uncollapsed."
(and
;; Is the topic all on one line (allowing for trailing blank line)?
(>= (progn (allout-back-to-current-heading)
- (move-end-of-line 1)
+ (let ((inhibit-field-text-motion t))
+ (move-end-of-line 1))
(point))
(allout-end-of-current-subtree (not (looking-at "\n\n"))))
@@ -5999,31 +5845,39 @@ With repeat count, copy the exposed portions of entire buffer."
(goto-char start-pt)))
;;;_ #8 Encryption
-;;;_ > allout-toggle-current-subtree-encryption (&optional fetch-pass)
-(defun allout-toggle-current-subtree-encryption (&optional fetch-pass)
- "Encrypt clear or decrypt encoded text of visibly-containing topic's contents.
-
-Optional FETCH-PASS universal argument provokes key-pair encryption with
-single universal argument. With doubled universal argument (value = 16),
-it forces prompting for the passphrase regardless of availability from the
-passphrase cache. With no universal argument, the appropriate passphrase
-is obtained from the cache, if available, else from the user.
-
-Only GnuPG encryption is supported.
-
-\*NOTE WELL* that the encrypted text must be ascii-armored. For gnupg
-encryption, include the option ``armor'' in your ~/.gnupg/gpg.conf file.
-
-Both symmetric-key and key-pair encryption is implemented. Symmetric is
-the default, use a single (x4) universal argument for keypair mode.
-
-Encrypted topic's bullet is set to a `~' to signal that the contents of the
-topic (body and subtopics, but not heading) is pending encryption or
-encrypted. `*' asterisk immediately after the bullet signals that the body
-is encrypted, its' absence means the topic is meant to be encrypted but is
-not. When a file with topics pending encryption is saved, topics pending
-encryption are encrypted. See allout-encrypt-unencrypted-on-saves for
-auto-encryption specifics.
+;;;_ > allout-toggle-current-subtree-encryption (&optional keymode-cue)
+(defun allout-toggle-current-subtree-encryption (&optional keymode-cue)
+ "Encrypt clear or decrypt encoded topic text.
+
+Allout uses emacs 'epg' libary to perform encryption. Symmetric
+and keypair encryption are supported. All encryption is ascii
+armored.
+
+Entry encryption defaults to symmetric key mode unless keypair
+recipients are associated with the file \(see
+`epa-file-encrypt-to') or the function is invoked with a
+\(KEYMODE-CUE) universal argument greater than 1.
+
+When encrypting, KEYMODE-CUE universal argument greater than 1
+causes prompting for recipients for public-key keypair
+encryption. Selecting no recipients results in symmetric key
+encryption.
+
+Further, encrypting with a KEYMODE-CUE universal argument greater
+than 4 - eg, preceded by a doubled Ctrl-U - causes association of
+the specified recipients with the file, replacing those currently
+associated with it. This can be used to deassociate any
+recipients with the file, by selecting no recipients in the
+dialog.
+
+Encrypted topic's bullets are set to a `~' to signal that the
+contents of the topic (body and subtopics, but not heading) is
+pending encryption or encrypted. `*' asterisk immediately after
+the bullet signals that the body is encrypted, its absence means
+the topic is meant to be encrypted but is not currently. When a
+file with topics pending encryption is saved, topics pending
+encryption are encrypted. See allout-encrypt-unencrypted-on-saves
+for auto-encryption specifics.
\*NOTE WELL* that automatic encryption that happens during saves will
default to symmetric encryption -- you must deliberately (re)encrypt key-pair
@@ -6031,59 +5885,35 @@ encrypted topics if you want them to continue to use the key-pair cipher.
Level-one topics, with prefix consisting solely of an `*' asterisk, cannot be
encrypted. If you want to encrypt the contents of a top-level topic, use
-\\[allout-shift-in] to increase its depth.
-
- Passphrase Caching
-
-The encryption passphrase is solicited if not currently available in the
-passphrase cache from a recent encryption action.
-
-The solicited passphrase is retained for reuse in a cache, if enabled. See
-`pgg-cache-passphrase' and `pgg-passphrase-cache-expiry' for details.
-
- Symmetric Passphrase Hinting and Verification
-
-If the file previously had no associated passphrase, or had a different
-passphrase than specified, the user is prompted to repeat the new one for
-corroboration. A random string encrypted by the new passphrase is set on
-the buffer-specific variable `allout-passphrase-verifier-string', for
-confirmation of the passphrase when next obtained, before encrypting or
-decrypting anything with it. This helps avoid mistakenly shifting between
-keys.
-
-If allout customization var `allout-passphrase-verifier-handling' is
-non-nil, an entry for `allout-passphrase-verifier-string' and its value is
-added to an Emacs 'local variables' section at the end of the file, which
-is created if necessary. That setting is for retention of the passphrase
-verifier across Emacs sessions.
-
-Similarly, `allout-passphrase-hint-string' stores a user-provided reminder
-about their passphrase, and `allout-passphrase-hint-handling' specifies
-when the hint is presented, or if passphrase hints are disabled. If
-enabled (see the `allout-passphrase-hint-handling' docstring for details),
-the hint string is stored in the local-variables section of the file, and
-solicited whenever the passphrase is changed."
+\\[allout-shift-in] to increase its depth."
(interactive "P")
(save-excursion
(allout-back-to-current-heading)
- (allout-toggle-subtree-encryption fetch-pass)
- )
- )
-;;;_ > allout-toggle-subtree-encryption (&optional fetch-pass)
-(defun allout-toggle-subtree-encryption (&optional fetch-pass)
+ (allout-toggle-subtree-encryption keymode-cue)))
+;;;_ > allout-toggle-subtree-encryption (&optional keymode-cue)
+(defun allout-toggle-subtree-encryption (&optional keymode-cue)
"Encrypt clear text or decrypt encoded topic contents (body and subtopics.)
-Optional FETCH-PASS universal argument provokes key-pair encryption with
-single universal argument. With doubled universal argument (value = 16),
-it forces prompting for the passphrase regardless of availability from the
-passphrase cache. With no universal argument, the appropriate passphrase
-is obtained from the cache, if available, else from the user.
+Entry encryption defaults to symmetric key mode unless keypair
+recipients are associated with the file \(see
+`epa-file-encrypt-to') or the function is invoked with a
+\(KEYMODE-CUE) universal argument greater than 1.
+
+When encrypting, KEYMODE-CUE universal argument greater than 1
+causes prompting for recipients for public-key keypair
+encryption. Selecting no recipients results in symmetric key
+encryption.
-Currently only GnuPG encryption is supported, and integration
-with gpg-agent is not yet implemented.
+Further, encrypting with a KEYMODE-CUE universal argument greater
+than 4 - eg, preceded by a doubled Ctrl-U - causes association of
+the specified recipients with the file, replacing those currently
+associated with it. This can be used to deassociate any
+recipients with the file, by selecting no recipients in the
+dialog.
-\**NOTE WELL** that the encrypted text must be ascii-armored. For gnupg
-encryption, include the option ``armor'' in your ~/.gnupg/gpg.conf file.
+Encryption and decryption uses the emacs epg library.
+
+Encrypted text will be ascii-armored.
See `allout-toggle-current-subtree-encryption' for more details."
@@ -6121,16 +5951,6 @@ See `allout-toggle-current-subtree-encryption' for more details."
(if was-encrypted "de" "en"))
nil))
;; Assess key parameters:
- (key-info (or
- ;; detect the type by which it is already encrypted
- (and was-encrypted
- (allout-encrypted-key-info subject-text))
- (and (member fetch-pass '(4 (4)))
- '(keypair nil))
- '(symmetric nil)))
- (for-key-type (car key-info))
- (for-key-identity (cadr key-info))
- (fetch-pass (and fetch-pass (member fetch-pass '(16 (16)))))
(was-coding-system buffer-file-coding-system))
(when (not was-encrypted)
@@ -6156,8 +5976,7 @@ See `allout-toggle-current-subtree-encryption' for more details."
(setq result-text
(allout-encrypt-string subject-text was-encrypted
- (current-buffer)
- for-key-type for-key-identity fetch-pass))
+ (current-buffer) keymode-cue))
;; Replace the subtree with the processed product.
(allout-unprotected
@@ -6188,335 +6007,173 @@ See `allout-toggle-current-subtree-encryption' for more details."
(insert "*"))))
(run-hook-with-args 'allout-structure-added-hook
bullet-pos subtree-end))))
-;;;_ > allout-encrypt-string (text decrypt allout-buffer key-type for-key
-;;; fetch-pass &optional retried verifying
-;;; passphrase)
-(defun allout-encrypt-string (text decrypt allout-buffer key-type for-key
- fetch-pass &optional retried rejected
- verifying passphrase)
+;;;_ > allout-encrypt-string (text decrypt allout-buffer keymode-cue
+;;; &optional rejected)
+(defun allout-encrypt-string (text decrypt allout-buffer keymode-cue
+ &optional rejected)
"Encrypt or decrypt message TEXT.
-If DECRYPT is true (default false), then decrypt instead of encrypt.
+Returns the resulting string, or nil if the transformation fails.
-FETCH-PASS (default false) forces fresh prompting for the passphrase.
+If DECRYPT is true (default false), then decrypt instead of encrypt.
-KEY-TYPE, either `symmetric' or `keypair', specifies which type
-of cypher to use.
+ALLOUT-BUFFER identifies the buffer containing the text.
-FOR-KEY is human readable identification of the first of the user's
-eligible secret keys a keypair decryption targets, or else nil.
+Entry encryption defaults to symmetric key mode unless keypair
+recipients are associated with the file \(see
+`epa-file-encrypt-to') or the function is invoked with a
+\(KEYMODE-CUE) universal argument greater than 1.
-Optional RETRIED is for internal use -- conveys the number of failed keys
-that have been solicited in sequence leading to this current call.
+When encrypting, KEYMODE-CUE universal argument greater than 1
+causes prompting for recipients for public-key keypair
+encryption. Selecting no recipients results in symmetric key
+encryption.
-Optional PASSPHRASE enables explicit delivery of the decryption passphrase,
-for verification purposes.
+Further, encrypting with a KEYMODE-CUE universal argument greater
+than 4 - eg, preceded by a doubled Ctrl-U - causes association of
+the specified recipients with the file, replacing those currently
+associated with it. This can be used to deassociate any
+recipients with the file, by selecting no recipients in the
+dialog.
-Optional REJECTED is for internal use -- conveys the number of
+Optional REJECTED is for internal use, to convey the number of
rejections due to matches against
`allout-encryption-ciphertext-rejection-regexps', as limited by
`allout-encryption-ciphertext-rejection-ceiling'.
-Returns the resulting string, or nil if the transformation fails."
-
- (require 'pgg)
-
- (if (not (fboundp 'pgg-encrypt-symmetric))
- (error "Allout encryption depends on a newer version of pgg"))
-
- (let* ((scheme (upcase
- (format "%s" (or pgg-scheme pgg-default-scheme "GPG"))))
- (for-key (and (equal key-type 'keypair)
- (or for-key
- (split-string (read-string
- (format "%s message recipients: "
- scheme))
- "[ \t,]+"))))
- (target-prompt-id (if (equal key-type 'keypair)
- (if (= (length for-key) 1)
- (car for-key) for-key)
- (buffer-name allout-buffer)))
- (target-cache-id (format "%s-%s"
- key-type
- (if (equal key-type 'keypair)
- target-prompt-id
- (or (buffer-file-name allout-buffer)
- target-prompt-id))))
+NOTE: A few GnuPG v2 versions improperly preserve incorrect
+symmetric decryption keys, preventing entry of the correct key on
+subsequent decryption attempts until the cache times-out. That
+can take several minutes. \(Decryption of other entries is not
+affected.) Upgrade your EasyPG version, if you can, and you can
+deliberately clear your gpg-agent's cache by sending it a '-HUP'
+signal."
+
+ (require 'epg)
+ (require 'epa)
+
+ (let* ((epg-context (let* ((context (epg-make-context nil t)))
+ (epg-context-set-passphrase-callback
+ context #'epa-passphrase-callback-function)
+ context))
(encoding (with-current-buffer allout-buffer
buffer-file-coding-system))
(multibyte (with-current-buffer allout-buffer
- enable-multibyte-characters))
- (strip-plaintext-regexps
- (if (not decrypt)
- (allout-get-configvar-values
- 'allout-encryption-plaintext-sanitization-regexps)))
- (reject-ciphertext-regexps
- (if (not decrypt)
- (allout-get-configvar-values
- 'allout-encryption-ciphertext-rejection-regexps)))
+ enable-multibyte-characters))
+ ;; "sanitization" avoids encryption results that are outline structure.
+ (sani-regexps 'allout-encryption-plaintext-sanitization-regexps)
+ (strip-plaintext-regexps (if (not decrypt)
+ (allout-get-configvar-values
+ sani-regexps)))
+ (rejection-regexps 'allout-encryption-ciphertext-rejection-regexps)
+ (reject-ciphertext-regexps (if (not decrypt)
+ (allout-get-configvar-values
+ rejection-regexps)))
(rejected (or rejected 0))
(rejections-left (- allout-encryption-ciphertext-rejection-ceiling
rejected))
- result-text status
+ (keypair-mode (cond (decrypt 'decrypting)
+ ((<= (prefix-numeric-value keymode-cue) 1)
+ 'default)
+ ((<= (prefix-numeric-value keymode-cue) 4)
+ 'prompt)
+ ((> (prefix-numeric-value keymode-cue) 4)
+ 'prompt-save)))
+ (keypair-message (concat "Select encryption recipients.\n"
+ "Symmetric encryption is done if no"
+ " recipients are selected. "))
+ (encrypt-to (and (boundp 'epa-file-encrypt-to) epa-file-encrypt-to))
+ recipients
+ massaged-text
+ result-text
)
- (if (and fetch-pass (not passphrase))
- ;; Force later fetch by evicting passphrase from the cache.
- (pgg-remove-passphrase-from-cache target-cache-id t))
-
- (catch 'encryption-failed
-
- ;; We handle only symmetric-key passphrase caching.
- (if (and (not passphrase)
- (not (equal key-type 'keypair)))
- (setq passphrase (allout-obtain-passphrase for-key
- target-cache-id
- target-prompt-id
- key-type
- allout-buffer
- retried fetch-pass)))
-
- (with-temp-buffer
-
- (insert text)
-
- ;; convey the text characteristics of the original buffer:
- (allout-set-buffer-multibyte multibyte)
- (when encoding
- (set-buffer-file-coding-system encoding)
- (if (not decrypt)
- (encode-coding-region (point-min) (point-max) encoding)))
-
- (when (and strip-plaintext-regexps (not decrypt))
- (dolist (re strip-plaintext-regexps)
- (let ((re (if (listp re) (car re) re))
- (replacement (if (listp re) (cadr re) "")))
- (goto-char (point-min))
- (save-match-data
- (while (re-search-forward re nil t)
- (replace-match replacement nil nil))))))
-
- (cond
-
- ;; symmetric:
- ((equal key-type 'symmetric)
- (setq status
- (if decrypt
-
- (pgg-decrypt (point-min) (point-max) passphrase)
-
- (pgg-encrypt-symmetric (point-min) (point-max)
- passphrase)))
-
- (if status
- (pgg-situate-output (point-min) (point-max))
- ;; failed -- handle passphrase caching
- (if verifying
- (throw 'encryption-failed nil)
- (pgg-remove-passphrase-from-cache target-cache-id t)
- (error "Symmetric-cipher %scryption failed -- %s"
- (if decrypt "de" "en")
- "try again with different passphrase"))))
-
- ;; encrypt `keypair':
- ((not decrypt)
-
- (setq status
-
- (pgg-encrypt for-key
- nil (point-min) (point-max) passphrase))
-
- (if status
- (pgg-situate-output (point-min) (point-max))
- (error (pgg-remove-passphrase-from-cache target-cache-id t)
- (error "encryption failed"))))
-
- ;; decrypt `keypair':
- (t
-
- (setq status
- (pgg-decrypt (point-min) (point-max) passphrase))
-
- (if status
- (pgg-situate-output (point-min) (point-max))
- (error (pgg-remove-passphrase-from-cache target-cache-id t)
- (error "decryption failed")))))
-
- (setq result-text
- (buffer-substring-no-properties
- 1 (- (point-max) (if decrypt 0 1))))
- )
-
- ;; validate result -- non-empty
- (cond ((not result-text)
- (if verifying
- nil
- ;; transform was fruitless, retry w/new passphrase.
- (pgg-remove-passphrase-from-cache target-cache-id t)
- (allout-encrypt-string text decrypt allout-buffer
- key-type for-key nil
- (if retried (1+ retried) 1)
- rejected verifying nil)))
-
- ;; Retry (within limit) if ciphertext contains rejections:
- ((and (not decrypt)
- ;; Check for disqualification of this ciphertext:
- (let ((regexps reject-ciphertext-regexps)
- reject-it)
- (while (and regexps (not reject-it))
- (setq reject-it (string-match (car regexps)
- result-text))
- (pop regexps))
- reject-it))
- (setq rejections-left (1- rejections-left))
- (if (<= rejections-left 0)
- (error (concat "Ciphertext rejected too many times"
- " (%s), per `%s'")
- allout-encryption-ciphertext-rejection-ceiling
- 'allout-encryption-ciphertext-rejection-regexps)
- (allout-encrypt-string text decrypt allout-buffer
- key-type for-key nil
- retried (1+ rejected)
- verifying passphrase)))
- ;; Barf if encryption yields extraordinary control chars:
- ((and (not decrypt)
- (string-match "[\C-a\C-k\C-o-\C-z\C-@]"
- result-text))
- (error (concat "Encryption produced non-armored text, which"
- "conflicts with allout mode -- reconfigure!")))
-
- ;; valid result and just verifying or non-symmetric:
- ((or verifying (not (equal key-type 'symmetric)))
- (if (or verifying decrypt)
- (pgg-add-passphrase-to-cache target-cache-id
- passphrase t))
- result-text)
-
- ;; valid result and regular symmetric -- "register"
- ;; passphrase with mnemonic aids/cache.
- (t
- (set-buffer allout-buffer)
- (if passphrase
- (pgg-add-passphrase-to-cache target-cache-id
- passphrase t))
- (allout-update-passphrase-mnemonic-aids for-key passphrase
- allout-buffer)
- result-text)
- )
- )
- )
- )
-;;;_ > allout-obtain-passphrase (for-key cache-id prompt-id key-type
-;;; allout-buffer retried fetch-pass)
-(defun allout-obtain-passphrase (for-key cache-id prompt-id key-type
- allout-buffer retried fetch-pass)
- "Obtain passphrase for a key from the cache or else from the user.
-
-When obtaining from the user, symmetric-cipher passphrases are verified
-against either, if available and enabled, a random string that was
-encrypted against the passphrase, or else against repeated entry by the
-user for corroboration.
-
-FOR-KEY is the key for which the passphrase is being obtained.
-
-CACHE-ID is the cache id of the key for the passphrase.
-
-PROMPT-ID is the id for use when prompting the user.
-
-KEY-TYPE is either `symmetric' or `keypair'.
-
-ALLOUT-BUFFER is the buffer containing the entry being en/decrypted.
-
-RETRIED is the number of this attempt to obtain this passphrase.
-
-FETCH-PASS causes the passphrase to be solicited from the user, regardless
-of the availability of a cached copy."
-
- (if (not (equal key-type 'symmetric))
- ;; do regular passphrase read on non-symmetric passphrase:
- (pgg-read-passphrase (format "%s passphrase%s: "
- (upcase (format "%s" (or pgg-scheme
- pgg-default-scheme
- "GPG")))
- (if prompt-id
- (format " for %s" prompt-id)
- ""))
- cache-id t)
-
- ;; Symmetric hereon:
-
- (with-current-buffer allout-buffer
- (let* ((hint (if (and (not (string= allout-passphrase-hint-string ""))
- (or (equal allout-passphrase-hint-handling 'always)
- (and (equal allout-passphrase-hint-handling
- 'needed)
- retried)))
- (format " [%s]" allout-passphrase-hint-string)
- ""))
- (retry-message (if retried (format " (%s retry)" retried) ""))
- (prompt-sans-hint (format "'%s' symmetric passphrase%s: "
- prompt-id retry-message))
- (full-prompt (format "'%s' symmetric passphrase%s%s: "
- prompt-id hint retry-message))
- (prompt full-prompt)
- (verifier-string (allout-get-encryption-passphrase-verifier))
-
- (cached (and (not fetch-pass)
- (pgg-read-passphrase-from-cache cache-id t)))
- (got-pass (or cached
- (pgg-read-passphrase full-prompt cache-id t)))
- confirmation)
-
- (if (not got-pass)
- nil
+ ;; Massage the subject text for encoding and filtering.
+ (with-temp-buffer
+ (insert text)
+ ;; convey the text characteristics of the original buffer:
+ (allout-set-buffer-multibyte multibyte)
+ (when encoding
+ (set-buffer-file-coding-system encoding)
+ (if (not decrypt)
+ (encode-coding-region (point-min) (point-max) encoding)))
+
+ ;; remove sanitization regexps matches before encrypting:
+ (when (and strip-plaintext-regexps (not decrypt))
+ (dolist (re strip-plaintext-regexps)
+ (let ((re (if (listp re) (car re) re))
+ (replacement (if (listp re) (cadr re) "")))
+ (goto-char (point-min))
+ (save-match-data
+ (while (re-search-forward re nil t)
+ (replace-match replacement nil nil))))))
+ (setq massaged-text (buffer-substring-no-properties (point-min)
+ (point-max))))
+ ;; determine key mode and, if keypair, recipients:
+ (setq recipients
+ (case keypair-mode
+
+ (decrypting nil)
+
+ (default (if encrypt-to (epg-list-keys epg-context encrypt-to)))
+
+ ((prompt prompt-save)
+ (save-window-excursion
+ (epa-select-keys epg-context keypair-message)))))
+
+ (setq result-text
+ (if decrypt
+ (epg-decrypt-string epg-context
+ (encode-coding-string massaged-text
+ (or encoding 'utf-8)))
+ (replace-regexp-in-string "\n$" ""
+ (epg-encrypt-string epg-context
+ (encode-coding-string massaged-text
+ (or encoding 'utf-8))
+ recipients))))
+
+ ;; validate result -- non-empty
+ (if (not result-text)
+ (error "%scryption failed." (if decrypt "De" "En")))
+
+
+ (when (eq keypair-mode 'prompt-save)
+ ;; set epa-file-encrypt-to in the buffer:
+ (setq epa-file-encrypt-to (mapcar (lambda (key)
+ (epg-user-id-string
+ (car (epg-key-user-id-list key))))
+ recipients))
+ ;; change the file variable:
+ (allout-adjust-file-variable "epa-file-encrypt-to" epa-file-encrypt-to))
- ;; Duplicate our handle on the passphrase so it's not clobbered by
- ;; deactivate-passwd memory clearing:
- (setq got-pass (copy-sequence got-pass))
-
- (cond (verifier-string
- (save-window-excursion
- (if (allout-encrypt-string verifier-string 'decrypt
- allout-buffer 'symmetric
- for-key nil 0 0 'verifying
- (copy-sequence got-pass))
- (setq confirmation (format "%s" got-pass))))
-
- (if (and (not confirmation)
- (if (yes-or-no-p
- (concat "Passphrase differs from established"
- " -- use new one instead? "))
- ;; deactivate password for subsequent
- ;; confirmation:
- (progn
- (pgg-remove-passphrase-from-cache cache-id t)
- (setq prompt prompt-sans-hint)
- nil)
- t))
- (progn (pgg-remove-passphrase-from-cache cache-id t)
- (error "Wrong passphrase"))))
- ;; No verifier string -- force confirmation by repetition of
- ;; (new) passphrase:
- ((or fetch-pass (not cached))
- (pgg-remove-passphrase-from-cache cache-id t))))
- ;; confirmation vs new input -- doing pgg-read-passphrase will do the
- ;; right thing, in either case:
- (if (not confirmation)
- (setq confirmation
- (pgg-read-passphrase (concat prompt
- " ... confirm spelling: ")
- cache-id t)))
- (prog1
- (if (equal got-pass confirmation)
- confirmation
- (if (yes-or-no-p (concat "spelling of original and"
- " confirmation differ -- retry? "))
- (progn (setq retried (if retried (1+ retried) 1))
- (pgg-remove-passphrase-from-cache cache-id t)
- ;; recurse to this routine:
- (pgg-read-passphrase prompt-sans-hint cache-id t))
- (pgg-remove-passphrase-from-cache cache-id t)
- (error "Confirmation failed"))))))))
+ (cond
+ ;; Retry (within limit) if ciphertext contains rejections:
+ ((and (not decrypt)
+ ;; Check for disqualification of this ciphertext:
+ (let ((regexps reject-ciphertext-regexps)
+ reject-it)
+ (while (and regexps (not reject-it))
+ (setq reject-it (string-match (car regexps) result-text))
+ (pop regexps))
+ reject-it))
+ (setq rejections-left (1- rejections-left))
+ (if (<= rejections-left 0)
+ (error (concat "Ciphertext rejected too many times"
+ " (%s), per `%s'")
+ allout-encryption-ciphertext-rejection-ceiling
+ 'allout-encryption-ciphertext-rejection-regexps)
+ ;; try again (gpg-agent may have the key cached):
+ (allout-encrypt-string text decrypt allout-buffer keypair-mode
+ (1+ rejected))))
+
+ ;; Barf if encryption yields extraordinary control chars:
+ ((and (not decrypt)
+ (string-match "[\C-a\C-k\C-o-\C-z\C-@]"
+ result-text))
+ (error (concat "Encryption produced non-armored text, which"
+ "conflicts with allout mode -- reconfigure!")))
+
+ (t result-text))))
;;;_ > allout-encrypted-topic-p ()
(defun allout-encrypted-topic-p ()
"True if the current topic is encryptable and encrypted."
@@ -6527,128 +6184,6 @@ of the availability of a cached copy."
(save-match-data (looking-at "\\*")))
)
)
-;;;_ > allout-encrypted-key-info (text)
-;; XXX gpg-specific, alas
-(defun allout-encrypted-key-info (text)
- "Return a pair of the key type and identity of a recipient's secret key.
-
-The key type is one of `symmetric' or `keypair'.
-
-If `keypair', and some of the user's secret keys are among those for which
-the message was encoded, return the identity of the first. Otherwise,
-return nil for the second item of the pair.
-
-An error is raised if the text is not encrypted."
- (require 'pgg-parse)
- (save-excursion
- (with-temp-buffer
- (insert text)
- (let* ((parsed-armor (pgg-parse-armor-region (point-min) (point-max)))
- (type (if (pgg-gpg-symmetric-key-p parsed-armor)
- 'symmetric
- 'keypair))
- secret-keys first-secret-key for-key-owner)
- (if (equal type 'keypair)
- (setq secret-keys (pgg-gpg-lookup-all-secret-keys)
- first-secret-key (pgg-gpg-select-matching-key parsed-armor
- secret-keys)
- for-key-owner (and first-secret-key
- (pgg-gpg-lookup-key-owner
- first-secret-key))))
- (list type (pgg-gpg-key-id-from-key-owner for-key-owner))
- )
- )
- )
- )
-;;;_ > allout-create-encryption-passphrase-verifier (passphrase)
-(defun allout-create-encryption-passphrase-verifier (passphrase)
- "Encrypt random message for later validation of symmetric key's passphrase."
- ;; use 20 random ascii characters, across the entire ascii range.
- (random t)
- (let ((spew (make-string 20 ?\0)))
- (dotimes (i (length spew))
- (aset spew i (1+ (random 254))))
- (allout-encrypt-string spew nil (current-buffer) 'symmetric
- nil nil 0 0 passphrase))
- )
-;;;_ > allout-update-passphrase-mnemonic-aids (for-key passphrase
-;;; outline-buffer)
-(defun allout-update-passphrase-mnemonic-aids (for-key passphrase
- outline-buffer)
- "Update passphrase verifier and hint strings if necessary.
-
-See `allout-passphrase-verifier-string' and `allout-passphrase-hint-string'
-settings.
-
-PASSPHRASE is the passphrase being mnemonicized.
-
-OUTLINE-BUFFER is the buffer of the outline being adjusted.
-
-These are used to help the user keep track of the passphrase they use for
-symmetric encryption in the file.
-
-Behavior is governed by `allout-passphrase-verifier-handling',
-`allout-passphrase-hint-handling', and also, controlling whether the values
-are preserved on Emacs local file variables,
-`allout-enable-file-variable-adjustment'."
-
- ;; If passphrase doesn't agree with current verifier:
- ;; - adjust the verifier
- ;; - if passphrase hint handling is enabled, adjust the passphrase hint
- ;; - if file var settings are enabled, adjust the file vars
-
- (let* ((new-verifier-needed (not (allout-verify-passphrase
- for-key passphrase outline-buffer)))
- (new-verifier-string
- (if new-verifier-needed
- ;; Collapse to a single line and enclose in string quotes:
- (subst-char-in-string
- ?\n ?\C-a (allout-create-encryption-passphrase-verifier
- passphrase))))
- new-hint)
- (when new-verifier-string
- ;; do the passphrase hint first, since it's interactive
- (when (and allout-passphrase-hint-handling
- (not (equal allout-passphrase-hint-handling 'disabled)))
- (setq new-hint
- (read-from-minibuffer "Passphrase hint to jog your memory: "
- allout-passphrase-hint-string))
- (when (not (string= new-hint allout-passphrase-hint-string))
- (setq allout-passphrase-hint-string new-hint)
- (allout-adjust-file-variable "allout-passphrase-hint-string"
- allout-passphrase-hint-string)))
- (when allout-passphrase-verifier-handling
- (setq allout-passphrase-verifier-string new-verifier-string)
- (allout-adjust-file-variable "allout-passphrase-verifier-string"
- allout-passphrase-verifier-string))
- )
- )
- )
-;;;_ > allout-get-encryption-passphrase-verifier ()
-(defun allout-get-encryption-passphrase-verifier ()
- "Return text of the encrypt passphrase verifier, unmassaged, or nil if none.
-
-Derived from value of `allout-passphrase-verifier-string'."
-
- (let ((verifier-string (and (boundp 'allout-passphrase-verifier-string)
- allout-passphrase-verifier-string)))
- (if verifier-string
- ;; Return it uncollapsed
- (subst-char-in-string ?\C-a ?\n verifier-string))
- )
- )
-;;;_ > allout-verify-passphrase (key passphrase allout-buffer)
-(defun allout-verify-passphrase (key passphrase allout-buffer)
- "True if passphrase successfully decrypts verifier, nil otherwise.
-
-\"Otherwise\" includes absence of passphrase verifier."
- (with-current-buffer allout-buffer
- (and (boundp 'allout-passphrase-verifier-string)
- allout-passphrase-verifier-string
- (allout-encrypt-string (allout-get-encryption-passphrase-verifier)
- 'decrypt allout-buffer 'symmetric
- key nil 0 0 'verifying passphrase)
- t)))
;;;_ > allout-next-topic-pending-encryption (&optional except-mark)
(defun allout-next-topic-pending-encryption (&optional except-mark)
"Return the point of the next topic pending encryption, or nil if none.
@@ -6772,7 +6307,8 @@ setup for auto-startup."
(interactive "P")
- (allout-mode t)
+ (if (allout-mode-p) (allout-mode)) ; deactivate so we can re-activate...
+ (allout-mode)
(save-excursion
(goto-char (point-min))
@@ -7176,13 +6712,13 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
;; No docstring because xemacs defalias doesn't support it.
)
;;;_ > allout-set-buffer-multibyte
-;; define as alias first, so byte compiler is happy.
-(defalias 'allout-set-buffer-multibyte 'set-buffer-multibyte)
-;; then supplant with definition if underlying alias absent.
-(if (not (fboundp 'set-buffer-multibyte))
- (defun allout-set-buffer-multibyte (is-multibyte)
- (setq enable-multibyte-characters is-multibyte))
- )
+(if (fboundp 'set-buffer-multibyte)
+ (defalias 'allout-set-buffer-multibyte 'set-buffer-multibyte)
+ (with-no-warnings
+ ;; this definition is used only in older or alternative emacs, where
+ ;; the setting is our only recourse.
+ (defun allout-set-buffer-multibyte (is-multibyte)
+ (set enable-multibyte-characters is-multibyte))))
;;;_ > allout-select-safe-coding-system
(defalias 'allout-select-safe-coding-system
(if (fboundp 'select-safe-coding-system)
diff --git a/lisp/ansi-color.el b/lisp/ansi-color.el
index 98eeca325b..2b43940c1b 100644
--- a/lisp/ansi-color.el
+++ b/lisp/ansi-color.el
@@ -1,7 +1,6 @@
;;; ansi-color.el --- translate ANSI escape sequences into faces
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Alex Schroeder <[email protected]>
;; Maintainer: Alex Schroeder <[email protected]>
@@ -594,5 +593,4 @@ ESCAPE-SEQ is a SGR control sequences such as \\033[34m. The parameter
(provide 'ansi-color)
-;; arch-tag: 00726118-9432-44fd-b72d-d2af7591c99c
;;; ansi-color.el ends here
diff --git a/lisp/apropos.el b/lisp/apropos.el
index d62721e157..459d12804f 100644
--- a/lisp/apropos.el
+++ b/lisp/apropos.el
@@ -1,7 +1,6 @@
;;; apropos.el --- apropos commands for users and programmers
-;; Copyright (C) 1989, 1994, 1995, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1989, 1994-1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Joe Wells <[email protected]>
;; Daniel Pfeiffer <[email protected]> (rewrite)
@@ -1137,5 +1136,4 @@ If non-nil TEXT is a string that will be printed as a heading."
(provide 'apropos)
-;; arch-tag: d56fa2ac-e56b-4ce3-84ff-852f9c0dc66e
;;; apropos.el ends here
diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index 4a80b74e95..131b0dcd95 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -1,7 +1,6 @@
;;; arc-mode.el --- simple editing of archives
-;; Copyright (C) 1995, 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1997-1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Morten Welinder <[email protected]>
;; Keywords: files archives msdog editing major-mode
diff --git a/lisp/array.el b/lisp/array.el
index 1f04e8ef72..211124964a 100644
--- a/lisp/array.el
+++ b/lisp/array.el
@@ -1,7 +1,6 @@
;;; array.el --- array editing commands for GNU Emacs
-;; Copyright (C) 1987, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1987, 2000-2011 Free Software Foundation, Inc.
;; Author: David M. Brown
;; Maintainer: FSF
diff --git a/lisp/autoarg.el b/lisp/autoarg.el
index bb1849a85b..378ec1318b 100644
--- a/lisp/autoarg.el
+++ b/lisp/autoarg.el
@@ -1,7 +1,6 @@
;;; autoarg.el --- make digit keys supply prefix args
-;; Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Created: 1998-09-04
@@ -144,5 +143,4 @@ which invoked this function, excluding the Autoarg keymap."
(provide 'autoarg)
-;; arch-tag: 2ba2ab4f-d60e-402a-ae4d-37e29af723c2
;;; autoarg.el ends here
diff --git a/lisp/autoinsert.el b/lisp/autoinsert.el
index 9a8001875e..5793c3180b 100644
--- a/lisp/autoinsert.el
+++ b/lisp/autoinsert.el
@@ -1,7 +1,7 @@
;;; autoinsert.el --- automatic mode-dependent insertion of text into new files
-;; Copyright (C) 1985, 1986, 1987, 1994, 1995, 1998, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1994-1995, 1998, 2000-2011
+;; Free Software Foundation, Inc.
;; Author: Charlie Martin <[email protected]>
;; Adapted-By: Daniel Pfeiffer <[email protected]>
@@ -410,5 +410,4 @@ insert a template for the file depending on the mode of the buffer."
(provide 'autoinsert)
-;; arch-tag: 5b6630ac-c735-43cf-b097-b78c622af909
;;; autoinsert.el ends here
diff --git a/lisp/autorevert.el b/lisp/autorevert.el
index 99bb005d0f..0000e29f45 100644
--- a/lisp/autorevert.el
+++ b/lisp/autorevert.el
@@ -1,7 +1,6 @@
;;; autorevert.el --- revert buffers when files on disk change
-;; Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Anders Lindgren <[email protected]>
;; Keywords: convenience
@@ -576,5 +575,4 @@ the timer when no buffers need to be checked."
(run-hooks 'auto-revert-load-hook)
-;; arch-tag: f6bcb07b-4841-477e-9e44-b18678e58876
;;; autorevert.el ends here
diff --git a/lisp/avoid.el b/lisp/avoid.el
index 4b713b827b..fe47a0c4a3 100644
--- a/lisp/avoid.el
+++ b/lisp/avoid.el
@@ -1,7 +1,6 @@
;;; avoid.el --- make mouse pointer stay out of the way of editing
-;; Copyright (C) 1993, 1994, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 2000-2011 Free Software Foundation, Inc.
;; Author: Boris Goldowsky <[email protected]>
;; Keywords: mouse
@@ -409,5 +408,4 @@ definition of \"random distance\".)"
(if mouse-avoidance-mode
(mouse-avoidance-mode mouse-avoidance-mode))
-;; arch-tag: 64ad4ef8-a870-4183-8d96-3aa93b7a6800
;;; avoid.el ends here
diff --git a/lisp/battery.el b/lisp/battery.el
index fc5926efd1..9afe9de7b9 100644
--- a/lisp/battery.el
+++ b/lisp/battery.el
@@ -1,7 +1,6 @@
;;; battery.el --- display battery status information -*- coding: iso-8859-1 -*-
-;; Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Ralph Schleicher <[email protected]>
;; Keywords: hardware
@@ -553,5 +552,4 @@ MATCH-NUM in the match. Otherwise, return nil."
(provide 'battery)
-;; arch-tag: 65916f50-4754-4b6b-ac21-0b510f545a37
;;; battery.el ends here
diff --git a/lisp/bindings.el b/lisp/bindings.el
index bd4a120336..4d9f4f09e5 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -1,7 +1,6 @@
;;; bindings.el --- define standard key bindings and some variables
-;; Copyright (C) 1985, 1986, 1987, 1992, 1993, 1994, 1995, 1996, 1999,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1987, 1992-1996, 1999-2011
;; Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -1214,5 +1213,4 @@ if `inhibit-field-text-motion' is non-nil."
;; no-update-autoloads: t
;; End:
-;; arch-tag: 23b5c7e6-e47b-49ed-8c6c-ed213c5fffe0
;;; bindings.el ends here
diff --git a/lisp/bookmark.el b/lisp/bookmark.el
index 9c1034c636..4c0dd64a2c 100644
--- a/lisp/bookmark.el
+++ b/lisp/bookmark.el
@@ -1,8 +1,6 @@
;;; bookmark.el --- set bookmarks, maybe annotate them, jump to them later
-;; Copyright (C) 1993, 1994, 1995, 1996, 1997, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1993-1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Karl Fogel <[email protected]>
;; Maintainer: Karl Fogel <[email protected]>
diff --git a/lisp/bs.el b/lisp/bs.el
index 0ce7670201..2436bab259 100644
--- a/lisp/bs.el
+++ b/lisp/bs.el
@@ -1,7 +1,6 @@
;;; bs.el --- menu for selecting and displaying buffers
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Olaf Sylvester <[email protected]>
;; Maintainer: Olaf Sylvester <[email protected]>
;; Keywords: convenience
@@ -1486,5 +1485,4 @@ name of buffer configuration."
;; Now provide feature bs
(provide 'bs)
-;; arch-tag: c0d9ab34-bf06-4368-ae9d-af88878e6802
;;; bs.el ends here
diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el
index 21fdada22c..1e92c08475 100644
--- a/lisp/buff-menu.el
+++ b/lisp/buff-menu.el
@@ -1,7 +1,6 @@
;;; buff-menu.el --- buffer menu main function and support functions -*- coding:utf-8 -*-
-;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1987, 1993-1995, 2000-2011
;; Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -113,9 +112,15 @@ A nil value means sort by visited order (the default).")
This variable determines whether reverting the buffer lists only
file buffers. It affects both manual reverting and reverting by
Auto Revert Mode.")
-
(make-variable-buffer-local 'Buffer-menu-files-only)
+(defvar Buffer-menu--buffers nil
+ "If non-nil, list of buffers shown in the current buffer-menu.
+This variable determines whether reverting the buffer lists only
+this buffers. It affects both manual reverting and reverting by
+Auto Revert Mode.")
+(make-variable-buffer-local 'Buffer-menu--buffers)
+
(defvar Info-current-file) ;; from info.el
(defvar Info-current-node) ;; from info.el
@@ -283,7 +288,7 @@ Letters do not insert themselves; instead, they are commands.
;; interactively current buffer is correctly identified with a `.'
;; by `list-buffers-noselect'.
(with-current-buffer (window-buffer)
- (list-buffers-noselect Buffer-menu-files-only))
+ (list-buffers-noselect Buffer-menu-files-only Buffer-menu--buffers))
(if oline
(while (setq prop (next-single-property-change prop 'buffer))
(when (eq (get-text-property prop 'buffer) oline)
@@ -920,6 +925,7 @@ For more information, see the function `buffer-menu'."
(and desired-point
(goto-char desired-point))
(setq Buffer-menu-files-only files-only)
+ (setq Buffer-menu--buffers buffer-list)
(set-buffer-modified-p nil)
(current-buffer))))
diff --git a/lisp/button.el b/lisp/button.el
index c771474da3..2e48554774 100644
--- a/lisp/button.el
+++ b/lisp/button.el
@@ -1,7 +1,6 @@
;;; button.el --- clickable buttons
;;
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;;
;; Author: Miles Bader <[email protected]>
;; Keywords: extensions
@@ -38,7 +37,9 @@
;; the button is represented by a marker or buffer-position pointing
;; somewhere in the button. In the latter case, no markers into the
;; buffer are retained, which is important for speed if there are are
-;; extremely large numbers of buttons.
+;; extremely large numbers of buttons. Note however that if there is
+;; an existing face text-property at the site of the button, the
+;; button face may not be visible. Using overlays avoids this.
;;
;; Using `define-button-type' to define default properties for buttons
;; is not necessary, but it is is encouraged, since doing so makes the
@@ -290,9 +291,12 @@ button-type from which to inherit other properties; see
`define-button-type'.
This function is like `make-button', except that the button is actually
-part of the text instead of being a property of the buffer. Creating
-large numbers of buttons can also be somewhat faster using
-`make-text-button'.
+part of the text instead of being a property of the buffer. That is,
+this function uses text properties, the other uses overlays.
+Creating large numbers of buttons can also be somewhat faster
+using `make-text-button'. Note, however, that if there is an existing
+face property at the site of the button, the button face may not be visible.
+You may want to use `make-button' in that case.
BEG can also be a string, in which case it is made into a button.
@@ -477,5 +481,4 @@ Returns the button found."
(provide 'button)
-;; arch-tag: 5f2c7627-413b-4097-b282-630f89d9c5e9
;;; button.el ends here
diff --git a/lisp/calc/README b/lisp/calc/README
index b23666018e..e1170fc6df 100644
--- a/lisp/calc/README
+++ b/lisp/calc/README
@@ -1,13 +1,11 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
This directory contains Calc, an advanced desk calculator for GNU
Emacs.
-"Calc" Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+"Calc" Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
Written by:
Dave Gillespie
diff --git a/lisp/calc/README.prev b/lisp/calc/README.prev
index 929c913b9c..69da211efc 100644
--- a/lisp/calc/README.prev
+++ b/lisp/calc/README.prev
@@ -1,5 +1,4 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/lisp/calc/calc-aent.el b/lisp/calc/calc-aent.el
index 472133be84..00e07aba6a 100644
--- a/lisp/calc/calc-aent.el
+++ b/lisp/calc/calc-aent.el
@@ -1,7 +1,6 @@
;;; calc-aent.el --- algebraic entry functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: Dave Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -1271,5 +1270,4 @@ If the current Calc language does not use placeholders, return nil."
;; generated-autoload-file: "calc-loaddefs.el"
;; End:
-;; arch-tag: 5599e45d-e51e-44bb-9a20-9f4ed8c96c32
;;; calc-aent.el ends here
diff --git a/lisp/calc/calc-alg.el b/lisp/calc/calc-alg.el
index 47cdae52a1..728acf5b0f 100644
--- a/lisp/calc/calc-alg.el
+++ b/lisp/calc/calc-alg.el
@@ -1,7 +1,6 @@
;;; calc-alg.el --- algebraic functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -1914,5 +1913,4 @@
(provide 'calc-alg)
-;; arch-tag: 52e7dcdf-9688-464d-a02b-4bbe789348d0
;;; calc-alg.el ends here
diff --git a/lisp/calc/calc-arith.el b/lisp/calc/calc-arith.el
index 6de2408050..a557e5fb92 100644
--- a/lisp/calc/calc-arith.el
+++ b/lisp/calc/calc-arith.el
@@ -1,7 +1,6 @@
;;; calc-arith.el --- arithmetic functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -3067,5 +3066,4 @@
(provide 'calc-arith)
-;; arch-tag: 6c396b5b-14c6-40ed-bb2a-7cc2e8111465
;;; calc-arith.el ends here
diff --git a/lisp/calc/calc-bin.el b/lisp/calc/calc-bin.el
index 4ab698ea64..20b4a9db5e 100644
--- a/lisp/calc/calc-bin.el
+++ b/lisp/calc/calc-bin.el
@@ -1,7 +1,6 @@
;;; calc-bin.el --- binary functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -854,5 +853,4 @@ the size of a Calc bignum digit.")
(provide 'calc-bin)
-;; arch-tag: f6dba7bc-53b2-41ae-919c-c266ab0ca8b3
;;; calc-bin.el ends here
diff --git a/lisp/calc/calc-comb.el b/lisp/calc/calc-comb.el
index a817462209..da5bae6980 100644
--- a/lisp/calc/calc-comb.el
+++ b/lisp/calc/calc-comb.el
@@ -1,7 +1,6 @@
;;; calc-comb.el --- combinatoric functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -1027,5 +1026,4 @@
(provide 'calc-comb)
-;; arch-tag: 1d75ee9b-0815-42bd-a321-bb3dc001cc02
;;; calc-comb.el ends here
diff --git a/lisp/calc/calc-cplx.el b/lisp/calc/calc-cplx.el
index 6b0075e338..f2e0c49314 100644
--- a/lisp/calc/calc-cplx.el
+++ b/lisp/calc/calc-cplx.el
@@ -1,7 +1,6 @@
;;; calc-cplx.el --- Complex number functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -355,5 +354,4 @@
(provide 'calc-cplx)
-;; arch-tag: de73a331-941c-4507-ae76-46c76adc70dd
;;; calc-cplx.el ends here
diff --git a/lisp/calc/calc-embed.el b/lisp/calc/calc-embed.el
index f14895eb42..f011d187a4 100644
--- a/lisp/calc/calc-embed.el
+++ b/lisp/calc/calc-embed.el
@@ -1,7 +1,6 @@
;;; calc-embed.el --- embed Calc in a buffer
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -1382,5 +1381,4 @@ The command \\[yank] can retrieve it from there."
;; generated-autoload-file: "calc-loaddefs.el"
;; End:
-;; arch-tag: 1b8f311e-fba1-40d3-b8c3-1d6f68fd26fc
;;; calc-embed.el ends here
diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el
index 18e63655ec..71cd6c9d61 100644
--- a/lisp/calc/calc-ext.el
+++ b/lisp/calc/calc-ext.el
@@ -1,7 +1,6 @@
;;; calc-ext.el --- various extension functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -136,8 +135,6 @@
(define-key calc-mode-map "\C-w" 'calc-kill-region)
(define-key calc-mode-map "\M-w" 'calc-copy-region-as-kill)
(define-key calc-mode-map "\M-\C-w" 'kill-ring-save)
- (define-key calc-mode-map "\C-_" 'calc-undo)
- (define-key calc-mode-map "\C-xu" 'calc-undo)
(define-key calc-mode-map "\M-\C-m" 'calc-last-args)
(define-key calc-mode-map "a" nil)
@@ -549,6 +546,10 @@
(define-key calc-mode-map "ud" 'calc-define-unit)
(define-key calc-mode-map "ue" 'calc-explain-units)
(define-key calc-mode-map "ug" 'calc-get-unit-definition)
+ (define-key calc-mode-map "ul+" 'calc-luplus)
+ (define-key calc-mode-map "ul-" 'calc-luminus)
+ (define-key calc-mode-map "ull" 'calc-level)
+ (define-key calc-mode-map "ul?" 'calc-ul-prefix-help)
(define-key calc-mode-map "up" 'calc-permanent-units)
(define-key calc-mode-map "ur" 'calc-remove-units)
(define-key calc-mode-map "us" 'calc-simplify-units)
@@ -932,7 +933,8 @@ calc-store-value calc-var-name)
("calc-stuff" calc-explain-why calcFunc-clean
calcFunc-pclean calcFunc-pfloat calcFunc-pfrac)
- ("calc-units" calcFunc-usimplify
+ ("calc-units" calcFunc-usimplify calcFunc-luplus
+calcFunc-luminus calcFunc-fieldlevel calcFunc-powerlevel
math-build-units-table math-build-units-table-buffer
math-check-unit-name math-convert-temperature math-convert-units
math-extract-units math-remove-units math-simplify-units
@@ -1049,7 +1051,8 @@ calc-full-help calc-g-prefix-help calc-help-prefix
calc-hyperbolic-prefix-help calc-inv-hyp-prefix-help calc-option-prefix-help
calc-inverse-prefix-help calc-j-prefix-help calc-k-prefix-help
calc-m-prefix-help calc-r-prefix-help calc-s-prefix-help
-calc-t-prefix-help calc-u-prefix-help calc-v-prefix-help)
+calc-t-prefix-help calc-u-prefix-help calc-ul-prefix-help
+calc-v-prefix-help)
("calc-incom" calc-begin-complex calc-begin-vector calc-comma
calc-dots calc-end-complex calc-end-vector calc-semi)
@@ -1156,14 +1159,14 @@ calc-trail-kill calc-trail-last calc-trail-marker calc-trail-next
calc-trail-out calc-trail-previous calc-trail-scroll-left
calc-trail-scroll-right calc-trail-yank)
- ("calc-undo" calc-last-args calc-redo calc-undo)
+ ("calc-undo" calc-last-args calc-redo)
("calc-units" calc-autorange-units calc-base-units
calc-convert-temperature calc-convert-units calc-define-unit
calc-enter-units-table calc-explain-units calc-extract-units
calc-get-unit-definition calc-permanent-units calc-quick-units
calc-remove-units calc-simplify-units calc-undefine-unit
-calc-view-units-table)
+calc-view-units-table calc-luplus calc-luminus calc-level)
("calc-vec" calc-arrange-vector calc-build-vector calc-cnorm
calc-conj-transpose calc-cons calc-cross calc-kron calc-diag
@@ -3504,5 +3507,4 @@ A key may contain additional specs for Inverse, Hyperbolic, and Inv+Hyp.")
;; coding: utf-8
;; End:
-;; arch-tag: 1814ba7f-a390-49dc-9e25-a5adc205e97e
;;; calc-ext.el ends here
diff --git a/lisp/calc/calc-fin.el b/lisp/calc/calc-fin.el
index 6405dad5a6..2e1d072dfb 100644
--- a/lisp/calc/calc-fin.el
+++ b/lisp/calc/calc-fin.el
@@ -1,7 +1,6 @@
;;; calc-fin.el --- financial functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -410,5 +409,4 @@
(provide 'calc-fin)
-;; arch-tag: 82f30ca8-d02f-4b33-84b4-bb6ecd84597b
;;; calc-fin.el ends here
diff --git a/lisp/calc/calc-forms.el b/lisp/calc/calc-forms.el
index 7fec46b042..912bbc7f78 100644
--- a/lisp/calc/calc-forms.el
+++ b/lisp/calc/calc-forms.el
@@ -1,7 +1,6 @@
;;; calc-forms.el --- data format conversion functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -1922,5 +1921,4 @@ and ends on the last Sunday of October at 2 a.m."
(provide 'calc-forms)
-;; arch-tag: a3d8f33b-9508-4043-8060-d02b8c9c750c
;;; calc-forms.el ends here
diff --git a/lisp/calc/calc-frac.el b/lisp/calc/calc-frac.el
index 265f0b325b..30894b406b 100644
--- a/lisp/calc/calc-frac.el
+++ b/lisp/calc/calc-frac.el
@@ -1,7 +1,6 @@
;;; calc-frac.el --- fraction functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -234,5 +233,4 @@
(provide 'calc-frac)
-;; arch-tag: 89d65274-0b3b-42d8-aacd-eaf86da5b4ea
;;; calc-frac.el ends here
diff --git a/lisp/calc/calc-funcs.el b/lisp/calc/calc-funcs.el
index 5c445b75ba..e065493562 100644
--- a/lisp/calc/calc-funcs.el
+++ b/lisp/calc/calc-funcs.el
@@ -1,7 +1,6 @@
;;; calc-funcs.el --- well-known functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -1009,5 +1008,4 @@
(provide 'calc-funcs)
-;; arch-tag: 421ddb7a-550f-4dda-a31c-06638ebfc43a
;;; calc-funcs.el ends here
diff --git a/lisp/calc/calc-graph.el b/lisp/calc/calc-graph.el
index 9fefaa73d7..d5d8f0aaf3 100644
--- a/lisp/calc/calc-graph.el
+++ b/lisp/calc/calc-graph.el
@@ -1,7 +1,6 @@
;;; calc-graph.el --- graph output functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -575,16 +574,16 @@
(setq calc-graph-xstep 1)
(error "%s is not a suitable basis for %s" calc-graph-xname calc-graph-yname)))))
(or (math-realp calc-graph-yvalue)
- (let ((arglist nil))
+ (let ((math-arglist nil))
(setq calc-graph-yvalue (math-evaluate-expr calc-graph-yvalue))
(calc-default-formula-arglist calc-graph-yvalue)
- (or arglist
+ (or math-arglist
(error "%s does not contain any unassigned variables" calc-graph-yname))
- (and (cdr arglist)
+ (and (cdr math-arglist)
(error "%s contains more than one variable: %s"
- calc-graph-yname arglist))
+ calc-graph-yname math-arglist))
(setq calc-graph-yvalue (math-expr-subst calc-graph-yvalue
- (math-build-var-name (car arglist))
+ (math-build-var-name (car math-arglist))
'(var DUMMY var-DUMMY)))))
(setq calc-graph-ycache (assoc calc-graph-yvalue calc-graph-data-cache))
(delq calc-graph-ycache calc-graph-data-cache)
@@ -736,17 +735,17 @@
calc-graph-zp calc-graph-yvalue
calc-graph-xvec t))
(or (math-realp calc-graph-yvalue)
- (let ((arglist nil))
+ (let ((math-arglist nil))
(setq calc-graph-yvalue (math-evaluate-expr calc-graph-yvalue))
(calc-default-formula-arglist calc-graph-yvalue)
- (setq arglist (sort arglist 'string-lessp))
- (or (cdr arglist)
+ (setq math-arglist (sort math-arglist 'string-lessp))
+ (or (cdr math-arglist)
(error "%s does not contain enough unassigned variables" calc-graph-yname))
- (and (cdr (cdr arglist))
- (error "%s contains too many variables: %s" calc-graph-yname arglist))
+ (and (cdr (cdr math-arglist))
+ (error "%s contains too many variables: %s" calc-graph-yname math-arglist))
(setq calc-graph-yvalue (math-multi-subst calc-graph-yvalue
(mapcar 'math-build-var-name
- arglist)
+ math-arglist)
'((var DUMMY var-DUMMY)
(var DUMMY2 var-DUMMY2))))))
(if (setq calc-graph-xvec (eq (car-safe calc-graph-xvalue) 'vec))
@@ -1506,5 +1505,4 @@ This \"dumb\" driver will be present in Gnuplot 3.0."
(provide 'calc-graph)
-;; arch-tag: e4b06a52-c386-4d54-a2bb-7c0a0ef533c2
;;; calc-graph.el ends here
diff --git a/lisp/calc/calc-help.el b/lisp/calc/calc-help.el
index 47c9513064..c34c114dac 100644
--- a/lisp/calc/calc-help.el
+++ b/lisp/calc/calc-help.el
@@ -1,7 +1,6 @@
;;; calc-help.el --- help display functions for Calc,
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -663,12 +662,19 @@ C-w Describe how there is no warranty for Calc."
(calc-do-prefix-help
'("Simplify, Convert, Temperature-convert, Base-units"
"Autorange; Remove, eXtract; Explain; View-table; 0-9"
- "Define, Undefine, Get-defn, Permanent"
+ "Define, Undefine, Get-defn, Permanent, Logarithmic"
"SHIFT + View-table-other-window"
"SHIFT + stat: Mean, G-mean, Std-dev, Covar, maX, miN"
"SHIFT + stat: + (sum), - (asum), * (prod), # (count)")
"units/stat" ?u))
+(defun calc-ul-prefix-help ()
+ (interactive)
+ (if (eq this-command last-command)
+ (message "ul-")
+ (message "logarithmic-units: + (logarithmic), - (logarithmic), Level: ul-"))
+ (push ?l unread-command-events)
+ (push ?u unread-command-events))
(defun calc-v-prefix-help ()
(interactive)
@@ -688,5 +694,4 @@ C-w Describe how there is no warranty for Calc."
(provide 'calc-help)
-;; arch-tag: 2d347593-7591-449e-a64a-93dab5f2f686
;;; calc-help.el ends here
diff --git a/lisp/calc/calc-incom.el b/lisp/calc/calc-incom.el
index 4381172114..a9cf89e605 100644
--- a/lisp/calc/calc-incom.el
+++ b/lisp/calc/calc-incom.el
@@ -1,7 +1,6 @@
;;; calc-incom.el --- complex data type input functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -230,5 +229,4 @@
(provide 'calc-incom)
-;; arch-tag: b8001270-4dc7-481b-a3e3-a952e19b390d
;;; calc-incom.el ends here
diff --git a/lisp/calc/calc-keypd.el b/lisp/calc/calc-keypd.el
index f0a37ad3b7..cc10d9e993 100644
--- a/lisp/calc/calc-keypd.el
+++ b/lisp/calc/calc-keypd.el
@@ -1,7 +1,6 @@
;;; calc-keypd.el --- mouse-capable keypad input for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
diff --git a/lisp/calc/calc-lang.el b/lisp/calc/calc-lang.el
index 6c0a65f556..7e3a08a145 100644
--- a/lisp/calc/calc-lang.el
+++ b/lisp/calc/calc-lang.el
@@ -1,7 +1,6 @@
;;; calc-lang.el --- calc language functions
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -2497,5 +2496,4 @@ order to Calc's."
;; coding: utf-8
;; End:
-;; arch-tag: 483bfe15-f290-4fef-bb7d-ce65be687f2e
;;; calc-lang.el ends here
diff --git a/lisp/calc/calc-macs.el b/lisp/calc/calc-macs.el
index 8e98699bd0..f922687e7f 100644
--- a/lisp/calc/calc-macs.el
+++ b/lisp/calc/calc-macs.el
@@ -1,7 +1,6 @@
;;; calc-macs.el --- important macros for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -207,5 +206,4 @@
(provide 'calc-macs)
-;; arch-tag: 08ba8ec2-fcff-4b80-a079-ec661bdb057e
;;; calc-macs.el ends here
diff --git a/lisp/calc/calc-map.el b/lisp/calc/calc-map.el
index 36df539b74..2ea4de2029 100644
--- a/lisp/calc/calc-map.el
+++ b/lisp/calc/calc-map.el
@@ -1,7 +1,6 @@
;;; calc-map.el --- higher-order functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -572,7 +571,7 @@
(and nargs forcenargs (/= nargs forcenargs) (>= nargs 0)
(error "Must be a %d-argument operator" nargs)))
((memq key '(?\$ ?\'))
- (let* ((arglist nil)
+ (let* ((math-arglist nil)
(has-args nil)
(record-entry nil)
(expr (if (eq key ?\$)
@@ -592,13 +591,13 @@
(if (> calc-dollar-used 0)
(progn
(setq has-args calc-dollar-used
- arglist (calc-invent-args has-args))
+ math-arglist (calc-invent-args has-args))
(math-multi-subst (car func)
- (reverse arglist)
- arglist))
+ (reverse math-arglist)
+ math-arglist))
(if (> calc-hashes-used 0)
(setq has-args calc-hashes-used
- arglist (calc-invent-args has-args)))
+ math-arglist (calc-invent-args has-args)))
(car func))))))
(if (eq (car-safe expr) 'calcFunc-lambda)
(setq oper (list "$" (- (length expr) 2) expr)
@@ -607,16 +606,16 @@
(progn
(calc-default-formula-arglist expr)
(setq record-entry t
- arglist (sort arglist 'string-lessp))
+ math-arglist (sort math-arglist 'string-lessp))
(if calc-verify-arglist
- (setq arglist (read-from-minibuffer
+ (setq math-arglist (read-from-minibuffer
"Function argument list: "
- (if arglist
- (prin1-to-string arglist)
+ (if math-arglist
+ (prin1-to-string math-arglist)
"()")
minibuffer-local-map
t)))
- (setq arglist (mapcar (function
+ (setq math-arglist (mapcar (function
(lambda (x)
(list 'var
x
@@ -624,10 +623,10 @@
(concat
"var-"
(symbol-name x))))))
- arglist))))
+ math-arglist))))
(setq oper (list "$"
- (length arglist)
- (append '(calcFunc-lambda) arglist
+ (length math-arglist)
+ (append '(calcFunc-lambda) math-arglist
(list expr)))
done t))
(if record-entry
@@ -1274,5 +1273,4 @@
(provide 'calc-map)
-;; arch-tag: 980eac49-00e0-4870-b72a-e726b74c7990
;;; calc-map.el ends here
diff --git a/lisp/calc/calc-math.el b/lisp/calc/calc-math.el
index 67d03a6ef0..185ed18ed4 100644
--- a/lisp/calc/calc-math.el
+++ b/lisp/calc/calc-math.el
@@ -1,7 +1,6 @@
;;; calc-math.el --- mathematical functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -2165,5 +2164,4 @@ If this can't be done, return NIL."
(provide 'calc-math)
-;; arch-tag: c7367e8e-d0b8-4f70-8577-2fb3f31dbb4c
;;; calc-math.el ends here
diff --git a/lisp/calc/calc-menu.el b/lisp/calc/calc-menu.el
index 055882e907..aaddf3e486 100644
--- a/lisp/calc/calc-menu.el
+++ b/lisp/calc/calc-menu.el
@@ -1,6 +1,6 @@
;;; calc-menu.el --- a menu for Calc
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Maintainer: Jay Belanger <[email protected]>
@@ -1461,4 +1461,3 @@
(provide 'calc-menu)
-;; arch-tag: 9612c86a-cd4f-4baa-ab0b-40af7344d21f
diff --git a/lisp/calc/calc-misc.el b/lisp/calc/calc-misc.el
index 890e624ecb..db86c08422 100644
--- a/lisp/calc/calc-misc.el
+++ b/lisp/calc/calc-misc.el
@@ -1,7 +1,6 @@
;;; calc-misc.el --- miscellaneous functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -963,5 +962,4 @@ doing 'M-x toggle-debug-on-error', then reproducing the bug.
;; generated-autoload-file: "calc-loaddefs.el"
;; End:
-;; arch-tag: 7984d9d0-62e5-41dc-afb8-e904b975f250
;;; calc-misc.el ends here
diff --git a/lisp/calc/calc-mode.el b/lisp/calc/calc-mode.el
index e76866103d..856dfad882 100644
--- a/lisp/calc/calc-mode.el
+++ b/lisp/calc/calc-mode.el
@@ -1,7 +1,6 @@
;;; calc-mode.el --- calculator modes for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -677,5 +676,4 @@
(provide 'calc-mode)
-;; arch-tag: ecc70eea-c712-43f2-9085-4205e58d6ddf
;;; calc-mode.el ends here
diff --git a/lisp/calc/calc-mtx.el b/lisp/calc/calc-mtx.el
index c79904d13e..9941c11ff1 100644
--- a/lisp/calc/calc-mtx.el
+++ b/lisp/calc/calc-mtx.el
@@ -1,7 +1,6 @@
;;; calc-mtx.el --- matrix functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -365,5 +364,4 @@
(provide 'calc-mtx)
-;; arch-tag: fc0947b1-90e1-4a23-8950-d8ead9c3a306
;;; calc-mtx.el ends here
diff --git a/lisp/calc/calc-nlfit.el b/lisp/calc/calc-nlfit.el
index c43a082350..37e6f66c1b 100644
--- a/lisp/calc/calc-nlfit.el
+++ b/lisp/calc/calc-nlfit.el
@@ -1,6 +1,6 @@
;;; calc-nlfit.el --- nonlinear curve fitting for Calc
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Maintainer: Jay Belanger <[email protected]>
@@ -818,4 +818,3 @@
(provide 'calc-nlfit)
-;; arch-tag: 6eba3cd6-f48b-4a84-8174-10c15a024928
diff --git a/lisp/calc/calc-poly.el b/lisp/calc/calc-poly.el
index f268a032d1..e16c26eaa1 100644
--- a/lisp/calc/calc-poly.el
+++ b/lisp/calc/calc-poly.el
@@ -1,7 +1,6 @@
;;; calc-poly.el --- polynomial functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -1200,5 +1199,4 @@ If no partial fraction representation can be found, return nil."
(provide 'calc-poly)
-;; arch-tag: d2566c51-2ccc-45f1-8c50-f3462c2953ff
;;; calc-poly.el ends here
diff --git a/lisp/calc/calc-prog.el b/lisp/calc/calc-prog.el
index 9101762769..0d3fbe8586 100644
--- a/lisp/calc/calc-prog.el
+++ b/lisp/calc/calc-prog.el
@@ -1,7 +1,6 @@
;;; calc-prog.el --- user programmability functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -171,17 +170,17 @@
(interactive)
(calc-wrapper
(let* ((form (calc-top 1))
- (arglist nil)
+ (math-arglist nil)
(is-lambda (and (eq (car-safe form) 'calcFunc-lambda)
(>= (length form) 2)))
odef key keyname cmd cmd-base cmd-base-default
func calc-user-formula-alist is-symb)
(if is-lambda
- (setq arglist (mapcar (function (lambda (x) (nth 1 x)))
+ (setq math-arglist (mapcar (function (lambda (x) (nth 1 x)))
(nreverse (cdr (reverse (cdr form)))))
form (nth (1- (length form)) form))
(calc-default-formula-arglist form)
- (setq arglist (sort arglist 'string-lessp)))
+ (setq math-arglist (sort math-arglist 'string-lessp)))
(message "Define user key: z-")
(setq key (read-char))
(if (= (calc-user-function-classify key) 0)
@@ -267,17 +266,17 @@
(format "%05d" (% (random) 10000)))))))
(if is-lambda
- (setq calc-user-formula-alist arglist)
+ (setq calc-user-formula-alist math-arglist)
(while
(progn
(setq calc-user-formula-alist
(read-from-minibuffer "Function argument list: "
- (if arglist
- (prin1-to-string arglist)
+ (if math-arglist
+ (prin1-to-string math-arglist)
"()")
minibuffer-local-map
t))
- (and (not (calc-subsetp calc-user-formula-alist arglist))
+ (and (not (calc-subsetp calc-user-formula-alist math-arglist))
(not (y-or-n-p
"Okay for arguments that don't appear in formula to be ignored? "))))))
(setq is-symb (and calc-user-formula-alist
@@ -328,14 +327,14 @@
(setcdr kmap (cons (cons key cmd) (cdr kmap)))))))
(message "")))
-(defvar arglist) ; dynamically bound in all callers
+(defvar math-arglist) ; dynamically bound in all callers
(defun calc-default-formula-arglist (form)
(if (consp form)
(if (eq (car form) 'var)
- (if (or (memq (nth 1 form) arglist)
+ (if (or (memq (nth 1 form) math-arglist)
(math-const-var form))
()
- (setq arglist (cons (nth 1 form) arglist)))
+ (setq math-arglist (cons (nth 1 form) math-arglist)))
(calc-default-formula-arglist-step (cdr form)))))
(defun calc-default-formula-arglist-step (l)
@@ -394,23 +393,23 @@
(intern (concat "calcFunc-" x))))))))
(comps (get func 'math-compose-forms))
entry entry2
- (arglist nil)
+ (math-arglist nil)
(calc-user-formula-alist nil))
(if (math-zerop comp)
(if (setq entry (assq calc-language comps))
(put func 'math-compose-forms (delq entry comps)))
(calc-default-formula-arglist comp)
- (setq arglist (sort arglist 'string-lessp))
+ (setq math-arglist (sort math-arglist 'string-lessp))
(while
(progn
(setq calc-user-formula-alist
(read-from-minibuffer "Composition argument list: "
- (if arglist
- (prin1-to-string arglist)
+ (if math-arglist
+ (prin1-to-string math-arglist)
"()")
minibuffer-local-map
t))
- (and (not (calc-subsetp calc-user-formula-alist arglist))
+ (and (not (calc-subsetp calc-user-formula-alist math-arglist))
(y-or-n-p
"Okay for arguments that don't appear in formula to be invisible? "))))
(or (setq entry (assq calc-language comps))
@@ -2365,5 +2364,4 @@ Redefine the corresponding command."
(provide 'calc-prog)
-;; arch-tag: 4c5a183b-c9e5-4632-bb3f-e41a764518b0
;;; calc-prog.el ends here
diff --git a/lisp/calc/calc-rewr.el b/lisp/calc/calc-rewr.el
index 8fc983a550..1498b622e1 100644
--- a/lisp/calc/calc-rewr.el
+++ b/lisp/calc/calc-rewr.el
@@ -1,7 +1,6 @@
;;; calc-rewr.el --- rewriting functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -2108,5 +2107,4 @@
(provide 'calc-rewr)
-;; arch-tag: ca8d7b7d-bff1-4535-90f3-e2241f5e786b
;;; calc-rewr.el ends here
diff --git a/lisp/calc/calc-rules.el b/lisp/calc/calc-rules.el
index 7f1f33a4bb..fa57a35072 100644
--- a/lisp/calc/calc-rules.el
+++ b/lisp/calc/calc-rules.el
@@ -1,7 +1,6 @@
;;; calc-rules.el --- rules for simplifying algebraic expressions in Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -445,5 +444,4 @@ fitparam(n) = x := x ]"))
(provide 'calc-rules)
-;; arch-tag: 0ed54a52-38f3-4ed7-9ca7-b8ecf8f2febe
;;; calc-rules.el ends here
diff --git a/lisp/calc/calc-sel.el b/lisp/calc/calc-sel.el
index c485fdd168..26834a4459 100644
--- a/lisp/calc/calc-sel.el
+++ b/lisp/calc/calc-sel.el
@@ -1,7 +1,6 @@
;;; calc-sel.el --- data selection functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -876,5 +875,4 @@
(provide 'calc-sel)
-;; arch-tag: e5169792-777d-428f-bff5-acca66813fa2
;;; calc-sel.el ends here
diff --git a/lisp/calc/calc-stat.el b/lisp/calc/calc-stat.el
index 500620f3cc..83ce71a237 100644
--- a/lisp/calc/calc-stat.el
+++ b/lisp/calc/calc-stat.el
@@ -1,7 +1,6 @@
;;; calc-stat.el --- statistical functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -583,5 +582,4 @@
(provide 'calc-stat)
-;; arch-tag: 423858e9-8513-489c-9f35-710cd9d9c307
;;; calc-stat.el ends here
diff --git a/lisp/calc/calc-store.el b/lisp/calc/calc-store.el
index b82ed08c55..2da551ee21 100644
--- a/lisp/calc/calc-store.el
+++ b/lisp/calc/calc-store.el
@@ -1,7 +1,6 @@
;;; calc-store.el --- value storage functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -681,5 +680,4 @@
;; coding: utf-8
;; End:
-;; arch-tag: 2fbfec82-a521-42ca-bcd8-4f254ae6313e
;;; calc-store.el ends here
diff --git a/lisp/calc/calc-stuff.el b/lisp/calc/calc-stuff.el
index 103e0bb77d..0558d8d228 100644
--- a/lisp/calc/calc-stuff.el
+++ b/lisp/calc/calc-stuff.el
@@ -1,7 +1,6 @@
;;; calc-stuff.el --- miscellaneous functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -295,5 +294,4 @@ With a prefix, push that prefix as a number onto the stack."
(provide 'calc-stuff)
-;; arch-tag: 789332ef-a178-49d3-8fb7-5d7ed7e21f56
;;; calc-stuff.el ends here
diff --git a/lisp/calc/calc-trail.el b/lisp/calc/calc-trail.el
index 20dc1d1b99..eec4cd2af5 100644
--- a/lisp/calc/calc-trail.el
+++ b/lisp/calc/calc-trail.el
@@ -1,7 +1,6 @@
;;; calc-trail.el --- functions for manipulating the Calc "trail"
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -181,5 +180,4 @@
(provide 'calc-trail)
-;; arch-tag: 59b76655-d882-4aab-a3ee-b83870e530d0
;;; calc-trail.el ends here
diff --git a/lisp/calc/calc-undo.el b/lisp/calc/calc-undo.el
index 8b805f24a9..9168d9b094 100644
--- a/lisp/calc/calc-undo.el
+++ b/lisp/calc/calc-undo.el
@@ -1,7 +1,6 @@
;;; calc-undo.el --- undo functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -32,6 +31,7 @@
;;; Undo.
+;;;###autoload
(defun calc-undo (n)
(interactive "p")
(when calc-executing-macro
@@ -148,5 +148,4 @@
(provide 'calc-undo)
-;; arch-tag: eeb485d2-fb3d-454a-9d79-450af1f50d6c
;;; calc-undo.el ends here
diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el
index 8fd1983ac6..782d2c4662 100644
--- a/lisp/calc/calc-units.el
+++ b/lisp/calc/calc-units.el
@@ -1,7 +1,6 @@
;;; calc-units.el --- unit conversion functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -296,7 +295,10 @@
( R0 "8.314472 J/(mol K)" "Molar gas constant" nil
"8.314472 J/(mol K) (*)")
( V0 "22.710981*10^(-3) m^3/mol" "Standard volume of ideal gas" nil
- "22.710981 10^-3 m^3/mol (*)")))
+ "22.710981 10^-3 m^3/mol (*)")
+ ;; Logarithmic units
+ ( Np nil "*Neper")
+ ( dB "(ln(10)/20) Np" "decibel")))
(defvar math-additional-units nil
@@ -871,6 +873,7 @@ If EXPR is nil, return nil."
(or (eq (nth 1 expr) 'pi)
(error "Unknown name %s in defining expression for unit %s"
(nth 1 expr) (car math-fbu-entry))))
+ ((equal expr '(calcFunc-ln 10)))
(t (error "Malformed defining expression for unit %s" (car math-fbu-entry))))))
@@ -1551,11 +1554,127 @@ If EXPR is nil, return nil."
(pop-to-buffer (get-buffer "*Units Table*"))
(display-buffer (get-buffer "*Units Table*")))))
+;;; Logarithmic units functions
+
+(defvar math-logunits '((var dB var-dB)
+ (var Np var-Np)))
+
+(defun math-extract-logunits (expr)
+ (if (memq (car-safe expr) '(* /))
+ (cons (car expr)
+ (mapcar 'math-extract-logunits (cdr expr)))
+ (if (memq (car-safe expr) '(^))
+ (list '^ (math-extract-logunits (nth 1 expr)) (nth 2 expr))
+ (if (member expr math-logunits) expr 1))))
+
+(defun math-logcombine (a b neg)
+ (let ((aunit (math-simplify (math-extract-logunits a))))
+ (if (not (eq (car-safe aunit) 'var))
+ (calc-record-why "*Improper logarithmic unit" aunit)
+ (let* ((units (math-extract-units a))
+ (acoeff (math-simplify (math-remove-units a)))
+ (bcoeff (math-simplify (math-to-standard-units
+ (list '/ b units) nil))))
+ (if (math-units-in-expr-p bcoeff nil)
+ (calc-record-why "*Inconsistent units" nil)
+ (if (and neg
+ (or (math-lessp acoeff bcoeff)
+ (math-equal acoeff bcoeff)))
+ (calc-record-why "*Improper coefficients" nil)
+ (math-mul
+ (if (equal aunit '(var dB var-dB))
+ (math-mul 10
+ (calcFunc-log10
+ (if neg
+ (math-sub
+ (math-pow 10 (math-div acoeff 10))
+ (math-pow 10 (math-div bcoeff 10)))
+ (math-add
+ (math-pow 10 (math-div acoeff 10))
+ (math-pow 10 (math-div bcoeff 10))))))
+ (calcFunc-ln
+ (if neg
+ (math-sub
+ (calcFunc-exp acoeff)
+ (calcFunc-exp bcoeff))
+ (math-add
+ (calcFunc-exp acoeff)
+ (calcFunc-exp bcoeff)))))
+ units)))))))
+
+(defun calcFunc-luplus (a b)
+ (math-logcombine a b nil))
+
+(defun calcFunc-luminus (a b)
+ (math-logcombine a b t))
+
+(defun calc-luplus (arg)
+ (interactive "P")
+ (calc-slow-wrapper
+ (if (calc-is-inverse)
+ (calc-binary-op "lu-" 'calcFunc-luminus arg)
+ (calc-binary-op "lu+" 'calcFunc-luplus arg))))
+
+(defun calc-luminus (arg)
+ (interactive "P")
+ (calc-slow-wrapper
+ (if (calc-is-inverse)
+ (calc-binary-op "lu+" 'calcFunc-luplus arg)
+ (calc-binary-op "lu-" 'calcFunc-luminus arg))))
+
+;(defun calcFunc-lmul (a b)
+
+
+(defun math-logunit-level (val ref power)
+ (let ((lunit (math-simplify (math-extract-logunits val))))
+ (if (not (eq (car-safe lunit) 'var))
+ (calc-record-why "*Improper logarithmic unit" lunit)
+ (if (not (eq 1 (math-simplify (math-extract-units (math-div val lunit)))))
+ (calc-record-why "*Inappropriate units" nil)
+ (let ((coeff (math-simplify (math-div val lunit))))
+ (if (equal lunit '(var dB var-dB))
+ (math-mul
+ ref
+ (math-pow
+ 10
+ (math-div
+ coeff
+ (if power 10 20))))
+ (math-mul
+ ref
+ (calcFunc-exp
+ (if power
+ (math-mul 2 coeff)
+ coeff)))))))))
+
+(defvar calc-default-field-reference-level)
+(defvar calc-default-power-reference-level)
+
+(defun calcFunc-fieldlevel (val &optional ref)
+ (unless ref
+ (setq ref (math-read-expr calc-default-field-reference-level)))
+ (math-logunit-level val ref nil))
+
+(defun calcFunc-powerlevel (val &optional ref)
+ (unless ref
+ (setq ref (math-read-expr calc-default-power-reference-level)))
+ (math-logunit-level val ref t))
+
+(defun calc-level (arg)
+ (interactive "P")
+ (calc-slow-wrapper
+ (if (calc-is-hyperbolic)
+ (if (calc-is-option)
+ (calc-binary-op "plvl" 'calcFunc-powerlevel arg)
+ (calc-unary-op "plvl" 'calcFunc-powerlevel arg))
+ (if (calc-is-option)
+ (calc-binary-op "flvl" 'calcFunc-fieldlevel arg)
+ (calc-unary-op "flvl" 'calcFunc-fieldlevel arg)))))
+
(provide 'calc-units)
;; Local variables:
;; coding: utf-8
;; End:
-;; arch-tag: e993314f-3adc-4191-be61-4ef8874881c4
;;; calc-units.el ends here
diff --git a/lisp/calc/calc-vec.el b/lisp/calc/calc-vec.el
index 5b807a5549..5dfbc2d51f 100644
--- a/lisp/calc/calc-vec.el
+++ b/lisp/calc/calc-vec.el
@@ -1,7 +1,6 @@
;;; calc-vec.el --- vector functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -1675,5 +1674,4 @@ of two matrices is a matrix."
(provide 'calc-vec)
-;; arch-tag: 7902a7af-ec69-440a-8635-ebb4db263402
;;; calc-vec.el ends here
diff --git a/lisp/calc/calc-yank.el b/lisp/calc/calc-yank.el
index 0588f31de1..2360cf00dd 100644
--- a/lisp/calc/calc-yank.el
+++ b/lisp/calc/calc-yank.el
@@ -1,7 +1,6 @@
;;; calc-yank.el --- kill-ring functionality for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index e0560465a9..8316111597 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -1,7 +1,6 @@
;;; calc.el --- the GNU Emacs calculator
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -435,6 +434,19 @@ by displaying the sub-formula in `calc-selected-face'."
:group 'calc
:type 'boolean)
+(defcustom calc-default-field-reference-level
+ "20 uPa"
+ "The default reference level for logarithmic units (field)."
+ :group 'calc
+ :type '(string))
+
+(defcustom calc-default-power-reference-level
+ "mW"
+ "The default reference level for logarithmic units (power)."
+ :group 'calc
+ :type '(string))
+
+
(defface calc-nonselected-face
'((t :inherit shadow
:slant italic))
@@ -1061,6 +1073,7 @@ Used by `calc-user-invocation'.")
(define-key map "\C-j" 'calc-over)
(define-key map "\C-y" 'calc-yank)
(define-key map [mouse-2] 'calc-yank)
+ (define-key map [remap undo] 'calc-undo)
(mapc (lambda (x) (define-key map (char-to-string x) 'undefined))
"lOW")
@@ -3838,5 +3851,4 @@ See Info node `(calc)Defining Functions'."
;; coding: utf-8
;; End:
-;; arch-tag: 0c3b170c-4ce6-4eaf-8d9b-5834d1fe938f
;;; calc.el ends here
diff --git a/lisp/calc/calcalg2.el b/lisp/calc/calcalg2.el
index 4bee751ad4..25b51fc89f 100644
--- a/lisp/calc/calcalg2.el
+++ b/lisp/calc/calcalg2.el
@@ -1,7 +1,6 @@
;;; calcalg2.el --- more algebraic functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -3669,5 +3668,4 @@
(provide 'calcalg2)
-;; arch-tag: f2932ec8-dd63-418b-a542-11a644b9d4c4
;;; calcalg2.el ends here
diff --git a/lisp/calc/calcalg3.el b/lisp/calc/calcalg3.el
index addc8abd15..a9118964b4 100644
--- a/lisp/calc/calcalg3.el
+++ b/lisp/calc/calcalg3.el
@@ -1,7 +1,6 @@
;;; calcalg3.el --- more algebraic functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -1928,5 +1927,4 @@
(provide 'calcalg3)
-;; arch-tag: ff9f2920-8111-48b5-b3fa-b0682c3e44a6
;;; calcalg3.el ends here
diff --git a/lisp/calc/calccomp.el b/lisp/calc/calccomp.el
index 6923cd7693..fa910ce256 100644
--- a/lisp/calc/calccomp.el
+++ b/lisp/calc/calccomp.el
@@ -1,7 +1,6 @@
;;; calccomp.el --- composition functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -1675,5 +1674,4 @@
;; coding: utf-8
;; End:
-;; arch-tag: 7c45d10a-a286-4dab-af49-7ae8989fbf78
;;; calccomp.el ends here
diff --git a/lisp/calc/calcsel2.el b/lisp/calc/calcsel2.el
index e8fd20b7c2..f44da07763 100644
--- a/lisp/calc/calcsel2.el
+++ b/lisp/calc/calcsel2.el
@@ -1,7 +1,6 @@
;;; calcsel2.el --- selection functions for Calc
-;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: David Gillespie <[email protected]>
;; Maintainer: Jay Belanger <[email protected]>
@@ -300,5 +299,4 @@
(provide 'calcsel2)
-;; arch-tag: 7c5b8d65-b8f0-45d9-820d-9930f8ee114b
;;; calcsel2.el ends here
diff --git a/lisp/calculator.el b/lisp/calculator.el
index d03b2082bd..45ed699c4f 100644
--- a/lisp/calculator.el
+++ b/lisp/calculator.el
@@ -1,7 +1,6 @@
;;; calculator.el --- a [not so] simple calculator for Emacs
-;; Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Eli Barzilay <[email protected]>
;; Keywords: tools, convenience
@@ -382,10 +381,7 @@ Used for repeating operations in calculator-repR/L.")
;;;---------------------------------------------------------------------
;;; Key bindings
-(defvar calculator-mode-map nil
- "The calculator key map.")
-
-(or calculator-mode-map
+(defvar calculator-mode-map
(let ((map (make-sparse-keymap)))
(suppress-keymap map t)
(define-key map "i" nil)
@@ -471,113 +467,114 @@ Used for repeating operations in calculator-repR/L.")
("Binary" bin "B")
("Octal" oct "O")
("Hexadecimal" hex "H"))))
- (op '(lambda (name key)
- `[,name (calculator-op ,key) :keys ,key])))
+ (op (lambda (name key)
+ `[,name (calculator-op ,key) :keys ,key])))
(easy-menu-define
- calculator-menu map "Calculator menu."
- `("Calculator"
- ["Help"
- (let ((last-command 'calculator-help)) (calculator-help))
- :keys "?"]
- "---"
- ["Copy" calculator-copy]
- ["Paste" calculator-paste]
- "---"
- ["Electric mode"
- (progn (calculator-quit)
- (setq calculator-restart-other-mode t)
- (run-with-timer 0.1 nil '(lambda () (message nil)))
- ;; the message from the menu will be visible,
- ;; couldn't make it go away...
- (calculator))
- :active (not calculator-electric-mode)]
- ["Normal mode"
- (progn (setq calculator-restart-other-mode t)
- (calculator-quit))
- :active calculator-electric-mode]
- "---"
- ("Functions"
- ,(funcall op "Repeat-right" ">")
- ,(funcall op "Repeat-left" "<")
- "------General------"
- ,(funcall op "Reciprocal" ";")
- ,(funcall op "Log" "L")
- ,(funcall op "Square-root" "Q")
- ,(funcall op "Factorial" "!")
- "------Trigonometric------"
- ,(funcall op "Sinus" "S")
- ,(funcall op "Cosine" "C")
- ,(funcall op "Tangent" "T")
- ,(funcall op "Inv-Sinus" "IS")
- ,(funcall op "Inv-Cosine" "IC")
- ,(funcall op "Inv-Tangent" "IT")
- "------Bitwise------"
- ,(funcall op "Or" "|")
- ,(funcall op "Xor" "#")
- ,(funcall op "And" "&")
- ,(funcall op "Not" "~"))
- ("Saved List"
- ["Eval+Save" calculator-save-on-list]
- ["Prev number" calculator-saved-up]
- ["Next number" calculator-saved-down]
- ["Delete current" calculator-clear
- :active (and calculator-display-fragile
- calculator-saved-list
- (= (car calculator-stack)
- (nth calculator-saved-ptr
- calculator-saved-list)))]
- ["Delete all" calculator-clear-saved]
+ calculator-menu map "Calculator menu."
+ `("Calculator"
+ ["Help"
+ (let ((last-command 'calculator-help)) (calculator-help))
+ :keys "?"]
"---"
- ,(funcall op "List-total" "l")
- ,(funcall op "List-average" "v"))
- ("Registers"
- ["Get register" calculator-get-register]
- ["Set register" calculator-set-register])
- ("Modes"
- ["Radians"
- (progn
- (and (or calculator-input-radix calculator-output-radix)
- (calculator-radix-mode "D"))
- (and calculator-deg (calculator-dec/deg-mode)))
- :keys "D"
- :style radio
- :selected (not (or calculator-input-radix
- calculator-output-radix
- calculator-deg))]
- ["Degrees"
- (progn
- (and (or calculator-input-radix calculator-output-radix)
- (calculator-radix-mode "D"))
- (or calculator-deg (calculator-dec/deg-mode)))
- :keys "D"
- :style radio
- :selected (and calculator-deg
- (not (or calculator-input-radix
- calculator-output-radix)))]
+ ["Copy" calculator-copy]
+ ["Paste" calculator-paste]
"---"
- ,@(mapcar 'car radix-selectors)
- ("Separate I/O"
- ,@(mapcar (lambda (x) (nth 1 x)) radix-selectors)
+ ["Electric mode"
+ (progn (calculator-quit)
+ (setq calculator-restart-other-mode t)
+ (run-with-timer 0.1 nil '(lambda () (message nil)))
+ ;; the message from the menu will be visible,
+ ;; couldn't make it go away...
+ (calculator))
+ :active (not calculator-electric-mode)]
+ ["Normal mode"
+ (progn (setq calculator-restart-other-mode t)
+ (calculator-quit))
+ :active calculator-electric-mode]
+ "---"
+ ("Functions"
+ ,(funcall op "Repeat-right" ">")
+ ,(funcall op "Repeat-left" "<")
+ "------General------"
+ ,(funcall op "Reciprocal" ";")
+ ,(funcall op "Log" "L")
+ ,(funcall op "Square-root" "Q")
+ ,(funcall op "Factorial" "!")
+ "------Trigonometric------"
+ ,(funcall op "Sinus" "S")
+ ,(funcall op "Cosine" "C")
+ ,(funcall op "Tangent" "T")
+ ,(funcall op "Inv-Sinus" "IS")
+ ,(funcall op "Inv-Cosine" "IC")
+ ,(funcall op "Inv-Tangent" "IT")
+ "------Bitwise------"
+ ,(funcall op "Or" "|")
+ ,(funcall op "Xor" "#")
+ ,(funcall op "And" "&")
+ ,(funcall op "Not" "~"))
+ ("Saved List"
+ ["Eval+Save" calculator-save-on-list]
+ ["Prev number" calculator-saved-up]
+ ["Next number" calculator-saved-down]
+ ["Delete current" calculator-clear
+ :active (and calculator-display-fragile
+ calculator-saved-list
+ (= (car calculator-stack)
+ (nth calculator-saved-ptr
+ calculator-saved-list)))]
+ ["Delete all" calculator-clear-saved]
+ "---"
+ ,(funcall op "List-total" "l")
+ ,(funcall op "List-average" "v"))
+ ("Registers"
+ ["Get register" calculator-get-register]
+ ["Set register" calculator-set-register])
+ ("Modes"
+ ["Radians"
+ (progn
+ (and (or calculator-input-radix calculator-output-radix)
+ (calculator-radix-mode "D"))
+ (and calculator-deg (calculator-dec/deg-mode)))
+ :keys "D"
+ :style radio
+ :selected (not (or calculator-input-radix
+ calculator-output-radix
+ calculator-deg))]
+ ["Degrees"
+ (progn
+ (and (or calculator-input-radix calculator-output-radix)
+ (calculator-radix-mode "D"))
+ (or calculator-deg (calculator-dec/deg-mode)))
+ :keys "D"
+ :style radio
+ :selected (and calculator-deg
+ (not (or calculator-input-radix
+ calculator-output-radix)))]
"---"
- ,@(mapcar (lambda (x) (nth 2 x)) radix-selectors)))
- ("Decimal Display"
- ,@(mapcar (lambda (d)
- (vector (cadr d)
- ;; Note: inserts actual object here
- `(calculator-rotate-displayer ',d)))
- calculator-displayers)
+ ,@(mapcar 'car radix-selectors)
+ ("Separate I/O"
+ ,@(mapcar (lambda (x) (nth 1 x)) radix-selectors)
+ "---"
+ ,@(mapcar (lambda (x) (nth 2 x)) radix-selectors)))
+ ("Decimal Display"
+ ,@(mapcar (lambda (d)
+ (vector (cadr d)
+ ;; Note: inserts actual object here
+ `(calculator-rotate-displayer ',d)))
+ calculator-displayers)
+ "---"
+ ["Change Prev Display" calculator-displayer-prev]
+ ["Change Next Display" calculator-displayer-next])
"---"
- ["Change Prev Display" calculator-displayer-prev]
- ["Change Next Display" calculator-displayer-next])
- "---"
- ["Copy+Quit" calculator-save-and-quit]
- ["Quit" calculator-quit]))))
- (setq calculator-mode-map map)))
+ ["Copy+Quit" calculator-save-and-quit]
+ ["Quit" calculator-quit]))))
+ map)
+ "The calculator key map.")
;;;---------------------------------------------------------------------
;;; Startup and mode stuff
-(defun calculator-mode ()
+(define-derived-mode calculator-mode fundamental-mode "Calculator"
;; this help is also used as the major help screen
"A [not so] simple calculator for Emacs.
@@ -671,13 +668,7 @@ Some interesting customization variables are:
See the documentation for these variables, and \"calculator.el\" for
more information.
-\\{calculator-mode-map}"
- (interactive)
- (kill-all-local-variables)
- (setq major-mode 'calculator-mode)
- (setq mode-name "Calculator")
- (use-local-map calculator-mode-map)
- (run-mode-hooks 'calculator-mode-hook))
+\\{calculator-mode-map}")
(eval-when-compile (require 'electric) (require 'ehelp))
@@ -1832,5 +1823,4 @@ To use this, apply a binary operator (evaluate it), then call this."
(provide 'calculator)
-;; arch-tag: a1b9766c-af8a-4a74-b466-65ad8eeb0c73
;;; calculator.el ends here
diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el
index d6f4f9862d..c0f4f0f392 100644
--- a/lisp/calendar/appt.el
+++ b/lisp/calendar/appt.el
@@ -1,7 +1,7 @@
;;; appt.el --- appointment notification functions
-;; Copyright (C) 1989, 1990, 1994, 1998, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1989-1990, 1994, 1998, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Neil Mager <[email protected]>
;; Maintainer: Glenn Morris <[email protected]>
diff --git a/lisp/calendar/cal-bahai.el b/lisp/calendar/cal-bahai.el
index 7b8f61a7a8..ae5dc02862 100644
--- a/lisp/calendar/cal-bahai.el
+++ b/lisp/calendar/cal-bahai.el
@@ -1,7 +1,6 @@
;;; cal-bahai.el --- calendar functions for the Bahá'í calendar.
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
;; Keywords: calendar
@@ -361,5 +360,4 @@ Prefix argument ARG will make the entry nonmarking."
;; coding: utf-8
;; End:
-;; arch-tag: c1cb1d67-862a-4264-a01c-41cb4df01f14
;;; cal-bahai.el ends here
diff --git a/lisp/calendar/cal-china.el b/lisp/calendar/cal-china.el
index 0fc63e7eaa..fce398709a 100644
--- a/lisp/calendar/cal-china.el
+++ b/lisp/calendar/cal-china.el
@@ -1,7 +1,6 @@
;;; cal-china.el --- calendar functions for the Chinese calendar
-;; Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Edward M. Reingold <[email protected]>
;; Maintainer: Glenn Morris <[email protected]>
@@ -686,5 +685,4 @@ Echo Chinese date unless NOECHO is non-nil."
(provide 'cal-china)
-;; arch-tag: 7e5b7e0d-676c-47e3-8696-93e7ea0ab644
;;; cal-china.el ends here
diff --git a/lisp/calendar/cal-coptic.el b/lisp/calendar/cal-coptic.el
index 69612edab3..4db2743777 100644
--- a/lisp/calendar/cal-coptic.el
+++ b/lisp/calendar/cal-coptic.el
@@ -1,7 +1,6 @@
;;; cal-coptic.el --- calendar functions for the Coptic/Ethiopic calendars
-;; Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Edward M. Reingold <[email protected]>
;; Maintainer: Glenn Morris <[email protected]>
@@ -269,5 +268,4 @@ Echo Ethiopic date unless NOECHO is t."
(provide 'cal-coptic)
-;; arch-tag: 72d49161-25df-4072-9312-b182cdca7627
;;; cal-coptic.el ends here
diff --git a/lisp/calendar/cal-dst.el b/lisp/calendar/cal-dst.el
index d27bc8480a..e915f7e269 100644
--- a/lisp/calendar/cal-dst.el
+++ b/lisp/calendar/cal-dst.el
@@ -1,7 +1,6 @@
;;; cal-dst.el --- calendar functions for daylight saving rules
-;; Copyright (C) 1993, 1994, 1995, 1996, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Paul Eggert <[email protected]>
;; Edward M. Reingold <[email protected]>
@@ -474,5 +473,4 @@ Conversion to daylight saving time is done according to
(provide 'cal-dst)
-;; arch-tag: a141d204-213c-4ca5-bdc6-f9df3aa92aad
;;; cal-dst.el ends here
diff --git a/lisp/calendar/cal-french.el b/lisp/calendar/cal-french.el
index 98a118f232..ef1ce8767a 100644
--- a/lisp/calendar/cal-french.el
+++ b/lisp/calendar/cal-french.el
@@ -1,7 +1,6 @@
;;; cal-french.el --- calendar functions for the French Revolutionary calendar
-;; Copyright (C) 1988, 1989, 1992, 1994, 1995, 1997, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1988-1989, 1992, 1994-1995, 1997, 2001-2011
;; Free Software Foundation, Inc.
;; Author: Edward M. Reingold <[email protected]>
@@ -270,5 +269,4 @@ Echo French Revolutionary date unless NOECHO is non-nil."
;; coding: utf-8
;; End:
-;; arch-tag: 7e8045a3-8609-46b5-9cde-cf40ce541cf9
;;; cal-french.el ends here
diff --git a/lisp/calendar/cal-hebrew.el b/lisp/calendar/cal-hebrew.el
index 366fb2396f..f2dfc3c51f 100644
--- a/lisp/calendar/cal-hebrew.el
+++ b/lisp/calendar/cal-hebrew.el
@@ -1,7 +1,6 @@
;;; cal-hebrew.el --- calendar functions for the Hebrew calendar
-;; Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Nachum Dershowitz <[email protected]>
;; Edward M. Reingold <[email protected]>
diff --git a/lisp/calendar/cal-html.el b/lisp/calendar/cal-html.el
index d421002760..bd10aa176a 100644
--- a/lisp/calendar/cal-html.el
+++ b/lisp/calendar/cal-html.el
@@ -1,7 +1,6 @@
;;; cal-html.el --- functions for printing HTML calendars
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Anna M. Bigatti <[email protected]>
;; Keywords: calendar
@@ -443,5 +442,4 @@ specified by EVENT. Note that any existing output files are overwritten."
(provide 'cal-html)
-;; arch-tag: 4e73377d-d2c1-46ea-a103-02c111da5f57
;;; cal-html.el ends here
diff --git a/lisp/calendar/cal-islam.el b/lisp/calendar/cal-islam.el
index da631a9710..e69a2389e6 100644
--- a/lisp/calendar/cal-islam.el
+++ b/lisp/calendar/cal-islam.el
@@ -1,7 +1,6 @@
;;; cal-islam.el --- calendar functions for the Islamic calendar
-;; Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Edward M. Reingold <[email protected]>
;; Maintainer: Glenn Morris <[email protected]>
@@ -345,5 +344,4 @@ Prefix argument ARG makes the entry nonmarking."
(provide 'cal-islam)
-;; arch-tag: a951b6c1-6f47-48d5-bac3-1b505cd719f7
;;; cal-islam.el ends here
diff --git a/lisp/calendar/cal-iso.el b/lisp/calendar/cal-iso.el
index 3c5055defb..e745b6264e 100644
--- a/lisp/calendar/cal-iso.el
+++ b/lisp/calendar/cal-iso.el
@@ -1,7 +1,6 @@
;;; cal-iso.el --- calendar functions for the ISO calendar
-;; Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Edward M. Reingold <[email protected]>
;; Maintainer: Glenn Morris <[email protected]>
@@ -155,5 +154,4 @@ Interactively, goes to the first day of the specified week."
(provide 'cal-iso)
-;; arch-tag: 3c0154cc-d30f-4981-9f60-42bdf7a468f6
;;; cal-iso.el ends here
diff --git a/lisp/calendar/cal-julian.el b/lisp/calendar/cal-julian.el
index 0cf9388a4b..e0f85b36d4 100644
--- a/lisp/calendar/cal-julian.el
+++ b/lisp/calendar/cal-julian.el
@@ -1,7 +1,6 @@
;;; cal-julian.el --- calendar functions for the Julian calendar
-;; Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Edward M. Reingold <[email protected]>
;; Maintainer: Glenn Morris <[email protected]>
@@ -218,5 +217,4 @@ Echo astronomical (Julian) day number unless NOECHO is non-nil."
(provide 'cal-julian)
-;; arch-tag: 0520acdd-1c60-4188-9aa8-9b8c24d856ae
;;; cal-julian.el ends here
diff --git a/lisp/calendar/cal-mayan.el b/lisp/calendar/cal-mayan.el
index d2e4810fa8..283c68cb32 100644
--- a/lisp/calendar/cal-mayan.el
+++ b/lisp/calendar/cal-mayan.el
@@ -1,7 +1,7 @@
;;; cal-mayan.el --- calendar functions for the Mayan calendars
-;; Copyright (C) 1992, 1993, 1995, 1997, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992-1993, 1995, 1997, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Stewart M. Clamen <[email protected]>
;; Edward M. Reingold <[email protected]>
@@ -390,5 +390,4 @@ Echo Mayan date unless NOECHO is non-nil."
(provide 'cal-mayan)
-;; arch-tag: 54f35144-cd0f-4873-935a-a60129de07df
;;; cal-mayan.el ends here
diff --git a/lisp/calendar/cal-menu.el b/lisp/calendar/cal-menu.el
index 877be9556f..3ebb7edab3 100644
--- a/lisp/calendar/cal-menu.el
+++ b/lisp/calendar/cal-menu.el
@@ -1,7 +1,6 @@
;;; cal-menu.el --- calendar functions for menu bar and popup menu support
-;; Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Edward M. Reingold <[email protected]>
;; Lara Rios <[email protected]>
@@ -281,5 +280,4 @@ is non-nil."
(provide 'cal-menu)
-;; arch-tag: aa81cf73-ce89-48a4-97ec-9ef861e87fe9
;;; cal-menu.el ends here
diff --git a/lisp/calendar/cal-move.el b/lisp/calendar/cal-move.el
index e569e8c424..c13a9a0a73 100644
--- a/lisp/calendar/cal-move.el
+++ b/lisp/calendar/cal-move.el
@@ -1,7 +1,6 @@
;;; cal-move.el --- calendar functions for movement in the calendar
-;; Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Edward M. Reingold <[email protected]>
;; Maintainer: Glenn Morris <[email protected]>
@@ -406,5 +405,4 @@ Negative DAY counts backward from end of year."
(provide 'cal-move)
-;; arch-tag: d0883c46-7e16-4914-8ff8-8f67e699b781
;;; cal-move.el ends here
diff --git a/lisp/calendar/cal-persia.el b/lisp/calendar/cal-persia.el
index 5c624ddcf0..a8b3f180e0 100644
--- a/lisp/calendar/cal-persia.el
+++ b/lisp/calendar/cal-persia.el
@@ -1,7 +1,6 @@
;;; cal-persia.el --- calendar functions for the Persian calendar
-;; Copyright (C) 1996, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Edward M. Reingold <[email protected]>
;; Maintainer: Glenn Morris <[email protected]>
@@ -218,5 +217,4 @@ Echo Persian date unless NOECHO is non-nil."
(provide 'cal-persia)
-;; arch-tag: 2832383c-e4b4-4dc2-8ee9-cfbdd53e5e2d
;;; cal-persia.el ends here
diff --git a/lisp/calendar/cal-tex.el b/lisp/calendar/cal-tex.el
index e6ba1ad343..a3f7110785 100644
--- a/lisp/calendar/cal-tex.el
+++ b/lisp/calendar/cal-tex.el
@@ -1,7 +1,6 @@
;;; cal-tex.el --- calendar functions for printing calendars with LaTeX
-;; Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Steve Fisk <[email protected]>
;; Edward M. Reingold <[email protected]>
@@ -1832,5 +1831,4 @@ Add trailing COMMENT if present."
(provide 'cal-tex)
-;; arch-tag: ca8168a4-5a00-4508-a565-17e3bccce6d0
;;; cal-tex.el ends here
diff --git a/lisp/calendar/cal-x.el b/lisp/calendar/cal-x.el
index 377646147b..e95d284a36 100644
--- a/lisp/calendar/cal-x.el
+++ b/lisp/calendar/cal-x.el
@@ -1,7 +1,6 @@
;;; cal-x.el --- calendar windows in dedicated frames
-;; Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Edward M. Reingold <[email protected]>
@@ -189,5 +188,4 @@ See `calendar-frame-setup' for more information."
(provide 'cal-x)
-;; arch-tag: c6dbddca-ae84-442d-87fc-244b76e38e17
;;; cal-x.el ends here
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 24ebb19a58..a4e5367053 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -1,8 +1,6 @@
;;; calendar.el --- calendar functions
-;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1997,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1988-1995, 1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Edward M. Reingold <[email protected]>
;; Maintainer: Glenn Morris <[email protected]>
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 231c92f417..0bbdeccee6 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -1,7 +1,6 @@
;;; diary-lib.el --- diary functions
-;; Copyright (C) 1989, 1990, 1992, 1993, 1994, 1995, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1989-1990, 1992-1995, 2001-2011
;; Free Software Foundation, Inc.
;; Author: Edward M. Reingold <[email protected]>
@@ -1764,7 +1763,7 @@ best if they are non-marking."
(forward-line 1)
(while (looking-at "[ \t]")
(forward-line 1))
- (backward-char 1)
+ (if (bolp) (backward-char 1))
(setq entry (buffer-substring-no-properties entry-start (point))))
(setq diary-entry (diary-sexp-entry sexp entry date)
literal entry ; before evaluation
@@ -2346,6 +2345,9 @@ return a font-lock pattern matching array of MONTHS and marking SYMBOL."
'(diary-font-lock-keywords t))
(add-to-invisibility-spec '(diary . nil))
(add-hook 'after-save-hook 'diary-redraw-calendar nil t)
+ ;; In case the file was modified externally, refresh the calendar
+ ;; after refreshing the diary buffer.
+ (add-hook 'after-revert-hook 'diary-redraw-calendar nil t)
(if diary-header-line-flag
(setq header-line-format diary-header-line-format)))
diff --git a/lisp/calendar/holidays.el b/lisp/calendar/holidays.el
index 275c8a5ca2..19b893a5cf 100644
--- a/lisp/calendar/holidays.el
+++ b/lisp/calendar/holidays.el
@@ -1,7 +1,6 @@
;;; holidays.el --- holiday functions for the calendar package
-;; Copyright (C) 1989, 1990, 1992, 1993, 1994, 1997, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1989-1990, 1992-1994, 1997, 2001-2011
;; Free Software Foundation, Inc.
;; Author: Edward M. Reingold <[email protected]>
diff --git a/lisp/calendar/icalendar.el b/lisp/calendar/icalendar.el
index 0be138906b..ca88548138 100644
--- a/lisp/calendar/icalendar.el
+++ b/lisp/calendar/icalendar.el
@@ -1,7 +1,6 @@
;;; icalendar.el --- iCalendar implementation -*-coding: utf-8 -*-
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Ulf Jasper <[email protected]>
;; Created: August 2002
@@ -2295,5 +2294,4 @@ the entry."
(provide 'icalendar)
-;; arch-tag: 74fdbe8e-0451-4e38-bb61-4416e822f4fc
;;; icalendar.el ends here
diff --git a/lisp/calendar/lunar.el b/lisp/calendar/lunar.el
index 58111a036d..e2ec46215b 100644
--- a/lisp/calendar/lunar.el
+++ b/lisp/calendar/lunar.el
@@ -1,7 +1,7 @@
;;; lunar.el --- calendar functions for phases of the moon
-;; Copyright (C) 1992, 1993, 1995, 1997, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992-1993, 1995, 1997, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Edward M. Reingold <[email protected]>
;; Maintainer: Glenn Morris <[email protected]>
@@ -408,5 +408,4 @@ as governed by the values of `calendar-daylight-savings-starts',
(provide 'lunar)
-;; arch-tag: 72f0b8a4-7bcc-4a1b-b67a-ff53c4a1d222
;;; lunar.el ends here
diff --git a/lisp/calendar/parse-time.el b/lisp/calendar/parse-time.el
index 71e32b9db4..52f13c82f5 100644
--- a/lisp/calendar/parse-time.el
+++ b/lisp/calendar/parse-time.el
@@ -1,7 +1,6 @@
;;; parse-time.el --- parsing time strings
-;; Copyright (C) 1996, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 2000-2011 Free Software Foundation, Inc.
;; Author: Erik Naggum <[email protected]>
;; Keywords: util
diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el
index b7a728461f..31aed0484d 100644
--- a/lisp/calendar/solar.el
+++ b/lisp/calendar/solar.el
@@ -1,7 +1,7 @@
;;; solar.el --- calendar functions for solar events
-;; Copyright (C) 1992, 1993, 1995, 1997, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992-1993, 1995, 1997, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Edward M. Reingold <[email protected]>
;; Denis B. Roegel <[email protected]>
@@ -1065,5 +1065,4 @@ Requires floating point."
(provide 'solar)
-;; arch-tag: bc0ff693-df58-4666-bde4-2a7837ccb8fe
;;; solar.el ends here
diff --git a/lisp/calendar/time-date.el b/lisp/calendar/time-date.el
index 1bd04d7ed3..a1bfad3a5f 100644
--- a/lisp/calendar/time-date.el
+++ b/lisp/calendar/time-date.el
@@ -1,7 +1,6 @@
;;; time-date.el --- Date and time handling functions
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Masanobu Umeda <[email protected]>
diff --git a/lisp/calendar/timeclock.el b/lisp/calendar/timeclock.el
index d28b0a56c3..49c44449b0 100644
--- a/lisp/calendar/timeclock.el
+++ b/lisp/calendar/timeclock.el
@@ -1,7 +1,6 @@
;;; timeclock.el --- mode for keeping track of how much you work
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
;; Created: 25 Mar 1999
diff --git a/lisp/calendar/todo-mode.el b/lisp/calendar/todo-mode.el
index 8fd41163ea..4c59e2634a 100644
--- a/lisp/calendar/todo-mode.el
+++ b/lisp/calendar/todo-mode.el
@@ -1,7 +1,6 @@
;;; todo-mode.el --- major mode for editing TODO list files
-;; Copyright (C) 1997, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Oliver Seidel <[email protected]>
;; Maintainer: Stephen Berman <[email protected]>
@@ -973,5 +972,4 @@ If INCLUDE-SEP is non-nil, return point after the separator."
(provide 'todo-mode)
-;; arch-tag: 6fd91be5-776e-4464-a109-da4ea0e4e497
;;; todo-mode.el ends here
diff --git a/lisp/case-table.el b/lisp/case-table.el
index 1e5974d7d1..a1bb862788 100644
--- a/lisp/case-table.el
+++ b/lisp/case-table.el
@@ -1,7 +1,6 @@
;;; case-table.el --- code to extend the character set and support case tables
-;; Copyright (C) 1988, 1994, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Howard Gayle
;; Maintainer: FSF
@@ -175,5 +174,4 @@ SYNTAX should be \" \", \"w\", \".\" or \"_\"."
(provide 'case-table)
-;; arch-tag: 3c2cf885-2c9a-449a-9972-2e269191896d
;;; case-table.el ends here
diff --git a/lisp/cdl.el b/lisp/cdl.el
index 01f4d9ac64..8377e7a579 100644
--- a/lisp/cdl.el
+++ b/lisp/cdl.el
@@ -1,7 +1,6 @@
;;; cdl.el --- Common Data Language (CDL) utility functions for GNU Emacs
-;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
;; Author: [email protected] (Ata Etemadi)
;; Maintainer: FSF
@@ -45,5 +44,4 @@
(provide 'cdl)
-;; arch-tag: b8e95a6e-2387-4077-ad9a-af54b09b8615
;;; cdl.el ends here
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
index efe7e4d425..b6d5cff6b5 100644
--- a/lisp/cedet/ChangeLog
+++ b/lisp/cedet/ChangeLog
@@ -1,3 +1,9 @@
+2011-01-13 Stefan Monnier <[email protected]>
+
+ * srecode/srt-mode.el (srecode-template-mode): Use define-derived-mode.
+ * semantic/symref/list.el (semantic-symref-results-mode):
+ Use run-mode-hooks.
+
2010-11-12 Glenn Morris <[email protected]>
* semantic/wisent/comp.el: Remove unnecessary eval-when-compiles.
@@ -60,8 +66,8 @@
* semantic/db-typecache.el (semanticdb-typecache-find-default):
* semantic/imenu.el (semantic-create-imenu-index):
* semantic/grammar.el (semantic--grammar-macro-function-tag):
- * semantic/fw.el (semanticdb-without-unloaded-file-searches): Fix
- require. Suggested by David Engster.
+ * semantic/fw.el (semanticdb-without-unloaded-file-searches):
+ Fix require. Suggested by David Engster.
* semantic/bovine/c-by.el: Regenerate.
@@ -105,8 +111,8 @@
* srecode/texi.el (srecode-texi-insert-tag-as-doc): New function.
(semantic-insert-foreign-tag): Use it.
- * srecode/mode.el (srecode-bind-insert): Call
- srecode-load-tables-for-mode.
+ * srecode/mode.el (srecode-bind-insert):
+ Call srecode-load-tables-for-mode.
(srecode-minor-mode-templates-menu): Do not list templates that
are not in the current project.
(srecode-menu-bar): Add binding for srecode-macro-help.
@@ -159,8 +165,8 @@
compare of built-in templates. Give built-ins lower piority.
Support special variable "project".
(srecode-compile-template-table): Set :project slot of new tables.
- (srecode-compile-one-template-tag): Use
- srecode-create-dictionaries-from-tags.
+ (srecode-compile-one-template-tag):
+ Use srecode-create-dictionaries-from-tags.
2010-09-21 Eric Ludlam <[email protected]>
@@ -210,8 +216,8 @@
(autoconf-new-automake-string): Deleted.
(autoconf-new-program): Use SRecode to fill an empty file.
- * ede/cpp-root.el (ede-create-lots-of-projects-under-dir): New
- function.
+ * ede/cpp-root.el (ede-create-lots-of-projects-under-dir):
+ New function.
* ede/files.el (ede-flush-project-hash): New command.
(ede-convert-path): Add optional PROJECT arg.
@@ -232,8 +238,8 @@
list whether or not the vars are already in the Makefile.
(ede-pmake-insert-variable-once): New macro.
- * ede/project-am.el (project-am-with-makefile-current): Add
- recentf-exclude.
+ * ede/project-am.el (project-am-with-makefile-current):
+ Add recentf-exclude.
(project-am-load-makefile): Obey an optional suggested name.
(project-am-expand-subdirlist): New function.
(project-am-makefile::project-rescan): Use it. Combine SUBDIRS
@@ -248,16 +254,16 @@
(project-am-extract-package-info): Fix separators.
* ede/proj.el (project-run-target): New method.
- (project-make-dist, project-compile-project): Use
- ede-proj-automake-p to determine which kind of compile to use.
+ (project-make-dist, project-compile-project):
+ Use ede-proj-automake-p to determine which kind of compile to use.
(project-rescan): Call ede-load-project-file.
(ede-buffer-mine): Add more file names that belong to the project.
(ede-proj-compilers): Improve error message.
* ede/proj-obj.el (ede-ld-linker): Use the LDDEPS variable.
(ede-source-c++): Add more C++ extensions.
- (ede-proj-target-makefile-objectcode): Quote initforms. Support
- lex and yacc.
+ (ede-proj-target-makefile-objectcode): Quote initforms.
+ Support lex and yacc.
* ede/proj-prog.el (ede-proj-makefile-insert-rules): Removed.
(ede-proj-makefile-insert-variables): New, add LDDEPS.
@@ -267,8 +273,8 @@
they show up in the same order as in the command line.
(ede-proj-target-makefile-program): Add ldlibs-local slot.
- * ede/proj-shared.el (ede-g++-libtool-shared-compiler): Fix
- inference rule to use cpp files.
+ * ede/proj-shared.el (ede-g++-libtool-shared-compiler):
+ Fix inference rule to use cpp files.
(ede-proj-target-makefile-shared-object): Quote initforms.
* ede/proj-misc.el (ede-proj-target-makefile-miscelaneous):
@@ -327,8 +333,8 @@
(semantic-analyze-scoped-inherited-tag-map): Take the tag we are
looking for as part of the scoped tags list.
- * semantic/html.el (semantic-default-html-setup): Add
- senator-step-at-tag-classes.
+ * semantic/html.el (semantic-default-html-setup):
+ Add senator-step-at-tag-classes.
* semantic/decorate/include.el
(semantic-decoration-on-unknown-includes): Change light bgcolor.
@@ -355,8 +361,8 @@
* semantic/util.el (semantic-hack-search)
(semantic-recursive-find-nonterminal-by-name)
(semantic-current-tag-interactive): Deleted.
- (semantic-describe-buffer): Fix expand-nonterminal. Add
- lex-syntax-mods, type relation separator char, and command
+ (semantic-describe-buffer): Fix expand-nonterminal.
+ Add lex-syntax-mods, type relation separator char, and command
separation char.
(semantic-sanity-check): Only message if called interactively.
@@ -372,8 +378,8 @@
* semantic/idle.el: Add breadcrumbs support.
(semantic-idle-summary-current-symbol-info-default)
(semantic-idle-tag-highlight)
- (semantic-idle-completion-list-default): Use
- semanticdb-without-unloaded-file-searches for speed, and to
+ (semantic-idle-completion-list-default):
+ Use semanticdb-without-unloaded-file-searches for speed, and to
conform to the controls that specify if the idle timer is supposed
to be parsing unparsed includes.
(semantic-idle-symbol-highlight-face)
@@ -448,8 +454,8 @@
(semantic-analyze-find-tag-sequence-default): Be robust to
calculated scopes being nil.
- * semantic/bovine/c.el (semantic-c-describe-environment): Add
- project macro symbol array.
+ * semantic/bovine/c.el (semantic-c-describe-environment):
+ Add project macro symbol array.
(semantic-c-parse-lexical-token): Add recursion limit.
(semantic-ctxt-imported-packages, semanticdb-expand-nested-tag):
New overrides.
@@ -458,8 +464,8 @@
(semantic-expand-c-tag-namelist): Do not split out a typedef'd
inline type if it is an anonymous type.
(semantic-c-reconstitute-token): Use the optional initializers as
- a clue that some function is probably a constructor. When
- defining the type of these constructors, split the parent name,
+ a clue that some function is probably a constructor.
+ When defining the type of these constructors, split the parent name,
and use only the class part, if applicable.
* semantic/bovine/c-by.el:
@@ -594,8 +600,8 @@
* semantic/db-find.el
(semanticdb-find-translate-path-brutish-default):
- * ede/make.el (ede-make-check-version): Use
- with-current-buffer instead of save-excursion.
+ * ede/make.el (ede-make-check-version):
+ Use with-current-buffer instead of save-excursion.
2010-02-24 Eduard Wiebe <[email protected]>
@@ -783,8 +789,8 @@
* ede.el (ede-apply-preprocessor-map): Accept lists of
ede-objects as targets.
- * ede/pmake.el (ede-proj-makefile-insert-variables): Output
- a target's object list even if compiler vars are already in the
+ * ede/pmake.el (ede-proj-makefile-insert-variables):
+ Output a target's object list even if compiler vars are already in the
Makefile.
* ede/emacs.el (ede-preprocessor-map): Add config.h to the
@@ -880,8 +886,8 @@
2009-11-08 Chong Yidong <[email protected]>
- * semantic/ctxt.el (semantic-get-local-variables): Disable
- the progress reporter entirely.
+ * semantic/ctxt.el (semantic-get-local-variables):
+ Disable the progress reporter entirely.
2009-11-03 Stefan Monnier <[email protected]>
@@ -1511,3 +1517,24 @@
* inversion.el:
* mode-local.el:
* pulse.el: New files.
+
+;; Local Variables:
+;; coding: utf-8
+;; End:
+
+ Copyright (C) 2009-2011 Free Software Foundation, Inc.
+
+ 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/>.
diff --git a/lisp/cedet/cedet-cscope.el b/lisp/cedet/cedet-cscope.el
index 211c7fb4b0..74892533ab 100644
--- a/lisp/cedet/cedet-cscope.el
+++ b/lisp/cedet/cedet-cscope.el
@@ -1,6 +1,6 @@
;;; cedet-cscope.el --- CScope support for CEDET
-;;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Package: cedet
@@ -173,5 +173,4 @@ there is already a database in DIR."
(provide 'cedet-cscope)
-;; arch-tag: 9973f1ad-f13b-4399-bc67-7f488478d78d
;;; cedet-cscope.el ends here
diff --git a/lisp/cedet/cedet-files.el b/lisp/cedet/cedet-files.el
index bb7137ddad..ae037028bf 100644
--- a/lisp/cedet/cedet-files.el
+++ b/lisp/cedet/cedet-files.el
@@ -1,6 +1,6 @@
;;; cedet-files.el --- Common routines dealing with file names.
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Package: cedet
@@ -90,5 +90,4 @@ specific conversions during tests."
(provide 'cedet-files)
-;; arch-tag: 4884c616-82c3-475d-ac9f-039e3431a702
;;; cedet-files.el ends here
diff --git a/lisp/cedet/cedet-global.el b/lisp/cedet/cedet-global.el
index da4e618a74..d2a9794ec8 100644
--- a/lisp/cedet/cedet-global.el
+++ b/lisp/cedet/cedet-global.el
@@ -1,6 +1,6 @@
;;; cedet-global.el --- GNU Global support for CEDET.
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Package: cedet
@@ -186,5 +186,4 @@ If a database already exists, then just update it."
(provide 'cedet-global)
-;; arch-tag: 0d0d3ac2-91ef-4820-bb2b-1d59ccf38392
;;; cedet-global.el ends here
diff --git a/lisp/cedet/cedet-idutils.el b/lisp/cedet/cedet-idutils.el
index 627a458b65..e071265c14 100644
--- a/lisp/cedet/cedet-idutils.el
+++ b/lisp/cedet/cedet-idutils.el
@@ -1,6 +1,6 @@
;;; cedet-idutils.el --- ID Utils support for CEDET.
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Version: 0.2
@@ -200,5 +200,4 @@ IDUtils must start from scratch when updating a database."
(provide 'cedet-idutils)
-;; arch-tag: 663ca082-5b3d-4384-8710-cc74f990b501
;;; cedet-idutils.el ends here
diff --git a/lisp/cedet/cedet.el b/lisp/cedet/cedet.el
index 80a092ab9e..d2fb066515 100644
--- a/lisp/cedet/cedet.el
+++ b/lisp/cedet/cedet.el
@@ -1,7 +1,6 @@
;;; cedet.el --- Setup CEDET environment
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: David Ponce <[email protected]>
;; Maintainer: Eric M. Ludlam <[email protected]>
@@ -132,5 +131,4 @@ if the package has not been loaded."
(provide 'cedet)
-;; arch-tag: ad4b0b63-d1f9-4a41-b003-9bbb2feb5226
;;; cedet.el ends here
diff --git a/lisp/cedet/data-debug.el b/lisp/cedet/data-debug.el
index f48de002fe..cd910f35a6 100644
--- a/lisp/cedet/data-debug.el
+++ b/lisp/cedet/data-debug.el
@@ -1,6 +1,6 @@
;;; data-debug.el --- Datastructure Debugger
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Version: 0.2
@@ -1083,5 +1083,4 @@ If the result is a list or vector, then use the data debugger to display it."
(if (featurep 'eieio)
(require 'eieio-datadebug))
-;; arch-tag: 4807227d-08e7-45c4-8ea5-9e4595c3bfb1
;;; data-debug.el ends here
diff --git a/lisp/cedet/ede.el b/lisp/cedet/ede.el
index 849cc05019..67b648a44b 100644
--- a/lisp/cedet/ede.el
+++ b/lisp/cedet/ede.el
@@ -1,7 +1,6 @@
;;; ede.el --- Emacs Development Environment gloss
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make
diff --git a/lisp/cedet/ede/auto.el b/lisp/cedet/ede/auto.el
index 52e0e3c3cf..09535ffce6 100644
--- a/lisp/cedet/ede/auto.el
+++ b/lisp/cedet/ede/auto.el
@@ -1,6 +1,6 @@
;;; ede/auto.el --- Autoload features for EDE
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/lisp/cedet/ede/autoconf-edit.el b/lisp/cedet/ede/autoconf-edit.el
index 7f96699a07..bd4a5a627a 100644
--- a/lisp/cedet/ede/autoconf-edit.el
+++ b/lisp/cedet/ede/autoconf-edit.el
@@ -1,7 +1,6 @@
;;; ede/autoconf-edit.el --- Keymap for autoconf
-;; Copyright (C) 1998, 1999, 2000, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1998-2000, 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project
diff --git a/lisp/cedet/ede/base.el b/lisp/cedet/ede/base.el
index 4da210682f..da36919b23 100644
--- a/lisp/cedet/ede/base.el
+++ b/lisp/cedet/ede/base.el
@@ -1,6 +1,6 @@
;;; ede/base.el --- Baseclasses for EDE.
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/lisp/cedet/ede/cpp-root.el b/lisp/cedet/ede/cpp-root.el
index 1c850f7ad9..7586522355 100644
--- a/lisp/cedet/ede/cpp-root.el
+++ b/lisp/cedet/ede/cpp-root.el
@@ -1,6 +1,6 @@
;;; ede/cpp-root.el --- A simple way to wrap a C++ project with a single root
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -538,5 +538,4 @@ Note: This needs some work."
;; generated-autoload-load-name: "ede/cpp-root"
;; End:
-;; arch-tag: c3ac8160-cba6-447e-8b9c-accb7e2d942e
;;; ede/cpp-root.el ends here
diff --git a/lisp/cedet/ede/custom.el b/lisp/cedet/ede/custom.el
index d823e01584..a7470547cc 100644
--- a/lisp/cedet/ede/custom.el
+++ b/lisp/cedet/ede/custom.el
@@ -1,6 +1,6 @@
;;; ede.el --- customization of EDE projects.
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/lisp/cedet/ede/dired.el b/lisp/cedet/ede/dired.el
index 59644a03ec..b7a98271ff 100644
--- a/lisp/cedet/ede/dired.el
+++ b/lisp/cedet/ede/dired.el
@@ -1,7 +1,6 @@
;;; ede/dired.el --- EDE extensions to dired.
-;; Copyright (C) 1998, 1999, 2000, 2003, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1998-2000, 2003, 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Version: 0.4
@@ -84,5 +83,4 @@ negative, force off."
(provide 'ede/dired)
-;; arch-tag: 95d3e0a7-a8b7-43a9-b7df-ba647e4c56f6
;;; ede/dired.el ends here
diff --git a/lisp/cedet/ede/emacs.el b/lisp/cedet/ede/emacs.el
index fefd8f9941..b8759dd06e 100644
--- a/lisp/cedet/ede/emacs.el
+++ b/lisp/cedet/ede/emacs.el
@@ -1,6 +1,6 @@
;;; ede/emacs.el --- Special project for Emacs
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -299,5 +299,4 @@ Knows about how the Emacs source tree is organized."
;; generated-autoload-load-name: "ede/emacs"
;; End:
-;; arch-tag: 7cd0be95-663d-4101-8799-2f8216fd8233
;;; ede/emacs.el ends here
diff --git a/lisp/cedet/ede/files.el b/lisp/cedet/ede/files.el
index 87145d8c8a..3d165c3901 100644
--- a/lisp/cedet/ede/files.el
+++ b/lisp/cedet/ede/files.el
@@ -1,6 +1,6 @@
;;; ede/files.el --- Associate projects with files and directories.
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -501,5 +501,4 @@ Argument DIR is the directory to trim upwards."
;; generated-autoload-load-name: "ede/files"
;; End:
-;; arch-tag: 28e17358-0208-4678-828c-23fb0e783fd6
;;; ede/files.el ends here
diff --git a/lisp/cedet/ede/generic.el b/lisp/cedet/ede/generic.el
index c2d31f56a1..360b15499c 100644
--- a/lisp/cedet/ede/generic.el
+++ b/lisp/cedet/ede/generic.el
@@ -1,6 +1,6 @@
;;; ede/generic.el --- Base Support for generic build systems
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/lisp/cedet/ede/linux.el b/lisp/cedet/ede/linux.el
index 9ae4c91a2a..e11286c710 100644
--- a/lisp/cedet/ede/linux.el
+++ b/lisp/cedet/ede/linux.el
@@ -1,6 +1,6 @@
;;; ede/linux.el --- Special project for Linux
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -245,5 +245,4 @@ Knows about how the Linux source tree is organized."
;; generated-autoload-load-name: "ede/linux"
;; End:
-;; arch-tag: 41f310c8-b169-4259-8a2d-0ff4bd0a736d
;;; ede/linux.el ends here
diff --git a/lisp/cedet/ede/locate.el b/lisp/cedet/ede/locate.el
index c2ca81c668..427b87d2bc 100644
--- a/lisp/cedet/ede/locate.el
+++ b/lisp/cedet/ede/locate.el
@@ -1,6 +1,6 @@
;;; ede/locate.el --- Locate support
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -348,5 +348,4 @@ that created this EDE locate object."
;; generated-autoload-load-name: "ede/locate"
;; End:
-;; arch-tag: a04cb356-d11c-4f69-bd72-5a8a2aff708c
;;; ede/locate.el ends here
diff --git a/lisp/cedet/ede/make.el b/lisp/cedet/ede/make.el
index 6b59f510be..1c1bcd47d7 100644
--- a/lisp/cedet/ede/make.el
+++ b/lisp/cedet/ede/make.el
@@ -1,6 +1,6 @@
;;; ede/make.el --- General information about "make"
-;;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -105,5 +105,4 @@ If NOERROR is nil, then throw an error on failure. Return t otherwise."
;; generated-autoload-load-name: "ede/make"
;; End:
-;; arch-tag: cc54abdb-7ca5-4902-9735-eda3c6a77852
;;; ede/make.el ends here
diff --git a/lisp/cedet/ede/makefile-edit.el b/lisp/cedet/ede/makefile-edit.el
index 4331fb4331..63991c54e7 100644
--- a/lisp/cedet/ede/makefile-edit.el
+++ b/lisp/cedet/ede/makefile-edit.el
@@ -1,6 +1,6 @@
;;; makefile-edit.el --- Makefile editing/scanning commands.
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -126,5 +126,4 @@ Return nil if it isn't a variable."
(provide 'ede/makefile-edit)
-;; arch-tag: aba26b5f-4306-40d9-b63c-84a9590ac986
;;; ede/makefile-edit.el ends here
diff --git a/lisp/cedet/ede/pconf.el b/lisp/cedet/ede/pconf.el
index 0983aeb16b..497806c71a 100644
--- a/lisp/cedet/ede/pconf.el
+++ b/lisp/cedet/ede/pconf.el
@@ -1,7 +1,6 @@
;;; ede/pconf.el --- configure.ac maintenance for EDE
-;;; Copyright (C) 1998, 1999, 2000, 2005, 2008, 2009, 2010
-;;; Free Software Foundation, Inc.
+;;; Copyright (C) 1998-2000, 2005, 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project
@@ -184,5 +183,4 @@ Results in --add-missing being passed to automake."
(provide 'ede/pconf)
-;; arch-tag: 8d514f68-2abe-4b35-8b4e-bea4fd0c3eab
;;; ede/pconf.el ends here
diff --git a/lisp/cedet/ede/pmake.el b/lisp/cedet/ede/pmake.el
index b8e7c5f61a..52a1d48532 100644
--- a/lisp/cedet/ede/pmake.el
+++ b/lisp/cedet/ede/pmake.el
@@ -1,7 +1,6 @@
;;; ede-pmake.el --- EDE Generic Project Makefile code generator.
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make
diff --git a/lisp/cedet/ede/proj-archive.el b/lisp/cedet/ede/proj-archive.el
index 2d4620ea47..23d3aa0500 100644
--- a/lisp/cedet/ede/proj-archive.el
+++ b/lisp/cedet/ede/proj-archive.el
@@ -1,6 +1,6 @@
;;; ede/proj-archive.el --- EDE Generic Project archive support
-;; Copyright (C) 1998, 1999, 2000, 2001, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2001, 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make
@@ -61,5 +61,4 @@ This makes sure that the archive is removed with 'make clean'."
(provide 'ede/proj-archive)
-;; arch-tag: a0b2cfe8-0d11-4a4f-8e47-ebfb11b6ac33
;;; ede/proj-archive.el ends here
diff --git a/lisp/cedet/ede/proj-aux.el b/lisp/cedet/ede/proj-aux.el
index 4f00d6ea60..2a8f1de65e 100644
--- a/lisp/cedet/ede/proj-aux.el
+++ b/lisp/cedet/ede/proj-aux.el
@@ -1,6 +1,6 @@
;;; ede/proj-aux.el --- EDE Generic Project auxiliary file support
-;; Copyright (C) 1998, 1999, 2000, 2007, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2000, 2007, 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make
@@ -44,5 +44,4 @@
(provide 'ede/proj-aux)
-;; arch-tag: 668e96e0-2b30-474e-ba3c-9fa4fa696922
;;; ede/proj-aux.el ends here
diff --git a/lisp/cedet/ede/proj-comp.el b/lisp/cedet/ede/proj-comp.el
index e73d586aa1..418e70fd5e 100644
--- a/lisp/cedet/ede/proj-comp.el
+++ b/lisp/cedet/ede/proj-comp.el
@@ -1,6 +1,6 @@
;;; ede/proj-comp.el --- EDE Generic Project compiler/rule driver
-;; Copyright (C) 1999, 2000, 2001, 2004, 2005, 2007, 2009, 2010
+;; Copyright (C) 1999-2001, 2004-2005, 2007, 2009-2011
;; Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -355,5 +355,4 @@ compiler it decides to use after inserting in the rule."
(provide 'ede/proj-comp)
-;; arch-tag: ade67766-1a5d-467a-826a-93e95594d717
;;; ede/proj-comp.el ends here
diff --git a/lisp/cedet/ede/proj-elisp.el b/lisp/cedet/ede/proj-elisp.el
index 744f345fcf..17185b1949 100644
--- a/lisp/cedet/ede/proj-elisp.el
+++ b/lisp/cedet/ede/proj-elisp.el
@@ -1,7 +1,6 @@
;;; ede-proj-elisp.el --- EDE Generic Project Emacs Lisp support
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make
diff --git a/lisp/cedet/ede/proj-info.el b/lisp/cedet/ede/proj-info.el
index 1e9060fe31..d943e60952 100644
--- a/lisp/cedet/ede/proj-info.el
+++ b/lisp/cedet/ede/proj-info.el
@@ -1,7 +1,6 @@
;;; ede-proj-info.el --- EDE Generic Project texinfo support
-;;; Copyright (C) 1998, 1999, 2000, 2001, 2004, 2007, 2008, 2009, 2010
-;;; Free Software Foundation, Inc.
+;;; Copyright (C) 1998-2001, 2004, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make
@@ -183,5 +182,4 @@ files in the project."
(provide 'ede/proj-info)
-;; arch-tag: e4b7ce51-ae46-4d7c-a5fb-073f435cdcbf
;;; ede/proj-info.el ends here
diff --git a/lisp/cedet/ede/proj-misc.el b/lisp/cedet/ede/proj-misc.el
index 34a10859fd..4d68e1544a 100644
--- a/lisp/cedet/ede/proj-misc.el
+++ b/lisp/cedet/ede/proj-misc.el
@@ -1,7 +1,6 @@
;;; ede-proj-misc.el --- EDE Generic Project Emacs Lisp support
-;; Copyright (C) 1998, 1999, 2000, 2001, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1998-2001, 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make
@@ -93,5 +92,4 @@ All listed sources are included in the distribution.")
(provide 'ede/proj-misc)
-;; arch-tag: e5e5f8d2-9897-4a1b-8a29-5944ec5a892d
;;; ede/proj-misc.el ends here
diff --git a/lisp/cedet/ede/proj-obj.el b/lisp/cedet/ede/proj-obj.el
index 6be76f1f11..7e7d289a59 100644
--- a/lisp/cedet/ede/proj-obj.el
+++ b/lisp/cedet/ede/proj-obj.el
@@ -1,7 +1,6 @@
;;; ede/proj-obj.el --- EDE Generic Project Object code generation support
-;;; Copyright (C) 1998, 1999, 2000, 2005, 2008, 2009, 2010
-;;; Free Software Foundation, Inc.
+;;; Copyright (C) 1998-2000, 2005, 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make
@@ -320,5 +319,4 @@ Optional argument MORESOURCE is not used."
(provide 'ede/proj-obj)
-;; arch-tag: f521b89f-1a3f-4910-ba81-65de3f421698
;;; ede/proj-obj.el ends here
diff --git a/lisp/cedet/ede/proj-prog.el b/lisp/cedet/ede/proj-prog.el
index 9b06dc007b..f33f5327be 100644
--- a/lisp/cedet/ede/proj-prog.el
+++ b/lisp/cedet/ede/proj-prog.el
@@ -1,7 +1,6 @@
;;; ede-proj-prog.el --- EDE Generic Project program support
-;; Copyright (C) 1998, 1999, 2000, 2001, 2005, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1998-2001, 2005, 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make
@@ -141,5 +140,4 @@ Optional COMMAND is the command to run in place of asking the user."
(provide 'ede/proj-prog)
-;; arch-tag: 0bfa9364-f385-4745-a846-462146a79a25
;;; ede/proj-prog.el ends here
diff --git a/lisp/cedet/ede/proj-scheme.el b/lisp/cedet/ede/proj-scheme.el
index 577416dc92..2a3ea039a7 100644
--- a/lisp/cedet/ede/proj-scheme.el
+++ b/lisp/cedet/ede/proj-scheme.el
@@ -1,6 +1,6 @@
;;; ede/proj-scheme.el --- EDE Generic Project scheme (guile) support
-;; Copyright (C) 1998, 1999, 2000, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2000, 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make, scheme
@@ -46,5 +46,4 @@
(provide 'ede/proj-scheme)
-;; arch-tag: 451081e6-0d45-4560-9821-8ee03e8401ab
;;; ede/proj-scheme.el ends here
diff --git a/lisp/cedet/ede/proj-shared.el b/lisp/cedet/ede/proj-shared.el
index e1111f9f38..ec514194e3 100644
--- a/lisp/cedet/ede/proj-shared.el
+++ b/lisp/cedet/ede/proj-shared.el
@@ -1,6 +1,6 @@
;;; ede-proj-shared.el --- EDE Generic Project shared library support
-;;; Copyright (C) 1998, 1999, 2000, 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 1998-2000, 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make
@@ -207,5 +207,4 @@ We need to override -program which has an LDADD element."
(provide 'ede/proj-shared)
-;; arch-tag: 05f22c3e-b269-4411-9425-65e8fe4ab74a
;;; ede/proj-shared.el ends here
diff --git a/lisp/cedet/ede/proj.el b/lisp/cedet/ede/proj.el
index 41887431d3..40e6165251 100644
--- a/lisp/cedet/ede/proj.el
+++ b/lisp/cedet/ede/proj.el
@@ -1,7 +1,6 @@
;;; ede/proj.el --- EDE Generic Project file driver
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1998-2003, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make
@@ -676,5 +675,4 @@ Optional argument FORCE will force items to be regenerated."
(provide 'ede/proj)
-;; arch-tag: eb8a40f8-0d2c-41c4-b273-af04101d1cdf
;;; ede/proj.el ends here
diff --git a/lisp/cedet/ede/project-am.el b/lisp/cedet/ede/project-am.el
index ccfb1a242b..88cf67e22e 100644
--- a/lisp/cedet/ede/project-am.el
+++ b/lisp/cedet/ede/project-am.el
@@ -1,6 +1,6 @@
;;; project-am.el --- A project management scheme based on automake files.
-;; Copyright (C) 1998, 1999, 2000, 2003, 2005, 2007, 2008, 2009, 2010
+;; Copyright (C) 1998-2000, 2003, 2005, 2007-2011
;; Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -1020,5 +1020,4 @@ per file or in .dir-locals.el or similar."
(provide 'ede/project-am)
-;; arch-tag: 528db935-f186-4240-b647-e305c5b784a2
;;; ede/project-am.el ends here
diff --git a/lisp/cedet/ede/shell.el b/lisp/cedet/ede/shell.el
index d967a87835..194b7285a0 100644
--- a/lisp/cedet/ede/shell.el
+++ b/lisp/cedet/ede/shell.el
@@ -1,6 +1,6 @@
;;; ede/shell.el --- A shell controlled by EDE.
;;
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;;
;; Author: Eric M. Ludlam <[email protected]>
@@ -79,5 +79,4 @@ COMMAND is a text string representing the thing to be run."
;; generated-autoload-load-name: "ede/shell"
;; End:
-;; arch-tag: 71bb9dc4-ad1c-4ba3-a95e-531a90500ca9
;;; ede/shell.el ends here
diff --git a/lisp/cedet/ede/simple.el b/lisp/cedet/ede/simple.el
index d42baa45f6..8d77cea652 100644
--- a/lisp/cedet/ede/simple.el
+++ b/lisp/cedet/ede/simple.el
@@ -1,6 +1,6 @@
;;; ede/simple.el --- Overlay an EDE structure on an existing project
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -117,5 +117,4 @@ Each directory needs a project file to control it.")
(provide 'ede/simple)
-;; arch-tag: a0c4264a-89ce-4364-afab-2512acd3b22a
;;; ede/simple.el ends here
diff --git a/lisp/cedet/ede/source.el b/lisp/cedet/ede/source.el
index 88167de5a3..e5dc12d064 100644
--- a/lisp/cedet/ede/source.el
+++ b/lisp/cedet/ede/source.el
@@ -1,6 +1,6 @@
;; ede/source.el --- EDE source code object
-;; Copyright (C) 2000, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make
@@ -170,5 +170,4 @@ Used to guess header files, but uses the auxsource regular expression."
(provide 'ede/source)
-;; arch-tag: 60165fe2-920e-4adf-8531-25655388467d
;;; ede/source.el ends here
diff --git a/lisp/cedet/ede/speedbar.el b/lisp/cedet/ede/speedbar.el
index 8658a654b1..252ce47df6 100644
--- a/lisp/cedet/ede/speedbar.el
+++ b/lisp/cedet/ede/speedbar.el
@@ -1,7 +1,7 @@
;;; ede/speedbar.el --- Speedbar viewing of EDE projects
-;; Copyright (C) 1998, 1999, 2000, 2001, 2003, 2005, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2001, 2003, 2005, 2007-2011
+;; Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make, tags
diff --git a/lisp/cedet/ede/srecode.el b/lisp/cedet/ede/srecode.el
index 3b131dd375..f7428bae04 100644
--- a/lisp/cedet/ede/srecode.el
+++ b/lisp/cedet/ede/srecode.el
@@ -1,6 +1,6 @@
;;; ede/srecode.el --- EDE utilities on top of SRecoder
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -91,5 +91,4 @@ Note: Just like `srecode-insert', but templates found in 'ede app."
(provide 'ede/srecode)
-;; arch-tag: 75bec542-7cc8-41a4-b5a0-8fb247609f03
;;; ede/srecode.el ends here
diff --git a/lisp/cedet/ede/system.el b/lisp/cedet/ede/system.el
index 58af372490..b69938af4a 100644
--- a/lisp/cedet/ede/system.el
+++ b/lisp/cedet/ede/system.el
@@ -1,6 +1,6 @@
;;; ede-system.el --- EDE working with the system (VC, FTP, ETC)
-;; Copyright (C) 2001, 2002, 2003, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2003, 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make, vc
@@ -143,5 +143,4 @@ Download tramp, and use /r:machine: for names on remote sites w/out FTP access."
;; generated-autoload-load-name: "ede/system"
;; End:
-;; arch-tag: a974ea44-151e-488b-b5d4-df2c05be6fe6
;;; ede/system.el ends here
diff --git a/lisp/cedet/ede/util.el b/lisp/cedet/ede/util.el
index c5b735c886..fc4536ba88 100644
--- a/lisp/cedet/ede/util.el
+++ b/lisp/cedet/ede/util.el
@@ -1,6 +1,6 @@
;;; ede/util.el --- EDE utilities
-;; Copyright (C) 2000, 2005, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2005, 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make
@@ -101,5 +101,4 @@ If BUFFER isn't specified, use the current buffer."
;; generated-autoload-load-name: "ede/util"
;; End:
-;; arch-tag: 3cddf449-7f6a-4c76-86dd-04142c60eba2
;;; ede/util.el ends here
diff --git a/lisp/cedet/inversion.el b/lisp/cedet/inversion.el
index c79914139a..71960ddecd 100644
--- a/lisp/cedet/inversion.el
+++ b/lisp/cedet/inversion.el
@@ -1,7 +1,6 @@
;;; inversion.el --- When you need something in version XX.XX
-;;; Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010
-;;; Free Software Foundation, Inc.
+;;; Copyright (C) 2002-2003, 2005-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Version: 0.2
@@ -538,5 +537,4 @@ The package should have VERSION available for download."
(provide 'inversion)
-;; arch-tag: 7239729c-3051-4d85-bb09-dcf92363aa3b
;;; inversion.el ends here
diff --git a/lisp/cedet/mode-local.el b/lisp/cedet/mode-local.el
index 7943f61fee..d077dd95f3 100644
--- a/lisp/cedet/mode-local.el
+++ b/lisp/cedet/mode-local.el
@@ -1,7 +1,6 @@
;;; mode-local.el --- Support for mode local facilities
;;
-;; Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2005, 2007-2011 Free Software Foundation, Inc.
;;
;; Author: David Ponce <[email protected]>
;; Maintainer: David Ponce <[email protected]>
diff --git a/lisp/cedet/pulse.el b/lisp/cedet/pulse.el
index 593f196982..74dc1ecde3 100644
--- a/lisp/cedet/pulse.el
+++ b/lisp/cedet/pulse.el
@@ -1,6 +1,6 @@
;;; pulse.el --- Pulsing Overlays
-;;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Version: 1.0
@@ -255,5 +255,4 @@ Only pulses the line if `pulse-command-advice-flag' is non-nil."
(provide 'pulse)
-;; arch-tag: 6e2f78c1-65b3-4164-a141-872cb1552959
;;; pulse.el ends here
diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index ede96e3918..c899988dc3 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -1,7 +1,6 @@
;;; semantic.el --- Semantic buffer evaluator.
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: syntax tools
@@ -1153,5 +1152,4 @@ minor mode is enabled." t nil)
;; (require 'semantic/load)
-;; arch-tag: 31583e10-6508-41a9-be40-f83d0ae0a4ed
;;; semantic.el ends here
diff --git a/lisp/cedet/semantic/analyze.el b/lisp/cedet/semantic/analyze.el
index 4009685683..8a0fbd5cc3 100644
--- a/lisp/cedet/semantic/analyze.el
+++ b/lisp/cedet/semantic/analyze.el
@@ -1,7 +1,6 @@
;;; semantic/analyze.el --- Analyze semantic tags against local context
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2000-2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -795,5 +794,4 @@ CONTEXT's content is described in `semantic-analyze-current-context'."
;; generated-autoload-load-name: "semantic/analyze"
;; End:
-;; arch-tag: 1102143a-1c05-4631-83e8-45aafc6b4a59
;;; semantic/analyze.el ends here
diff --git a/lisp/cedet/semantic/analyze/complete.el b/lisp/cedet/semantic/analyze/complete.el
index 7f0c7d8a22..bbe87f3417 100644
--- a/lisp/cedet/semantic/analyze/complete.el
+++ b/lisp/cedet/semantic/analyze/complete.el
@@ -1,6 +1,6 @@
;;; semantic/analyze/complete.el --- Smart Completions
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -276,5 +276,4 @@ FLAGS can be any number of:
;; generated-autoload-load-name: "semantic/analyze/complete"
;; End:
-;; arch-tag: 97071c7e-2459-4e7a-8875-8cc5bbbc1f4d
;;; semantic/analyze/complete.el ends here
diff --git a/lisp/cedet/semantic/analyze/debug.el b/lisp/cedet/semantic/analyze/debug.el
index cfc41e6faf..b02358b724 100644
--- a/lisp/cedet/semantic/analyze/debug.el
+++ b/lisp/cedet/semantic/analyze/debug.el
@@ -1,6 +1,6 @@
;;; semantic/analyze/debug.el --- Debug the analyzer
-;;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/lisp/cedet/semantic/analyze/fcn.el b/lisp/cedet/semantic/analyze/fcn.el
index 56353689ef..eae6d01340 100644
--- a/lisp/cedet/semantic/analyze/fcn.el
+++ b/lisp/cedet/semantic/analyze/fcn.el
@@ -1,6 +1,6 @@
;;; semantic/analyze/fcn.el --- Analyzer support functions.
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -334,5 +334,4 @@ SCOPE is the current scope."
(provide 'semantic/analyze/fcn)
-;; arch-tag: 32525305-515e-4b96-ad11-216d3a99f829
;;; semantic/analyze/fcn.el ends here
diff --git a/lisp/cedet/semantic/analyze/refs.el b/lisp/cedet/semantic/analyze/refs.el
index ec903f0afc..9a4459f037 100644
--- a/lisp/cedet/semantic/analyze/refs.el
+++ b/lisp/cedet/semantic/analyze/refs.el
@@ -1,6 +1,6 @@
;;; semantic/analyze/refs.el --- Analysis of the references between tags.
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -350,5 +350,4 @@ Only works for tags in the global namespace."
;; generated-autoload-load-name: "semantic/analyze/refs"
;; End:
-;; arch-tag: f8c59a91-1829-42b3-b083-437c6881841c
;;; semantic/analyze/refs.el ends here
diff --git a/lisp/cedet/semantic/bovine.el b/lisp/cedet/semantic/bovine.el
index d8d077658e..1dfbb72d41 100644
--- a/lisp/cedet/semantic/bovine.el
+++ b/lisp/cedet/semantic/bovine.el
@@ -1,6 +1,6 @@
;;; semantic/bovine.el --- LL Parser/Analyzer core.
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2009, 2010
+;; Copyright (C) 1999-2004, 2006-2007, 2009-2011
;; Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -293,5 +293,4 @@ list of semantic tokens found."
;; generated-autoload-load-name: "semantic/bovine"
;; End:
-;; arch-tag: 1e820899-2a26-499a-b0c0-57301365a6b0
;;; semantic/bovine.el ends here
diff --git a/lisp/cedet/semantic/bovine/c-by.el b/lisp/cedet/semantic/bovine/c-by.el
index c33f3fb67f..8e1fe8d361 100644
--- a/lisp/cedet/semantic/bovine/c-by.el
+++ b/lisp/cedet/semantic/bovine/c-by.el
@@ -1,7 +1,6 @@
;;; semantic/bovine/c-by.el --- Generated parser support file
-;;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -2194,5 +2193,4 @@
(provide 'semantic/bovine/c-by)
-;; arch-tag: 27da9f71-d2ef-473f-92a7-b0006b1a8491
;;; semantic/bovine/c-by.el ends here
diff --git a/lisp/cedet/semantic/bovine/c.el b/lisp/cedet/semantic/bovine/c.el
index 1b441a27d2..0b3e688189 100644
--- a/lisp/cedet/semantic/bovine/c.el
+++ b/lisp/cedet/semantic/bovine/c.el
@@ -1,7 +1,6 @@
;;; semantic/bovine/c.el --- Semantic details for C
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/lisp/cedet/semantic/bovine/debug.el b/lisp/cedet/semantic/bovine/debug.el
index 1d2384b953..9ca7409e33 100644
--- a/lisp/cedet/semantic/bovine/debug.el
+++ b/lisp/cedet/semantic/bovine/debug.el
@@ -1,6 +1,6 @@
;;; semantic/bovine/debug.el --- Debugger support for bovinator
-;; Copyright (C) 2003, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -144,5 +144,4 @@ Argument CONDITION is the thrown error condition."
(provide 'semantic/bovine/debug)
-;; arch-tag: d1bf98b3-faeb-4dc3-ac34-cac6264fd94e
;;; semantic/bovine/debug.el ends here
diff --git a/lisp/cedet/semantic/bovine/el.el b/lisp/cedet/semantic/bovine/el.el
index ed1f74c590..cfdd4cf6f6 100644
--- a/lisp/cedet/semantic/bovine/el.el
+++ b/lisp/cedet/semantic/bovine/el.el
@@ -1,7 +1,6 @@
;;; semantic/bovine/el.el --- Semantic details for Emacs Lisp
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -963,5 +962,4 @@ ELisp variables can be pretty long, so track this one too.")
(provide 'semantic/bovine/el)
-;; arch-tag: d634cbab-9610-4510-9fce-048ae1eb7aa6
;;; semantic/bovine/el.el ends here
diff --git a/lisp/cedet/semantic/bovine/gcc.el b/lisp/cedet/semantic/bovine/gcc.el
index cbc5d6dda5..acbbb13170 100644
--- a/lisp/cedet/semantic/bovine/gcc.el
+++ b/lisp/cedet/semantic/bovine/gcc.el
@@ -1,6 +1,6 @@
;;; semantic/bovine/gcc.el --- gcc querying special code for the C parser
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -221,5 +221,4 @@ It should also include other symbols GCC was compiled with.")
;; generated-autoload-load-name: "semantic/bovine/gcc"
;; End:
-;; arch-tag: 7086f4a0-1ce8-48e2-9783-d750d3765186
;;; semantic/bovine/gcc.el ends here
diff --git a/lisp/cedet/semantic/bovine/make-by.el b/lisp/cedet/semantic/bovine/make-by.el
index f5da66e772..3cc4e5b23a 100644
--- a/lisp/cedet/semantic/bovine/make-by.el
+++ b/lisp/cedet/semantic/bovine/make-by.el
@@ -1,7 +1,6 @@
;;; semantic/bovine/make-by.el --- Generated parser support file
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1999-2004, 2008-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -384,5 +383,4 @@
(provide 'semantic/bovine/make-by)
-;; arch-tag: 8c3749b8-7b19-46e0-af01-2a4d02fd0352
;;; semantic/bovine/make-by.el ends here
diff --git a/lisp/cedet/semantic/bovine/make.el b/lisp/cedet/semantic/bovine/make.el
index c4d7a6ae71..e132b48441 100644
--- a/lisp/cedet/semantic/bovine/make.el
+++ b/lisp/cedet/semantic/bovine/make.el
@@ -1,7 +1,6 @@
;;; semantic/bovine/make.el --- Makefile parsing rules.
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2000-2004, 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -238,5 +237,4 @@ Uses default implementation, and also gets a list of filenames."
;; generated-autoload-load-name: "semantic/bovine/make"
;; End:
-;; arch-tag: 8122d1f5-d4b7-4f6e-b909-d61ac65ef118
;;; semantic/bovine/make.el ends here
diff --git a/lisp/cedet/semantic/bovine/scm-by.el b/lisp/cedet/semantic/bovine/scm-by.el
index 7dc46742fd..87efe747a4 100644
--- a/lisp/cedet/semantic/bovine/scm-by.el
+++ b/lisp/cedet/semantic/bovine/scm-by.el
@@ -1,6 +1,6 @@
;;; semantic-scm-by.el --- Generated parser support file
-;; Copyright (C) 2001, 2003, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2003, 2009-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -188,5 +188,4 @@
(provide 'semantic/bovine/scm-by)
-;; arch-tag: 945749cc-a039-434f-bf95-bf2480a506c3
;;; semantic/bovine/scm-by.el ends here
diff --git a/lisp/cedet/semantic/bovine/scm.el b/lisp/cedet/semantic/bovine/scm.el
index de8350a6c7..0bdd8722db 100644
--- a/lisp/cedet/semantic/bovine/scm.el
+++ b/lisp/cedet/semantic/bovine/scm.el
@@ -1,7 +1,6 @@
;;; semantic/bovine/scm.el --- Semantic details for Scheme (guile)
-;;; Copyright (C) 2001, 2002, 2003, 2004, 2008, 2009, 2010
-;;; Free Software Foundation, Inc.
+;;; Copyright (C) 2001-2004, 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -115,5 +114,4 @@ syntax as specified by the syntax table."
;; generated-autoload-load-name: "semantic/bovine/scm"
;; End:
-;; arch-tag: 4f929838-b817-447d-848c-d47789ff140f
;;; semantic/bovine/scm.el ends here
diff --git a/lisp/cedet/semantic/chart.el b/lisp/cedet/semantic/chart.el
index f4ba4106a4..1c08cb04d1 100644
--- a/lisp/cedet/semantic/chart.el
+++ b/lisp/cedet/semantic/chart.el
@@ -1,6 +1,6 @@
;;; semantic/chart.el --- Utilities for use with semantic tag tables
-;; Copyright (C) 1999, 2000, 2001, 2003, 2005, 2008, 2009, 2010
+;; Copyright (C) 1999-2001, 2003, 2005, 2008-2011
;; Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -171,5 +171,4 @@ items are charted. TAGTABLE is passed to
(provide 'semantic/chart)
-;; arch-tag: 026573b1-f4f1-4dda-ae77-b6451283ff23
;;; semantic/chart.el ends here
diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el
index 1f8ee260ad..31e92724a0 100644
--- a/lisp/cedet/semantic/complete.el
+++ b/lisp/cedet/semantic/complete.el
@@ -1,7 +1,6 @@
;;; semantic/complete.el --- Routines for performing tag completion
-;; Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: syntax
@@ -2159,5 +2158,4 @@ use `semantic-complete-analyze-inline' to complete."
;; generated-autoload-load-name: "semantic/complete"
;; End:
-;; arch-tag: a07c8f71-e53b-416e-9704-3a99ef101b09
;;; semantic/complete.el ends here
diff --git a/lisp/cedet/semantic/ctxt.el b/lisp/cedet/semantic/ctxt.el
index b158adffc1..0804920175 100644
--- a/lisp/cedet/semantic/ctxt.el
+++ b/lisp/cedet/semantic/ctxt.el
@@ -1,7 +1,6 @@
;;; semantic/ctxt.el --- Context calculations for Semantic tools.
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: syntax
@@ -619,5 +618,4 @@ means that the first symbol might be:
;; generated-autoload-load-name: "semantic/ctxt"
;; End:
-;; arch-tag: 04f3ae3c-78bb-40ca-b112-ba77f5e4ea88
;;; semantic/ctxt.el ends here
diff --git a/lisp/cedet/semantic/db-debug.el b/lisp/cedet/semantic/db-debug.el
index cfbc9c0aff..7d1abe11dd 100644
--- a/lisp/cedet/semantic/db-debug.el
+++ b/lisp/cedet/semantic/db-debug.el
@@ -1,6 +1,6 @@
;;; semantic/db-debug.el --- Extra level debugging routines for Semantic
-;;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -107,5 +107,4 @@
(provide 'semantic/db-debug)
-;; arch-tag: 9bdc11bd-fb76-4a32-9545-78ed143b7184
;;; semantic/db-debug.el ends here
diff --git a/lisp/cedet/semantic/db-ebrowse.el b/lisp/cedet/semantic/db-ebrowse.el
index 86602aaa95..d719fde317 100644
--- a/lisp/cedet/semantic/db-ebrowse.el
+++ b/lisp/cedet/semantic/db-ebrowse.el
@@ -1,7 +1,6 @@
;;; semantic/db-ebrowse.el --- Semanticdb backend using ebrowse.
-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2005-2011 Free Software Foundation, Inc.
;; Authors: Eric M. Ludlam <[email protected]>
;; Joakim Verona
@@ -661,5 +660,4 @@ Return a list of tags."
(provide 'semantic/db-ebrowse)
-;; arch-tag: e7d15223-6074-4c87-baf0-98fdd22ff873
;;; semantic/db-ebrowse.el ends here
diff --git a/lisp/cedet/semantic/db-el.el b/lisp/cedet/semantic/db-el.el
index d313d1dc57..0cbff54fd1 100644
--- a/lisp/cedet/semantic/db-el.el
+++ b/lisp/cedet/semantic/db-el.el
@@ -1,7 +1,6 @@
;;; semantic/db-el.el --- Semantic database extensions for Emacs Lisp
-;;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;;; Free Software Foundation, Inc.
+;;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: tags
@@ -343,5 +342,4 @@ Return a list of tags."
(provide 'semantic/db-el)
-;; arch-tag: e54f556e-fa3f-4bc5-9b15-744a659a6e65
;;; semantic/db-el.el ends here
diff --git a/lisp/cedet/semantic/db-file.el b/lisp/cedet/semantic/db-file.el
index 3c96290cc9..661bc8d684 100644
--- a/lisp/cedet/semantic/db-file.el
+++ b/lisp/cedet/semantic/db-file.el
@@ -1,7 +1,6 @@
;;; semantic/db-file.el --- Save a semanticdb to a cache file.
-;;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
-;;; Free Software Foundation, Inc.
+;;; Copyright (C) 2000-2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: tags
@@ -452,5 +451,4 @@ Optional NOERROR prevents errors from being displayed."
;; generated-autoload-load-name: "semantic/db-file"
;; End:
-;; arch-tag: f4a0d9de-6c25-4bf3-aff3-a10c58fd575d
;;; semantic/db-file.el ends here
diff --git a/lisp/cedet/semantic/db-find.el b/lisp/cedet/semantic/db-find.el
index b266fc8bdf..a7335d642b 100644
--- a/lisp/cedet/semantic/db-find.el
+++ b/lisp/cedet/semantic/db-find.el
@@ -1,7 +1,6 @@
;;; semantic/db-find.el --- Searching through semantic databases.
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: tags
@@ -1369,5 +1368,4 @@ Return a table of all matching tags."
;; generated-autoload-load-name: "semantic/db-find"
;; End:
-;; arch-tag: 5d4162f5-5092-46d7-beed-55c78aab4116
;;; semantic/db-find.el ends here
diff --git a/lisp/cedet/semantic/db-global.el b/lisp/cedet/semantic/db-global.el
index 3d827b9ede..7f3d616203 100644
--- a/lisp/cedet/semantic/db-global.el
+++ b/lisp/cedet/semantic/db-global.el
@@ -1,7 +1,6 @@
;;; semantic/db-global.el --- Semantic database extensions for GLOBAL
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2006, 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: tags
@@ -220,5 +219,4 @@ Like `semanticdb-find-tags-for-completion-method' for global."
;; generated-autoload-load-name: "semantic/db-global"
;; End:
-;; arch-tag: ec0edab2-26c2-438f-a3d2-0d953364f8cc
;;; semantic/db-global.el ends here
diff --git a/lisp/cedet/semantic/db-javascript.el b/lisp/cedet/semantic/db-javascript.el
index a972c33f32..213216cee1 100644
--- a/lisp/cedet/semantic/db-javascript.el
+++ b/lisp/cedet/semantic/db-javascript.el
@@ -1,7 +1,6 @@
;;; semantic/db-javascript.el --- Semantic database extensions for javascript
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Joakim Verona
@@ -307,5 +306,4 @@ Return a list of tags."
(provide 'semantic/db-javascript)
-;; arch-tag: 69cf8ad1-7ea9-41af-851c-41f24c873374
;;; semantic/db-javascript.el ends here
diff --git a/lisp/cedet/semantic/db-mode.el b/lisp/cedet/semantic/db-mode.el
index 5d421012cd..8b65659260 100644
--- a/lisp/cedet/semantic/db-mode.el
+++ b/lisp/cedet/semantic/db-mode.el
@@ -1,6 +1,6 @@
;;; semantic/db-mode.el --- Semanticdb Minor Mode
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -217,5 +217,4 @@ Argument NEW-TABLE is the new table of tags."
;; generated-autoload-load-name: "semantic/db-mode"
;; End:
-;; arch-tag: f5da903d-2d34-4adf-8572-e60340e1ad59
;;; semantic/db-mode.el ends here
diff --git a/lisp/cedet/semantic/db-ref.el b/lisp/cedet/semantic/db-ref.el
index 8b1d65beb9..6f5489ef7e 100644
--- a/lisp/cedet/semantic/db-ref.el
+++ b/lisp/cedet/semantic/db-ref.el
@@ -1,6 +1,6 @@
;;; semantic/db-ref.el --- Handle cross-db file references
-;;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -171,5 +171,4 @@ refreshed before dumping the result."
(provide 'semantic/db-ref)
-;; arch-tag: bea73e70-dbbe-4c30-a58d-289dc3a40172
;;; semantic/db-ref.el ends here
diff --git a/lisp/cedet/semantic/db-typecache.el b/lisp/cedet/semantic/db-typecache.el
index 59ba83fe9d..2a78576092 100644
--- a/lisp/cedet/semantic/db-typecache.el
+++ b/lisp/cedet/semantic/db-typecache.el
@@ -1,6 +1,6 @@
;;; db-typecache.el --- Manage Datatypes
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -622,5 +622,4 @@ If there isn't one, create it.
;; generated-autoload-load-name: "semantic/db-typecache"
;; End:
-;; arch-tag: cd7c37a8-2006-4ead-a037-977ffe7e7624
;;; semanticdb-typecache.el ends here
diff --git a/lisp/cedet/semantic/db.el b/lisp/cedet/semantic/db.el
index 3ce774b0a9..fa8de392b6 100644
--- a/lisp/cedet/semantic/db.el
+++ b/lisp/cedet/semantic/db.el
@@ -1,7 +1,6 @@
;;; semantic/db.el --- Semantic tag database manager
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: tags
@@ -1040,5 +1039,4 @@ If file does not have tags available, then load the file, and create them."
;; generated-autoload-load-name: "semantic/db"
;; End:
-;; arch-tag: d9f75280-737d-494f-9f70-09a649d27433
;;; semantic/db.el ends here
diff --git a/lisp/cedet/semantic/debug.el b/lisp/cedet/semantic/debug.el
index 23e443c1d4..ecab73a80d 100644
--- a/lisp/cedet/semantic/debug.el
+++ b/lisp/cedet/semantic/debug.el
@@ -1,6 +1,6 @@
;;; semantic/debug.el --- Language Debugger framework
-;; Copyright (C) 2003, 2004, 2005, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003-2005, 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -566,5 +566,4 @@ A frame is of the form:
;; generated-autoload-load-name: "semantic/debug"
;; End:
-;; arch-tag: 6f189d2d-8a65-45a5-a7f0-9894625eb860
;;; semantic/debug.el ends here
diff --git a/lisp/cedet/semantic/decorate.el b/lisp/cedet/semantic/decorate.el
index f28ce1741f..ee356ad3a9 100644
--- a/lisp/cedet/semantic/decorate.el
+++ b/lisp/cedet/semantic/decorate.el
@@ -1,6 +1,6 @@
;;; semantic/decorate.el --- Utilities for decorating/highlighting tokens.
-;;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2009, 2010
+;;; Copyright (C) 1999-2003, 2005-2007, 2009-2011
;;; Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -296,5 +296,4 @@ OVERLAY is passed in by isearch."
(provide 'semantic/decorate)
-;; arch-tag: 30e5b6cb-dba0-41cd-920a-bc1dce267ad8
;;; semantic/decorate.el ends here
diff --git a/lisp/cedet/semantic/decorate/include.el b/lisp/cedet/semantic/decorate/include.el
index 3d6013b733..0e0a8849d7 100644
--- a/lisp/cedet/semantic/decorate/include.el
+++ b/lisp/cedet/semantic/decorate/include.el
@@ -1,6 +1,6 @@
;;; semantic/decorate/include.el --- Decoration modes for include statements
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -773,5 +773,4 @@ If TABLE is not in a buffer, do nothing."
;; generated-autoload-load-name: "semantic/decorate/include"
;; End:
-;; arch-tag: c3277137-be3f-43e2-af89-3b14b9bd7479
;;; semantic/decorate/include.el ends here
diff --git a/lisp/cedet/semantic/decorate/mode.el b/lisp/cedet/semantic/decorate/mode.el
index 3c7549c6d0..ea4df472af 100644
--- a/lisp/cedet/semantic/decorate/mode.el
+++ b/lisp/cedet/semantic/decorate/mode.el
@@ -1,7 +1,6 @@
;;; semantic/decorate/mode.el --- Minor mode for decorating tags
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: syntax
@@ -520,5 +519,4 @@ Use a primary decoration."
;; generated-autoload-load-name: "semantic/decorate/mode"
;; End:
-;; arch-tag: c1ac7888-e323-4467-96d6-18eb2820ed58
;;; semantic/decorate/mode.el ends here
diff --git a/lisp/cedet/semantic/dep.el b/lisp/cedet/semantic/dep.el
index c05650caec..e47f82f391 100644
--- a/lisp/cedet/semantic/dep.el
+++ b/lisp/cedet/semantic/dep.el
@@ -1,6 +1,6 @@
;;; semantic/dep.el --- Methods for tracking dependencies (include files)
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: syntax
@@ -231,5 +231,4 @@ provided mode, not from the current major mode."
;; generated-autoload-load-name: "semantic/dep"
;; End:
-;; arch-tag: f6975d6a-845f-44c5-9a22-5dfeee46dce2
;;; semantic/dep.el ends here
diff --git a/lisp/cedet/semantic/doc.el b/lisp/cedet/semantic/doc.el
index aca01bd983..e5579d0911 100644
--- a/lisp/cedet/semantic/doc.el
+++ b/lisp/cedet/semantic/doc.el
@@ -1,7 +1,6 @@
;;; semantic/doc.el --- Routines for documentation strings
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1999-2003, 2005, 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: syntax
@@ -127,5 +126,4 @@ If NOSNARF is 'lex, then return the lex token."
;; generated-autoload-load-name: "semantic/doc"
;; End:
-;; arch-tag: fe6e965b-4a81-4304-aab8-22ca113194ca
;;; semantic/doc.el ends here
diff --git a/lisp/cedet/semantic/ede-grammar.el b/lisp/cedet/semantic/ede-grammar.el
index 90c72990ca..a436105317 100644
--- a/lisp/cedet/semantic/ede-grammar.el
+++ b/lisp/cedet/semantic/ede-grammar.el
@@ -1,7 +1,6 @@
;;; semantic/ede-grammar.el --- EDE support for Semantic Grammar Files
-;; Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2004, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: project, make
diff --git a/lisp/cedet/semantic/edit.el b/lisp/cedet/semantic/edit.el
index 0f18d49b7c..ef206fd312 100644
--- a/lisp/cedet/semantic/edit.el
+++ b/lisp/cedet/semantic/edit.el
@@ -1,7 +1,6 @@
;;; semantic/edit.el --- Edit Management for Semantic
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -966,5 +965,4 @@ lost if not transferred into NEWTAG."
;; generated-autoload-load-name: "semantic/edit"
;; End:
-;; arch-tag: 91c7fbf0-a418-4220-a90a-b58c74b450e3
;;; semantic/edit.el ends here
diff --git a/lisp/cedet/semantic/find.el b/lisp/cedet/semantic/find.el
index 0e4b88cd96..c62ed81894 100644
--- a/lisp/cedet/semantic/find.el
+++ b/lisp/cedet/semantic/find.el
@@ -1,7 +1,6 @@
;;; semantic/find.el --- Search routines for Semantic
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1999-2005, 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: syntax
@@ -700,5 +699,4 @@ details are available of findable."
;; generated-autoload-load-name: "semantic/find"
;; End:
-;; arch-tag: db00c93e-e561-4bd6-942b-96eca5aaa9a6
;;; semantic/find.el ends here
diff --git a/lisp/cedet/semantic/format.el b/lisp/cedet/semantic/format.el
index fbdf343f7e..ecd03ccec7 100644
--- a/lisp/cedet/semantic/format.el
+++ b/lisp/cedet/semantic/format.el
@@ -1,7 +1,6 @@
;;; semantic/format.el --- Routines for formatting tags
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: syntax
@@ -720,5 +719,4 @@ Optional argument COLOR means highlight the prototype with font-lock colors."
;; generated-autoload-load-name: "semantic/format"
;; End:
-;; arch-tag: deae500e-20b6-437e-8856-884f6c46bc3e
;;; semantic/format.el ends here
diff --git a/lisp/cedet/semantic/fw.el b/lisp/cedet/semantic/fw.el
index 811508377b..ca3015c594 100644
--- a/lisp/cedet/semantic/fw.el
+++ b/lisp/cedet/semantic/fw.el
@@ -1,7 +1,6 @@
;;; semantic/fw.el --- Framework for Semantic
-;;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -395,5 +394,4 @@ FILE, NOWARN, RAWFILE, and WILDCARDS are passed into `find-file-noselect'"
(provide 'semantic/fw)
-;; arch-tag: e7eeffbf-112b-4665-92fc-5f69479ca2c4
;;; semantic/fw.el ends here
diff --git a/lisp/cedet/semantic/grammar-wy.el b/lisp/cedet/semantic/grammar-wy.el
index d50a618fd3..acaad49f6a 100644
--- a/lisp/cedet/semantic/grammar-wy.el
+++ b/lisp/cedet/semantic/grammar-wy.el
@@ -1,6 +1,6 @@
;;; semantic/grammar-wy.el --- Generated parser support file
-;; Copyright (C) 2002, 2003, 2004, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2004, 2009-2011 Free Software Foundation, Inc.
;; Author: David Ponce <[email protected]>
;; Keywords: syntax
@@ -475,5 +475,4 @@
(provide 'semantic/grammar-wy)
-;; arch-tag: dd050eb7-84a8-421c-b734-478dd2bd55bc
;;; semantic/grammar-wy.el ends here
diff --git a/lisp/cedet/semantic/grammar.el b/lisp/cedet/semantic/grammar.el
index 513c211ee7..270668e295 100644
--- a/lisp/cedet/semantic/grammar.el
+++ b/lisp/cedet/semantic/grammar.el
@@ -1,7 +1,6 @@
;;; semantic/grammar.el --- Major mode framework for Semantic grammars
-;; Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2005, 2007-2011 Free Software Foundation, Inc.
;; Author: David Ponce <[email protected]>
;; Maintainer: David Ponce <[email protected]>
diff --git a/lisp/cedet/semantic/html.el b/lisp/cedet/semantic/html.el
index 7597370dff..80c0a0ddb9 100644
--- a/lisp/cedet/semantic/html.el
+++ b/lisp/cedet/semantic/html.el
@@ -1,6 +1,6 @@
;;; semantic/html.el --- Semantic details for html files
-;; Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2004-2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -262,5 +262,4 @@ tag with greater section value than LEVEL is found."
;; generated-autoload-load-name: "semantic/html"
;; End:
-;; arch-tag: 2a088b99-4585-46d5-bce8-3a5a8ec5eb2e
;;; semantic/html.el ends here
diff --git a/lisp/cedet/semantic/ia-sb.el b/lisp/cedet/semantic/ia-sb.el
index 43a54d8f1a..57067936a9 100644
--- a/lisp/cedet/semantic/ia-sb.el
+++ b/lisp/cedet/semantic/ia-sb.el
@@ -1,7 +1,6 @@
;;; semantic/ia-sb.el --- Speedbar analysis display interactor
-;;; Copyright (C) 2002, 2003, 2004, 2006, 2008, 2009, 2010
-;;; Free Software Foundation, Inc.
+;;; Copyright (C) 2002-2004, 2006, 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: syntax
@@ -367,5 +366,4 @@ TEXT TAG and INDENT are the details."
;; generated-autoload-load-name: "semantic/ia-sb"
;; End:
-;; arch-tag: 4ab9f509-6978-415f-9938-9266edad9886
;;; semantic/ia-sb.el ends here
diff --git a/lisp/cedet/semantic/ia.el b/lisp/cedet/semantic/ia.el
index c7e1458fa3..69b1dba0bc 100644
--- a/lisp/cedet/semantic/ia.el
+++ b/lisp/cedet/semantic/ia.el
@@ -1,7 +1,6 @@
;;; semantic/ia.el --- Interactive Analysis functions
-;;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: syntax
@@ -445,5 +444,4 @@ parts of the parent classes are displayed."
;; generated-autoload-load-name: "semantic/ia"
;; End:
-;; arch-tag: ceeed1f2-e5b6-4f7c-a85a-a2f8ee0193ca
;;; semantic/ia.el ends here
diff --git a/lisp/cedet/semantic/idle.el b/lisp/cedet/semantic/idle.el
index 585ad693dc..f17a5471d7 100644
--- a/lisp/cedet/semantic/idle.el
+++ b/lisp/cedet/semantic/idle.el
@@ -1,7 +1,6 @@
;;; idle.el --- Schedule parsing tasks in idle time
-;; Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2006, 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: syntax
@@ -1315,5 +1314,4 @@ mouse-3: popup context menu"
;; generated-autoload-load-name: "semantic/idle"
;; End:
-;; arch-tag: 4bfd54da-5023-4cc1-91ae-e1fefc1a8d1b
;;; semantic-idle.el ends here
diff --git a/lisp/cedet/semantic/imenu.el b/lisp/cedet/semantic/imenu.el
index 465a93a16d..e7e1da55ce 100644
--- a/lisp/cedet/semantic/imenu.el
+++ b/lisp/cedet/semantic/imenu.el
@@ -1,6 +1,6 @@
;;; semantic/imenu.el --- Use Semantic as an imenu tag generator
-;;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2010
+;;; Copyright (C) 2000-2005, 2007-2008, 2010-2011
;; Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/lisp/cedet/semantic/java.el b/lisp/cedet/semantic/java.el
index 099dc1b40c..4489d0ffae 100644
--- a/lisp/cedet/semantic/java.el
+++ b/lisp/cedet/semantic/java.el
@@ -1,7 +1,6 @@
;;; semantic/java.el --- Semantic functions for Java
-;;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: David Ponce <[email protected]>
@@ -459,5 +458,4 @@ removed from the result list."
(provide 'semantic/java)
-;; arch-tag: ca14cb88-9343-48a9-9aa0-14d05be8d49f
;;; semantic/java.el ends here
diff --git a/lisp/cedet/semantic/lex-spp.el b/lisp/cedet/semantic/lex-spp.el
index 0b4fa930b1..de4cb7a9c6 100644
--- a/lisp/cedet/semantic/lex-spp.el
+++ b/lisp/cedet/semantic/lex-spp.el
@@ -1,6 +1,6 @@
;;; lex-spp.el --- Semantic Lexical Pre-processor
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -1230,5 +1230,4 @@ If BUFFER is not provided, use the current buffer."
;; generated-autoload-load-name: "semantic/lex-spp"
;; End:
-;; arch-tag: 8877d83e-07ea-4d86-a960-e3562138d8a5
;;; semantic-lex-spp.el ends here
diff --git a/lisp/cedet/semantic/lex.el b/lisp/cedet/semantic/lex.el
index 34663727a0..d6b8e1a8bf 100644
--- a/lisp/cedet/semantic/lex.el
+++ b/lisp/cedet/semantic/lex.el
@@ -1,7 +1,6 @@
;;; semantic/lex.el --- Lexical Analyzer builder
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/lisp/cedet/semantic/mru-bookmark.el b/lisp/cedet/semantic/mru-bookmark.el
index b723a848c1..47915e8ad5 100644
--- a/lisp/cedet/semantic/mru-bookmark.el
+++ b/lisp/cedet/semantic/mru-bookmark.el
@@ -1,6 +1,6 @@
;;; semantic/mru-bookmark.el --- Automatic bookmark tracking
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -401,5 +401,4 @@ Useful for debugging mrub problems."
;; generated-autoload-load-name: "semantic/mru-bookmark"
;; End:
-;; arch-tag: 297fa190-2942-460b-941d-f117db4e1fbf
;;; semantic/mru-bookmark.el ends here
diff --git a/lisp/cedet/semantic/sb.el b/lisp/cedet/semantic/sb.el
index c65fcc42c6..88b0cc33d4 100644
--- a/lisp/cedet/semantic/sb.el
+++ b/lisp/cedet/semantic/sb.el
@@ -1,7 +1,6 @@
;;; semantic/sb.el --- Semantic tag display for speedbar
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: syntax
@@ -416,5 +415,4 @@ Returns the tag list, or t for an error."
(provide 'semantic/sb)
-;; arch-tag: 82aa0570-9e27-41a3-a834-2641dbb2f829
;;; semantic/sb.el ends here
diff --git a/lisp/cedet/semantic/scope.el b/lisp/cedet/semantic/scope.el
index f2472ef941..78a1fd049f 100644
--- a/lisp/cedet/semantic/scope.el
+++ b/lisp/cedet/semantic/scope.el
@@ -1,6 +1,6 @@
;;; semantic/scope.el --- Analyzer Scope Calculations
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -814,5 +814,4 @@ hits in order, with the first tag being in the closest scope."
;; generated-autoload-load-name: "semantic/scope"
;; End:
-;; arch-tag: 056ab514-3e28-4d6e-84ed-9283dce5a01e
;;; semantic/scope.el ends here
diff --git a/lisp/cedet/semantic/senator.el b/lisp/cedet/semantic/senator.el
index 76075cfb16..5399d4d564 100644
--- a/lisp/cedet/semantic/senator.el
+++ b/lisp/cedet/semantic/senator.el
@@ -1,7 +1,6 @@
;;; semantic/senator.el --- SEmantic NAvigaTOR
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: David Ponce <[email protected]>
;; Maintainer: FSF
@@ -861,5 +860,4 @@ Use a senator search function when semantic isearch mode is enabled."
;; generated-autoload-load-name: "semantic/senator"
;; End:
-;; arch-tag: 397100d0-e2db-467e-8c19-d8d4d99d51f1
;;; semantic/senator.el ends here
diff --git a/lisp/cedet/semantic/sort.el b/lisp/cedet/semantic/sort.el
index 064ef19ab9..d62c3bb17d 100644
--- a/lisp/cedet/semantic/sort.el
+++ b/lisp/cedet/semantic/sort.el
@@ -1,7 +1,6 @@
;;; sort.el --- Utilities for sorting and re-arranging tag tables.
-;;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007,
-;;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 1999-2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: syntax
@@ -566,5 +565,4 @@ See `semantic-tag-external-class' for details."
;; generated-autoload-load-name: "semantic/sort"
;; End:
-;; arch-tag: 9231c8e7-ac7f-4b35-9302-651a02e5fef0
;;; semantic-sort.el ends here
diff --git a/lisp/cedet/semantic/symref.el b/lisp/cedet/semantic/symref.el
index 667efede9a..61006802c0 100644
--- a/lisp/cedet/semantic/symref.el
+++ b/lisp/cedet/semantic/symref.el
@@ -1,6 +1,6 @@
;;; semantic/symref.el --- Symbol Reference API
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/lisp/cedet/semantic/symref/cscope.el b/lisp/cedet/semantic/symref/cscope.el
index 606570961b..b74b0501c2 100644
--- a/lisp/cedet/semantic/symref/cscope.el
+++ b/lisp/cedet/semantic/symref/cscope.el
@@ -1,6 +1,6 @@
;;; semantic/symref/cscope.el --- Semantic-symref support via cscope.
-;;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
diff --git a/lisp/cedet/semantic/symref/filter.el b/lisp/cedet/semantic/symref/filter.el
index 6ba7be01a3..1676e0764d 100644
--- a/lisp/cedet/semantic/symref/filter.el
+++ b/lisp/cedet/semantic/symref/filter.el
@@ -1,6 +1,6 @@
;;; semantic/symref/filter.el --- Filter symbol reference hits for accuracy.
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -137,5 +137,4 @@ Depends on the SRecode Field editing API."
(provide 'semantic/symref/filter)
-;; arch-tag: 14b9e795-02bf-408b-b375-c3f8ff6a4e38
;;; semantic/symref/filter.el ends here
diff --git a/lisp/cedet/semantic/symref/global.el b/lisp/cedet/semantic/symref/global.el
index 89e455d592..5af42a9658 100644
--- a/lisp/cedet/semantic/symref/global.el
+++ b/lisp/cedet/semantic/symref/global.el
@@ -1,6 +1,6 @@
;;; semantic/symref/global.el --- Use GNU Global for symbol references
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -70,5 +70,4 @@ Moves cursor to end of the match."
;; generated-autoload-load-name: "semantic/symref/global"
;; End:
-;; arch-tag: 1f061cc0-d8dd-44b1-9de3-3d00cb6e8abe
;;; semantic/symref/global.el ends here
diff --git a/lisp/cedet/semantic/symref/grep.el b/lisp/cedet/semantic/symref/grep.el
index 521babc1f6..1571622b29 100644
--- a/lisp/cedet/semantic/symref/grep.el
+++ b/lisp/cedet/semantic/symref/grep.el
@@ -1,6 +1,6 @@
;;; semantic/symref/grep.el --- Symref implementation using find/grep
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -187,5 +187,4 @@ Moves cursor to end of the match."
;; generated-autoload-load-name: "semantic/symref/grep"
;; End:
-;; arch-tag: 43d4469d-963c-4094-ac6f-99f7490973ce
;;; semantic/symref/grep.el ends here
diff --git a/lisp/cedet/semantic/symref/idutils.el b/lisp/cedet/semantic/symref/idutils.el
index 8ec609e9a9..6098f0265e 100644
--- a/lisp/cedet/semantic/symref/idutils.el
+++ b/lisp/cedet/semantic/symref/idutils.el
@@ -1,6 +1,6 @@
;;; semantic/symref/idutils.el --- Symref implementation for idutils
-;;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -72,5 +72,4 @@ Moves cursor to end of the match."
;; generated-autoload-load-name: "semantic/symref/idutils"
;; End:
-;; arch-tag: 7e872652-cbe2-4083-a4d3-2a7c88c4c65c
;;; semantic/symref/idutils.el ends here
diff --git a/lisp/cedet/semantic/symref/list.el b/lisp/cedet/semantic/symref/list.el
index 9be53d90b0..a09928c7df 100644
--- a/lisp/cedet/semantic/symref/list.el
+++ b/lisp/cedet/semantic/symref/list.el
@@ -1,6 +1,6 @@
;;; semantic/symref/list.el --- Symref Output List UI.
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -189,6 +189,7 @@ Display the references in`semantic-symref-results-mode'."
"The current results in a results mode buffer.")
(defun semantic-symref-results-mode (results)
+ ;; FIXME: Use define-derived-mode.
"Major-mode for displaying Semantic Symbol Reference RESULTS.
RESULTS is an object of class `semantic-symref-results'."
(interactive)
@@ -204,7 +205,7 @@ RESULTS is an object of class `semantic-symref-results'."
(buffer-disable-undo)
(set (make-local-variable 'font-lock-global-modes) nil)
(font-lock-mode -1)
- (run-hooks 'semantic-symref-results-mode-hook)
+ (run-mode-hooks 'semantic-symref-results-mode-hook)
)
(defun semantic-symref-hide-buffer ()
diff --git a/lisp/cedet/semantic/tag-file.el b/lisp/cedet/semantic/tag-file.el
index ab08ea52dd..17fd3b4535 100644
--- a/lisp/cedet/semantic/tag-file.el
+++ b/lisp/cedet/semantic/tag-file.el
@@ -1,7 +1,6 @@
;;; semantic/tag-file.el --- Routines that find files based on tags.
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: syntax
diff --git a/lisp/cedet/semantic/tag-ls.el b/lisp/cedet/semantic/tag-ls.el
index 3fd02949ad..8f54698d50 100644
--- a/lisp/cedet/semantic/tag-ls.el
+++ b/lisp/cedet/semantic/tag-ls.el
@@ -1,7 +1,6 @@
;;; semantic/tag-ls.el --- Language Specific override functions for tags
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -251,5 +250,4 @@ Return the name of TAG found in the toplevel STREAM."
;; generated-autoload-load-name: "semantic/tag-ls"
;; End:
-;; arch-tag: 06041439-e4bf-46f9-ab30-7805888d4464
;;; semantic/tag-ls.el ends here
diff --git a/lisp/cedet/semantic/tag-write.el b/lisp/cedet/semantic/tag-write.el
index a64791e952..d54d007f22 100644
--- a/lisp/cedet/semantic/tag-write.el
+++ b/lisp/cedet/semantic/tag-write.el
@@ -1,6 +1,6 @@
;;; semantic/tag-write.el --- Write tags to a text stream
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -175,5 +175,4 @@ The VALUE is a list of tags."
;; generated-autoload-load-name: "semantic/tag-write"
;; End:
-;; arch-tag: aa2301b3-f0c5-4d73-b456-43eaba5b2198
;;; semantic/tag-write.el ends here
diff --git a/lisp/cedet/semantic/tag.el b/lisp/cedet/semantic/tag.el
index 0195a29b66..cf3f5b603c 100644
--- a/lisp/cedet/semantic/tag.el
+++ b/lisp/cedet/semantic/tag.el
@@ -1,7 +1,6 @@
;;; semantic/tag.el --- tag creation and access
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -1369,5 +1368,4 @@ and `semantic-tag-type-interfaces' instead" "23.2")
;; generated-autoload-load-name: "semantic/tag"
;; End:
-;; arch-tag: f7813634-c4f0-4817-a487-cbaa84333353
;;; semantic/tag.el ends here
diff --git a/lisp/cedet/semantic/texi.el b/lisp/cedet/semantic/texi.el
index 2879998a1a..66327cbe2f 100644
--- a/lisp/cedet/semantic/texi.el
+++ b/lisp/cedet/semantic/texi.el
@@ -1,7 +1,6 @@
;;; semantic/texi.el --- Semantic details for Texinfo files
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -688,5 +687,4 @@ If TAG is nil, it is derived from the deffn under POINT."
(provide 'semantic/texi)
-;; arch-tag: a8649049-46da-407b-a620-d175c1fedca6
;;; semantic/texi.el ends here
diff --git a/lisp/cedet/semantic/util-modes.el b/lisp/cedet/semantic/util-modes.el
index ccfdc1c906..a08f4a31b3 100644
--- a/lisp/cedet/semantic/util-modes.el
+++ b/lisp/cedet/semantic/util-modes.el
@@ -1,7 +1,6 @@
;;; semantic/util-modes.el --- Semantic minor modes
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2000-2005, 2007-2011 Free Software Foundation, Inc.
;; Authors: Eric M. Ludlam <[email protected]>
;; David Ponce <[email protected]>
@@ -1011,5 +1010,4 @@ function was called, move the overlay."
;; generated-autoload-load-name: "semantic/util-modes"
;; End:
-;; arch-tag: 18f5a3d8-1fd7-4c17-b149-a313c126987d
;;; semantic/util-modes.el ends here
diff --git a/lisp/cedet/semantic/util.el b/lisp/cedet/semantic/util.el
index 2b3f53a49d..acf5f95a21 100644
--- a/lisp/cedet/semantic/util.el
+++ b/lisp/cedet/semantic/util.el
@@ -1,7 +1,6 @@
;;; semantic/util.el --- Utilities for use with semantic tag tables
-;;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007,
-;;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 1999-2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: syntax
@@ -436,5 +435,4 @@ determining which symbols are considered."
;;
(require 'semantic/util-modes)
-;; arch-tag: eaa7808d-83b9-43fe-adf0-4fb742dcb956
;;; semantic/util.el ends here
diff --git a/lisp/cedet/semantic/wisent.el b/lisp/cedet/semantic/wisent.el
index b2641939ab..04669b9966 100644
--- a/lisp/cedet/semantic/wisent.el
+++ b/lisp/cedet/semantic/wisent.el
@@ -1,7 +1,6 @@
;;; semantic/wisent.el --- Wisent - Semantic gateway
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2007, 2009-2011 Free Software Foundation, Inc.
;; Author: David Ponce <[email protected]>
;; Maintainer: David Ponce <[email protected]>
@@ -343,5 +342,4 @@ the standard function `semantic-parse-region'."
(provide 'semantic/wisent)
-;; arch-tag: c24ddd69-d41c-4604-8221-29a93fc4fa79
;;; semantic/wisent.el ends here
diff --git a/lisp/cedet/semantic/wisent/comp.el b/lisp/cedet/semantic/wisent/comp.el
index 90585399b7..c3243c1292 100644
--- a/lisp/cedet/semantic/wisent/comp.el
+++ b/lisp/cedet/semantic/wisent/comp.el
@@ -1,7 +1,6 @@
;;; semantic/wisent/comp.el --- GNU Bison for Emacs - Grammar compiler
-;; Copyright (C) 1984, 1986, 1989, 1992, 1995, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2009, 2010
+;; Copyright (C) 1984, 1986, 1989, 1992, 1995, 2000-2007, 2009-2011
;; Free Software Foundation, Inc.
;; Author: David Ponce <[email protected]>
diff --git a/lisp/cedet/semantic/wisent/java-tags.el b/lisp/cedet/semantic/wisent/java-tags.el
index 4bdb6c74c7..d0647d8e27 100644
--- a/lisp/cedet/semantic/wisent/java-tags.el
+++ b/lisp/cedet/semantic/wisent/java-tags.el
@@ -1,7 +1,6 @@
;;; semantic/wisent/java-tags.el --- Java LALR parser for Emacs
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2006, 2009-2011 Free Software Foundation, Inc.
;; Author: David Ponce <[email protected]>
;; Maintainer: David Ponce <[email protected]>
@@ -121,5 +120,4 @@ Use the alternate LALR(1) parser."
;; generated-autoload-load-name: "semantic/wisent/java-tags"
;; End:
-;; arch-tag: 4125e018-58db-4456-b878-e58c602f4add
;;; semantic/wisent/java-tags.el ends here
diff --git a/lisp/cedet/semantic/wisent/javascript.el b/lisp/cedet/semantic/wisent/javascript.el
index df3bbfecaa..9b261439d1 100644
--- a/lisp/cedet/semantic/wisent/javascript.el
+++ b/lisp/cedet/semantic/wisent/javascript.el
@@ -1,6 +1,6 @@
;;; semantic/wisent/javascript.el --- javascript parser support
-;; Copyright (C) 2005, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2005, 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Ludlam <[email protected]>
;; Keywords: syntax
@@ -102,5 +102,4 @@ This function overrides `get-local-variables'."
;; generated-autoload-load-name: "semantic/wisent/javascript"
;; End:
-;; arch-tag: 15416a3a-84ca-4b3b-a13c-e7a1891ec3ea
;;; semantic/wisent/javascript-jv.el ends here
diff --git a/lisp/cedet/semantic/wisent/javat-wy.el b/lisp/cedet/semantic/wisent/javat-wy.el
index 0bd9b5ed2b..adea4ef693 100644
--- a/lisp/cedet/semantic/wisent/javat-wy.el
+++ b/lisp/cedet/semantic/wisent/javat-wy.el
@@ -1,6 +1,6 @@
;;; semantic/wisent/javat-wy.el --- Generated parser support file
-;; Copyright (C) 2002, 2007, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2007, 2009-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -679,5 +679,4 @@ It ignores whitespaces, newlines and comments."
(provide 'semantic/wisent/javat-wy)
-;; arch-tag: b035ba00-e014-4c71-9bc7-a9dbf3d5b911
;;; semantic/wisent/javat-wy.el ends here
diff --git a/lisp/cedet/semantic/wisent/js-wy.el b/lisp/cedet/semantic/wisent/js-wy.el
index abe989ace4..e982caf448 100644
--- a/lisp/cedet/semantic/wisent/js-wy.el
+++ b/lisp/cedet/semantic/wisent/js-wy.el
@@ -1,6 +1,6 @@
;;; semantic/wisent/js-wy.el --- Generated parser support file
-;; Copyright (C) 2005, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2005, 2009-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -488,5 +488,4 @@
(provide 'semantic/wisent/js-wy)
-;; arch-tag: ff9ecf05-18e6-46a6-a3bb-e7f43f04640f
;;; semantic/wisent/js-wy.el ends here
diff --git a/lisp/cedet/semantic/wisent/python-wy.el b/lisp/cedet/semantic/wisent/python-wy.el
index 264ebe9bb7..3a69078b02 100644
--- a/lisp/cedet/semantic/wisent/python-wy.el
+++ b/lisp/cedet/semantic/wisent/python-wy.el
@@ -1,7 +1,6 @@
;;; semantic/wisent/python-wy.el --- Generated parser support file
-;; Copyright (C) 2002, 2003, 2004, 2007, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2004, 2007, 2010-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
diff --git a/lisp/cedet/semantic/wisent/python.el b/lisp/cedet/semantic/wisent/python.el
index 122e1bfb35..095a817f08 100644
--- a/lisp/cedet/semantic/wisent/python.el
+++ b/lisp/cedet/semantic/wisent/python.el
@@ -1,7 +1,6 @@
;;; wisent-python.el --- Semantic support for Python
-;; Copyright (C) 2002, 2004, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Richard Kim <[email protected]>
;; Maintainer: Richard Kim <[email protected]>
diff --git a/lisp/cedet/semantic/wisent/wisent.el b/lisp/cedet/semantic/wisent/wisent.el
index c34f6ab335..8c17d4ccab 100644
--- a/lisp/cedet/semantic/wisent/wisent.el
+++ b/lisp/cedet/semantic/wisent/wisent.el
@@ -1,7 +1,6 @@
;;; semantic/wisent/wisent.el --- GNU Bison for Emacs - Runtime
-;;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
-;;; Free Software Foundation, Inc.
+;;; Copyright (C) 2002-2007, 2009-2011 Free Software Foundation, Inc.
;; Author: David Ponce <[email protected]>
;; Maintainer: David Ponce <[email protected]>
@@ -476,5 +475,4 @@ automaton has only one entry point."
(provide 'semantic/wisent/wisent)
-;; arch-tag: c299c5a4-d96f-4f1c-8307-ef2af3c8bdcb
;;; semantic/wisent/wisent.el ends here
diff --git a/lisp/cedet/srecode.el b/lisp/cedet/srecode.el
index f27a2028b9..7b499d1a5e 100644
--- a/lisp/cedet/srecode.el
+++ b/lisp/cedet/srecode.el
@@ -1,6 +1,6 @@
;;; srecode.el --- Semantic buffer evaluator.
-;;; Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: codegeneration
@@ -52,5 +52,4 @@
(provide 'srecode)
-;; arch-tag: 6c671a1c-40e5-4ed3-ab05-84249c3afdaf
;;; srecode.el ends here
diff --git a/lisp/cedet/srecode/args.el b/lisp/cedet/srecode/args.el
index bb15bf5011..d8e02f978b 100644
--- a/lisp/cedet/srecode/args.el
+++ b/lisp/cedet/srecode/args.el
@@ -1,6 +1,6 @@
;;; srecode/args.el --- Provide some simple template arguments
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -186,4 +186,3 @@ do not contain any text from preceding or following text."
;;; srecode/args.el ends here
-;; arch-tag: 645fc31e-30a9-469b-9215-fb320a46ee96
diff --git a/lisp/cedet/srecode/compile.el b/lisp/cedet/srecode/compile.el
index de9b6f56de..0a117bad9b 100644
--- a/lisp/cedet/srecode/compile.el
+++ b/lisp/cedet/srecode/compile.el
@@ -1,6 +1,6 @@
;;; srecode/compile --- Compilation of srecode template files.
-;; Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: codegeneration
@@ -654,5 +654,4 @@ Argument INDENT specifies the indentation level for the list."
;; generated-autoload-load-name: "srecode/compile"
;; End:
-;; arch-tag: d993ffab-2704-4bb2-bd92-eafe803af3be
;;; srecode/compile.el ends here
diff --git a/lisp/cedet/srecode/cpp.el b/lisp/cedet/srecode/cpp.el
index 7fe2bdaa41..a46e8369c6 100644
--- a/lisp/cedet/srecode/cpp.el
+++ b/lisp/cedet/srecode/cpp.el
@@ -1,6 +1,6 @@
;;; srecode/cpp.el --- C++ specific handlers for Semantic Recoder
-;; Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Jan Moringen <[email protected]>
@@ -213,5 +213,4 @@ special behavior for tag of classes include, using and function."
;; generated-autoload-load-name: "srecode/cpp"
;; End:
-;; arch-tag: 4659755c-88b4-405e-818f-bb1f776a8e82
;;; srecode/cpp.el ends here
diff --git a/lisp/cedet/srecode/ctxt.el b/lisp/cedet/srecode/ctxt.el
index e14cb5720d..cae52428e7 100644
--- a/lisp/cedet/srecode/ctxt.el
+++ b/lisp/cedet/srecode/ctxt.el
@@ -1,6 +1,6 @@
;;; srecode/ctxt.el --- Derive a context from the source buffer.
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -244,5 +244,4 @@ This might add the following:
(provide 'srecode/ctxt)
-;; arch-tag: 5a004702-28e5-4e26-9b14-8a78eae49865
;;; srecode/ctxt.el ends here
diff --git a/lisp/cedet/srecode/dictionary.el b/lisp/cedet/srecode/dictionary.el
index cd97c88059..06496160b8 100644
--- a/lisp/cedet/srecode/dictionary.el
+++ b/lisp/cedet/srecode/dictionary.el
@@ -1,6 +1,6 @@
;;; srecode-dictionary.el --- Dictionary code for the semantic recoder.
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -708,5 +708,4 @@ STATE is the current compiler state."
(provide 'srecode/dictionary)
-;; arch-tag: c664179c-171c-4709-9b56-d5a2fd30e457
;;; srecode/dictionary.el ends here
diff --git a/lisp/cedet/srecode/document.el b/lisp/cedet/srecode/document.el
index 2d551a5f76..bccc85fb82 100644
--- a/lisp/cedet/srecode/document.el
+++ b/lisp/cedet/srecode/document.el
@@ -1,6 +1,6 @@
;;; srecode/document.el --- Documentation (comment) generation
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -837,5 +837,4 @@ not account for verb parts."
;; generated-autoload-load-name: "srecode/document"
;; End:
-;; arch-tag: 5ce9b30b-7862-4ab8-b3f8-a4df37a2e0fe
;;; srecode/document.el ends here
diff --git a/lisp/cedet/srecode/el.el b/lisp/cedet/srecode/el.el
index adce8e6289..03ea977366 100644
--- a/lisp/cedet/srecode/el.el
+++ b/lisp/cedet/srecode/el.el
@@ -1,6 +1,6 @@
;;; srecode/el.el --- Emacs Lisp specific arguments
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -109,5 +109,4 @@ Calls `srecode-semantic-apply-tag-to-dict-default' first."
;; generated-autoload-load-name: "srecode/el"
;; End:
-;; arch-tag: c1852a36-d45b-4263-8f3e-03f4f3c795d9
;;; srecode/el.el ends here
diff --git a/lisp/cedet/srecode/expandproto.el b/lisp/cedet/srecode/expandproto.el
index e0e70ec268..89dc9adcef 100644
--- a/lisp/cedet/srecode/expandproto.el
+++ b/lisp/cedet/srecode/expandproto.el
@@ -1,6 +1,6 @@
;;; srecode/expandproto.el --- Expanding prototypes.
-;; Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -129,5 +129,4 @@
;; generated-autoload-load-name: "srecode/expandproto"
;; End:
-;; arch-tag: f0371b5f-9bec-46a1-9b5d-8dff0e897426
;;; srecode/expandproto.el ends here
diff --git a/lisp/cedet/srecode/extract.el b/lisp/cedet/srecode/extract.el
index 90eda53333..dba4b876ed 100644
--- a/lisp/cedet/srecode/extract.el
+++ b/lisp/cedet/srecode/extract.el
@@ -1,6 +1,6 @@
;;; srecode/extract.el --- Extract content from previously inserted macro.
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -239,5 +239,4 @@ Return nil if nothing was extracted."
(provide 'srecode/extract)
-;; arch-tag: 051f5901-46ae-4319-8c84-16daf971e226
;;; srecode/extract.el ends here
diff --git a/lisp/cedet/srecode/fields.el b/lisp/cedet/srecode/fields.el
index ceb5f77f87..088781cfb5 100644
--- a/lisp/cedet/srecode/fields.el
+++ b/lisp/cedet/srecode/fields.el
@@ -1,6 +1,6 @@
;;; srecode/fields.el --- Handling type-in fields in a buffer.
;;
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;;
;; Author: Eric M. Ludlam <[email protected]>
@@ -447,5 +447,4 @@ PRE-LEN is used in the after mode for the length of the changed text."
(provide 'srecode/fields)
-;; arch-tag: 00cea6f0-42ac-4b15-b778-46e6db0bfcb5
;;; srecode/fields.el ends here
diff --git a/lisp/cedet/srecode/filters.el b/lisp/cedet/srecode/filters.el
index 5fd6ebb344..cc942e53ff 100644
--- a/lisp/cedet/srecode/filters.el
+++ b/lisp/cedet/srecode/filters.el
@@ -1,6 +1,6 @@
;;; srecode/filters.el --- Filters for use in template variables.
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -54,4 +54,3 @@
;;; srecode/filters.el ends here
-;; arch-tag: fcc95ddc-8d9a-4b15-bb51-2707ead986c7
diff --git a/lisp/cedet/srecode/find.el b/lisp/cedet/srecode/find.el
index 9c5a897fc4..fdca64a7da 100644
--- a/lisp/cedet/srecode/find.el
+++ b/lisp/cedet/srecode/find.el
@@ -1,6 +1,6 @@
;;;; srecode/find.el --- Tools for finding templates in the database.
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -278,5 +278,4 @@ DEFAULT is what to use if the user presses RET."
(provide 'srecode/find)
-;; arch-tag: 49d18e58-45a0-48f5-92e1-4a1dcd4e36a6
;;; srecode/find.el ends here
diff --git a/lisp/cedet/srecode/getset.el b/lisp/cedet/srecode/getset.el
index a90f3a6d67..a582d4ff59 100644
--- a/lisp/cedet/srecode/getset.el
+++ b/lisp/cedet/srecode/getset.el
@@ -1,6 +1,6 @@
;;; srecode/getset.el --- Package for inserting new get/set methods.
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -363,5 +363,4 @@ Base selection on the field related to POINT."
;; generated-autoload-load-name: "srecode/getset"
;; End:
-;; arch-tag: c2098b7a-df7f-4e8a-a9e3-2be8798a7554
;;; srecode/getset.el ends here
diff --git a/lisp/cedet/srecode/insert.el b/lisp/cedet/srecode/insert.el
index 843b577e1e..931d0b3d73 100644
--- a/lisp/cedet/srecode/insert.el
+++ b/lisp/cedet/srecode/insert.el
@@ -1,6 +1,6 @@
;;; srecode/insert --- Insert srecode templates to an output stream.
-;; Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -1020,5 +1020,4 @@ template where a ^ inserter occurs."
;; generated-autoload-load-name: "srecode/insert"
;; End:
-;; arch-tag: a5aa3401-924a-4617-8513-2f0f01256872
;;; srecode/insert.el ends here
diff --git a/lisp/cedet/srecode/java.el b/lisp/cedet/srecode/java.el
index c4417b2499..69534e053f 100644
--- a/lisp/cedet/srecode/java.el
+++ b/lisp/cedet/srecode/java.el
@@ -1,6 +1,6 @@
;;; srecode-java.el --- Srecode Java support
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -58,5 +58,4 @@ FILENAME_AS_CLASS - file converted to a Java class name."
;; generated-autoload-load-name: "srecode/java"
;; End:
-;; arch-tag: d796b86c-3a0e-457c-a346-9f1ccfdc5e2c
;;; srecode/java.el ends here
diff --git a/lisp/cedet/srecode/map.el b/lisp/cedet/srecode/map.el
index 3a833ca8bb..126f41eb7f 100644
--- a/lisp/cedet/srecode/map.el
+++ b/lisp/cedet/srecode/map.el
@@ -1,6 +1,6 @@
;;; srecode/map.el --- Manage a template file map
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -415,5 +415,4 @@ Return non-nil if the map changed."
;; generated-autoload-load-name: "srecode/map"
;; End:
-;; arch-tag: dc90c737-1e87-455a-bbd1-6b72cdbfb7fd
;;; srecode/map.el ends here
diff --git a/lisp/cedet/srecode/mode.el b/lisp/cedet/srecode/mode.el
index 32bf665d06..6ca0cefe9a 100644
--- a/lisp/cedet/srecode/mode.el
+++ b/lisp/cedet/srecode/mode.el
@@ -1,6 +1,6 @@
;;; srecode/mode.el --- Minor mode for managing and using SRecode templates
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -396,5 +396,4 @@ programming modes."
;; generated-autoload-load-name: "srecode/mode"
;; End:
-;; arch-tag: 56ad9d6b-899b-4a68-8636-1432b6bc149b
;;; srecode/mode.el ends here
diff --git a/lisp/cedet/srecode/semantic.el b/lisp/cedet/srecode/semantic.el
index fd8419add6..4a1a15c1d1 100644
--- a/lisp/cedet/srecode/semantic.el
+++ b/lisp/cedet/srecode/semantic.el
@@ -1,6 +1,6 @@
;;; srecode/semantic.el --- Semantic specific extensions to SRecode.
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -428,5 +428,4 @@ as `function' will leave point where code might be inserted."
(provide 'srecode/semantic)
-;; arch-tag: b87ccbd6-bd87-48bc-8182-1043a9052d79
;;; srecode/semantic.el ends here
diff --git a/lisp/cedet/srecode/srt-mode.el b/lisp/cedet/srecode/srt-mode.el
index 5fb2433b19..5a407aad13 100644
--- a/lisp/cedet/srecode/srt-mode.el
+++ b/lisp/cedet/srecode/srt-mode.el
@@ -1,6 +1,6 @@
;;; srecode/srt-mode.el --- Major mode for writing screcode macros
-;; Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2005, 2007-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -183,27 +183,20 @@ we can tell font lock about them.")
"Keymap used in srecode mode.")
;;;###autoload
-(defun srecode-template-mode ()
+(define-derived-mode srecode-template-mode fundamental-mode "SRecorder"
"Major-mode for writing SRecode macros."
- (interactive)
- (kill-all-local-variables)
- (setq major-mode 'srecode-template-mode
- mode-name "SRecoder"
- comment-start ";;"
+ (setq comment-start ";;"
comment-end "")
(set (make-local-variable 'parse-sexp-ignore-comments) t)
(set (make-local-variable 'comment-start-skip)
"\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+ *")
- (set-syntax-table srecode-template-mode-syntax-table)
- (use-local-map srecode-template-mode-map)
(set (make-local-variable 'font-lock-defaults)
'(srecode-font-lock-keywords
nil ;; perform string/comment fontification
nil ;; keywords are case sensitive.
;; This puts _ & - as a word constituant,
;; simplifying our keywords significantly
- ((?_ . "w") (?- . "w"))))
- (run-hooks 'srecode-template-mode-hook))
+ ((?_ . "w") (?- . "w")))))
;;;###autoload
(defalias 'srt-mode 'srecode-template-mode)
@@ -747,5 +740,4 @@ When optional BUFFER is provided, search that buffer."
;; generated-autoload-load-name: "srecode/srt-mode"
;; End:
-;; arch-tag: 9c613c25-d885-417a-8f0d-1824b26b22a5
;;; srecode/srt-mode.el ends here
diff --git a/lisp/cedet/srecode/srt-wy.el b/lisp/cedet/srecode/srt-wy.el
index 0fa20c7e01..2fb8e7665e 100644
--- a/lisp/cedet/srecode/srt-wy.el
+++ b/lisp/cedet/srecode/srt-wy.el
@@ -1,6 +1,6 @@
;;; srecode/srt-wy.el --- Generated parser support file
-;; Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2005, 2007-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -274,5 +274,4 @@ It ignores whitespace, newlines and comments."
(provide 'srecode/srt-wy)
-;; arch-tag: 1be4c0bc-2a79-4f75-a07a-1ac518f41271
;;; srecode/srt-wy.el ends here
diff --git a/lisp/cedet/srecode/srt.el b/lisp/cedet/srecode/srt.el
index 17ff30e4c9..4ea554f1de 100644
--- a/lisp/cedet/srecode/srt.el
+++ b/lisp/cedet/srecode/srt.el
@@ -1,6 +1,6 @@
;;; srecode/srt.el --- argument handlers for SRT files
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -104,5 +104,4 @@ MODE - The mode of this buffer. If not declared yet, guess."
(provide 'srecode/srt)
-;; arch-tag: fb69da04-0bd6-48fe-b935-f8668420ecaf
;;; srecode/srt.el ends here
diff --git a/lisp/cedet/srecode/table.el b/lisp/cedet/srecode/table.el
index 2c95d4f641..52a7765c85 100644
--- a/lisp/cedet/srecode/table.el
+++ b/lisp/cedet/srecode/table.el
@@ -1,6 +1,6 @@
;;; srecode/table.el --- Tables of Semantic Recoders
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -259,4 +259,3 @@ Use PREDICATE is the same as for the `sort' function."
;;; srecode/table.el ends here
-;; arch-tag: 547d2f1d-2694-49b3-ab13-b2cda6b25b4d
diff --git a/lisp/cedet/srecode/template.el b/lisp/cedet/srecode/template.el
index 36c7545da3..e0cf42b75d 100644
--- a/lisp/cedet/srecode/template.el
+++ b/lisp/cedet/srecode/template.el
@@ -1,6 +1,6 @@
;;; srecode-template.el --- SRecoder template language parser support.
-;; Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2005, 2007-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -72,5 +72,4 @@
;; generated-autoload-load-name: "srecode/template"
;; End:
-;; arch-tag: 037fbca7-e846-4521-b801-3463f50c3080
;;; srecode/template.el ends here
diff --git a/lisp/cedet/srecode/texi.el b/lisp/cedet/srecode/texi.el
index 30ba91cadf..38d8e765d4 100644
--- a/lisp/cedet/srecode/texi.el
+++ b/lisp/cedet/srecode/texi.el
@@ -1,6 +1,6 @@
;;; srecode-texi.el --- Srecode texinfo support.
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -285,5 +285,4 @@ that class.
;; generated-autoload-load-name: "srecode/texi"
;; End:
-;; arch-tag: 6f0e7f45-2281-49e4-b73c-680cba477094
;;; srecode/texi.el ends here
diff --git a/lisp/chistory.el b/lisp/chistory.el
index 3ce1d8dc3f..09f6e205cd 100644
--- a/lisp/chistory.el
+++ b/lisp/chistory.el
@@ -1,7 +1,6 @@
;;; chistory.el --- list command history
-;; Copyright (C) 1985, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc.
;; Author: K. Shane Hartman
;; Maintainer: FSF
@@ -189,5 +188,4 @@ and runs the normal hook `command-history-hook'."
(provide 'chistory)
-;; arch-tag: c201a0cd-89f2-4d39-a532-4cb309391dbd
;;; chistory.el ends here
diff --git a/lisp/cmuscheme.el b/lisp/cmuscheme.el
index 9cf5356fa6..fc1134f03d 100644
--- a/lisp/cmuscheme.el
+++ b/lisp/cmuscheme.el
@@ -1,7 +1,6 @@
;;; cmuscheme.el --- Scheme process in a buffer. Adapted from tea.el
-;; Copyright (C) 1988, 1994, 1997, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1994, 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Olin Shivers <[email protected]>
;; Maintainer: FSF
@@ -523,5 +522,4 @@ This is a good place to put keybindings."
(provide 'cmuscheme)
-;; arch-tag: e8795f4a-c496-45a2-97b4-8e0f2a2c57d2
;;; cmuscheme.el ends here
diff --git a/lisp/gnus/color.el b/lisp/color.el
index 07044333c4..5c95fffbfa 100644
--- a/lisp/gnus/color.el
+++ b/lisp/color.el
@@ -1,6 +1,6 @@
;;; color.el --- Color manipulation laboratory routines -*- coding: utf-8; -*-
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Julien Danjou <[email protected]>
;; Keywords: html
diff --git a/lisp/comint.el b/lisp/comint.el
index b4d06cefaf..711ebce20a 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -1,8 +1,6 @@
;;; comint.el --- general command interpreter in a window stuff
-;; Copyright (C) 1988, 1990, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1990, 1992-2011 Free Software Foundation, Inc.
;; Author: Olin Shivers <[email protected]>
;; Simon Marshall <[email protected]>
@@ -227,9 +225,7 @@ This variable is buffer-local."
:group 'comint)
(defface comint-highlight-prompt
- '((((min-colors 88) (background dark)) (:foreground "cyan1"))
- (((background dark)) (:foreground "cyan"))
- (t (:foreground "dark blue")))
+ '((t :inherit minibuffer-prompt))
"Face to use to highlight prompts."
:group 'comint)
@@ -609,8 +605,9 @@ mode, Shell mode, etc. This can be done by setting the hooks
and `comint-get-old-input' to appropriate functions, and the variable
`comint-prompt-regexp' to the appropriate regular expression.
-An input history is maintained of size `comint-input-ring-size', and
-can be accessed with the commands \\[comint-next-input], \\[comint-previous-input], and \\[comint-dynamic-list-input-ring].
+The mode maintains an input history of size `comint-input-ring-size'.
+You can access this with the commands \\[comint-next-input],
+\\[comint-previous-input], and \\[comint-dynamic-list-input-ring].
Input ring history expansion can be achieved with the commands
\\[comint-replace-by-expanded-history] or \\[comint-magic-space].
Input ring expansion is controlled by the variable `comint-input-autoexpand',
@@ -920,41 +917,36 @@ See also `comint-input-ignoredups' and `comint-write-input-ring'."
(message "Cannot read history file %s"
comint-input-ring-file-name)))
(t
- (let* ((history-buf (get-buffer-create " *temp*"))
- (file comint-input-ring-file-name)
+ (let* ((file comint-input-ring-file-name)
(count 0)
(size comint-input-ring-size)
(ring (make-ring size)))
- (unwind-protect
- (with-current-buffer history-buf
- (widen)
- (erase-buffer)
- (insert-file-contents file)
- ;; Save restriction in case file is already visited...
- ;; Watch for those date stamps in history files!
- (goto-char (point-max))
- (let (start end history)
- (while (and (< count size)
- (re-search-backward comint-input-ring-separator
- nil t)
- (setq end (match-beginning 0)))
- (setq start
- (if (re-search-backward comint-input-ring-separator
- nil t)
- (match-end 0)
- (point-min)))
- (setq history (buffer-substring start end))
- (goto-char start)
- (if (and (not (string-match comint-input-history-ignore
- history))
- (or (null comint-input-ignoredups)
- (ring-empty-p ring)
- (not (string-equal (ring-ref ring 0)
- history))))
- (progn
- (ring-insert-at-beginning ring history)
- (setq count (1+ count)))))))
- (kill-buffer history-buf))
+ (with-temp-buffer
+ (insert-file-contents file)
+ ;; Save restriction in case file is already visited...
+ ;; Watch for those date stamps in history files!
+ (goto-char (point-max))
+ (let (start end history)
+ (while (and (< count size)
+ (re-search-backward comint-input-ring-separator
+ nil t)
+ (setq end (match-beginning 0)))
+ (setq start
+ (if (re-search-backward comint-input-ring-separator
+ nil t)
+ (match-end 0)
+ (point-min)))
+ (setq history (buffer-substring start end))
+ (goto-char start)
+ (if (and (not (string-match comint-input-history-ignore
+ history))
+ (or (null comint-input-ignoredups)
+ (ring-empty-p ring)
+ (not (string-equal (ring-ref ring 0)
+ history))))
+ (progn
+ (ring-insert-at-beginning ring history)
+ (setq count (1+ count)))))))
(setq comint-input-ring ring
comint-input-ring-index nil)))))
@@ -1009,7 +1001,7 @@ See also `comint-read-input-ring'."
(choose-completion-string completion buffer)))
(defun comint-dynamic-list-input-ring ()
- "List in help buffer the buffer's input history."
+ "Display a list of recent inputs entered into the current buffer."
(interactive)
(if (or (not (ring-p comint-input-ring))
(ring-empty-p comint-input-ring))
@@ -1301,7 +1293,9 @@ than the logical beginning of line."
(message "Relative reference exceeds input history size"))))
((or (looking-at "!!?:?\\([0-9^$*-]+\\)") (looking-at "!!"))
;; Just a number of args from the previous input line.
- (replace-match (comint-previous-input-string 0) t t)
+ (replace-match (comint-args (comint-previous-input-string 0)
+ (match-beginning 1) (match-end 1))
+ t t)
(message "History item: previous"))
((looking-at
"!\\??\\({\\(.+\\)}\\|\\(\\sw+\\)\\)\\(:?[0-9^$*-]+\\)?")
@@ -3003,7 +2997,7 @@ Completes if after a filename. See `comint-match-partial-filename' and
This function is similar to `comint-replace-by-expanded-filename', except that
it won't change parts of the filename already entered in the buffer; it just
adds completion characters to the end of the filename. A completions listing
-may be shown in a help buffer if completion is ambiguous.
+may be shown in a separate buffer if completion is ambiguous.
Completion is dependent on the value of `comint-completion-addsuffix',
`comint-completion-recexact' and `comint-completion-fignore', and the timing of
@@ -3090,11 +3084,11 @@ See `comint-dynamic-complete-filename'. Returns t if successful."
(defun comint-replace-by-expanded-filename ()
"Dynamically expand and complete the filename at point.
-Replace the filename with an expanded, canonicalized and completed replacement.
-\"Expanded\" means environment variables (e.g., $HOME) and `~'s are replaced
-with the corresponding directories. \"Canonicalized\" means `..' and `.' are
-removed, and the filename is made absolute instead of relative. For expansion
-see `expand-file-name' and `substitute-in-file-name'. For completion see
+Replace the filename with an expanded, canonicalized and
+completed replacement, i.e. substituting environment
+variables (e.g. $HOME), `~'s, `..', and `.', and making the
+filename absolute. For expansion see `expand-file-name' and
+`substitute-in-file-name'. For completion see
`comint-dynamic-complete-filename'."
(interactive)
(let ((filename (comint-match-partial-filename)))
@@ -3105,15 +3099,16 @@ see `expand-file-name' and `substitute-in-file-name'. For completion see
(defun comint-dynamic-simple-complete (stub candidates)
"Dynamically complete STUB from CANDIDATES list.
-This function inserts completion characters at point by completing STUB from
-the strings in CANDIDATES. A completions listing may be shown in a help buffer
-if completion is ambiguous.
+This function inserts completion characters at point by
+completing STUB from the strings in CANDIDATES. If completion is
+ambiguous, possibly show a completions listing in a separate
+buffer.
-Returns nil if no completion was inserted.
-Returns `sole' if completed with the only completion match.
-Returns `shortest' if completed with the shortest of the completion matches.
-Returns `partial' if completed as far as possible with the completion matches.
-Returns `listed' if a completion listing was shown.
+Return nil if no completion was inserted.
+Return `sole' if completed with the only completion match.
+Return `shortest' if completed with the shortest match.
+Return `partial' if completed as far as possible.
+Return `listed' if a completion listing was shown.
See also `comint-dynamic-complete-filename'."
(let* ((completion-ignore-case (memq system-type '(ms-dos windows-nt cygwin)))
@@ -3161,7 +3156,7 @@ See also `comint-dynamic-complete-filename'."
(defun comint-dynamic-list-filename-completions ()
- "List in help buffer possible completions of the filename at point."
+ "Display a list of possible completions for the filename at point."
(interactive)
(let* ((completion-ignore-case read-file-name-completion-ignore-case)
;; If we bind this, it breaks remote directory tracking in rlogin.el.
@@ -3190,9 +3185,9 @@ See also `comint-dynamic-complete-filename'."
(defvar comint-dynamic-list-completions-config nil)
(defun comint-dynamic-list-completions (completions &optional common-substring)
- "List in help buffer sorted COMPLETIONS.
+ "Display a list of sorted COMPLETIONS.
The meaning of COMMON-SUBSTRING is the same as in `display-completion-list'.
-Typing SPC flushes the help buffer."
+Typing SPC flushes the completions buffer."
(let ((window (get-buffer-window "*Completions*" 0)))
(setq completions (sort completions 'string-lessp))
(if (and (eq last-command this-command)
diff --git a/lisp/completion.el b/lisp/completion.el
index 4640ed127f..128e3a2a48 100644
--- a/lisp/completion.el
+++ b/lisp/completion.el
@@ -1,7 +1,7 @@
;;; completion.el --- dynamic word-completion code
-;; Copyright (C) 1990, 1993, 1995, 1997, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990, 1993, 1995, 1997, 2001-2011
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: abbrev convenience
@@ -2470,5 +2470,4 @@ TYPE is the type of the wrapper to be added. Can be :before or :under."
(provide 'completion)
-;; arch-tag: 6990dafe-4abd-4a1f-8c42-ffb25e120f5e
;;; completion.el ends here
diff --git a/lisp/composite.el b/lisp/composite.el
index da7705cf9e..878302469e 100644
--- a/lisp/composite.el
+++ b/lisp/composite.el
@@ -1,7 +1,7 @@
;;; composite.el --- support character composition
;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010
+;; 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
diff --git a/lisp/cus-dep.el b/lisp/cus-dep.el
index 230410772a..5e74c68978 100644
--- a/lisp/cus-dep.el
+++ b/lisp/cus-dep.el
@@ -1,7 +1,6 @@
;;; cus-dep.el --- find customization dependencies
;;
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;;
;; Author: Per Abrahamsen <[email protected]>
;; Keywords: internal
@@ -172,5 +171,4 @@ Usage: emacs -batch -l ./cus-dep.el -f custom-make-dependencies DIRS"
-;; arch-tag: b7b6421a-bf7a-44fd-a382-6f44976bdf68
;;; cus-dep.el ends here
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 61e6881139..d43d2607c9 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -1,7 +1,6 @@
;;; cus-edit.el --- tools for customizing Emacs and Lisp packages
;;
-;; Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1997, 1999-2011 Free Software Foundation, Inc.
;;
;; Author: Per Abrahamsen <[email protected]>
;; Maintainer: FSF
@@ -2551,9 +2550,9 @@ try matching its doc string against `custom-guess-doc-alist'."
(push (widget-create-child-and-convert
widget 'custom-visibility
:help-echo "Show the value of this option."
- :on-image "down"
+ :on-glyph "down"
:on "Hide"
- :off-image "right"
+ :off-glyph "right"
:off "Show Value"
:action 'custom-toggle-hide-variable
nil)
@@ -2573,8 +2572,8 @@ try matching its doc string against `custom-guess-doc-alist'."
:help-echo "Hide the value of this option."
:on "Hide"
:off "Show"
- :on-image "down"
- :off-image "right"
+ :on-glyph "down"
+ :off-glyph "right"
:action 'custom-toggle-hide-variable
t)
buttons)
@@ -2603,8 +2602,8 @@ try matching its doc string against `custom-guess-doc-alist'."
:help-echo "Hide or show this option."
:on "Hide"
:off "Show"
- :on-image "down"
- :off-image "right"
+ :on-glyph "down"
+ :off-glyph "right"
:action 'custom-toggle-hide-variable
t)
buttons)
@@ -3056,8 +3055,8 @@ to switch between two values."
:pressed-face 'custom-visibility
:mouse-face 'highlight
:pressed-face 'highlight
- :on-image nil
- :off-image nil)
+ :on-glyph nil
+ :off-glyph nil)
(defface custom-visibility
'((t :height 0.8 :inherit link))
@@ -3120,7 +3119,7 @@ face attributes (as specified by a `default' defface entry)."
:pressed-face 'custom-visibility
:mouse-face 'highlight
:on "Hide Unused Attributes" :off "Show All Attributes"
- :on-image nil :off-image nil
+ :on-glyph nil :off-glyph nil
:always-active t
:action 'custom-face-edit-value-visibility-action
show-all)
@@ -3475,7 +3474,7 @@ the present value is saved to its :shown-value property instead."
widget 'custom-visibility
:help-echo "Hide or show this face."
:on "Hide" :off "Show"
- :on-image "down" :off-image "right"
+ :on-glyph "down" :off-glyph "right"
:action 'custom-toggle-hide-face
(not hiddenp))
buttons)
@@ -4426,7 +4425,9 @@ if only the first line of the docstring is shown."))
(unless (eq major-mode 'emacs-lisp-mode)
(emacs-lisp-mode))
- (let ((inhibit-read-only t))
+ (let ((inhibit-read-only t)
+ (print-length nil)
+ (print-level nil))
(custom-save-variables)
(custom-save-faces))
(let ((file-precious-flag t))
@@ -4861,5 +4862,4 @@ if that value is non-nil."
(provide 'cus-edit)
-;; arch-tag: 64533aa4-1b1a-48c3-8812-f9dc718e8a6f
;;; cus-edit.el ends here
diff --git a/lisp/cus-face.el b/lisp/cus-face.el
index ebb20012af..0a48c0fbd6 100644
--- a/lisp/cus-face.el
+++ b/lisp/cus-face.el
@@ -1,7 +1,6 @@
;;; cus-face.el --- customization support for faces
;;
-;; Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1997, 1999-2011 Free Software Foundation, Inc.
;;
;; Author: Per Abrahamsen <[email protected]>
;; Keywords: help, faces
@@ -378,5 +377,4 @@ This means reset FACE to its value in FROM-THEME."
(provide 'cus-face)
-;; arch-tag: 9a5c4b63-0d27-4c92-a5af-f2c7ed764c2b
;;; cus-face.el ends here
diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index 91aa3edf38..d2d99ee64f 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -1,7 +1,6 @@
;;; cus-start.el --- define customization properties of builtins
;;
-;; Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1999-2011 Free Software Foundation, Inc.
;;
;; Author: Per Abrahamsen <[email protected]>
;; Keywords: internal
@@ -167,12 +166,6 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
(max-mini-window-height limits
(choice (const :tag "quarter screen" nil)
number) "23.1")
- (stack-trace-on-error debug
- (choice (const :tag "off")
- (repeat :menu-tag "When"
- :value (nil)
- (symbol :format "%v"))
- (const :tag "always" t)))
(debug-on-error debug
(choice (const :tag "off")
(repeat :menu-tag "When"
diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el
index e6e286f00f..f29dd9eb21 100644
--- a/lisp/cus-theme.el
+++ b/lisp/cus-theme.el
@@ -1,7 +1,6 @@
;;; cus-theme.el -- custom theme creation user interface
;;
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;;
;; Author: Alex Schroeder <[email protected]>
;; Maintainer: FSF
@@ -541,7 +540,7 @@ Do not call this mode function yourself. It is meant for internal use."
When called from Lisp, BUFFER should be the buffer to use; if
omitted, a buffer named *Custom Themes* is used."
(interactive)
- (pop-to-buffer (get-buffer-create (or buffer "*Custom Themes*")))
+ (switch-to-buffer (get-buffer-create (or buffer "*Custom Themes*")))
(let ((inhibit-read-only t))
(erase-buffer))
(custom-theme-choose-mode)
@@ -663,5 +662,4 @@ Theme files are named *-theme.el in `"))
(widget-toggle-action widget event)
(setq custom-theme-allow-multiple-selections (widget-value widget)))
-;; arch-tag: cd6919bc-63af-410e-bae2-b6702e762344
;;; cus-theme.el ends here
diff --git a/lisp/custom.el b/lisp/custom.el
index bcb78e46a3..e31948ec4b 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -1,7 +1,6 @@
;;; custom.el --- tools for declaring and initializing options
;;
-;; Copyright (C) 1996, 1997, 1999, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1997, 1999, 2001-2011 Free Software Foundation, Inc.
;;
;; Author: Per Abrahamsen <[email protected]>
;; Maintainer: FSF
@@ -1105,15 +1104,28 @@ property `theme-feature' (which is usually a symbol created by
(let ((custom-enabling-themes t))
(enable-theme 'user))))
+(defcustom custom-safe-themes '(default)
+ "List of themes that are considered safe to load.
+Each list element should be the `sha1' hash of a theme file, or
+the symbol `default', which stands for any theme in the built-in
+Emacs theme directory (a directory named \"themes\" in
+`data-directory')."
+ :type '(repeat
+ (choice string (const :tag "Built-in themes" default)))
+ :group 'customize
+ :risky t
+ :version "24.1")
+
(defvar safe-functions) ; From unsafep.el
(defun load-theme (theme &optional no-enable)
"Load a theme's settings from its file.
Normally, this also enables the theme; use `disable-theme' to
disable it. If optional arg NO-ENABLE is non-nil, don't enable
-the theme."
- ;; Note we do no check for validity of the theme here.
- ;; This allows to pull in themes by a file-name convention
+the theme.
+
+A theme file is named THEME-theme.el, where THEME is the theme name,
+in one of the directories specified by `custom-theme-load-path'."
(interactive
(list
(intern (completing-read "Load custom theme: "
@@ -1129,38 +1141,74 @@ the theme."
(put theme 'theme-documentation nil))
(let ((fn (locate-file (concat (symbol-name theme) "-theme.el")
(custom-theme--load-path)
- '("" "c"))))
+ '("" "c")))
+ hash)
(unless fn
(error "Unable to find theme file for `%s'." theme))
- ;; Instead of simply loading the theme file, read it manually.
(with-temp-buffer
(insert-file-contents fn)
- (require 'unsafep)
- (let ((custom--inhibit-theme-enable no-enable)
- (safe-functions (append '(custom-theme-set-variables
- custom-theme-set-faces)
- safe-functions))
- form scar)
- (while (setq form (let ((read-circle nil))
- (condition-case nil
- (read (current-buffer))
- (end-of-file nil))))
- (cond
- ;; Check `deftheme' expressions.
- ((eq (setq scar (car form)) 'deftheme)
- (unless (eq (cadr form) theme)
- (error "Incorrect theme name in `deftheme'"))
- (and (symbolp (nth 1 form))
- (stringp (nth 2 form))
- (eval (list scar (nth 1 form) (nth 2 form)))))
- ;; Check `provide-theme' expressions.
- ((and (eq scar 'provide-theme)
- (equal (cadr form) `(quote ,theme))
- (= (length form) 2))
- (eval form))
- ;; All other expressions need to be safe.
- ((not (unsafep form))
- (eval form))))))))
+ (setq hash (sha1 (current-buffer)))
+ ;; Check file safety.
+ (when (or (and (memq 'default custom-safe-themes)
+ (equal (file-name-directory fn)
+ (expand-file-name "themes/" data-directory)))
+ (member hash custom-safe-themes)
+ ;; If the theme is not in `custom-safe-themes', check
+ ;; it with unsafep.
+ (progn
+ (require 'unsafep)
+ (let ((safe-functions
+ (append '(provide-theme deftheme
+ custom-theme-set-variables
+ custom-theme-set-faces)
+ safe-functions))
+ unsafep form)
+ (while (and (setq form (condition-case nil
+ (let ((read-circle nil))
+ (read (current-buffer)))
+ (end-of-file nil)))
+ (null (setq unsafep (unsafep form)))))
+ (or (null unsafep)
+ (custom-theme-load-confirm hash)))))
+ (let ((custom--inhibit-theme-enable no-enable))
+ (eval-buffer))))))
+
+(defun custom-theme-load-confirm (hash)
+ "Query the user about loading a Custom theme that may not be safe.
+The theme should be in the current buffer. If the user agrees,
+query also about adding HASH to `custom-safe-themes'."
+ (if noninteractive
+ nil
+ (let ((exit-chars '(?y ?n ?\s))
+ prompt char)
+ (save-window-excursion
+ (rename-buffer "*Custom Theme*" t)
+ (emacs-lisp-mode)
+ (display-buffer (current-buffer))
+ (setq prompt
+ (format "This theme is not guaranteed to be safe. Really load? %s"
+ (if (< (line-number-at-pos (point-max))
+ (window-body-height))
+ "(y or n) "
+ (push ?\C-v exit-chars)
+ "Type y or n, or C-v to scroll: ")))
+ (goto-char (point-min))
+ (while (null char)
+ (setq char (read-char-choice prompt exit-chars))
+ (when (eq char ?\C-v)
+ (condition-case nil
+ (scroll-up)
+ (error (goto-char (point-min))))
+ (setq char nil)))
+ (when (memq char '(?\s ?y))
+ (push hash custom-safe-themes)
+ ;; Offer to save to `custom-safe-themes'.
+ (and (or custom-file user-init-file)
+ (y-or-n-p "Treat this theme as safe for future loads? ")
+ (let ((coding-system-for-read nil))
+ (customize-save-variable 'custom-safe-themes
+ custom-safe-themes)))
+ t)))))
(defun custom-theme-name-valid-p (name)
"Return t if NAME is a valid name for a Custom theme, nil otherwise.
@@ -1360,5 +1408,4 @@ This means reset VARIABLE. (The argument IGNORED is ignored)."
(provide 'custom)
-;; arch-tag: 041b6116-aabe-4f9a-902d-74092bc3dab2
;;; custom.el ends here
diff --git a/lisp/dabbrev.el b/lisp/dabbrev.el
index 1127181dca..00e9cd60cf 100644
--- a/lisp/dabbrev.el
+++ b/lisp/dabbrev.el
@@ -1,7 +1,6 @@
;;; dabbrev.el --- dynamic abbreviation package
-;; Copyright (C) 1985, 1986, 1992, 1994, 1996, 1997, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1986, 1992, 1994, 1996-1997, 2000-2011
;; Free Software Foundation, Inc.
;; Author: Don Morrison
@@ -995,5 +994,4 @@ Leaves point at the location of the start of the expansion."
(provide 'dabbrev)
-;; arch-tag: 29e58596-f080-4306-a409-70296cf9d46f
;;; dabbrev.el ends here
diff --git a/lisp/delim-col.el b/lisp/delim-col.el
index d0c1223c55..009b179fa4 100644
--- a/lisp/delim-col.el
+++ b/lisp/delim-col.el
@@ -1,7 +1,6 @@
;;; delim-col.el --- prettify all columns in a region or rectangle
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <[email protected]>
;; Maintainer: Vinicius Jose Latorre <[email protected]>
@@ -477,5 +476,4 @@ START and END delimits the corners of text rectangle."
(provide 'delim-col)
-;; arch-tag: 1cc0c5c5-1b2a-43e4-9ba5-bf9441cfd1a9
;;; delim-col.el ends here
diff --git a/lisp/delsel.el b/lisp/delsel.el
index cb5f1c4989..705b64be89 100644
--- a/lisp/delsel.el
+++ b/lisp/delsel.el
@@ -1,7 +1,6 @@
;;; delsel.el --- delete selection if you insert
-;; Copyright (C) 1992, 1997, 1998, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1997-1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Matthieu Devin <[email protected]>
;; Maintainer: FSF
@@ -177,5 +176,4 @@ then it takes a second \\[keyboard-quit] to abort the minibuffer."
(provide 'delsel)
-;; arch-tag: 1e388890-1b50-4ed0-9347-763b1343b6ed
;;; delsel.el ends here
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index 93c69e0eea..411fef51bd 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -1,7 +1,6 @@
;;; descr-text.el --- describe text mode
-;; Copyright (C) 1994, 1995, 1996, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Boris Goldowsky <[email protected]>
;; Maintainer: FSF
@@ -769,5 +768,4 @@ as well as widgets, buttons, overlays, and text properties."
(provide 'descr-text)
-;; arch-tag: fc55a498-f3e9-4312-b5bd-98cc02480af1
;;; descr-text.el ends here
diff --git a/lisp/desktop.el b/lisp/desktop.el
index b4d3dfd55c..4ca4cec38f 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -1,8 +1,6 @@
;;; desktop.el --- save partial status of Emacs when killed
-;; Copyright (C) 1993, 1994, 1995, 1997, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1993-1995, 1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Morten Welinder <[email protected]>
;; Keywords: convenience
@@ -1312,5 +1310,4 @@ If there are no buffers left to create, kill the timer."
(provide 'desktop)
-;; arch-tag: 221907c3-1771-4fd3-9c2e-c6f700c6ede9
;;; desktop.el ends here
diff --git a/lisp/dframe.el b/lisp/dframe.el
index 9ca0a260f6..312f49f605 100644
--- a/lisp/dframe.el
+++ b/lisp/dframe.el
@@ -1,8 +1,6 @@
;;; dframe --- dedicate frame support modes
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: file, tags, tools
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index 764d13f5a9..6f33831eb3 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -1,7 +1,6 @@
;;; dired-aux.el --- less commonly used parts of dired
-;; Copyright (C) 1985, 1986, 1992, 1994, 1998, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1986, 1992, 1994, 1998, 2000-2011
;; Free Software Foundation, Inc.
;; Author: Sebastian Kremer <[email protected]>.
@@ -889,55 +888,35 @@ Otherwise, the rule is a compression rule, and compression is done with gzip.")
(downcase string) count total (dired-plural-s total))
failures)))))
-(defvar dired-query-alist
- '((?y . y) (?\040 . y) ; `y' or SPC means accept once
- (?n . n) (?\177 . n) ; `n' or DEL skips once
- (?! . yes) ; `!' accepts rest
- (?q . no) (?\e . no) ; `q' or ESC skips rest
- ;; None of these keys quit - use C-g for that.
- ))
-
;;;###autoload
-(defun dired-query (qs-var qs-prompt &rest qs-args)
- "Query user and return nil or t.
-Store answer in symbol VAR (which must initially be bound to nil).
-Format PROMPT with ARGS.
-Binding variable `help-form' will help the user who types the help key."
- (let* ((char (symbol-value qs-var))
- (action (cdr (assoc char dired-query-alist))))
- (cond ((eq 'yes action)
- t) ; accept, and don't ask again
- ((eq 'no action)
- nil) ; skip, and don't ask again
- (t;; no lasting effects from last time we asked - ask now
- (let ((cursor-in-echo-area t)
- (executing-kbd-macro executing-kbd-macro)
- (qprompt (concat qs-prompt
- (if help-form
- (format " [Type yn!q or %s] "
- (key-description
- (char-to-string help-char)))
- " [Type y, n, q or !] ")))
- done result elt)
- (while (not done)
- (apply 'message qprompt qs-args)
- (setq char (set qs-var (read-event)))
- (if (numberp char)
- (cond ((and executing-kbd-macro (= char -1))
- ;; read-event returns -1 if we are in a kbd
- ;; macro and there are no more events in the
- ;; macro. Attempt to get an event
- ;; interactively.
- (setq executing-kbd-macro nil))
- ((eq (key-binding (vector char)) 'keyboard-quit)
- (keyboard-quit))
- (t
- (setq done (setq elt (assoc char
- dired-query-alist)))))))
- ;; Display the question with the answer.
- (message "%s" (concat (apply 'format qprompt qs-args)
- (char-to-string char)))
- (memq (cdr elt) '(t y yes)))))))
+(defun dired-query (sym prompt &rest args)
+ "Format PROMPT with ARGS, query user, and store the result in SYM.
+The return value is either nil or t.
+
+The user may type y or SPC to accept once; n or DEL to skip once;
+! to accept this and subsequent queries; or q or ESC to decline
+this and subsequent queries.
+
+If SYM is already bound to a non-nil value, this function may
+return automatically without querying the user. If SYM is !,
+return t; if SYM is q or ESC, return nil."
+ (let* ((char (symbol-value sym))
+ (char-choices '(?y ?\s ?n ?\177 ?! ?q ?\e)))
+ (cond ((eq char ?!)
+ t) ; accept, and don't ask again
+ ((memq char '(?q ?\e))
+ nil) ; skip, and don't ask again
+ (t ; no previous answer - ask now
+ (setq prompt
+ (concat (apply 'format prompt args)
+ (if help-form
+ (format " [Type yn!q or %s] "
+ (key-description
+ (char-to-string help-char)))
+ " [Type y, n, q or !] ")))
+ (set sym (setq char (read-char-choice prompt char-choices)))
+ (if (memq char '(?y ?\s ?!)) t)))))
+
;;;###autoload
(defun dired-do-compress (&optional arg)
@@ -1019,10 +998,14 @@ See Info node `(emacs)Subdir switches' for more details."
;; message much faster than making dired-map-over-marks show progress
(dired-uncache
(if (consp dired-directory) (car dired-directory) dired-directory))
- (dired-map-over-marks (let ((fname (dired-get-filename)))
+ (dired-map-over-marks (let ((fname (dired-get-filename))
+ ;; Postphone readin hook till we map
+ ;; over all marked files (Bug#6810).
+ (dired-after-readin-hook nil))
(message "Redisplaying... %s" fname)
(dired-update-file-line fname))
arg)
+ (run-hooks 'dired-after-readin-hook)
(dired-move-to-filename)
(message "Redisplaying...done")))
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index 45fdda7135..e0caae059b 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -1,7 +1,6 @@
;;; dired-x.el --- extra Dired functionality
-;; Copyright (C) 1993, 1994, 1997, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Sebastian Kremer <[email protected]>
;; Lawrence R. Dodd <[email protected]>
@@ -189,6 +188,12 @@ files and lock files."
:type 'regexp
:group 'dired-x)
+(defcustom dired-omit-verbose t
+ "When non-nil, show messages when omitting files.
+When nil, don't show messages."
+ :type 'boolean
+ :group 'dired-x)
+
(defcustom dired-find-subdir nil ; t is pretty near to DWIM...
"If non-nil, Dired always finds a directory in a buffer of its own.
If nil, Dired finds the directory as a subdirectory in some other buffer
@@ -613,8 +618,9 @@ This functions works by temporarily binding `dired-marker-char' to
(not dired-omit-size-limit)
(< (buffer-size) dired-omit-size-limit)
(progn
- (message "Not omitting: directory larger than %d characters."
- dired-omit-size-limit)
+ (when dired-omit-verbose
+ (message "Not omitting: directory larger than %d characters."
+ dired-omit-size-limit))
(setq dired-omit-mode nil)
nil)))
(let ((omit-re (or regexp (dired-omit-regexp)))
@@ -622,12 +628,14 @@ This functions works by temporarily binding `dired-marker-char' to
count)
(or (string= omit-re "")
(let ((dired-marker-char dired-omit-marker-char))
- (message "Omitting...")
+ (when dired-omit-verbose (message "Omitting..."))
(if (dired-mark-unmarked-files omit-re nil nil dired-omit-localp)
(progn
- (setq count (dired-do-kill-lines nil "Omitted %d line%s."))
+ (setq count (dired-do-kill-lines
+ nil
+ (if dired-omit-verbose "Omitted %d line%s." "")))
(force-mode-line-update))
- (message "(Nothing to omit)"))))
+ (when dired-omit-verbose (message "(Nothing to omit)")))))
;; Try to preserve modified state of buffer. So `%*' doesn't appear
;; in mode-line of omitted buffers.
(set-buffer-modified-p (and old-modified-p
@@ -1821,5 +1829,4 @@ variables `dired-x-variable-list' in the message."
;; generated-autoload-file: "dired.el"
;; End:
-;; arch-tag: 71a43ba2-7a00-4793-a028-0613dd7765ae
;;; dired-x.el ends here
diff --git a/lisp/dired.el b/lisp/dired.el
index 8012fcb472..02d855a0d3 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -1,7 +1,6 @@
;;; dired.el --- directory-browsing commands
-;; Copyright (C) 1985, 1986, 1992, 1993, 1994, 1995, 1996, 1997, 2000,
-;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1986, 1992-1997, 2000-2011
;; Free Software Foundation, Inc.
;; Author: Sebastian Kremer <[email protected]>
@@ -26,8 +25,8 @@
;;; Commentary:
-;; This is a major mode for directory browsing and editing. It is
-;; documented in the Emacs manual.
+;; This is a major mode for directory browsing and editing.
+;; It is documented in the Emacs manual.
;; Rewritten in 1990/1991 to add tree features, file marking and
;; sorting by Sebastian Kremer <[email protected]>.
@@ -62,35 +61,41 @@ some of the `ls' switches are not supported; see the doc string of
:type 'string
:group 'dired)
-(defvar dired-subdir-switches nil
+(defcustom dired-subdir-switches nil
"If non-nil, switches passed to `ls' for inserting subdirectories.
-If nil, `dired-listing-switches' is used.")
-
-; Don't use absolute file names as /bin should be in any PATH and people
-; may prefer /usr/local/gnu/bin or whatever. However, chown is
-; usually not in PATH.
+If nil, `dired-listing-switches' is used."
+ :group 'dired
+ :type '(choice (const :tag "Use dired-listing-switches" nil)
+ (string :tag "Switches")))
+
+(defcustom dired-chown-program
+ (purecopy (cond ((executable-find "chown") "chown")
+ ((file-executable-p "/usr/sbin/chown") "/usr/sbin/chown")
+ ((file-executable-p "/etc/chown") "/etc/chown")
+ (t "chown")))
+ "Name of chown command (usually `chown')."
+ :group 'dired
+ :type 'file)
-;;;###autoload
-(defvar dired-chown-program
- (purecopy
- (if (memq system-type '(hpux usg-unix-v irix gnu/linux cygwin))
- "chown"
- (if (file-exists-p "/usr/sbin/chown")
- "/usr/sbin/chown"
- "/etc/chown")))
- "Name of chown command (usually `chown' or `/etc/chown').")
-
-(defvar dired-use-ls-dired 'unspecified
+(defcustom dired-use-ls-dired 'unspecified
"Non-nil means Dired should use \"ls --dired\".
The special value of `unspecified' means to check explicitly, and
save the result in this variable. This is performed the first
-time `dired-insert-directory' is called.")
+time `dired-insert-directory' is called."
+ :group 'dired
+ :type '(choice (const :tag "Check for --dired support" unspecified)
+ (const :tag "Do not use --dired" nil)
+ (other :tag "Use --dired" t)))
-(defvar dired-chmod-program "chmod"
- "Name of chmod command (usually `chmod').")
+(defcustom dired-chmod-program "chmod"
+ "Name of chmod command (usually `chmod')."
+ :group 'dired
+ :type 'file)
-(defvar dired-touch-program "touch"
- "Name of touch command (usually `touch').")
+(defcustom dired-touch-program "touch"
+ "Name of touch command (usually `touch')."
+ :group 'dired
+ :type 'file)
(defcustom dired-ls-F-marks-symlinks nil
"Informs Dired about how `ls -lF' marks symbolic links.
@@ -108,7 +113,6 @@ always set this variable to t."
:type 'boolean
:group 'dired-mark)
-;;;###autoload
(defcustom dired-trivial-filenames (purecopy "^\\.\\.?$\\|^#")
"Regexp of files to skip when finding first file of a directory.
A value of nil means move to the subdir line.
@@ -756,7 +760,6 @@ for a remote directory. This feature is used by Auto Revert Mode."
buffer-read-only
(dired-directory-changed-p dirname))))
-;;;###autoload
(defcustom dired-auto-revert-buffer nil
"Automatically revert dired buffer on revisiting.
If t, revisiting an existing dired buffer automatically reverts it.
@@ -1142,7 +1145,10 @@ If HDR is non-nil, insert a header line with the directory name."
"Reread the dired buffer.
Must also be called after `dired-actual-switches' have changed.
Should not fail even on completely garbaged buffers.
-Preserves old cursor, marks/flags, hidden-p."
+Preserves old cursor, marks/flags, hidden-p.
+
+Dired sets `revert-buffer-function' to this function. The args
+ARG and NOCONFIRM, passed from `revert-buffer', are ignored."
(widen) ; just in case user narrowed
(let ((modflag (buffer-modified-p))
(positions (dired-save-positions))
@@ -2775,7 +2781,8 @@ name, or the marker and a count of marked files."
;; that's possible. (Bug#1806)
(split-window-vertically))
;; Otherwise, try to split WINDOW sensibly.
- (split-window-sensibly window)))))
+ (split-window-sensibly window))))
+ pop-up-frames)
(pop-to-buffer (get-buffer-create buf)))
;; If dired-shrink-to-fit is t, make its window fit its contents.
(when dired-shrink-to-fit
@@ -3557,7 +3564,7 @@ Ask means pop up a menu for the user to select one of copy, move or link."
;;;;;; dired-run-shell-command dired-do-shell-command dired-do-async-shell-command
;;;;;; dired-clean-directory dired-do-print dired-do-touch dired-do-chown
;;;;;; dired-do-chgrp dired-do-chmod dired-compare-directories dired-backup-diff
-;;;;;; dired-diff) "dired-aux" "dired-aux.el" "1628b7a7d379fb4da8ae4bf29faad4b5")
+;;;;;; dired-diff) "dired-aux" "dired-aux.el" "9f5fc434fa6c2607b6e66060862c9caf")
;;; Generated autoloads from dired-aux.el
(autoload 'dired-diff "dired-aux" "\
@@ -3718,12 +3725,18 @@ Not documented
\(fn FILE)" nil nil)
(autoload 'dired-query "dired-aux" "\
-Query user and return nil or t.
-Store answer in symbol VAR (which must initially be bound to nil).
-Format PROMPT with ARGS.
-Binding variable `help-form' will help the user who types the help key.
+Format PROMPT with ARGS, query user, and store the result in SYM.
+The return value is either nil or t.
+
+The user may type y or SPC to accept once; n or DEL to skip once;
+! to accept this and subsequent queries; or q or ESC to decline
+this and subsequent queries.
+
+If SYM is already bound to a non-nil value, this function may
+return automatically without querying the user. If SYM is !,
+return t; if SYM is q or ESC, return nil.
-\(fn QS-VAR QS-PROMPT &rest QS-ARGS)" nil nil)
+\(fn SYM PROMPT &rest ARGS)" nil nil)
(autoload 'dired-do-compress "dired-aux" "\
Compress or uncompress marked (or next ARG) files.
@@ -4010,7 +4023,7 @@ true then the type of the file linked to by FILE is printed instead.
;;;***
;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el"
-;;;;;; "27c312d6d5d40d8cb4ef8d62e30d5f4a")
+;;;;;; "fbac6ae123aaa2b2e9df8bb2cde61ceb")
;;; Generated autoloads from dired-x.el
(autoload 'dired-jump "dired-x" "\
diff --git a/lisp/dirtrack.el b/lisp/dirtrack.el
index 7a43459f53..b30b7ac146 100644
--- a/lisp/dirtrack.el
+++ b/lisp/dirtrack.el
@@ -1,7 +1,6 @@
;;; dirtrack.el --- Directory Tracking by watching the prompt
-;; Copyright (C) 1996, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Peter Breton <[email protected]>
;; Created: Sun Nov 17 1996
diff --git a/lisp/disp-table.el b/lisp/disp-table.el
index e9bdd3d9be..7a9043a6a0 100644
--- a/lisp/disp-table.el
+++ b/lisp/disp-table.el
@@ -1,7 +1,7 @@
;;; disp-table.el --- functions for dealing with char tables
-;; Copyright (C) 1987, 1994, 1995, 1999, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1987, 1994-1995, 1999, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Erik Naggum <[email protected]>
;; Based on a previous version by Howard Gayle
@@ -281,5 +281,4 @@ in `.emacs'."
(provide 'disp-table)
-;; arch-tag: ffe4c28c-960c-47aa-b8a8-ae89d371ffc7
;;; disp-table.el ends here
diff --git a/lisp/dnd.el b/lisp/dnd.el
index cbbef38443..19b9501617 100644
--- a/lisp/dnd.el
+++ b/lisp/dnd.el
@@ -1,7 +1,6 @@
;;; dnd.el --- drag and drop support. -*- coding: utf-8 -*-
-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2005-2011 Free Software Foundation, Inc.
;; Author: Jan Djärv <[email protected]>
;; Maintainer: FSF
@@ -135,6 +134,16 @@ Return nil if URI is not a local file."
(string-equal system-name-no-dot hostname)))
(concat "file://" (substring uri (+ 7 (length hostname)))))))
+(defsubst dnd-unescape-uri (uri)
+ (replace-regexp-in-string
+ "%[A-Fa-f0-9][A-Fa-f0-9]"
+ (lambda (arg)
+ (let ((str (make-string 1 0)))
+ (aset str 0 (string-to-number (substring arg 1) 16))
+ str))
+ uri t t))
+
+;; http://lists.gnu.org/archive/html/emacs-devel/2006-05/msg01060.html
(defun dnd-get-local-file-name (uri &optional must-exist)
"Return file name converted from file:/// or file: syntax.
URI is the uri for the file. If MUST-EXIST is given and non-nil,
@@ -144,21 +153,11 @@ Return nil if URI is not a local file."
(substring uri (1- (match-end 0))))
((string-match "^file:" uri) ; Old KDE, Motif, Sun
(substring uri (match-end 0))))))
- (when (and f must-exist)
- (setq f (replace-regexp-in-string
- "%[A-Fa-f0-9][A-Fa-f0-9]"
- (lambda (arg)
- (let ((str (make-string 1 0)))
- (aset str 0 (string-to-number (substring arg 1) 16))
- str))
- f t t))
- (let* ((decoded-f (decode-coding-string
- f
- (or file-name-coding-system
- default-file-name-coding-system))))
- (setq f (cond ((file-readable-p decoded-f) decoded-f)
- ((file-readable-p f) f)
- (t nil)))))
+ (and f (setq f (decode-coding-string (dnd-unescape-uri f)
+ (or file-name-coding-system
+ default-file-name-coding-system))))
+ (when (and f must-exist (not (file-readable-p f)))
+ (setq f nil))
f))
(defun dnd-open-local-file (uri action)
@@ -227,5 +226,4 @@ TEXT is the text as a string, WINDOW is the window where the drop happened."
(provide 'dnd)
-;; arch-tag: 0472f6a5-2e8f-4304-9e44-1a0877c771b7
;;; dnd.el ends here
diff --git a/lisp/doc-view.el b/lisp/doc-view.el
index 4f183f4b9d..c67205fd52 100644
--- a/lisp/doc-view.el
+++ b/lisp/doc-view.el
@@ -1,6 +1,6 @@
;;; doc-view.el --- View PDF/PostScript/DVI files in Emacs
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;;
;; Author: Tassilo Horn <[email protected]>
;; Maintainer: Tassilo Horn <[email protected]>
@@ -168,6 +168,12 @@ Higher values result in larger images."
:type 'number
:group 'doc-view)
+(defcustom doc-view-image-width 850
+ "Default image width.
+Has only an effect if imagemagick support is compiled into emacs."
+ :type 'number
+ :group 'doc-view)
+
(defcustom doc-view-dvipdfm-program (executable-find "dvipdfm")
"Program to convert DVI files to PDF.
@@ -190,6 +196,13 @@ If this and `doc-view-dvipdfm-program' are set,
:type 'file
:group 'doc-view)
+(defcustom doc-view-unoconv-program (executable-find "unoconv")
+ "Program to convert any file type readable by OpenOffice.org to PDF.
+
+Needed for viewing OpenOffice.org (and MS Office) files."
+ :type 'file
+ :group 'doc-view)
+
(defcustom doc-view-ps2pdf-program (executable-find "ps2pdf")
"Program to convert PS files to PDF.
@@ -604,10 +617,12 @@ It's a subdirectory of `doc-view-cache-directory'."
;;;###autoload
(defun doc-view-mode-p (type)
- "Return non-nil if image type TYPE is available for `doc-view'.
-Image types are symbols like `dvi', `postscript' or `pdf'."
+ "Return non-nil if document type TYPE is available for `doc-view'.
+Document types are symbols like `dvi', `ps', `pdf', or `odf' (any
+OpenDocument format)."
(and (display-graphic-p)
- (image-type-available-p 'png)
+ (or (image-type-available-p 'imagemagick)
+ (image-type-available-p 'png))
(cond
((eq type 'dvi)
(and (doc-view-mode-p 'pdf)
@@ -619,6 +634,10 @@ Image types are symbols like `dvi', `postscript' or `pdf'."
(eq type 'pdf))
(and doc-view-ghostscript-program
(executable-find doc-view-ghostscript-program)))
+ ((eq type 'odf)
+ (and doc-view-unoconv-program
+ (executable-find doc-view-unoconv-program)
+ (doc-view-mode-p 'pdf)))
(t ;; unknown image type
nil))))
@@ -629,9 +648,17 @@ Image types are symbols like `dvi', `postscript' or `pdf'."
(defun doc-view-enlarge (factor)
"Enlarge the document."
(interactive (list doc-view-shrink-factor))
- (set (make-local-variable 'doc-view-resolution)
- (* factor doc-view-resolution))
- (doc-view-reconvert-doc))
+ (if (eq (plist-get (cdr (doc-view-current-image)) :type)
+ 'imagemagick)
+ ;; ImageMagick supports on-the-fly-rescaling
+ (progn
+ (set (make-local-variable 'doc-view-image-width)
+ (ceiling (* factor doc-view-image-width)))
+ (doc-view-insert-image (plist-get (cdr (doc-view-current-image)) :file)
+ :width doc-view-image-width))
+ (set (make-local-variable 'doc-view-resolution)
+ (ceiling (* factor doc-view-resolution)))
+ (doc-view-reconvert-doc)))
(defun doc-view-shrink (factor)
"Shrink the document."
@@ -692,6 +719,13 @@ Should be invoked when the cached images aren't up-to-date."
(list "-o" pdf dvi)
callback)))
+(defun doc-view-odf->pdf (odf callback)
+ "Convert ODF to PDF asynchronously and call CALLBACK when finished.
+The converted PDF is put into the current cache directory, and it
+is named like ODF with the extension turned to pdf."
+ (doc-view-start-process "odf->pdf" doc-view-unoconv-program
+ (list "-f" "pdf" "-o" (doc-view-current-cache-dir) odf)
+ callback))
(defun doc-view-pdf/ps->png (pdf-ps png)
"Convert PDF-PS to PNG asynchronously."
@@ -794,6 +828,12 @@ Start by converting PAGES, and then the rest."
(doc-view-pdf->txt (expand-file-name "doc.pdf"
(doc-view-current-cache-dir))
txt callback))
+ (odf
+ ;; Doc is some ODF (or MS Office) doc. This means that a doc.pdf
+ ;; already exists in its cache subdirectory.
+ (doc-view-pdf->txt (expand-file-name "doc.pdf"
+ (doc-view-current-cache-dir))
+ txt callback))
(t (error "DocView doesn't know what to do"))))
(defun doc-view-ps->pdf (ps pdf callback)
@@ -838,6 +878,24 @@ Those files are saved in the directory given by the function
(png-file png-file))
(doc-view-dvi->pdf doc-view-buffer-file-name pdf
(lambda () (doc-view-pdf/ps->png pdf png-file)))))
+ (odf
+ ;; ODF files have to be converted to PDF before Ghostscript can
+ ;; process it.
+ (lexical-let
+ ((pdf (expand-file-name "doc.pdf" doc-view-current-cache-dir))
+ (opdf (expand-file-name (concat (file-name-sans-extension
+ (file-name-nondirectory doc-view-buffer-file-name))
+ ".pdf")
+ doc-view-current-cache-dir))
+ (png-file png-file))
+ ;; The unoconv tool only supports a output directory, but no
+ ;; file name. It's named like the input file with the
+ ;; extension replaced by pdf.
+ (doc-view-odf->pdf doc-view-buffer-file-name
+ (lambda ()
+ ;; Rename to doc.pdf
+ (rename-file opdf pdf)
+ (doc-view-pdf/ps->png pdf png-file)))))
(pdf
(let ((pages (doc-view-active-pages)))
;; Convert PDF to PNG images starting with the active pages.
@@ -906,7 +964,11 @@ ARGS is a list of image descriptors."
(setq doc-view-pending-cache-flush nil))
(let ((ol (doc-view-current-overlay))
(image (if (and file (file-readable-p file))
- (apply 'create-image file 'png nil args)))
+ (if (not (fboundp 'imagemagick-types))
+ (apply 'create-image file 'png nil args)
+ (unless (member :width args)
+ (setq args (append args (list :width doc-view-image-width))))
+ (apply 'create-image file 'imagemagick nil args))))
(slice (doc-view-current-slice)))
(setf (doc-view-current-image) image)
(move-overlay ol (point-min) (point-max))
@@ -999,12 +1061,16 @@ For now these keys are useful:
(message "DocView: please wait till conversion finished.")
(let ((txt (expand-file-name "doc.txt" (doc-view-current-cache-dir))))
(if (file-readable-p txt)
- (find-file txt)
+ (let ((name (concat "Text contents of "
+ (file-name-nondirectory buffer-file-name)))
+ (dir (file-name-directory buffer-file-name)))
+ (with-current-buffer (find-file txt)
+ (rename-buffer name)
+ (setq default-directory dir)))
(doc-view-doc->txt txt 'doc-view-open-text)))))
;;;;; Toggle between editing and viewing
-
(defun doc-view-toggle-display ()
"Toggle between editing a document as text or viewing it."
(interactive)
@@ -1015,11 +1081,9 @@ For now these keys are useful:
(setq buffer-read-only nil)
(remove-overlays (point-min) (point-max) 'doc-view t)
(set (make-local-variable 'image-mode-winprops-alist) t)
- ;; Switch to the previously used major mode or fall back to fundamental
- ;; mode.
- (if doc-view-previous-major-mode
- (funcall doc-view-previous-major-mode)
- (fundamental-mode))
+ ;; Switch to the previously used major mode or fall back to
+ ;; normal mode.
+ (doc-view-fallback-mode)
(doc-view-minor-mode 1))
;; Switch to doc-view-mode
(when (and (buffer-modified-p)
@@ -1179,11 +1243,11 @@ If BACKWARD is non-nil, jump to the previous match."
(concat "No PNG support is available, or some conversion utility for "
(file-name-extension doc-view-buffer-file-name)
" files is missing."))
- (if (and (executable-find doc-view-pdftotext-program)
- (y-or-n-p
- "Unable to render file. View extracted text instead? "))
- (doc-view-open-text)
- (doc-view-toggle-display))))
+ (when (and (executable-find doc-view-pdftotext-program)
+ (y-or-n-p
+ "Unable to render file. View extracted text instead? "))
+ (doc-view-open-text))
+ (doc-view-toggle-display)))
(defvar bookmark-make-record-function)
@@ -1206,6 +1270,41 @@ If BACKWARD is non-nil, jump to the previous match."
(dolist (x l1) (if (memq x l2) (push x l)))
l))
+(defun doc-view-set-doc-type ()
+ "Figure out the current document type (`doc-view-doc-type')."
+ (let ((name-types
+ (when buffer-file-name
+ (cdr (assoc (file-name-extension buffer-file-name)
+ '(
+ ;; DVI
+ ("dvi" dvi)
+ ;; PDF
+ ("pdf" pdf) ("epdf" pdf)
+ ;; PostScript
+ ("ps" ps) ("eps" ps)
+ ;; OpenDocument formats
+ ("odt" odf) ("ods" odf) ("odp" odf) ("odg" odf)
+ ("odc" odf) ("odi" odf) ("odm" odf) ("ott" odf)
+ ("ots" odf) ("otp" odf) ("otg" odf)
+ ;; Microsoft Office formats (also handled
+ ;; by the odf conversion chain)
+ ("doc" odf) ("docx" odf) ("xls" odf) ("xlsx" odf)
+ ("ppt" odf) ("pptx" odf))))))
+ (content-types
+ (save-excursion
+ (goto-char (point-min))
+ (cond
+ ((looking-at "%!") '(ps))
+ ((looking-at "%PDF") '(pdf))
+ ((looking-at "\367\002") '(dvi))))))
+ (set (make-local-variable 'doc-view-doc-type)
+ (car (or (doc-view-intersection name-types content-types)
+ (when (and name-types content-types)
+ (error "Conflicting types: name says %s but content says %s"
+ name-types content-types))
+ name-types content-types
+ (error "Cannot determine the document type"))))))
+
;;;###autoload
(defun doc-view-mode ()
"Major mode in DocView buffers.
@@ -1222,39 +1321,19 @@ toggle between displaying the document or editing it as text.
;; The doc is empty or doesn't exist at all, so fallback to
;; another mode. We used to also check file-exists-p, but this
;; returns nil for tar members.
- (let ((auto-mode-alist (remq (rassq 'doc-view-mode auto-mode-alist)
- auto-mode-alist)))
- (normal-mode))
+ (doc-view-fallback-mode)
(let* ((prev-major-mode (if (eq major-mode 'doc-view-mode)
doc-view-previous-major-mode
- major-mode)))
+ (when (not (memq major-mode
+ '(doc-view-mode fundamental-mode)))
+ major-mode))))
(kill-all-local-variables)
(set (make-local-variable 'doc-view-previous-major-mode) prev-major-mode))
;; Figure out the document type.
- (let ((name-types
- (when buffer-file-name
- (cdr (assoc (file-name-extension buffer-file-name)
- '(("dvi" dvi)
- ("pdf" pdf)
- ("epdf" pdf)
- ("ps" ps)
- ("eps" ps))))))
- (content-types
- (save-excursion
- (goto-char (point-min))
- (cond
- ((looking-at "%!") '(ps))
- ((looking-at "%PDF") '(pdf))
- ((looking-at "\367\002") '(dvi))))))
- (set (make-local-variable 'doc-view-doc-type)
- (car (or (doc-view-intersection name-types content-types)
- (when (and name-types content-types)
- (error "Conflicting types: name says %s but content says %s"
- name-types content-types))
- name-types content-types
- (error "Cannot determine the document type")))))
+ (unless doc-view-doc-type
+ (doc-view-set-doc-type))
(doc-view-make-safe-dir doc-view-cache-directory)
;; Handle compressed files, remote files, files inside archives
@@ -1322,6 +1401,28 @@ toggle between displaying the document or editing it as text.
(set (make-local-variable 'view-read-only) nil)
(run-mode-hooks 'doc-view-mode-hook)))
+(defun doc-view-fallback-mode ()
+ "Fallback to the previous or next best major mode."
+ (if doc-view-previous-major-mode
+ (funcall doc-view-previous-major-mode)
+ (let ((auto-mode-alist (rassq-delete-all
+ 'doc-view-mode-maybe
+ (rassq-delete-all 'doc-view-mode
+ (copy-alist auto-mode-alist)))))
+ (normal-mode))))
+
+;;;###autoload
+(defun doc-view-mode-maybe ()
+ "Switch to `doc-view-mode' if possible.
+If the required external tools are not available, then fallback
+to the next best mode."
+ (condition-case nil
+ (doc-view-set-doc-type)
+ (error (doc-view-fallback-mode)))
+ (if (doc-view-mode-p doc-view-doc-type)
+ (doc-view-mode)
+ (doc-view-fallback-mode)))
+
;;;###autoload
(define-minor-mode doc-view-minor-mode
"Toggle Doc view minor mode.
@@ -1380,5 +1481,4 @@ See the command `doc-view-mode' for more information on this mode."
;; mode: outline-minor
;; End:
-;; arch-tag: 5d6e5c5e-095f-489e-b4e4-1ca90a7d79be
;;; doc-view.el ends here
diff --git a/lisp/dos-fns.el b/lisp/dos-fns.el
index b840319113..5f13555e47 100644
--- a/lisp/dos-fns.el
+++ b/lisp/dos-fns.el
@@ -1,7 +1,7 @@
;;; dos-fns.el --- MS-Dos specific functions
-;; Copyright (C) 1991, 1993, 1995, 1996, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1991, 1993, 1995-1996, 2001-2011
+;; Free Software Foundation, Inc.
;; Maintainer: Morten Welinder <[email protected]>
;; Keywords: internal
@@ -313,5 +313,4 @@ that your video hardware might not support 50-line mode."
(provide 'dos-fns)
-;; arch-tag: 00b03579-8ebb-4a02-8762-5c5a929774ad
;;; dos-fns.el ends here
diff --git a/lisp/dos-vars.el b/lisp/dos-vars.el
index e153df3e74..7de2ecb75a 100644
--- a/lisp/dos-vars.el
+++ b/lisp/dos-vars.el
@@ -1,7 +1,6 @@
;;; dos-vars.el --- MS-Dos specific user options
-;; Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
@@ -44,5 +43,4 @@ in `standard-display-table' as appropriate for your codepage, if
:type '(hook)
:version "20.3.3")
-;; arch-tag: dce8a0d9-ab29-413f-84ed-8b89d6190546
;;; dos-vars.el ends here
diff --git a/lisp/dos-w32.el b/lisp/dos-w32.el
index 0962ae5f13..20b04e0db3 100644
--- a/lisp/dos-w32.el
+++ b/lisp/dos-w32.el
@@ -1,7 +1,6 @@
;; dos-w32.el --- Functions shared among MS-DOS and W32 (NT/95) platforms
-;; Copyright (C) 1996, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: Geoff Voelker <[email protected]>
;; Keywords: internal
@@ -458,5 +457,4 @@ indicates a specific program should be invoked."
(provide 'dos-w32)
-;; arch-tag: dcfefdd2-362f-4fbc-9141-9634f5f4d6a7
;;; dos-w32.el ends here
diff --git a/lisp/double.el b/lisp/double.el
index e63b4885b8..4aa8da72af 100644
--- a/lisp/double.el
+++ b/lisp/double.el
@@ -1,7 +1,6 @@
;;; double.el --- support for keyboard remapping with double clicking
-;; Copyright (C) 1994, 1997, 1998, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1997-1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Per Abrahamsen <[email protected]>
;; Keywords: i18n
@@ -169,5 +168,4 @@ when pressed twice. See variable `double-map' for details."
(provide 'double)
-;; arch-tag: 2e170036-44cb-4493-bc32-ada0a4395221
;;; double.el ends here
diff --git a/lisp/dynamic-setting.el b/lisp/dynamic-setting.el
index cfa1053c44..81531c4a21 100644
--- a/lisp/dynamic-setting.el
+++ b/lisp/dynamic-setting.el
@@ -1,6 +1,6 @@
;;; dynamic-setting.el --- Support dynamic changes
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Jan Djärv <[email protected]>
;; Maintainer: FSF
@@ -107,4 +107,3 @@ Changes can be
(define-key special-event-map [config-changed-event]
'dynamic-setting-handle-config-changed-event)
-;; arch-tag: 3a57e78f-1cd6-48b6-ab75-98f160dcc017
diff --git a/lisp/ebuff-menu.el b/lisp/ebuff-menu.el
index 6b462a22d1..dd589cb58f 100644
--- a/lisp/ebuff-menu.el
+++ b/lisp/ebuff-menu.el
@@ -1,7 +1,6 @@
;;; ebuff-menu.el --- electric-buffer-list mode
-;; Copyright (C) 1985, 1986, 1994, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1986, 1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Richard Mlynarik <[email protected]>
;; Maintainer: FSF
diff --git a/lisp/echistory.el b/lisp/echistory.el
index ef05454334..1d2c5d8a38 100644
--- a/lisp/echistory.el
+++ b/lisp/echistory.el
@@ -1,7 +1,6 @@
;;; echistory.el --- Electric Command History Mode
-;; Copyright (C) 1985, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc.
;; Author: K. Shane Hartman
;; Maintainer: FSF
@@ -150,5 +149,4 @@ The Command History listing is recomputed each time this mode is invoked."
(provide 'echistory)
-;; arch-tag: 1e5018fe-190f-44a7-9109-a895dcac4c50
;;; echistory.el ends here
diff --git a/lisp/edmacro.el b/lisp/edmacro.el
index f98d901dde..769d7fceb9 100644
--- a/lisp/edmacro.el
+++ b/lisp/edmacro.el
@@ -1,7 +1,6 @@
;;; edmacro.el --- keyboard macro editor
-;; Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Dave Gillespie <[email protected]>
;; Maintainer: Dave Gillespie <[email protected]>
@@ -785,5 +784,4 @@ This function assumes that the events can be stored in a string."
(provide 'edmacro)
-;; arch-tag: 726807b4-3ae6-49de-b0ae-b9590973e0d7
;;; edmacro.el ends here
diff --git a/lisp/ehelp.el b/lisp/ehelp.el
index 63ec3838d3..7745957b4c 100644
--- a/lisp/ehelp.el
+++ b/lisp/ehelp.el
@@ -1,7 +1,6 @@
;;; ehelp.el --- bindings for electric-help mode
-;; Copyright (C) 1986, 1995, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1995, 2000-2011 Free Software Foundation, Inc.
;; Author: Richard Mlynarik
;; (according to ack.texi and authors.el)
@@ -426,5 +425,4 @@ will select it.)"
(provide 'ehelp)
-;; arch-tag: e0e3037f-42c0-433e-ba18-322c5d951f46
;;; ehelp.el ends here
diff --git a/lisp/electric.el b/lisp/electric.el
index 3ffd94d7e1..7682c56633 100644
--- a/lisp/electric.el
+++ b/lisp/electric.el
@@ -1,7 +1,6 @@
;;; electric.el --- window maker and Command loop for `electric' modes
-;; Copyright (C) 1985, 1986, 1995, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1986, 1995, 2001-2011 Free Software Foundation, Inc.
;; Author: K. Shane Hartman
;; Maintainer: FSF
@@ -221,7 +220,8 @@ Returns nil when we can't find this char."
(let ((before (copy-marker (1- pos) t)))
(save-excursion
(unless (memq indent-line-function
- '(indent-relative indent-relative-maybe))
+ '(indent-relative indent-to-left-margin
+ indent-relative-maybe))
;; Don't reindent the previous line if the indentation function
;; is not a real one.
(goto-char before)
@@ -235,7 +235,8 @@ Returns nil when we can't find this char."
;; Remove the trailing whitespace after indentation because
;; indentation may (re)introduce the whitespace.
(delete-horizontal-space t))))
- (indent-according-to-mode))))
+ (unless (memq indent-line-function '(indent-to-left-margin))
+ (indent-according-to-mode)))))
;;;###autoload
(define-minor-mode electric-indent-mode
@@ -383,5 +384,4 @@ one of those symbols.")
(provide 'electric)
-;; arch-tag: dae045eb-dc2d-4fb7-9f27-9cc2ce277be8
;;; electric.el ends here
diff --git a/lisp/elide-head.el b/lisp/elide-head.el
index 9cf0b8aaa0..5d640f629e 100644
--- a/lisp/elide-head.el
+++ b/lisp/elide-head.el
@@ -1,7 +1,6 @@
;;; elide-head.el --- hide headers in files
-;; Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Keywords: outlines tools
@@ -119,5 +118,4 @@ This is suitable as an entry on `find-file-hook' or appropriate mode hooks."
(provide 'elide-head)
-;; arch-tag: a00e6b5b-6aeb-45b1-b734-63e23df80928
;;; elide-head.el ends here
diff --git a/lisp/emacs-lisp/.gitignore b/lisp/emacs-lisp/.gitignore
index 88830a1c6e..133e79e817 100644
--- a/lisp/emacs-lisp/.gitignore
+++ b/lisp/emacs-lisp/.gitignore
@@ -1,3 +1,2 @@
!*-loaddefs.el
-# arch-tag: d0a60bce-b886-4817-b4c3-9a81ba0308bc
diff --git a/lisp/emacs-lisp/advice.el b/lisp/emacs-lisp/advice.el
index 578e0877d3..915a726ae1 100644
--- a/lisp/emacs-lisp/advice.el
+++ b/lisp/emacs-lisp/advice.el
@@ -1,7 +1,6 @@
;;; advice.el --- an overloading mechanism for Emacs Lisp functions
-;; Copyright (C) 1993, 1994, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 2000-2011 Free Software Foundation, Inc.
;; Author: Hans Chalupsky <[email protected]>
;; Maintainer: FSF
@@ -3008,9 +3007,7 @@ in any of these classes."
(setq usage (if (null usage) t (setq origdoc (cdr usage)) (car usage)))
(if origdoc (setq paragraphs (list origdoc)))
(unless (eq style 'plain)
- (push (propertize (concat "This " origtype " is advised.")
- 'face 'font-lock-warning-face)
- paragraphs))
+ (push (concat "This " origtype " is advised.") paragraphs))
(ad-dolist (class ad-advice-classes)
(ad-dolist (advice (ad-get-enabled-advices function class))
(setq advice-docstring
@@ -3966,5 +3963,4 @@ Use only in REAL emergencies."
(provide 'advice)
-;; arch-tag: 29f8c9a1-8c88-471f-95d7-e28541c6b7c0
;;; advice.el ends here
diff --git a/lisp/emacs-lisp/assoc.el b/lisp/emacs-lisp/assoc.el
index ccab5d90c0..aa85916cc3 100644
--- a/lisp/emacs-lisp/assoc.el
+++ b/lisp/emacs-lisp/assoc.el
@@ -1,7 +1,6 @@
;;; assoc.el --- insert/delete/sort functions on association lists
-;; Copyright (C) 1996, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Barry A. Warsaw <[email protected]>
;; Keywords: extensions
@@ -138,5 +137,4 @@ extra values are ignored. Returns the created alist."
(provide 'assoc)
-;; arch-tag: 3e58bd89-d912-4b74-a0dc-6ed9735922bc
;;; assoc.el ends here
diff --git a/lisp/emacs-lisp/authors.el b/lisp/emacs-lisp/authors.el
index ae49055002..163af88333 100644
--- a/lisp/emacs-lisp/authors.el
+++ b/lisp/emacs-lisp/authors.el
@@ -1,7 +1,6 @@
;;; authors.el --- utility for maintaining Emacs' AUTHORS file -*-coding: utf-8;-*-
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Gerd Moellmann <[email protected]>
;; Maintainer: Kim F. Storm <[email protected]>
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index 4dd1a118eb..7b610d11b0 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -1,8 +1,6 @@
;; autoload.el --- maintain autoloads in loaddefs.el
-;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1991-1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Roland McGrath <[email protected]>
;; Keywords: maint
diff --git a/lisp/emacs-lisp/avl-tree.el b/lisp/emacs-lisp/avl-tree.el
index cd5bae594d..0a637da0bc 100644
--- a/lisp/emacs-lisp/avl-tree.el
+++ b/lisp/emacs-lisp/avl-tree.el
@@ -1,6 +1,6 @@
;;; avl-tree.el --- balanced binary trees, AVL-trees
-;; Copyright (C) 1995, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 2007-2011 Free Software Foundation, Inc.
;; Author: Per Cederqvist <[email protected]>
;; Inge Wallin <[email protected]>
@@ -466,5 +466,4 @@ If there is no such element in the tree, the value is nil."
(provide 'avl-tree)
-;; arch-tag: 47e26701-43c9-4222-bd79-739eac6357a9
;;; avl-tree.el ends here
diff --git a/lisp/emacs-lisp/backquote.el b/lisp/emacs-lisp/backquote.el
index 96e2fb41e8..34e316b2e4 100644
--- a/lisp/emacs-lisp/backquote.el
+++ b/lisp/emacs-lisp/backquote.el
@@ -1,7 +1,6 @@
;;; backquote.el --- implement the ` Lisp construct
-;; Copyright (C) 1990, 1992, 1994, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990, 1992, 1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Rick Sladkey <[email protected]>
;; Maintainer: FSF
@@ -241,5 +240,4 @@ LEVEL is only used internally and indicates the nesting level:
tail))
(t (cons 'list heads)))))
-;; arch-tag: 1a26206a-6b5e-4c56-8e24-2eef0f7e0e7a
;;; backquote.el ends here
diff --git a/lisp/emacs-lisp/benchmark.el b/lisp/emacs-lisp/benchmark.el
index 26c9b4580c..86063c512c 100644
--- a/lisp/emacs-lisp/benchmark.el
+++ b/lisp/emacs-lisp/benchmark.el
@@ -1,7 +1,6 @@
;;; benchmark.el --- support for benchmarking code
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Keywords: lisp, extensions
@@ -116,5 +115,4 @@ For non-interactive use see also `benchmark-run' and
(provide 'benchmark)
-;; arch-tag: be570e24-4b51-4784-adf3-fa2b56c31946
;;; benchmark.el ends here
diff --git a/lisp/emacs-lisp/bindat.el b/lisp/emacs-lisp/bindat.el
index 02a16ed312..fd98b5f41a 100644
--- a/lisp/emacs-lisp/bindat.el
+++ b/lisp/emacs-lisp/bindat.el
@@ -1,6 +1,6 @@
;;; bindat.el --- binary data structure packing and unpacking.
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Kim F. Storm <[email protected]>
;; Assignment name: struct.el
@@ -649,5 +649,4 @@ The port (if any) is omitted. IP can be a string, as well."
(provide 'bindat)
-;; arch-tag: 5e6708c3-03e2-4ad7-9885-5041b779c3fb
;;; bindat.el ends here
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index 24b762c9cb..02107b0e11 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -1,7 +1,6 @@
;;; byte-opt.el --- the optimization passes of the emacs-lisp byte compiler
-;; Copyright (C) 1991, 1994, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1991, 1994, 2000-2011 Free Software Foundation, Inc.
;; Author: Jamie Zawinski <[email protected]>
;; Hallvard Furuseth <[email protected]>
diff --git a/lisp/emacs-lisp/byte-run.el b/lisp/emacs-lisp/byte-run.el
index 0388435dbc..524f4f1b46 100644
--- a/lisp/emacs-lisp/byte-run.el
+++ b/lisp/emacs-lisp/byte-run.el
@@ -1,7 +1,6 @@
;;; byte-run.el --- byte-compiler support for inlining
-;; Copyright (C) 1992, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 2001-2011 Free Software Foundation, Inc.
;; Author: Jamie Zawinski <[email protected]>
;; Hallvard Furuseth <[email protected]>
@@ -292,5 +291,4 @@ In interpreted code, this is entirely equivalent to `progn'."
;; (file-format emacs19))"
;; nil)
-;; arch-tag: 76f8328a-1f66-4df2-9b6d-5c3666dc05e9
;;; byte-run.el ends here
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 82b5ed3367..be3e1ed617 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -1,7 +1,6 @@
;;; bytecomp.el --- compilation of Lisp code into byte code
-;; Copyright (C) 1985, 1986, 1987, 1992, 1994, 1998, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1987, 1992, 1994, 1998, 2000-2011
;; Free Software Foundation, Inc.
;; Author: Jamie Zawinski <[email protected]>
@@ -2177,9 +2176,9 @@ list that represents a doc string reference.
;; to objects already output
;; (for instance, gensyms in the arg list).
(let (non-nil)
- (dotimes (i (length print-number-table))
- (if (aref print-number-table i)
- (setq non-nil t)))
+ (when (hash-table-p print-number-table)
+ (maphash (lambda (k v) (if v (setq non-nil t)))
+ print-number-table))
(not non-nil)))
;; Output the byte code and constants specially
;; for lazy dynamic loading.
diff --git a/lisp/emacs-lisp/chart.el b/lisp/emacs-lisp/chart.el
index 84bfd706af..01eb1efdc3 100644
--- a/lisp/emacs-lisp/chart.el
+++ b/lisp/emacs-lisp/chart.el
@@ -1,7 +1,7 @@
;;; chart.el --- Draw charts (bar charts, etc)
-;; Copyright (C) 1996, 1998, 1999, 2001, 2004, 2005, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1998-1999, 2001, 2004-2005, 2007-2011
+;; Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Version: 0.2
@@ -62,17 +62,13 @@
(require 'eieio)
;;; Code:
-(defvar chart-map (make-sparse-keymap) "Keymap used in chart mode.")
+(defvar chart-mode-map (make-sparse-keymap) "Keymap used in chart mode.")
+(define-obsolete-variable-alias 'chart-map 'chart-mode-map "24.1")
(defvar chart-local-object nil
"Local variable containing the locally displayed chart object.")
(make-variable-buffer-local 'chart-local-object)
-(defvar chart-face-list nil
- "Faces used to colorize charts.
-List is limited currently, which is ok since you really can't display
-too much in text characters anyways.")
-
(defvar chart-face-color-list '("red" "green" "blue"
"cyan" "yellow" "purple")
"Colors to use when generating `chart-face-list'.
@@ -90,41 +86,42 @@ Useful if new Emacs is used on B&W display.")
:group 'eieio
:type 'boolean)
-(if (and (if (fboundp 'display-color-p)
- (display-color-p)
- window-system)
- (not chart-face-list))
- (let ((cl chart-face-color-list)
- (pl chart-face-pixmap-list)
- nf)
- (while cl
- (setq nf (make-face (intern (concat "chart-" (car cl) "-" (car pl)))))
- (if (condition-case nil
- (> (x-display-color-cells) 4)
- (error t))
- (set-face-background nf (car cl))
- (set-face-background nf "white"))
- (set-face-foreground nf "black")
- (if (and chart-face-use-pixmaps
- pl
- (fboundp 'set-face-background-pixmap))
- (condition-case nil
- (set-face-background-pixmap nf (car pl))
- (error (message "Cannot set background pixmap %s" (car pl)))))
- (setq chart-face-list (cons nf chart-face-list))
- (setq cl (cdr cl)
- pl (cdr pl)))))
-
-(defun chart-mode ()
+(defvar chart-face-list
+ (if (if (fboundp 'display-color-p)
+ (display-color-p)
+ window-system)
+ (let ((cl chart-face-color-list)
+ (pl chart-face-pixmap-list)
+ (faces ())
+ nf)
+ (while cl
+ (setq nf (make-face
+ (intern (concat "chart-" (car cl) "-" (car pl)))))
+ (set-face-background nf (if (condition-case nil
+ (> (x-display-color-cells) 4)
+ (error t))
+ (car cl)
+ "white"))
+ (set-face-foreground nf "black")
+ (if (and chart-face-use-pixmaps
+ pl
+ (fboundp 'set-face-background-pixmap))
+ (condition-case nil
+ (set-face-background-pixmap nf (car pl))
+ (error (message "Cannot set background pixmap %s" (car pl)))))
+ (push nf faces)
+ (setq cl (cdr cl)
+ pl (cdr pl)))
+ faces))
+ "Faces used to colorize charts.
+List is limited currently, which is ok since you really can't display
+too much in text characters anyways.")
+
+(define-derived-mode chart-mode fundamental-mode "CHART"
"Define a mode in Emacs for displaying a chart."
- (kill-all-local-variables)
- (use-local-map chart-map)
- (setq major-mode 'chart-mode
- mode-name "CHART")
(buffer-disable-undo)
(set (make-local-variable 'font-lock-global-modes) nil)
- (font-lock-mode -1)
- (run-hooks 'chart-mode-hook)
+ (font-lock-mode -1) ;Isn't it off already? --Stef
)
(defun chart-new-buffer (obj)
diff --git a/lisp/emacs-lisp/check-declare.el b/lisp/emacs-lisp/check-declare.el
index c027f31f3a..f6ff67a90c 100644
--- a/lisp/emacs-lisp/check-declare.el
+++ b/lisp/emacs-lisp/check-declare.el
@@ -1,6 +1,6 @@
;;; check-declare.el --- Check declare-function statements
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Glenn Morris <[email protected]>
;; Keywords: lisp, tools, maint
@@ -314,5 +314,4 @@ Returns non-nil if any false statements are found."
(provide 'check-declare)
-;; arch-tag: a4d6cdc4-deb7-4502-b327-0e4ef3d82d96
;;; check-declare.el ends here.
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index 0a3b3c94ff..2d3b228cbd 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -1,7 +1,6 @@
;;; checkdoc.el --- check documentation strings for style requirements
-;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Version: 0.6.2
@@ -1798,7 +1797,9 @@ Replace with \"%s\"? " original replace)
(let ((found nil) (start (point)) (msg nil) (ms nil))
(while (and (not msg)
(re-search-forward
- "[^-([`':a-zA-Z]\\(\\w+[:-]\\(\\w\\|\\s_\\)+\\)[^]']"
+ ;; Ignore manual page refereces like
+ ;; git-config(1).
+ "[^-([`':a-zA-Z]\\(\\w+[:-]\\(\\w\\|\\s_\\)+\\)[^](']"
e t))
(setq ms (match-string 1))
;; A . is a \s_ char, so we must remove periods from
diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el
index b7c908882e..885424ec72 100644
--- a/lisp/emacs-lisp/cl-extra.el
+++ b/lisp/emacs-lisp/cl-extra.el
@@ -1,7 +1,6 @@
;;; cl-extra.el --- Common Lisp features, part 2
-;; Copyright (C) 1993, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 2000-2011 Free Software Foundation, Inc.
;; Author: Dave Gillespie <[email protected]>
;; Keywords: extensions
@@ -826,5 +825,4 @@ This also does some trivial optimizations to make the form prettier."
;; generated-autoload-file: "cl-loaddefs.el"
;; End:
-;; arch-tag: bcd03437-0871-43fb-a8f1-ad0e0b5427ed
;;; cl-extra.el ends here
diff --git a/lisp/emacs-lisp/cl-indent.el b/lisp/emacs-lisp/cl-indent.el
index 4e7ada8851..787f276eca 100644
--- a/lisp/emacs-lisp/cl-indent.el
+++ b/lisp/emacs-lisp/cl-indent.el
@@ -1,7 +1,6 @@
;;; cl-indent.el --- enhanced lisp-indent mode
-;; Copyright (C) 1987, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1987, 2000-2011 Free Software Foundation, Inc.
;; Author: Richard Mlynarik <[email protected]>
;; Created: July 1987
@@ -691,5 +690,4 @@ For example, the function `case' has an indent property
;(put 'defclass 'common-lisp-indent-function '((&whole 2 &rest (&whole 2 &rest 1) &rest (&whole 2 &rest 1)))
;(put 'defgeneric 'common-lisp-indent-function 'defun)
-;; arch-tag: 7914d50f-92ec-4476-93fc-0f043a380e03
;;; cl-indent.el ends here
diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el
index 74d7432bec..05bfa0f262 100644
--- a/lisp/emacs-lisp/cl-loaddefs.el
+++ b/lisp/emacs-lisp/cl-loaddefs.el
@@ -10,7 +10,7 @@
;;;;;; ceiling* floor* isqrt lcm gcd cl-progv-before cl-set-frame-visible-p
;;;;;; cl-map-overlays cl-map-intervals cl-map-keymap-recursively
;;;;;; notevery notany every some mapcon mapcan mapl maplist map
-;;;;;; cl-mapcar-many equalp coerce) "cl-extra" "cl-extra.el" "20c8c875ff1d11dd819e15a1f25afd73")
+;;;;;; cl-mapcar-many equalp coerce) "cl-extra" "cl-extra.el" "60f6b85256416c5f2a0a3954a11523b6")
;;; Generated autoloads from cl-extra.el
(autoload 'coerce "cl-extra" "\
@@ -282,7 +282,7 @@ Not documented
;;;;;; do-all-symbols do-symbols dotimes dolist do* do loop return-from
;;;;;; return block etypecase typecase ecase case load-time-value
;;;;;; eval-when destructuring-bind function* defmacro* defun* gentemp
-;;;;;; gensym) "cl-macs" "cl-macs.el" "34ea402a8756c7d74d27cdcecf35e3c3")
+;;;;;; gensym) "cl-macs" "cl-macs.el" "8b2ce9c2ec0e273606bb37c333c4bdde")
;;; Generated autoloads from cl-macs.el
(autoload 'gensym "cl-macs" "\
@@ -754,7 +754,7 @@ surrounded by (block NAME ...).
;;;;;; find nsubstitute-if-not nsubstitute-if nsubstitute substitute-if-not
;;;;;; substitute-if substitute delete-duplicates remove-duplicates
;;;;;; delete-if-not delete-if delete* remove-if-not remove-if remove*
-;;;;;; replace fill reduce) "cl-seq" "cl-seq.el" "7b7531276ddf8457abecdd487d3cf0b7")
+;;;;;; replace fill reduce) "cl-seq" "cl-seq.el" "43e0c1183e738e1e1038cdd84fde8366")
;;; Generated autoloads from cl-seq.el
(autoload 'reduce "cl-seq" "\
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 725b98354a..bef334b544 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -1,7 +1,6 @@
;;; cl-macs.el --- Common Lisp macros
-;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
;; Author: Dave Gillespie <[email protected]>
;; Version: 2.02
diff --git a/lisp/emacs-lisp/cl-seq.el b/lisp/emacs-lisp/cl-seq.el
index a5070e4ace..fcd21b73de 100644
--- a/lisp/emacs-lisp/cl-seq.el
+++ b/lisp/emacs-lisp/cl-seq.el
@@ -1,7 +1,6 @@
;;; cl-seq.el --- Common Lisp features, part 3
-;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
;; Author: Dave Gillespie <[email protected]>
;; Version: 2.02
@@ -1018,5 +1017,4 @@ Atoms are compared by `eql'; cons cells are compared recursively.
;; generated-autoload-file: "cl-loaddefs.el"
;; End:
-;; arch-tag: ec1cc072-9006-4225-b6ba-d6b07ed1710c
;;; cl-seq.el ends here
diff --git a/lisp/emacs-lisp/cl-specs.el b/lisp/emacs-lisp/cl-specs.el
index 776ce5e9ca..7359da65e0 100644
--- a/lisp/emacs-lisp/cl-specs.el
+++ b/lisp/emacs-lisp/cl-specs.el
@@ -1,7 +1,6 @@
;;; cl-specs.el --- Edebug specs for cl.el -*- no-byte-compile: t -*-
-;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
;; Author: Daniel LaLiberte <[email protected]>
;; Keywords: lisp, tools, maint
;; Package: emacs
@@ -469,5 +468,4 @@
(def-edebug-spec loop-d-type-spec
(&or (loop-d-type-spec . [&or nil loop-d-type-spec]) cl-type-spec))
-;; arch-tag: b29aa3c2-cf67-4af8-9ee1-318fea61b478
;;; cl-specs.el ends here
diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el
index 9b275255b2..1d2b82f82e 100644
--- a/lisp/emacs-lisp/cl.el
+++ b/lisp/emacs-lisp/cl.el
@@ -1,7 +1,6 @@
;;; cl.el --- Common Lisp extensions for Emacs
-;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
;; Author: Dave Gillespie <[email protected]>
;; Version: 2.02
@@ -676,5 +675,4 @@ If ALIST is non-nil, the new pairs are prepended to it."
;; byte-compile-warnings: (not cl-functions)
;; End:
-;; arch-tag: 5f07fa74-f153-4524-9303-21f5be125851
;;; cl.el ends here
diff --git a/lisp/emacs-lisp/copyright.el b/lisp/emacs-lisp/copyright.el
index 43eb61b0be..582785a0e9 100644
--- a/lisp/emacs-lisp/copyright.el
+++ b/lisp/emacs-lisp/copyright.el
@@ -1,7 +1,6 @@
;;; copyright.el --- update the copyright notice in current buffer
-;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1998, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1991-1995, 1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Daniel Pfeiffer <[email protected]>
;; Keywords: maint, tools
@@ -47,6 +46,7 @@ This is useful for ChangeLogs."
:group 'copyright
:type 'boolean
:version "23.1")
+;;;###autoload(put 'copyright-at-end-flag 'safe-local-variable 'booleanp)
(defcustom copyright-regexp
"\\(©\\|@copyright{}\\|[Cc]opyright\\s *:?\\s *\\(?:(C)\\)?\
@@ -66,6 +66,11 @@ someone else or to a group for which you do not work."
:group 'copyright
:type 'regexp)
+;; The worst that can happen is a malicious regexp that overflows in
+;; the regexp matcher, a minor nuisance. It's a pain to be always
+;; prompted if you want to put this in a dir-locals.el.
+;;;###autoload(put 'copyright-names-regexp 'safe-local-variable 'stringp)
+
(defcustom copyright-years-regexp
"\\(\\s *\\)\\([1-9]\\([-0-9, ';/*%#\n\t]\\|\\s<\\|\\s>\\)*[0-9]+\\)"
"Match additional copyright notice years.
@@ -73,6 +78,19 @@ The second \\( \\) construct must match the years."
:group 'copyright
:type 'regexp)
+;; See "Copyright Notices" in maintain.info.
+;; TODO? 'end only for ranges at the end, other for all ranges.
+;; Minimum limit on the size of a range?
+(defcustom copyright-year-ranges nil
+ "Non-nil if individual consecutive years should be replaced with a range.
+For example: 2005, 2006, 2007, 2008 might be replaced with 2005-2008.
+If you use ranges, you should add an explanatory note in a README file.
+The function `copyright-fix-year' respects this variable."
+ :group 'copyright
+ :type 'boolean
+ :version "24.1")
+
+;;;###autoload(put 'copyright-year-ranges 'safe-local-variable 'booleanp)
(defcustom copyright-query 'function
"If non-nil, ask user before changing copyright.
@@ -120,78 +138,88 @@ When this is `function', only ask when called non-interactively."
(< (point) (- (point-max) copyright-limit))
(> (point) (+ (point-min) copyright-limit)))))
+(defun copyright-find-copyright ()
+ "Return non-nil if a copyright header suitable for updating is found.
+The header must match `copyright-regexp' and `copyright-names-regexp', if set.
+This function sets the match-data that `copyright-update-year' uses."
+ (widen)
+ (goto-char (copyright-start-point))
+ (condition-case err
+ ;; (1) Need the extra \\( \\) around copyright-regexp because we
+ ;; goto (match-end 1) below. See note (2) below.
+ (copyright-re-search (concat "\\(" copyright-regexp
+ "\\)\\([ \t]*\n\\)?.*\\(?:"
+ copyright-names-regexp "\\)")
+ (copyright-limit)
+ t)
+ ;; In case the regexp is rejected. This is useful because
+ ;; copyright-update is typically called from before-save-hook where
+ ;; such an error is very inconvenient for the user.
+ (error (message "Can't update copyright: %s" err) nil)))
+
+(defun copyright-find-end ()
+ "Possibly adjust the search performed by `copyright-find-copyright'.
+If the years continue onto multiple lines that are marked as comments,
+skips to the end of all the years."
+ (while (save-excursion
+ (and (eq (following-char) ?,)
+ (progn (forward-char 1) t)
+ (progn (skip-chars-forward " \t") (eolp))
+ comment-start-skip
+ (save-match-data
+ (forward-line 1)
+ (and (looking-at comment-start-skip)
+ (goto-char (match-end 0))))
+ (looking-at-p copyright-years-regexp)))
+ (forward-line 1)
+ (re-search-forward comment-start-skip)
+ ;; (2) Need the extra \\( \\) so that the years are subexp 3, as
+ ;; they are at note (1) above.
+ (re-search-forward (format "\\(%s\\)" copyright-years-regexp))))
+
(defun copyright-update-year (replace noquery)
- (when
- (condition-case err
- ;; (1) Need the extra \\( \\) around copyright-regexp because we
- ;; goto (match-end 1) below. See note (2) below.
- (copyright-re-search (concat "\\(" copyright-regexp
- "\\)\\([ \t]*\n\\)?.*\\(?:"
- copyright-names-regexp "\\)")
- (copyright-limit)
- t)
- ;; In case the regexp is rejected. This is useful because
- ;; copyright-update is typically called from before-save-hook where
- ;; such an error is very inconvenient for the user.
- (error (message "Can't update copyright: %s" err) nil))
- (goto-char (match-end 1))
- ;; If the years are continued onto multiple lines
- ;; that are marked as comments, skip to the end of the years anyway.
- (while (save-excursion
- (and (eq (following-char) ?,)
- (progn (forward-char 1) t)
- (progn (skip-chars-forward " \t") (eolp))
- comment-start-skip
- (save-match-data
- (forward-line 1)
- (and (looking-at comment-start-skip)
- (goto-char (match-end 0))))
- (looking-at-p copyright-years-regexp)))
- (forward-line 1)
- (re-search-forward comment-start-skip)
- ;; (2) Need the extra \\( \\) so that the years are subexp 3, as
- ;; they are at note (1) above.
- (re-search-forward (format "\\(%s\\)" copyright-years-regexp)))
-
- ;; Note that `current-time-string' isn't locale-sensitive.
- (setq copyright-current-year (substring (current-time-string) -4))
- (unless (string= (buffer-substring (- (match-end 3) 2) (match-end 3))
- (substring copyright-current-year -2))
- (if (or noquery
- (save-window-excursion
- (switch-to-buffer (current-buffer))
- ;; Fixes some point-moving oddness (bug#2209).
- (save-excursion
- (y-or-n-p (if replace
- (concat "Replace copyright year(s) by "
- copyright-current-year "? ")
- (concat "Add " copyright-current-year
- " to copyright? "))))))
- (if replace
- (replace-match copyright-current-year t t nil 3)
- (let ((size (save-excursion (skip-chars-backward "0-9"))))
- (if (and (eq (% (- (string-to-number copyright-current-year)
- (string-to-number (buffer-substring
- (+ (point) size)
- (point))))
- 100)
- 1)
- (or (eq (char-after (+ (point) size -1)) ?-)
- (eq (char-after (+ (point) size -2)) ?-)))
- ;; This is a range so just replace the end part.
- (delete-char size)
- ;; Insert a comma with the preferred number of spaces.
- (insert
- (save-excursion
- (if (re-search-backward "[0-9]\\( *, *\\)[0-9]"
- (line-beginning-position) t)
- (match-string 1)
- ", ")))
- ;; If people use the '91 '92 '93 scheme, do that as well.
- (if (eq (char-after (+ (point) size -3)) ?')
- (insert ?')))
- ;; Finally insert the new year.
- (insert (substring copyright-current-year size))))))))
+ ;; This uses the match-data from copyright-find-copyright/end.
+ (goto-char (match-end 1))
+ (copyright-find-end)
+ ;; Note that `current-time-string' isn't locale-sensitive.
+ (setq copyright-current-year (substring (current-time-string) -4))
+ (unless (string= (buffer-substring (- (match-end 3) 2) (match-end 3))
+ (substring copyright-current-year -2))
+ (if (or noquery
+ (save-window-excursion
+ (switch-to-buffer (current-buffer))
+ ;; Fixes some point-moving oddness (bug#2209).
+ (save-excursion
+ (y-or-n-p (if replace
+ (concat "Replace copyright year(s) by "
+ copyright-current-year "? ")
+ (concat "Add " copyright-current-year
+ " to copyright? "))))))
+ (if replace
+ (replace-match copyright-current-year t t nil 3)
+ (let ((size (save-excursion (skip-chars-backward "0-9"))))
+ (if (and (eq (% (- (string-to-number copyright-current-year)
+ (string-to-number (buffer-substring
+ (+ (point) size)
+ (point))))
+ 100)
+ 1)
+ (or (eq (char-after (+ (point) size -1)) ?-)
+ (eq (char-after (+ (point) size -2)) ?-)))
+ ;; This is a range so just replace the end part.
+ (delete-char size)
+ ;; Insert a comma with the preferred number of spaces.
+ (insert
+ (save-excursion
+ (if (re-search-backward "[0-9]\\( *, *\\)[0-9]"
+ (line-beginning-position) t)
+ (match-string 1)
+ ", ")))
+ ;; If people use the '91 '92 '93 scheme, do that as well.
+ (if (eq (char-after (+ (point) size -3)) ?')
+ (insert ?')))
+ ;; Finally insert the new year.
+ (insert (substring copyright-current-year size)))))))
;;;###autoload
(defun copyright-update (&optional arg interactivep)
@@ -208,76 +236,110 @@ interactively."
(and (eq copyright-query 'function) interactivep))))
(save-excursion
(save-restriction
- (widen)
- (goto-char (copyright-start-point))
- (copyright-update-year arg noquery)
- (goto-char (copyright-start-point))
- (and copyright-current-gpl-version
- ;; match the GPL version comment in .el files, including the
- ;; bilingual Esperanto one in two-column, and in texinfo.tex
- (copyright-re-search
- "\\(the Free Software Foundation;\
- either \\|; a\\^u eldono \\([0-9]+\\)a, ? a\\^u (la\\^u via \\)\
-version \\([0-9]+\\), or (at"
- (copyright-limit) t)
- ;; Don't update if the file is already using a more recent
- ;; version than the "current" one.
- (< (string-to-number (match-string 3))
- (string-to-number copyright-current-gpl-version))
- (or noquery
- (save-match-data
- (save-window-excursion
- (switch-to-buffer (current-buffer))
- (y-or-n-p (format "Replace GPL version by %s? "
- copyright-current-gpl-version)))))
- (progn
- (if (match-end 2)
- ;; Esperanto bilingual comment in two-column.el
- (replace-match copyright-current-gpl-version t t nil 2))
- (replace-match copyright-current-gpl-version t t nil 3))))
+ ;; If names-regexp doesn't match, we should not mess with
+ ;; the years _or_ the GPL version.
+ ;; TODO there may be multiple copyrights we should update.
+ (when (copyright-find-copyright)
+ (copyright-update-year arg noquery)
+ (goto-char (copyright-start-point))
+ (and copyright-current-gpl-version
+ ;; Match the GPL version comment in .el files.
+ ;; This is sensitive to line-breaks. :(
+ (copyright-re-search
+ "the Free Software Foundation[,;\n].*either version \
+\\([0-9]+\\)\\(?: of the License\\)?, or[ \n].*any later version"
+ (copyright-limit) t)
+ ;; Don't update if the file is already using a more recent
+ ;; version than the "current" one.
+ (< (string-to-number (match-string 1))
+ (string-to-number copyright-current-gpl-version))
+ (or noquery
+ (save-match-data
+ (goto-char (match-end 1))
+ (save-window-excursion
+ (switch-to-buffer (current-buffer))
+ (y-or-n-p
+ (format "Replace GPL version %s with version %s? "
+ (match-string-no-properties 1)
+ copyright-current-gpl-version)))))
+ (replace-match copyright-current-gpl-version t t nil 1))))
(set (make-local-variable 'copyright-update) nil)))
;; If a write-file-hook returns non-nil, the file is presumed to be written.
nil))
-;; FIXME should be within 50 years of present (cf calendar).
+;; FIXME heuristic should be within 50 years of present (cf calendar).
;;;###autoload
(defun copyright-fix-years ()
"Convert 2 digit years to 4 digit years.
-Uses heuristic: year >= 50 means 19xx, < 50 means 20xx."
+Uses heuristic: year >= 50 means 19xx, < 50 means 20xx.
+If `copyright-year-ranges' (which see) is non-nil, also
+independently replaces consecutive years with a range."
(interactive)
- (widen)
- (goto-char (copyright-start-point))
- (if (copyright-re-search copyright-regexp (copyright-limit) t)
- (let ((s (match-beginning 2))
- (e (copy-marker (1+ (match-end 2))))
+ ;; TODO there may be multiple copyrights we should fix.
+ (if (copyright-find-copyright)
+ (let ((s (match-beginning 3))
(p (make-marker))
- last)
+ ;; Not line-beg-pos, so we don't mess up leading whitespace.
+ (copystart (match-beginning 0))
+ e last sep year prev-year first-year range-start range-end)
+ ;; In case years are continued over multiple, commented lines.
+ (goto-char (match-end 1))
+ (copyright-find-end)
+ (setq e (copy-marker (1+ (match-end 3))))
(goto-char s)
(while (re-search-forward "[0-9]+" e t)
(set-marker p (point))
(goto-char (match-beginning 0))
- (let ((sep (char-before))
- (year (string-to-number (match-string 0))))
- (when (and sep
- (/= (char-syntax sep) ?\s)
- (/= sep ?-))
- (insert " "))
- (when (< year 100)
- (insert (if (>= year 50) "19" "20"))))
+ (setq year (string-to-number (match-string 0)))
+ (and (setq sep (char-before))
+ (/= (char-syntax sep) ?\s)
+ (/= sep ?-)
+ (insert " "))
+ (when (< year 100)
+ (insert (if (>= year 50) "19" "20"))
+ (setq year (+ year (if (>= year 50) 1900 2000))))
(goto-char p)
- (setq last p))
+ (when copyright-year-ranges
+ ;; If the previous thing was a range, don't try to tack more on.
+ ;; Ie not 2000-2005 -> 2000-2005-2007
+ ;; TODO should merge into existing range if possible.
+ (if (eq sep ?-)
+ (setq prev-year nil
+ year nil)
+ (if (and prev-year (= year (1+ prev-year)))
+ (setq range-end (point))
+ (when (and first-year prev-year
+ (> prev-year first-year))
+ (goto-char range-end)
+ (delete-region range-start range-end)
+ (insert (format "-%d" prev-year))
+ (goto-char p))
+ (setq first-year year
+ range-start (point)))))
+ (setq prev-year year
+ last p))
(when last
+ (when (and copyright-year-ranges
+ first-year prev-year
+ (> prev-year first-year))
+ (goto-char range-end)
+ (delete-region range-start range-end)
+ (insert (format "-%d" prev-year)))
(goto-char last)
;; Don't mess up whitespace after the years.
(skip-chars-backward " \t")
- (save-restriction
- (narrow-to-region (copyright-start-point) (point))
- (let ((fill-prefix " "))
- (fill-region s last))))
+ (save-restriction
+ (narrow-to-region copystart (point))
+ ;; This is clearly wrong, eg what about comment markers?
+ ;;; (let ((fill-prefix " "))
+ ;; TODO do not break copyright owner over lines.
+ (fill-region (point-min) (point-max))))
(set-marker e nil)
- (set-marker p nil)
- (copyright-update nil t))
+ (set-marker p nil))
+ ;; Simply reformatting the years is not copyrightable, so it does
+ ;; not seem right to call this. Also it messes with ranges.
+;;; (copyright-update nil t))
(message "No copyright message")))
;;;###autoload
@@ -292,17 +354,24 @@ Uses heuristic: year >= 50 means 19xx, < 50 means 20xx."
(message "Copyright extends beyond `copyright-limit' and won't be updated automatically."))
comment-end \n)
+;; TODO: recurse, exclude COPYING etc.
;;;###autoload
-(defun copyright-update-directory (directory match)
- "Update copyright notice for all files in DIRECTORY matching MATCH."
+(defun copyright-update-directory (directory match &optional fix)
+ "Update copyright notice for all files in DIRECTORY matching MATCH.
+If FIX is non-nil, run `copyright-fix-years' instead."
(interactive "DDirectory: \nMFilenames matching (regexp): ")
(dolist (file (directory-files directory t match nil))
- (message "Updating file `%s'" file)
- (find-file file)
- (let ((copyright-query nil))
- (copyright-update))
- (save-buffer)
- (kill-buffer (current-buffer))))
+ (unless (file-directory-p file)
+ (message "Updating file `%s'" file)
+ (find-file file)
+ (let ((inhibit-read-only t)
+ (enable-local-variables :safe)
+ copyright-query)
+ (if fix
+ (copyright-fix-years)
+ (copyright-update)))
+ (save-buffer)
+ (kill-buffer (current-buffer)))))
(provide 'copyright)
@@ -311,5 +380,4 @@ Uses heuristic: year >= 50 means 19xx, < 50 means 20xx."
;; coding: utf-8
;; End:
-;; arch-tag: b4991afb-b6b1-4590-bebe-e076d9d4aee8
;;; copyright.el ends here
diff --git a/lisp/emacs-lisp/crm.el b/lisp/emacs-lisp/crm.el
index 722b901be1..3848ab7e6e 100644
--- a/lisp/emacs-lisp/crm.el
+++ b/lisp/emacs-lisp/crm.el
@@ -1,7 +1,6 @@
;;; crm.el --- read multiple strings with completion
-;; Copyright (C) 1985, 1986, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1986, 1993-2011 Free Software Foundation, Inc.
;; Author: Sen Nagata <[email protected]>
;; Keywords: completion, minibuffer, multiple elements
@@ -321,5 +320,4 @@ INHERIT-INPUT-METHOD."
(provide 'crm)
-;; arch-tag: db1911d9-86c6-4a42-b32a-4910701b15a6
;;; crm.el ends here
diff --git a/lisp/emacs-lisp/cust-print.el b/lisp/emacs-lisp/cust-print.el
index ee1a57231c..e7f9aae1c6 100644
--- a/lisp/emacs-lisp/cust-print.el
+++ b/lisp/emacs-lisp/cust-print.el
@@ -1,7 +1,6 @@
;;; cust-print.el --- handles print-level and print-circle
-;; Copyright (C) 1992, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 2001-2011 Free Software Foundation, Inc.
;; Author: Daniel LaLiberte <[email protected]>
;; Adapted-By: ESR
@@ -681,5 +680,4 @@ See `custom-format' for the details."
(provide 'cust-print)
-;; arch-tag: 3a5a8650-622c-48c4-87d8-e01bf72ec580
;;; cust-print.el ends here
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
index 17fcf7ad6c..88633eaaa4 100644
--- a/lisp/emacs-lisp/debug.el
+++ b/lisp/emacs-lisp/debug.el
@@ -1,7 +1,6 @@
;;; debug.el --- debuggers and related commands for Emacs
-;; Copyright (C) 1985, 1986, 1994, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1986, 1994, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: lisp, tools, maint
@@ -890,5 +889,4 @@ To specify a nil argument interactively, exit with an empty minibuffer."
(provide 'debug)
-;; arch-tag: b6ec7047-f801-4103-9c63-d69322db9d3b
;;; debug.el ends here
diff --git a/lisp/emacs-lisp/derived.el b/lisp/emacs-lisp/derived.el
index 3456d1a63f..425a77ee77 100644
--- a/lisp/emacs-lisp/derived.el
+++ b/lisp/emacs-lisp/derived.el
@@ -1,8 +1,7 @@
;;; derived.el --- allow inheritance of major modes
;; (formerly mode-clone.el)
-;; Copyright (C) 1993, 1994, 1999, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 1999, 2001-2011 Free Software Foundation, Inc.
;; Author: David Megginson ([email protected])
;; Maintainer: FSF
@@ -457,5 +456,4 @@ Where the new table already has an entry, nothing is copied from the old one."
(provide 'derived)
-;; arch-tag: 630be248-47d1-4f02-afa0-8207de0ebea0
;;; derived.el ends here
diff --git a/lisp/emacs-lisp/disass.el b/lisp/emacs-lisp/disass.el
index 18aa5fde0c..9ee02a98e5 100644
--- a/lisp/emacs-lisp/disass.el
+++ b/lisp/emacs-lisp/disass.el
@@ -1,7 +1,6 @@
;;; disass.el --- disassembler for compiled Emacs Lisp code
-;; Copyright (C) 1986, 1991, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1991, 2002-2011 Free Software Foundation, Inc.
;; Author: Doug Cutting <[email protected]>
;; Jamie Zawinski <[email protected]>
@@ -269,5 +268,4 @@ OBJ should be a call to BYTE-CODE generated by the byte compiler."
(provide 'disass)
-;; arch-tag: 89482fe4-a087-4761-8dc6-d771054e763a
;;; disass.el ends here
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index 9a703c9637..46dc1f162b 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -1,7 +1,6 @@
;;; easy-mmode.el --- easy definition for major and minor modes
-;; Copyright (C) 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Georges Brun-Cottan <[email protected]>
;; Maintainer: Stefan Monnier <[email protected]>
@@ -94,8 +93,9 @@ Optional INIT-VALUE is the initial value of the mode's variable.
Optional LIGHTER is displayed in the modeline when the mode is on.
Optional KEYMAP is the default keymap bound to the mode keymap.
If non-nil, it should be a variable name (whose value is a keymap),
- a keymap, or a list of arguments for `easy-mmode-define-keymap'.
- If KEYMAP is a keymap or list, this also defines the variable MODE-map.
+ or an expression that returns either a keymap or a list of
+ arguments for `easy-mmode-define-keymap'. If KEYMAP is not a symbol,
+ this also defines the variable MODE-map.
BODY contains code to execute each time the mode is enabled or disabled.
It is executed after toggling the mode, and before running MODE-hook.
@@ -274,7 +274,7 @@ With zero or negative ARG turn mode off.
(let ((m ,keymap))
(cond ((keymapp m) m)
((listp m) (easy-mmode-define-keymap m))
- (t (error "Invalid keymap %S" ,keymap))))
+ (t (error "Invalid keymap %S" m))))
,(format "Keymap for `%s'." mode-name)))
,(if (not (symbolp mode))
diff --git a/lisp/emacs-lisp/easymenu.el b/lisp/emacs-lisp/easymenu.el
index 9992861fc3..7957343714 100644
--- a/lisp/emacs-lisp/easymenu.el
+++ b/lisp/emacs-lisp/easymenu.el
@@ -1,7 +1,6 @@
;;; easymenu.el --- support the easymenu interface for defining a menu
-;; Copyright (C) 1994, 1996, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1996, 1998-2011 Free Software Foundation, Inc.
;; Keywords: emulations
;; Author: Richard Stallman <[email protected]>
@@ -30,6 +29,8 @@
;;; Code:
+(eval-when-compile (require 'cl))
+
(defvar easy-menu-precalculate-equivalent-keybindings nil
"Determine when equivalent key bindings are computed for easy-menu menus.
It can take some time to calculate the equivalent key bindings that are shown
@@ -66,8 +67,8 @@ expression has a non-nil value. `:included' is an alias for `:visible'.
:active ENABLE
-ENABLE is an expression; the menu is enabled for selection
-whenever this expression's value is non-nil.
+ENABLE is an expression; the menu is enabled for selection whenever
+this expression's value is non-nil. `:enable' is an alias for `:active'.
The rest of the elements in MENU, are menu items.
@@ -104,8 +105,8 @@ keyboard equivalent.
:active ENABLE
-ENABLE is an expression; the item is enabled for selection
-whenever this expression's value is non-nil.
+ENABLE is an expression; the item is enabled for selection whenever
+this expression's value is non-nil. `:enable' is an alias for `:active'.
:visible INCLUDE
@@ -163,10 +164,13 @@ This is expected to be bound to a mouse event."
(prog1 (get menu 'menu-prop)
(setq menu (symbol-function menu))))))
(cons 'menu-item
- (cons (or item-name
- (if (keymapp menu)
- (keymap-prompt menu))
- "")
+ (cons (if (eq :label (car props))
+ (prog1 (cadr props)
+ (setq props (cddr props)))
+ (or item-name
+ (if (keymapp menu)
+ (keymap-prompt menu))
+ ""))
(cons menu props)))))
;;;###autoload
@@ -232,15 +236,14 @@ possibly preceded by keyword pairs as described in `easy-menu-define'."
(keywordp (setq keyword (car menu-items))))
(setq arg (cadr menu-items))
(setq menu-items (cddr menu-items))
- (cond
- ((eq keyword :filter)
+ (case keyword
+ (:filter
(setq filter `(lambda (menu)
(easy-menu-filter-return (,arg menu) ,menu-name))))
- ((eq keyword :active) (setq enable (or arg ''nil)))
- ((eq keyword :label) (setq label arg))
- ((eq keyword :help) (setq help arg))
- ((or (eq keyword :included) (eq keyword :visible))
- (setq visible (or arg ''nil)))))
+ ((:enable :active) (setq enable (or arg ''nil)))
+ (:label (setq label arg))
+ (:help (setq help arg))
+ ((:included :visible) (setq visible (or arg ''nil)))))
(if (equal visible ''nil)
nil ; Invisible menu entry, return nil.
(if (and visible (not (easy-menu-always-true-p visible)))
@@ -249,14 +252,14 @@ possibly preceded by keyword pairs as described in `easy-menu-define'."
(setq prop (cons :enable (cons enable prop))))
(if filter (setq prop (cons :filter (cons filter prop))))
(if help (setq prop (cons :help (cons help prop))))
- (if label (setq prop (cons nil (cons label prop))))
- (if filter
- ;; The filter expects the menu in its XEmacs form and the pre-filter
- ;; form will only be passed to the filter anyway, so we'd better
- ;; not convert it at all (it will be converted on the fly by
- ;; easy-menu-filter-return).
- (setq menu menu-items)
- (setq menu (append menu (mapcar 'easy-menu-convert-item menu-items))))
+ (if label (setq prop (cons :label (cons label prop))))
+ (setq menu (if filter
+ ;; The filter expects the menu in its XEmacs form and the
+ ;; pre-filter form will only be passed to the filter
+ ;; anyway, so we'd better not convert it at all (it will
+ ;; be converted on the fly by easy-menu-filter-return).
+ menu-items
+ (append menu (mapcar 'easy-menu-convert-item menu-items))))
(when prop
(setq menu (easy-menu-make-symbol menu 'noexp))
(put menu 'menu-prop prop))
@@ -312,7 +315,7 @@ ITEM defines an item as in `easy-menu-define'."
;; Invisible menu item. Don't insert into keymap.
(setq remove t)
(when (and (symbolp command) (setq prop (get command 'menu-prop)))
- (when (null (car prop))
+ (when (eq :label (car prop))
(setq label (cadr prop))
(setq prop (cddr prop)))
(setq command (symbol-function command)))))
@@ -331,30 +334,28 @@ ITEM defines an item as in `easy-menu-define'."
(setq keyword (aref item count))
(setq arg (aref item (1+ count)))
(setq count (+ 2 count))
- (cond
- ((or (eq keyword :included) (eq keyword :visible))
- (setq visible (or arg ''nil)))
- ((eq keyword :key-sequence)
- (setq cache arg cache-specified t))
- ((eq keyword :keys) (setq keys arg no-name nil))
- ((eq keyword :label) (setq label arg))
- ((eq keyword :active) (setq active (or arg ''nil)))
- ((eq keyword :help) (setq prop (cons :help (cons arg prop))))
- ((eq keyword :suffix) (setq suffix arg))
- ((eq keyword :style) (setq style arg))
- ((eq keyword :selected) (setq selected (or arg ''nil)))))
+ (case keyword
+ ((:included :visible) (setq visible (or arg ''nil)))
+ (:key-sequence (setq cache arg cache-specified t))
+ (:keys (setq keys arg no-name nil))
+ (:label (setq label arg))
+ ((:active :enable) (setq active (or arg ''nil)))
+ (:help (setq prop (cons :help (cons arg prop))))
+ (:suffix (setq suffix arg))
+ (:style (setq style arg))
+ (:selected (setq selected (or arg ''nil)))))
(if suffix
(setq label
(if (stringp suffix)
(if (stringp label) (concat label " " suffix)
- (list 'concat label (concat " " suffix)))
+ `(concat ,label ,(concat " " suffix)))
(if (stringp label)
- (list 'concat (concat label " ") suffix)
- (list 'concat label " " suffix)))))
+ `(concat ,(concat label " ") ,suffix)
+ `(concat ,label " " ,suffix)))))
(cond
((eq style 'button)
(setq label (if (stringp label) (concat "[" label "]")
- (list 'concat "[" label "]"))))
+ `(concat "[" ,label "]"))))
((and selected
(setq style (assq style easy-menu-button-prefix)))
(setq prop (cons :button
@@ -674,5 +675,4 @@ In some cases we use that to select between the local and global maps."
(provide 'easymenu)
-;; arch-tag: 2a04020d-90d2-476d-a7c6-71e072007a4a
;;; easymenu.el ends here
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 4dfccb4c5b..7932309cff 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -1,8 +1,6 @@
;;; edebug.el --- a source-level debugger for Emacs Lisp
-;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1997,
-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1988-1995, 1997, 1999-2011 Free Software Foundation, Inc.
;; Author: Daniel LaLiberte <[email protected]>
;; Maintainer: FSF
@@ -2131,8 +2129,6 @@ expressions; a `progn' form will be returned enclosing these forms."
(def-edebug-spec with-custom-print body)
-(def-edebug-spec sregexq (&rest sexp))
-(def-edebug-spec rx (&rest sexp))
;;; The debugger itself
diff --git a/lisp/emacs-lisp/eieio-base.el b/lisp/emacs-lisp/eieio-base.el
index 91cb5642fb..139f5e6a4c 100644
--- a/lisp/emacs-lisp/eieio-base.el
+++ b/lisp/emacs-lisp/eieio-base.el
@@ -1,6 +1,6 @@
;;; eieio-base.el --- Base classes for EIEIO.
-;;; Copyright (C) 2000, 2001, 2002, 2004, 2005, 2007, 2008, 2009, 2010
+;;; Copyright (C) 2000-2002, 2004-2005, 2007-2011
;;; Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -329,5 +329,4 @@ a set type."
(provide 'eieio-base)
-;; arch-tag: 6260571e-9e8a-41a0-880f-a937b0c2ea8b
;;; eieio-base.el ends here
diff --git a/lisp/emacs-lisp/eieio-comp.el b/lisp/emacs-lisp/eieio-comp.el
index e07a7b20d1..ed6fb6f1c4 100644
--- a/lisp/emacs-lisp/eieio-comp.el
+++ b/lisp/emacs-lisp/eieio-comp.el
@@ -1,7 +1,7 @@
;;; eieio-comp.el -- eieio routines to help with byte compilation
-;; Copyright (C) 1995,1996, 1998, 1999, 2000, 2001, 2002, 2005, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-1996, 1998-2002, 2005, 2008-2011
+;; Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Version: 0.2
diff --git a/lisp/emacs-lisp/eieio-custom.el b/lisp/emacs-lisp/eieio-custom.el
index 12ff23b311..6fe63fcb75 100644
--- a/lisp/emacs-lisp/eieio-custom.el
+++ b/lisp/emacs-lisp/eieio-custom.el
@@ -1,7 +1,6 @@
;;; eieio-custom.el -- eieio object customization
-;; Copyright (C) 1999, 2000, 2001, 2005, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1999-2001, 2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Version: 0.2
@@ -461,5 +460,4 @@ Return the symbol for the group, or nil"
(provide 'eieio-custom)
-;; arch-tag: bc122762-a771-48d5-891b-7835b16dd924
;;; eieio-custom.el ends here
diff --git a/lisp/emacs-lisp/eieio-datadebug.el b/lisp/emacs-lisp/eieio-datadebug.el
index b58fbfd3f0..60510e1816 100644
--- a/lisp/emacs-lisp/eieio-datadebug.el
+++ b/lisp/emacs-lisp/eieio-datadebug.el
@@ -1,6 +1,6 @@
;;; eieio-datadebug.el --- EIEIO extensions to the data debugger.
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: OO, lisp
@@ -145,5 +145,4 @@ PREBUTTONTEXT is some text between PREFIX and the object button."
(provide 'eieio-datadebug)
-;; arch-tag: 6c7c2890-7614-41b0-816b-c61f3f6a8130
;;; eieio-datadebug.el ends here
diff --git a/lisp/emacs-lisp/eieio-opt.el b/lisp/emacs-lisp/eieio-opt.el
index ca3850562c..ddc6616ba2 100644
--- a/lisp/emacs-lisp/eieio-opt.el
+++ b/lisp/emacs-lisp/eieio-opt.el
@@ -1,7 +1,7 @@
;;; eieio-opt.el -- eieio optional functions (debug, printing, speedbar)
-;; Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1998-2003, 2005, 2008-2011
+;; Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Version: 0.2
@@ -693,5 +693,4 @@ INDENT is the current indentation level."
(provide 'eieio-opt)
-;; arch-tag: 71eab5f5-462f-4fa1-8ed1-f5ca1bf9adb6
;;; eieio-opt.el ends here
diff --git a/lisp/emacs-lisp/eieio-speedbar.el b/lisp/emacs-lisp/eieio-speedbar.el
index e16c3a1743..d28ecd9615 100644
--- a/lisp/emacs-lisp/eieio-speedbar.el
+++ b/lisp/emacs-lisp/eieio-speedbar.el
@@ -1,7 +1,6 @@
;;; eieio-speedbar.el -- Classes for managing speedbar displays.
-;; Copyright (C) 1999, 2000, 2001, 2002, 2005, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1999-2002, 2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Version: 0.2
@@ -422,5 +421,4 @@ to create a speedbar button."
(provide 'eieio-speedbar)
-;; arch-tag: eaac1283-10b0-4419-a929-982b87e83234
;;; eieio-speedbar.el ends here
diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el
index 048093b858..d958bfbd45 100644
--- a/lisp/emacs-lisp/eieio.el
+++ b/lisp/emacs-lisp/eieio.el
@@ -1,8 +1,7 @@
;;; eieio.el --- Enhanced Implementation of Emacs Interpreted Objects
;;; or maybe Eric's Implementation of Emacs Intrepreted Objects
-;; Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-1996, 1998-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Version: 1.3
@@ -2956,5 +2955,4 @@ Optional argument NOESCAPE is passed to `prin1-to-string' when appropriate."
(provide 'eieio)
-;; arch-tag: c1aeab9c-2938-41a3-842b-1a38bd26e9f2
;;; eieio ends here
diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el
index b4845495c9..cd9b779bee 100644
--- a/lisp/emacs-lisp/eldoc.el
+++ b/lisp/emacs-lisp/eldoc.el
@@ -1,7 +1,6 @@
;;; eldoc.el --- show function arglist or variable docstring in echo area
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Noah Friedman <[email protected]>
;; Maintainer: [email protected]
@@ -540,5 +539,4 @@ The words \"&rest\", \"&optional\" are returned unchanged."
(provide 'eldoc)
-;; arch-tag: c9a58f9d-2055-46c1-9b82-7248b71a8375
;;; eldoc.el ends here
diff --git a/lisp/emacs-lisp/elint.el b/lisp/emacs-lisp/elint.el
index 39c45e8230..36c26676fe 100644
--- a/lisp/emacs-lisp/elint.el
+++ b/lisp/emacs-lisp/elint.el
@@ -1,7 +1,6 @@
;;; elint.el --- Lint Emacs Lisp
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Peter Liljenberg <[email protected]>
;; Created: May 1997
diff --git a/lisp/emacs-lisp/elp.el b/lisp/emacs-lisp/elp.el
index f1e70c5a57..910eff3c78 100644
--- a/lisp/emacs-lisp/elp.el
+++ b/lisp/emacs-lisp/elp.el
@@ -1,7 +1,7 @@
;;; elp.el --- Emacs Lisp Profiler
-;; Copyright (C) 1994, 1995, 1997, 1998, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1995, 1997-1998, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Barry A. Warsaw
;; Maintainer: FSF
@@ -660,5 +660,4 @@ displayed."
(provide 'elp)
-;; arch-tag: c4eef311-9b3e-4bb2-8a54-3485d41b4eb1
;;; elp.el ends here
diff --git a/lisp/emacs-lisp/ert-x.el b/lisp/emacs-lisp/ert-x.el
new file mode 100644
index 0000000000..39d4a4e814
--- /dev/null
+++ b/lisp/emacs-lisp/ert-x.el
@@ -0,0 +1,290 @@
+;;; ert-x.el --- Staging area for experimental extensions to ERT
+
+;; Copyright (C) 2008, 2010-2011 Free Software Foundation, Inc.
+
+;; Author: Lennart Borgman (lennart O borgman A gmail O com)
+;; Author: Christian Ohler <[email protected]>
+
+;; This file is part of GNU Emacs.
+
+;; 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/'.
+
+;;; Commentary:
+
+;; This file includes some extra helper functions to use while writing
+;; automated tests with ERT. These have been proposed as extensions
+;; to ERT but are not mature yet and likely to change.
+
+;;; Code:
+
+(eval-when-compile
+ (require 'cl))
+(require 'ert)
+
+
+;;; Test buffers.
+
+(defun ert--text-button (string &rest properties)
+ "Return a string containing STRING as a text button with PROPERTIES.
+
+See `make-text-button'."
+ (with-temp-buffer
+ (insert string)
+ (apply #'make-text-button (point-min) (point-max) properties)
+ (buffer-string)))
+
+(defun ert--format-test-buffer-name (base-name)
+ "Compute a test buffer name based on BASE-NAME.
+
+Helper function for `ert--test-buffers'."
+ (format "*Test buffer (%s)%s*"
+ (or (and (ert-running-test)
+ (ert-test-name (ert-running-test)))
+ "<anonymous test>")
+ (if base-name
+ (format ": %s" base-name)
+ "")))
+
+(defvar ert--test-buffers (make-hash-table :weakness t)
+ "Table of all test buffers. Keys are the buffer objects, values are t.
+
+The main use of this table is for `ert-kill-all-test-buffers'.
+Not all buffers in this table are necessarily live, but all live
+test buffers are in this table.")
+
+(define-button-type 'ert--test-buffer-button
+ 'action #'ert--test-buffer-button-action
+ 'help-echo "mouse-2, RET: Pop to test buffer")
+
+(defun ert--test-buffer-button-action (button)
+ "Pop to the test buffer that BUTTON is associated with."
+ (pop-to-buffer (button-get button 'ert--test-buffer)))
+
+(defun ert--call-with-test-buffer (ert--base-name ert--thunk)
+ "Helper function for `ert-with-test-buffer'.
+
+Create a test buffer with a name based on ERT--BASE-NAME and run
+ERT--THUNK with that buffer as current."
+ (let* ((ert--buffer (generate-new-buffer
+ (ert--format-test-buffer-name ert--base-name)))
+ (ert--button (ert--text-button (buffer-name ert--buffer)
+ :type 'ert--test-buffer-button
+ 'ert--test-buffer ert--buffer)))
+ (puthash ert--buffer 't ert--test-buffers)
+ ;; We don't use `unwind-protect' here since we want to kill the
+ ;; buffer only on success.
+ (prog1 (with-current-buffer ert--buffer
+ (ert-info (ert--button :prefix "Buffer: ")
+ (funcall ert--thunk)))
+ (kill-buffer ert--buffer)
+ (remhash ert--buffer ert--test-buffers))))
+
+(defmacro* ert-with-test-buffer ((&key ((:name name-form)))
+ &body body)
+ "Create a test buffer and run BODY in that buffer.
+
+To be used in ERT tests. If BODY finishes successfully, the test
+buffer is killed; if there is an error, the test buffer is kept
+around on error for further inspection. Its name is derived from
+the name of the test and the result of NAME-FORM."
+ (declare (debug ((form) body))
+ (indent 1))
+ `(ert--call-with-test-buffer ,name-form (lambda () ,@body)))
+
+;; We use these `put' forms in addition to the (declare (indent)) in
+;; the defmacro form since the `declare' alone does not lead to
+;; correct indentation before the .el/.elc file is loaded.
+;; Autoloading these `put' forms solves this.
+;;;###autoload
+(progn
+ ;; TODO(ohler): Figure out what these mean and make sure they are correct.
+ (put 'ert-with-test-buffer 'lisp-indent-function 1))
+
+;;;###autoload
+(defun ert-kill-all-test-buffers ()
+ "Kill all test buffers that are still live."
+ (interactive)
+ (let ((count 0))
+ (maphash (lambda (buffer dummy)
+ (when (or (not (buffer-live-p buffer))
+ (kill-buffer buffer))
+ (incf count)))
+ ert--test-buffers)
+ (message "%s out of %s test buffers killed"
+ count (hash-table-count ert--test-buffers)))
+ ;; It could be that some test buffers were actually kept alive
+ ;; (e.g., due to `kill-buffer-query-functions'). I'm not sure what
+ ;; to do about this. For now, let's just forget them.
+ (clrhash ert--test-buffers)
+ nil)
+
+
+;;; Simulate commands.
+
+(defun ert-simulate-command (command)
+ ;; FIXME: add unread-events
+ "Simulate calling COMMAND the way the Emacs command loop would call it.
+
+This effectively executes
+
+ \(apply (car COMMAND) (cdr COMMAND)\)
+
+and returns the same value, but additionally runs hooks like
+`pre-command-hook' and `post-command-hook', and sets variables
+like `this-command' and `last-command'.
+
+COMMAND should be a list where the car is the command symbol and
+the rest are arguments to the command.
+
+NOTE: Since the command is not called by `call-interactively'
+test for `called-interactively' in the command will fail."
+ (assert (listp command) t)
+ (assert (commandp (car command)) t)
+ (assert (not unread-command-events) t)
+ (let (return-value)
+ ;; For the order of things here see command_loop_1 in keyboard.c.
+ ;;
+ ;; The command loop will reset the command-related variables so
+ ;; there is no reason to let-bind them. They are set here,
+ ;; however, to be able to test several commands in a row and how
+ ;; they affect each other.
+ (setq deactivate-mark nil
+ this-original-command (car command)
+ ;; remap through active keymaps
+ this-command (or (command-remapping this-original-command)
+ this-original-command))
+ (run-hooks 'pre-command-hook)
+ (setq return-value (apply (car command) (cdr command)))
+ (run-hooks 'post-command-hook)
+ (when deferred-action-list
+ (run-hooks 'deferred-action-function))
+ (setq real-last-command (car command)
+ last-command this-command)
+ (when (boundp 'last-repeatable-command)
+ (setq last-repeatable-command real-last-command))
+ (when (and deactivate-mark transient-mark-mode) (deactivate-mark))
+ (assert (not unread-command-events) t)
+ return-value))
+
+(defun ert-run-idle-timers ()
+ "Run all idle timers (from `timer-idle-list')."
+ (dolist (timer (copy-sequence timer-idle-list))
+ (timer-event-handler timer)))
+
+
+;;; Miscellaneous utilities.
+
+(defun ert-filter-string (s &rest regexps)
+ "Return a copy of S with all matches of REGEXPS removed.
+
+Elements of REGEXPS may also be two-element lists \(REGEXP
+SUBEXP\), where SUBEXP is the number of a subexpression in
+REGEXP. In that case, only that subexpression will be removed
+rather than the entire match."
+ ;; Use a temporary buffer since replace-match copies strings, which
+ ;; would lead to N^2 runtime.
+ (with-temp-buffer
+ (insert s)
+ (dolist (x regexps)
+ (destructuring-bind (regexp subexp) (if (listp x) x `(,x nil))
+ (goto-char (point-min))
+ (while (re-search-forward regexp nil t)
+ (replace-match "" t t nil subexp))))
+ (buffer-string)))
+
+
+(defun ert-propertized-string (&rest args)
+ "Return a string with properties as specified by ARGS.
+
+ARGS is a list of strings and plists. The strings in ARGS are
+concatenated to produce an output string. In the output string,
+each string from ARGS will be have the preceding plist as its
+property list, or no properties if there is no plist before it.
+
+As a simple example,
+
+\(ert-propertized-string \"foo \" '(face italic) \"bar\" \" baz\" nil \
+\" quux\"\)
+
+would return the string \"foo bar baz quux\" where the substring
+\"bar baz\" has a `face' property with the value `italic'.
+
+None of the ARGS are modified, but the return value may share
+structure with the plists in ARGS."
+ (with-temp-buffer
+ (loop with current-plist = nil
+ for x in args do
+ (etypecase x
+ (string (let ((begin (point)))
+ (insert x)
+ (set-text-properties begin (point) current-plist)))
+ (list (unless (zerop (mod (length x) 2))
+ (error "Odd number of args in plist: %S" x))
+ (setq current-plist x))))
+ (buffer-string)))
+
+
+(defun ert-call-with-buffer-renamed (buffer-name thunk)
+ "Protect the buffer named BUFFER-NAME from side-effects and run THUNK.
+
+Renames the buffer BUFFER-NAME to a new temporary name, creates a
+new buffer named BUFFER-NAME, executes THUNK, kills the new
+buffer, and renames the original buffer back to BUFFER-NAME.
+
+This is useful if THUNK has undesirable side-effects on an Emacs
+buffer with a fixed name such as *Messages*."
+ (lexical-let ((new-buffer-name (generate-new-buffer-name
+ (format "%s orig buffer" buffer-name))))
+ (with-current-buffer (get-buffer-create buffer-name)
+ (rename-buffer new-buffer-name))
+ (unwind-protect
+ (progn
+ (get-buffer-create buffer-name)
+ (funcall thunk))
+ (when (get-buffer buffer-name)
+ (kill-buffer buffer-name))
+ (with-current-buffer new-buffer-name
+ (rename-buffer buffer-name)))))
+
+(defmacro* ert-with-buffer-renamed ((buffer-name-form) &body body)
+ "Protect the buffer named BUFFER-NAME from side-effects and run BODY.
+
+See `ert-call-with-buffer-renamed' for details."
+ (declare (indent 1))
+ `(ert-call-with-buffer-renamed ,buffer-name-form (lambda () ,@body)))
+
+
+(defun ert-buffer-string-reindented (&optional buffer)
+ "Return the contents of BUFFER after reindentation.
+
+BUFFER defaults to current buffer. Does not modify BUFFER."
+ (with-current-buffer (or buffer (current-buffer))
+ (let ((clone nil))
+ (unwind-protect
+ (progn
+ ;; `clone-buffer' doesn't work if `buffer-file-name' is non-nil.
+ (let ((buffer-file-name nil))
+ (setq clone (clone-buffer)))
+ (with-current-buffer clone
+ (let ((inhibit-read-only t))
+ (indent-region (point-min) (point-max)))
+ (buffer-string)))
+ (when clone
+ (let ((kill-buffer-query-functions nil))
+ (kill-buffer clone)))))))
+
+
+(provide 'ert-x)
+
+;;; ert-x.el ends here
diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el
new file mode 100644
index 0000000000..7ee8146323
--- /dev/null
+++ b/lisp/emacs-lisp/ert.el
@@ -0,0 +1,2544 @@
+;;; ert.el --- Emacs Lisp Regression Testing
+
+;; Copyright (C) 2007-2008, 2010-2011 Free Software Foundation, Inc.
+
+;; Author: Christian Ohler <[email protected]>
+;; Keywords: lisp, tools
+
+;; This file is part of GNU Emacs.
+
+;; 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/'.
+
+;;; Commentary:
+
+;; ERT is a tool for automated testing in Emacs Lisp. Its main
+;; features are facilities for defining and running test cases and
+;; reporting the results as well as for debugging test failures
+;; interactively.
+;;
+;; The main entry points are `ert-deftest', which is similar to
+;; `defun' but defines a test, and `ert-run-tests-interactively',
+;; which runs tests and offers an interactive interface for inspecting
+;; results and debugging. There is also
+;; `ert-run-tests-batch-and-exit' for non-interactive use.
+;;
+;; The body of `ert-deftest' forms resembles a function body, but the
+;; additional operators `should', `should-not' and `should-error' are
+;; available. `should' is similar to cl's `assert', but signals a
+;; different error when its condition is violated that is caught and
+;; processed by ERT. In addition, it analyzes its argument form and
+;; records information that helps debugging (`assert' tries to do
+;; something similar when its second argument SHOW-ARGS is true, but
+;; `should' is more sophisticated). For information on `should-not'
+;; and `should-error', see their docstrings.
+;;
+;; See ERT's info manual as well as the docstrings for more details.
+;; To compile the manual, run `makeinfo ert.texinfo' in the ERT
+;; directory, then C-u M-x info ert.info in Emacs to view it.
+;;
+;; To see some examples of tests written in ERT, see its self-tests in
+;; ert-tests.el. Some of these are tricky due to the bootstrapping
+;; problem of writing tests for a testing tool, others test simple
+;; functions and are straightforward.
+
+;;; Code:
+
+(eval-when-compile
+ (require 'cl))
+(require 'button)
+(require 'debug)
+(require 'easymenu)
+(require 'ewoc)
+(require 'find-func)
+(require 'help)
+
+
+;;; UI customization options.
+
+(defgroup ert ()
+ "ERT, the Emacs Lisp regression testing tool."
+ :prefix "ert-"
+ :group 'lisp)
+
+(defface ert-test-result-expected '((((class color) (background light))
+ :background "green1")
+ (((class color) (background dark))
+ :background "green3"))
+ "Face used for expected results in the ERT results buffer."
+ :group 'ert)
+
+(defface ert-test-result-unexpected '((((class color) (background light))
+ :background "red1")
+ (((class color) (background dark))
+ :background "red3"))
+ "Face used for unexpected results in the ERT results buffer."
+ :group 'ert)
+
+
+;;; Copies/reimplementations of cl functions.
+
+(defun ert--cl-do-remf (plist tag)
+ "Copy of `cl-do-remf'. Modify PLIST by removing TAG."
+ (let ((p (cdr plist)))
+ (while (and (cdr p) (not (eq (car (cdr p)) tag))) (setq p (cdr (cdr p))))
+ (and (cdr p) (progn (setcdr p (cdr (cdr (cdr p)))) t))))
+
+(defun ert--remprop (sym tag)
+ "Copy of `cl-remprop'. Modify SYM's plist by removing TAG."
+ (let ((plist (symbol-plist sym)))
+ (if (and plist (eq tag (car plist)))
+ (progn (setplist sym (cdr (cdr plist))) t)
+ (ert--cl-do-remf plist tag))))
+
+(defun ert--remove-if-not (ert-pred ert-list)
+ "A reimplementation of `remove-if-not'.
+
+ERT-PRED is a predicate, ERT-LIST is the input list."
+ (loop for ert-x in ert-list
+ if (funcall ert-pred ert-x)
+ collect ert-x))
+
+(defun ert--intersection (a b)
+ "A reimplementation of `intersection'. Intersect the sets A and B.
+
+Elements are compared using `eql'."
+ (loop for x in a
+ if (memql x b)
+ collect x))
+
+(defun ert--set-difference (a b)
+ "A reimplementation of `set-difference'. Subtract the set B from the set A.
+
+Elements are compared using `eql'."
+ (loop for x in a
+ unless (memql x b)
+ collect x))
+
+(defun ert--set-difference-eq (a b)
+ "A reimplementation of `set-difference'. Subtract the set B from the set A.
+
+Elements are compared using `eq'."
+ (loop for x in a
+ unless (memq x b)
+ collect x))
+
+(defun ert--union (a b)
+ "A reimplementation of `union'. Compute the union of the sets A and B.
+
+Elements are compared using `eql'."
+ (append a (ert--set-difference b a)))
+
+(eval-and-compile
+ (defvar ert--gensym-counter 0))
+
+(eval-and-compile
+ (defun ert--gensym (&optional prefix)
+ "Only allows string PREFIX, not compatible with CL."
+ (unless prefix (setq prefix "G"))
+ (make-symbol (format "%s%s"
+ prefix
+ (prog1 ert--gensym-counter
+ (incf ert--gensym-counter))))))
+
+(defun ert--coerce-to-vector (x)
+ "Coerce X to a vector."
+ (when (char-table-p x) (error "Not supported"))
+ (if (vectorp x)
+ x
+ (vconcat x)))
+
+(defun* ert--remove* (x list &key key test)
+ "Does not support all the keywords of remove*."
+ (unless key (setq key #'identity))
+ (unless test (setq test #'eql))
+ (loop for y in list
+ unless (funcall test x (funcall key y))
+ collect y))
+
+(defun ert--string-position (c s)
+ "Return the position of the first occurrence of C in S, or nil if none."
+ (loop for i from 0
+ for x across s
+ when (eql x c) return i))
+
+(defun ert--mismatch (a b)
+ "Return index of first element that differs between A and B.
+
+Like `mismatch'. Uses `equal' for comparison."
+ (cond ((or (listp a) (listp b))
+ (ert--mismatch (ert--coerce-to-vector a)
+ (ert--coerce-to-vector b)))
+ ((> (length a) (length b))
+ (ert--mismatch b a))
+ (t
+ (let ((la (length a))
+ (lb (length b)))
+ (assert (arrayp a) t)
+ (assert (arrayp b) t)
+ (assert (<= la lb) t)
+ (loop for i below la
+ when (not (equal (aref a i) (aref b i))) return i
+ finally (return (if (/= la lb)
+ la
+ (assert (equal a b) t)
+ nil)))))))
+
+(defun ert--subseq (seq start &optional end)
+ "Return a subsequence of SEQ from START to END."
+ (when (char-table-p seq) (error "Not supported"))
+ (let ((vector (substring (ert--coerce-to-vector seq) start end)))
+ (etypecase seq
+ (vector vector)
+ (string (concat vector))
+ (list (append vector nil))
+ (bool-vector (loop with result = (make-bool-vector (length vector) nil)
+ for i below (length vector) do
+ (setf (aref result i) (aref vector i))
+ finally (return result)))
+ (char-table (assert nil)))))
+
+(defun ert-equal-including-properties (a b)
+ "Return t if A and B have similar structure and contents.
+
+This is like `equal-including-properties' except that it compares
+the property values of text properties structurally (by
+recursing) rather than with `eq'. Perhaps this is what
+`equal-including-properties' should do in the first place; see
+Emacs bug 6581 at URL `http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6581'."
+ ;; This implementation is inefficient. Rather than making it
+ ;; efficient, let's hope bug 6581 gets fixed so that we can delete
+ ;; it altogether.
+ (not (ert--explain-not-equal-including-properties a b)))
+
+
+;;; Defining and locating tests.
+
+;; The data structure that represents a test case.
+(defstruct ert-test
+ (name nil)
+ (documentation nil)
+ (body (assert nil))
+ (most-recent-result nil)
+ (expected-result-type ':passed)
+ (tags '()))
+
+(defun ert-test-boundp (symbol)
+ "Return non-nil if SYMBOL names a test."
+ (and (get symbol 'ert--test) t))
+
+(defun ert-get-test (symbol)
+ "If SYMBOL names a test, return that. Signal an error otherwise."
+ (unless (ert-test-boundp symbol) (error "No test named `%S'" symbol))
+ (get symbol 'ert--test))
+
+(defun ert-set-test (symbol definition)
+ "Make SYMBOL name the test DEFINITION, and return DEFINITION."
+ (when (eq symbol 'nil)
+ ;; We disallow nil since `ert-test-at-point' and related functions
+ ;; want to return a test name, but also need an out-of-band value
+ ;; on failure. Nil is the most natural out-of-band value; using 0
+ ;; or "" or signalling an error would be too awkward.
+ ;;
+ ;; Note that nil is still a valid value for the `name' slot in
+ ;; ert-test objects. It designates an anonymous test.
+ (error "Attempt to define a test named nil"))
+ (put symbol 'ert--test definition)
+ definition)
+
+(defun ert-make-test-unbound (symbol)
+ "Make SYMBOL name no test. Return SYMBOL."
+ (ert--remprop symbol 'ert--test)
+ symbol)
+
+(defun ert--parse-keys-and-body (keys-and-body)
+ "Split KEYS-AND-BODY into keyword-and-value pairs and the remaining body.
+
+KEYS-AND-BODY should have the form of a property list, with the
+exception that only keywords are permitted as keys and that the
+tail -- the body -- is a list of forms that does not start with a
+keyword.
+
+Returns a two-element list containing the keys-and-values plist
+and the body."
+ (let ((extracted-key-accu '())
+ (remaining keys-and-body))
+ (while (and (consp remaining) (keywordp (first remaining)))
+ (let ((keyword (pop remaining)))
+ (unless (consp remaining)
+ (error "Value expected after keyword %S in %S"
+ keyword keys-and-body))
+ (when (assoc keyword extracted-key-accu)
+ (warn "Keyword %S appears more than once in %S" keyword
+ keys-and-body))
+ (push (cons keyword (pop remaining)) extracted-key-accu)))
+ (setq extracted-key-accu (nreverse extracted-key-accu))
+ (list (loop for (key . value) in extracted-key-accu
+ collect key
+ collect value)
+ remaining)))
+
+;;;###autoload
+(defmacro* ert-deftest (name () &body docstring-keys-and-body)
+ "Define NAME (a symbol) as a test.
+
+BODY is evaluated as a `progn' when the test is run. It should
+signal a condition on failure or just return if the test passes.
+
+`should', `should-not' and `should-error' are useful for
+assertions in BODY.
+
+Use `ert' to run tests interactively.
+
+Tests that are expected to fail can be marked as such
+using :expected-result. See `ert-test-result-type-p' for a
+description of valid values for RESULT-TYPE.
+
+\(fn NAME () [DOCSTRING] [:expected-result RESULT-TYPE] \
+\[:tags '(TAG...)] BODY...)"
+ (declare (debug (&define :name test
+ name sexp [&optional stringp]
+ [&rest keywordp sexp] def-body))
+ (doc-string 3)
+ (indent 2))
+ (let ((documentation nil)
+ (documentation-supplied-p nil))
+ (when (stringp (first docstring-keys-and-body))
+ (setq documentation (pop docstring-keys-and-body)
+ documentation-supplied-p t))
+ (destructuring-bind ((&key (expected-result nil expected-result-supplied-p)
+ (tags nil tags-supplied-p))
+ body)
+ (ert--parse-keys-and-body docstring-keys-and-body)
+ `(progn
+ (ert-set-test ',name
+ (make-ert-test
+ :name ',name
+ ,@(when documentation-supplied-p
+ `(:documentation ,documentation))
+ ,@(when expected-result-supplied-p
+ `(:expected-result-type ,expected-result))
+ ,@(when tags-supplied-p
+ `(:tags ,tags))
+ :body (lambda () ,@body)))
+ ;; This hack allows `symbol-file' to associate `ert-deftest'
+ ;; forms with files, and therefore enables `find-function' to
+ ;; work with tests. However, it leads to warnings in
+ ;; `unload-feature', which doesn't know how to undefine tests
+ ;; and has no mechanism for extension.
+ (push '(ert-deftest . ,name) current-load-list)
+ ',name))))
+
+;; We use these `put' forms in addition to the (declare (indent)) in
+;; the defmacro form since the `declare' alone does not lead to
+;; correct indentation before the .el/.elc file is loaded.
+;; Autoloading these `put' forms solves this.
+;;;###autoload
+(progn
+ ;; TODO(ohler): Figure out what these mean and make sure they are correct.
+ (put 'ert-deftest 'lisp-indent-function 2)
+ (put 'ert-info 'lisp-indent-function 1))
+
+(defvar ert--find-test-regexp
+ (concat "^\\s-*(ert-deftest"
+ find-function-space-re
+ "%s\\(\\s-\\|$\\)")
+ "The regexp the `find-function' mechanisms use for finding test definitions.")
+
+
+(put 'ert-test-failed 'error-conditions '(error ert-test-failed))
+(put 'ert-test-failed 'error-message "Test failed")
+
+(defun ert-pass ()
+ "Terminate the current test and mark it passed. Does not return."
+ (throw 'ert--pass nil))
+
+(defun ert-fail (data)
+ "Terminate the current test and mark it failed. Does not return.
+DATA is displayed to the user and should state the reason of the failure."
+ (signal 'ert-test-failed (list data)))
+
+
+;;; The `should' macros.
+
+(defvar ert--should-execution-observer nil)
+
+(defun ert--signal-should-execution (form-description)
+ "Tell the current `should' form observer (if any) about FORM-DESCRIPTION."
+ (when ert--should-execution-observer
+ (funcall ert--should-execution-observer form-description)))
+
+(defun ert--special-operator-p (thing)
+ "Return non-nil if THING is a symbol naming a special operator."
+ (and (symbolp thing)
+ (let ((definition (indirect-function thing t)))
+ (and (subrp definition)
+ (eql (cdr (subr-arity definition)) 'unevalled)))))
+
+(defun ert--expand-should-1 (whole form inner-expander)
+ "Helper function for the `should' macro and its variants."
+ (let ((form
+ ;; If `cl-macroexpand' isn't bound, the code that we're
+ ;; compiling doesn't depend on cl and thus doesn't need an
+ ;; environment arg for `macroexpand'.
+ (if (fboundp 'cl-macroexpand)
+ ;; Suppress warning about run-time call to cl funtion: we
+ ;; only call it if it's fboundp.
+ (with-no-warnings
+ (cl-macroexpand form (and (boundp 'cl-macro-environment)
+ cl-macro-environment)))
+ (macroexpand form))))
+ (cond
+ ((or (atom form) (ert--special-operator-p (car form)))
+ (let ((value (ert--gensym "value-")))
+ `(let ((,value (ert--gensym "ert-form-evaluation-aborted-")))
+ ,(funcall inner-expander
+ `(setq ,value ,form)
+ `(list ',whole :form ',form :value ,value)
+ value)
+ ,value)))
+ (t
+ (let ((fn-name (car form))
+ (arg-forms (cdr form)))
+ (assert (or (symbolp fn-name)
+ (and (consp fn-name)
+ (eql (car fn-name) 'lambda)
+ (listp (cdr fn-name)))))
+ (let ((fn (ert--gensym "fn-"))
+ (args (ert--gensym "args-"))
+ (value (ert--gensym "value-"))
+ (default-value (ert--gensym "ert-form-evaluation-aborted-")))
+ `(let ((,fn (function ,fn-name))
+ (,args (list ,@arg-forms)))
+ (let ((,value ',default-value))
+ ,(funcall inner-expander
+ `(setq ,value (apply ,fn ,args))
+ `(nconc (list ',whole)
+ (list :form `(,,fn ,@,args))
+ (unless (eql ,value ',default-value)
+ (list :value ,value))
+ (let ((-explainer-
+ (and (symbolp ',fn-name)
+ (get ',fn-name 'ert-explainer))))
+ (when -explainer-
+ (list :explanation
+ (apply -explainer- ,args)))))
+ value)
+ ,value))))))))
+
+(defun ert--expand-should (whole form inner-expander)
+ "Helper function for the `should' macro and its variants.
+
+Analyzes FORM and returns an expression that has the same
+semantics under evaluation but records additional debugging
+information.
+
+INNER-EXPANDER should be a function and is called with two
+arguments: INNER-FORM and FORM-DESCRIPTION-FORM, where INNER-FORM
+is an expression equivalent to FORM, and FORM-DESCRIPTION-FORM is
+an expression that returns a description of FORM. INNER-EXPANDER
+should return code that calls INNER-FORM and performs the checks
+and error signalling specific to the particular variant of
+`should'. The code that INNER-EXPANDER returns must not call
+FORM-DESCRIPTION-FORM before it has called INNER-FORM."
+ (lexical-let ((inner-expander inner-expander))
+ (ert--expand-should-1
+ whole form
+ (lambda (inner-form form-description-form value-var)
+ (let ((form-description (ert--gensym "form-description-")))
+ `(let (,form-description)
+ ,(funcall inner-expander
+ `(unwind-protect
+ ,inner-form
+ (setq ,form-description ,form-description-form)
+ (ert--signal-should-execution ,form-description))
+ `,form-description
+ value-var)))))))
+
+(defmacro* should (form)
+ "Evaluate FORM. If it returns nil, abort the current test as failed.
+
+Returns the value of FORM."
+ (ert--expand-should `(should ,form) form
+ (lambda (inner-form form-description-form value-var)
+ `(unless ,inner-form
+ (ert-fail ,form-description-form)))))
+
+(defmacro* should-not (form)
+ "Evaluate FORM. If it returns non-nil, abort the current test as failed.
+
+Returns nil."
+ (ert--expand-should `(should-not ,form) form
+ (lambda (inner-form form-description-form value-var)
+ `(unless (not ,inner-form)
+ (ert-fail ,form-description-form)))))
+
+(defun ert--should-error-handle-error (form-description-fn
+ condition type exclude-subtypes)
+ "Helper function for `should-error'.
+
+Determines whether CONDITION matches TYPE and EXCLUDE-SUBTYPES,
+and aborts the current test as failed if it doesn't."
+ (let ((signalled-conditions (get (car condition) 'error-conditions))
+ (handled-conditions (etypecase type
+ (list type)
+ (symbol (list type)))))
+ (assert signalled-conditions)
+ (unless (ert--intersection signalled-conditions handled-conditions)
+ (ert-fail (append
+ (funcall form-description-fn)
+ (list
+ :condition condition
+ :fail-reason (concat "the error signalled did not"
+ " have the expected type")))))
+ (when exclude-subtypes
+ (unless (member (car condition) handled-conditions)
+ (ert-fail (append
+ (funcall form-description-fn)
+ (list
+ :condition condition
+ :fail-reason (concat "the error signalled was a subtype"
+ " of the expected type"))))))))
+
+;; FIXME: The expansion will evaluate the keyword args (if any) in
+;; nonstandard order.
+(defmacro* should-error (form &rest keys &key type exclude-subtypes)
+ "Evaluate FORM and check that it signals an error.
+
+The error signalled needs to match TYPE. TYPE should be a list
+of condition names. (It can also be a non-nil symbol, which is
+equivalent to a singleton list containing that symbol.) If
+EXCLUDE-SUBTYPES is nil, the error matches TYPE if one of its
+condition names is an element of TYPE. If EXCLUDE-SUBTYPES is
+non-nil, the error matches TYPE if it is an element of TYPE.
+
+If the error matches, returns (ERROR-SYMBOL . DATA) from the
+error. If not, or if no error was signalled, abort the test as
+failed."
+ (unless type (setq type ''error))
+ (ert--expand-should
+ `(should-error ,form ,@keys)
+ form
+ (lambda (inner-form form-description-form value-var)
+ (let ((errorp (ert--gensym "errorp"))
+ (form-description-fn (ert--gensym "form-description-fn-")))
+ `(let ((,errorp nil)
+ (,form-description-fn (lambda () ,form-description-form)))
+ (condition-case -condition-
+ ,inner-form
+ ;; We can't use ,type here because we want to evaluate it.
+ (error
+ (setq ,errorp t)
+ (ert--should-error-handle-error ,form-description-fn
+ -condition-
+ ,type ,exclude-subtypes)
+ (setq ,value-var -condition-)))
+ (unless ,errorp
+ (ert-fail (append
+ (funcall ,form-description-fn)
+ (list
+ :fail-reason "did not signal an error")))))))))
+
+
+;;; Explanation of `should' failures.
+
+;; TODO(ohler): Rework explanations so that they are displayed in a
+;; similar way to `ert-info' messages; in particular, allow text
+;; buttons in explanations that give more detail or open an ediff
+;; buffer. Perhaps explanations should be reported through `ert-info'
+;; rather than as part of the condition.
+
+(defun ert--proper-list-p (x)
+ "Return non-nil if X is a proper list, nil otherwise."
+ (loop
+ for firstp = t then nil
+ for fast = x then (cddr fast)
+ for slow = x then (cdr slow) do
+ (when (null fast) (return t))
+ (when (not (consp fast)) (return nil))
+ (when (null (cdr fast)) (return t))
+ (when (not (consp (cdr fast))) (return nil))
+ (when (and (not firstp) (eq fast slow)) (return nil))))
+
+(defun ert--explain-format-atom (x)
+ "Format the atom X for `ert--explain-not-equal'."
+ (typecase x
+ (fixnum (list x (format "#x%x" x) (format "?%c" x)))
+ (t x)))
+
+(defun ert--explain-not-equal (a b)
+ "Explainer function for `equal'.
+
+Returns a programmer-readable explanation of why A and B are not
+`equal', or nil if they are."
+ (if (not (equal (type-of a) (type-of b)))
+ `(different-types ,a ,b)
+ (etypecase a
+ (cons
+ (let ((a-proper-p (ert--proper-list-p a))
+ (b-proper-p (ert--proper-list-p b)))
+ (if (not (eql (not a-proper-p) (not b-proper-p)))
+ `(one-list-proper-one-improper ,a ,b)
+ (if a-proper-p
+ (if (not (equal (length a) (length b)))
+ `(proper-lists-of-different-length ,(length a) ,(length b)
+ ,a ,b
+ first-mismatch-at
+ ,(ert--mismatch a b))
+ (loop for i from 0
+ for ai in a
+ for bi in b
+ for xi = (ert--explain-not-equal ai bi)
+ do (when xi (return `(list-elt ,i ,xi)))
+ finally (assert (equal a b) t)))
+ (let ((car-x (ert--explain-not-equal (car a) (car b))))
+ (if car-x
+ `(car ,car-x)
+ (let ((cdr-x (ert--explain-not-equal (cdr a) (cdr b))))
+ (if cdr-x
+ `(cdr ,cdr-x)
+ (assert (equal a b) t)
+ nil))))))))
+ (array (if (not (equal (length a) (length b)))
+ `(arrays-of-different-length ,(length a) ,(length b)
+ ,a ,b
+ ,@(unless (char-table-p a)
+ `(first-mismatch-at
+ ,(ert--mismatch a b))))
+ (loop for i from 0
+ for ai across a
+ for bi across b
+ for xi = (ert--explain-not-equal ai bi)
+ do (when xi (return `(array-elt ,i ,xi)))
+ finally (assert (equal a b) t))))
+ (atom (if (not (equal a b))
+ (if (and (symbolp a) (symbolp b) (string= a b))
+ `(different-symbols-with-the-same-name ,a ,b)
+ `(different-atoms ,(ert--explain-format-atom a)
+ ,(ert--explain-format-atom b)))
+ nil)))))
+(put 'equal 'ert-explainer 'ert--explain-not-equal)
+
+(defun ert--significant-plist-keys (plist)
+ "Return the keys of PLIST that have non-null values, in order."
+ (assert (zerop (mod (length plist) 2)) t)
+ (loop for (key value . rest) on plist by #'cddr
+ unless (or (null value) (memq key accu)) collect key into accu
+ finally (return accu)))
+
+(defun ert--plist-difference-explanation (a b)
+ "Return a programmer-readable explanation of why A and B are different plists.
+
+Returns nil if they are equivalent, i.e., have the same value for
+each key, where absent values are treated as nil. The order of
+key/value pairs in each list does not matter."
+ (assert (zerop (mod (length a) 2)) t)
+ (assert (zerop (mod (length b) 2)) t)
+ ;; Normalizing the plists would be another way to do this but it
+ ;; requires a total ordering on all lisp objects (since any object
+ ;; is valid as a text property key). Perhaps defining such an
+ ;; ordering is useful in other contexts, too, but it's a lot of
+ ;; work, so let's punt on it for now.
+ (let* ((keys-a (ert--significant-plist-keys a))
+ (keys-b (ert--significant-plist-keys b))
+ (keys-in-a-not-in-b (ert--set-difference-eq keys-a keys-b))
+ (keys-in-b-not-in-a (ert--set-difference-eq keys-b keys-a)))
+ (flet ((explain-with-key (key)
+ (let ((value-a (plist-get a key))
+ (value-b (plist-get b key)))
+ (assert (not (equal value-a value-b)) t)
+ `(different-properties-for-key
+ ,key ,(ert--explain-not-equal-including-properties value-a
+ value-b)))))
+ (cond (keys-in-a-not-in-b
+ (explain-with-key (first keys-in-a-not-in-b)))
+ (keys-in-b-not-in-a
+ (explain-with-key (first keys-in-b-not-in-a)))
+ (t
+ (loop for key in keys-a
+ when (not (equal (plist-get a key) (plist-get b key)))
+ return (explain-with-key key)))))))
+
+(defun ert--abbreviate-string (s len suffixp)
+ "Shorten string S to at most LEN chars.
+
+If SUFFIXP is non-nil, returns a suffix of S, otherwise a prefix."
+ (let ((n (length s)))
+ (cond ((< n len)
+ s)
+ (suffixp
+ (substring s (- n len)))
+ (t
+ (substring s 0 len)))))
+
+(defun ert--explain-not-equal-including-properties (a b)
+ "Explainer function for `ert-equal-including-properties'.
+
+Returns a programmer-readable explanation of why A and B are not
+`ert-equal-including-properties', or nil if they are."
+ (if (not (equal a b))
+ (ert--explain-not-equal a b)
+ (assert (stringp a) t)
+ (assert (stringp b) t)
+ (assert (eql (length a) (length b)) t)
+ (loop for i from 0 to (length a)
+ for props-a = (text-properties-at i a)
+ for props-b = (text-properties-at i b)
+ for difference = (ert--plist-difference-explanation props-a props-b)
+ do (when difference
+ (return `(char ,i ,(substring-no-properties a i (1+ i))
+ ,difference
+ context-before
+ ,(ert--abbreviate-string
+ (substring-no-properties a 0 i)
+ 10 t)
+ context-after
+ ,(ert--abbreviate-string
+ (substring-no-properties a (1+ i))
+ 10 nil))))
+ ;; TODO(ohler): Get `equal-including-properties' fixed in
+ ;; Emacs, delete `ert-equal-including-properties', and
+ ;; re-enable this assertion.
+ ;;finally (assert (equal-including-properties a b) t)
+ )))
+(put 'ert-equal-including-properties
+ 'ert-explainer
+ 'ert--explain-not-equal-including-properties)
+
+
+;;; Implementation of `ert-info'.
+
+;; TODO(ohler): The name `info' clashes with
+;; `ert--test-execution-info'. One or both should be renamed.
+(defvar ert--infos '()
+ "The stack of `ert-info' infos that currently apply.
+
+Bound dynamically. This is a list of (PREFIX . MESSAGE) pairs.")
+
+(defmacro* ert-info ((message-form &key ((:prefix prefix-form) "Info: "))
+ &body body)
+ "Evaluate MESSAGE-FORM and BODY, and report the message if BODY fails.
+
+To be used within ERT tests. MESSAGE-FORM should evaluate to a
+string that will be displayed together with the test result if
+the test fails. PREFIX-FORM should evaluate to a string as well
+and is displayed in front of the value of MESSAGE-FORM."
+ (declare (debug ((form &rest [sexp form]) body))
+ (indent 1))
+ `(let ((ert--infos (cons (cons ,prefix-form ,message-form) ert--infos)))
+ ,@body))
+
+
+
+;;; Facilities for running a single test.
+
+(defvar ert-debug-on-error nil
+ "Non-nil means enter debugger when a test fails or terminates with an error.")
+
+;; The data structures that represent the result of running a test.
+(defstruct ert-test-result
+ (messages nil)
+ (should-forms nil)
+ )
+(defstruct (ert-test-passed (:include ert-test-result)))
+(defstruct (ert-test-result-with-condition (:include ert-test-result))
+ (condition (assert nil))
+ (backtrace (assert nil))
+ (infos (assert nil)))
+(defstruct (ert-test-quit (:include ert-test-result-with-condition)))
+(defstruct (ert-test-failed (:include ert-test-result-with-condition)))
+(defstruct (ert-test-aborted-with-non-local-exit (:include ert-test-result)))
+
+
+(defun ert--record-backtrace ()
+ "Record the current backtrace (as a list) and return it."
+ ;; Since the backtrace is stored in the result object, result
+ ;; objects must only be printed with appropriate limits
+ ;; (`print-level' and `print-length') in place. For interactive
+ ;; use, the cost of ensuring this possibly outweighs the advantage
+ ;; of storing the backtrace for
+ ;; `ert-results-pop-to-backtrace-for-test-at-point' given that we
+ ;; already have `ert-results-rerun-test-debugging-errors-at-point'.
+ ;; For batch use, however, printing the backtrace may be useful.
+ (loop
+ ;; 6 is the number of frames our own debugger adds (when
+ ;; compiled; more when interpreted). FIXME: Need to describe a
+ ;; procedure for determining this constant.
+ for i from 6
+ for frame = (backtrace-frame i)
+ while frame
+ collect frame))
+
+(defun ert--print-backtrace (backtrace)
+ "Format the backtrace BACKTRACE to the current buffer."
+ ;; This is essentially a reimplementation of Fbacktrace
+ ;; (src/eval.c), but for a saved backtrace, not the current one.
+ (let ((print-escape-newlines t)
+ (print-level 8)
+ (print-length 50))
+ (dolist (frame backtrace)
+ (ecase (first frame)
+ ((nil)
+ ;; Special operator.
+ (destructuring-bind (special-operator &rest arg-forms)
+ (cdr frame)
+ (insert
+ (format " %S\n" (list* special-operator arg-forms)))))
+ ((t)
+ ;; Function call.
+ (destructuring-bind (fn &rest args) (cdr frame)
+ (insert (format " %S(" fn))
+ (loop for firstp = t then nil
+ for arg in args do
+ (unless firstp
+ (insert " "))
+ (insert (format "%S" arg)))
+ (insert ")\n")))))))
+
+;; A container for the state of the execution of a single test and
+;; environment data needed during its execution.
+(defstruct ert--test-execution-info
+ (test (assert nil))
+ (result (assert nil))
+ ;; A thunk that may be called when RESULT has been set to its final
+ ;; value and test execution should be terminated. Should not
+ ;; return.
+ (exit-continuation (assert nil))
+ ;; The binding of `debugger' outside of the execution of the test.
+ next-debugger
+ ;; The binding of `ert-debug-on-error' that is in effect for the
+ ;; execution of the current test. We store it to avoid being
+ ;; affected by any new bindings the test itself may establish. (I
+ ;; don't remember whether this feature is important.)
+ ert-debug-on-error)
+
+(defun ert--run-test-debugger (info debugger-args)
+ "During a test run, `debugger' is bound to a closure that calls this function.
+
+This function records failures and errors and either terminates
+the test silently or calls the interactive debugger, as
+appropriate.
+
+INFO is the ert--test-execution-info corresponding to this test
+run. DEBUGGER-ARGS are the arguments to `debugger'."
+ (destructuring-bind (first-debugger-arg &rest more-debugger-args)
+ debugger-args
+ (ecase first-debugger-arg
+ ((lambda debug t exit nil)
+ (apply (ert--test-execution-info-next-debugger info) debugger-args))
+ (error
+ (let* ((condition (first more-debugger-args))
+ (type (case (car condition)
+ ((quit) 'quit)
+ (otherwise 'failed)))
+ (backtrace (ert--record-backtrace))
+ (infos (reverse ert--infos)))
+ (setf (ert--test-execution-info-result info)
+ (ecase type
+ (quit
+ (make-ert-test-quit :condition condition
+ :backtrace backtrace
+ :infos infos))
+ (failed
+ (make-ert-test-failed :condition condition
+ :backtrace backtrace
+ :infos infos))))
+ ;; Work around Emacs' heuristic (in eval.c) for detecting
+ ;; errors in the debugger.
+ (incf num-nonmacro-input-events)
+ ;; FIXME: We should probably implement more fine-grained
+ ;; control a la non-t `debug-on-error' here.
+ (cond
+ ((ert--test-execution-info-ert-debug-on-error info)
+ (apply (ert--test-execution-info-next-debugger info) debugger-args))
+ (t))
+ (funcall (ert--test-execution-info-exit-continuation info)))))))
+
+(defun ert--run-test-internal (ert-test-execution-info)
+ "Low-level function to run a test according to ERT-TEST-EXECUTION-INFO.
+
+This mainly sets up debugger-related bindings."
+ (lexical-let ((info ert-test-execution-info))
+ (setf (ert--test-execution-info-next-debugger info) debugger
+ (ert--test-execution-info-ert-debug-on-error info) ert-debug-on-error)
+ (catch 'ert--pass
+ ;; For now, each test gets its own temp buffer and its own
+ ;; window excursion, just to be safe. If this turns out to be
+ ;; too expensive, we can remove it.
+ (with-temp-buffer
+ (save-window-excursion
+ (let ((debugger (lambda (&rest debugger-args)
+ (ert--run-test-debugger info debugger-args)))
+ (debug-on-error t)
+ (debug-on-quit t)
+ ;; FIXME: Do we need to store the old binding of this
+ ;; and consider it in `ert--run-test-debugger'?
+ (debug-ignored-errors nil)
+ (ert--infos '()))
+ (funcall (ert-test-body (ert--test-execution-info-test info))))))
+ (ert-pass))
+ (setf (ert--test-execution-info-result info) (make-ert-test-passed)))
+ nil)
+
+(defun ert--force-message-log-buffer-truncation ()
+ "Immediately truncate *Messages* buffer according to `message-log-max'.
+
+This can be useful after reducing the value of `message-log-max'."
+ (with-current-buffer (get-buffer-create "*Messages*")
+ ;; This is a reimplementation of this part of message_dolog() in xdisp.c:
+ ;; if (NATNUMP (Vmessage_log_max))
+ ;; {
+ ;; scan_newline (Z, Z_BYTE, BEG, BEG_BYTE,
+ ;; -XFASTINT (Vmessage_log_max) - 1, 0);
+ ;; del_range_both (BEG, BEG_BYTE, PT, PT_BYTE, 0);
+ ;; }
+ (when (and (integerp message-log-max) (>= message-log-max 0))
+ (let ((begin (point-min))
+ (end (save-excursion
+ (goto-char (point-max))
+ (forward-line (- message-log-max))
+ (point))))
+ (delete-region begin end)))))
+
+(defvar ert--running-tests nil
+ "List of tests that are currently in execution.
+
+This list is empty while no test is running, has one element
+while a test is running, two elements while a test run from
+inside a test is running, etc. The list is in order of nesting,
+innermost test first.
+
+The elements are of type `ert-test'.")
+
+(defun ert-run-test (ert-test)
+ "Run ERT-TEST.
+
+Returns the result and stores it in ERT-TEST's `most-recent-result' slot."
+ (setf (ert-test-most-recent-result ert-test) nil)
+ (block error
+ (lexical-let ((begin-marker
+ (with-current-buffer (get-buffer-create "*Messages*")
+ (set-marker (make-marker) (point-max)))))
+ (unwind-protect
+ (lexical-let ((info (make-ert--test-execution-info
+ :test ert-test
+ :result
+ (make-ert-test-aborted-with-non-local-exit)
+ :exit-continuation (lambda ()
+ (return-from error nil))))
+ (should-form-accu (list)))
+ (unwind-protect
+ (let ((ert--should-execution-observer
+ (lambda (form-description)
+ (push form-description should-form-accu)))
+ (message-log-max t)
+ (ert--running-tests (cons ert-test ert--running-tests)))
+ (ert--run-test-internal info))
+ (let ((result (ert--test-execution-info-result info)))
+ (setf (ert-test-result-messages result)
+ (with-current-buffer (get-buffer-create "*Messages*")
+ (buffer-substring begin-marker (point-max))))
+ (ert--force-message-log-buffer-truncation)
+ (setq should-form-accu (nreverse should-form-accu))
+ (setf (ert-test-result-should-forms result)
+ should-form-accu)
+ (setf (ert-test-most-recent-result ert-test) result))))
+ (set-marker begin-marker nil))))
+ (ert-test-most-recent-result ert-test))
+
+(defun ert-running-test ()
+ "Return the top-level test currently executing."
+ (car (last ert--running-tests)))
+
+
+;;; Test selectors.
+
+(defun ert-test-result-type-p (result result-type)
+ "Return non-nil if RESULT matches type RESULT-TYPE.
+
+Valid result types:
+
+nil -- Never matches.
+t -- Always matches.
+:failed, :passed -- Matches corresponding results.
+\(and TYPES...\) -- Matches if all TYPES match.
+\(or TYPES...\) -- Matches if some TYPES match.
+\(not TYPE\) -- Matches if TYPE does not match.
+\(satisfies PREDICATE\) -- Matches if PREDICATE returns true when called with
+ RESULT."
+ ;; It would be easy to add `member' and `eql' types etc., but I
+ ;; haven't bothered yet.
+ (etypecase result-type
+ ((member nil) nil)
+ ((member t) t)
+ ((member :failed) (ert-test-failed-p result))
+ ((member :passed) (ert-test-passed-p result))
+ (cons
+ (destructuring-bind (operator &rest operands) result-type
+ (ecase operator
+ (and
+ (case (length operands)
+ (0 t)
+ (t
+ (and (ert-test-result-type-p result (first operands))
+ (ert-test-result-type-p result `(and ,@(rest operands)))))))
+ (or
+ (case (length operands)
+ (0 nil)
+ (t
+ (or (ert-test-result-type-p result (first operands))
+ (ert-test-result-type-p result `(or ,@(rest operands)))))))
+ (not
+ (assert (eql (length operands) 1))
+ (not (ert-test-result-type-p result (first operands))))
+ (satisfies
+ (assert (eql (length operands) 1))
+ (funcall (first operands) result)))))))
+
+(defun ert-test-result-expected-p (test result)
+ "Return non-nil if TEST's expected result type matches RESULT."
+ (ert-test-result-type-p result (ert-test-expected-result-type test)))
+
+(defun ert-select-tests (selector universe)
+ "Return the tests that match SELECTOR.
+
+UNIVERSE specifies the set of tests to select from; it should be
+a list of tests, or t, which refers to all tests named by symbols
+in `obarray'.
+
+Returns the set of tests as a list.
+
+Valid selectors:
+
+nil -- Selects the empty set.
+t -- Selects UNIVERSE.
+:new -- Selects all tests that have not been run yet.
+:failed, :passed -- Select tests according to their most recent result.
+:expected, :unexpected -- Select tests according to their most recent result.
+a string -- Selects all tests that have a name that matches the string,
+ a regexp.
+a test -- Selects that test.
+a symbol -- Selects the test that the symbol names, errors if none.
+\(member TESTS...\) -- Selects TESTS, a list of tests or symbols naming tests.
+\(eql TEST\) -- Selects TEST, a test or a symbol naming a test.
+\(and SELECTORS...\) -- Selects the tests that match all SELECTORS.
+\(or SELECTORS...\) -- Selects the tests that match any SELECTOR.
+\(not SELECTOR\) -- Selects all tests that do not match SELECTOR.
+\(tag TAG) -- Selects all tests that have TAG on their tags list.
+\(satisfies PREDICATE\) -- Selects all tests that satisfy PREDICATE.
+
+Only selectors that require a superset of tests, such
+as (satisfies ...), strings, :new, etc. make use of UNIVERSE.
+Selectors that do not, such as \(member ...\), just return the
+set implied by them without checking whether it is really
+contained in UNIVERSE."
+ ;; This code needs to match the etypecase in
+ ;; `ert-insert-human-readable-selector'.
+ (etypecase selector
+ ((member nil) nil)
+ ((member t) (etypecase universe
+ (list universe)
+ ((member t) (ert-select-tests "" universe))))
+ ((member :new) (ert-select-tests
+ `(satisfies ,(lambda (test)
+ (null (ert-test-most-recent-result test))))
+ universe))
+ ((member :failed) (ert-select-tests
+ `(satisfies ,(lambda (test)
+ (ert-test-result-type-p
+ (ert-test-most-recent-result test)
+ ':failed)))
+ universe))
+ ((member :passed) (ert-select-tests
+ `(satisfies ,(lambda (test)
+ (ert-test-result-type-p
+ (ert-test-most-recent-result test)
+ ':passed)))
+ universe))
+ ((member :expected) (ert-select-tests
+ `(satisfies
+ ,(lambda (test)
+ (ert-test-result-expected-p
+ test
+ (ert-test-most-recent-result test))))
+ universe))
+ ((member :unexpected) (ert-select-tests `(not :expected) universe))
+ (string
+ (etypecase universe
+ ((member t) (mapcar #'ert-get-test
+ (apropos-internal selector #'ert-test-boundp)))
+ (list (ert--remove-if-not (lambda (test)
+ (and (ert-test-name test)
+ (string-match selector
+ (ert-test-name test))))
+ universe))))
+ (ert-test (list selector))
+ (symbol
+ (assert (ert-test-boundp selector))
+ (list (ert-get-test selector)))
+ (cons
+ (destructuring-bind (operator &rest operands) selector
+ (ecase operator
+ (member
+ (mapcar (lambda (purported-test)
+ (etypecase purported-test
+ (symbol (assert (ert-test-boundp purported-test))
+ (ert-get-test purported-test))
+ (ert-test purported-test)))
+ operands))
+ (eql
+ (assert (eql (length operands) 1))
+ (ert-select-tests `(member ,@operands) universe))
+ (and
+ ;; Do these definitions of AND, NOT and OR satisfy de
+ ;; Morgan's laws? Should they?
+ (case (length operands)
+ (0 (ert-select-tests 't universe))
+ (t (ert-select-tests `(and ,@(rest operands))
+ (ert-select-tests (first operands)
+ universe)))))
+ (not
+ (assert (eql (length operands) 1))
+ (let ((all-tests (ert-select-tests 't universe)))
+ (ert--set-difference all-tests
+ (ert-select-tests (first operands)
+ all-tests))))
+ (or
+ (case (length operands)
+ (0 (ert-select-tests 'nil universe))
+ (t (ert--union (ert-select-tests (first operands) universe)
+ (ert-select-tests `(or ,@(rest operands))
+ universe)))))
+ (tag
+ (assert (eql (length operands) 1))
+ (let ((tag (first operands)))
+ (ert-select-tests `(satisfies
+ ,(lambda (test)
+ (member tag (ert-test-tags test))))
+ universe)))
+ (satisfies
+ (assert (eql (length operands) 1))
+ (ert--remove-if-not (first operands)
+ (ert-select-tests 't universe))))))))
+
+(defun ert--insert-human-readable-selector (selector)
+ "Insert a human-readable presentation of SELECTOR into the current buffer."
+ ;; This is needed to avoid printing the (huge) contents of the
+ ;; `backtrace' slot of the result objects in the
+ ;; `most-recent-result' slots of test case objects in (eql ...) or
+ ;; (member ...) selectors.
+ (labels ((rec (selector)
+ ;; This code needs to match the etypecase in `ert-select-tests'.
+ (etypecase selector
+ ((or (member nil t
+ :new :failed :passed
+ :expected :unexpected)
+ string
+ symbol)
+ selector)
+ (ert-test
+ (if (ert-test-name selector)
+ (make-symbol (format "<%S>" (ert-test-name selector)))
+ (make-symbol "<unnamed test>")))
+ (cons
+ (destructuring-bind (operator &rest operands) selector
+ (ecase operator
+ ((member eql and not or)
+ `(,operator ,@(mapcar #'rec operands)))
+ ((member tag satisfies)
+ selector)))))))
+ (insert (format "%S" (rec selector)))))
+
+
+;;; Facilities for running a whole set of tests.
+
+;; The data structure that contains the set of tests being executed
+;; during one particular test run, their results, the state of the
+;; execution, and some statistics.
+;;
+;; The data about results and expected results of tests may seem
+;; redundant here, since the test objects also carry such information.
+;; However, the information in the test objects may be more recent, it
+;; may correspond to a different test run. We need the information
+;; that corresponds to this run in order to be able to update the
+;; statistics correctly when a test is re-run interactively and has a
+;; different result than before.
+(defstruct ert--stats
+ (selector (assert nil))
+ ;; The tests, in order.
+ (tests (assert nil) :type vector)
+ ;; A map of test names (or the test objects themselves for unnamed
+ ;; tests) to indices into the `tests' vector.
+ (test-map (assert nil) :type hash-table)
+ ;; The results of the tests during this run, in order.
+ (test-results (assert nil) :type vector)
+ ;; The start times of the tests, in order, as reported by
+ ;; `current-time'.
+ (test-start-times (assert nil) :type vector)
+ ;; The end times of the tests, in order, as reported by
+ ;; `current-time'.
+ (test-end-times (assert nil) :type vector)
+ (passed-expected 0)
+ (passed-unexpected 0)
+ (failed-expected 0)
+ (failed-unexpected 0)
+ (start-time nil)
+ (end-time nil)
+ (aborted-p nil)
+ (current-test nil)
+ ;; The time at or after which the next redisplay should occur, as a
+ ;; float.
+ (next-redisplay 0.0))
+
+(defun ert-stats-completed-expected (stats)
+ "Return the number of tests in STATS that had expected results."
+ (+ (ert--stats-passed-expected stats)
+ (ert--stats-failed-expected stats)))
+
+(defun ert-stats-completed-unexpected (stats)
+ "Return the number of tests in STATS that had unexpected results."
+ (+ (ert--stats-passed-unexpected stats)
+ (ert--stats-failed-unexpected stats)))
+
+(defun ert-stats-completed (stats)
+ "Number of tests in STATS that have run so far."
+ (+ (ert-stats-completed-expected stats)
+ (ert-stats-completed-unexpected stats)))
+
+(defun ert-stats-total (stats)
+ "Number of tests in STATS, regardless of whether they have run yet."
+ (length (ert--stats-tests stats)))
+
+;; The stats object of the current run, dynamically bound. This is
+;; used for the mode line progress indicator.
+(defvar ert--current-run-stats nil)
+
+(defun ert--stats-test-key (test)
+ "Return the key used for TEST in the test map of ert--stats objects.
+
+Returns the name of TEST if it has one, or TEST itself otherwise."
+ (or (ert-test-name test) test))
+
+(defun ert--stats-set-test-and-result (stats pos test result)
+ "Change STATS by replacing the test at position POS with TEST and RESULT.
+
+Also changes the counters in STATS to match."
+ (let* ((tests (ert--stats-tests stats))
+ (results (ert--stats-test-results stats))
+ (old-test (aref tests pos))
+ (map (ert--stats-test-map stats)))
+ (flet ((update (d)
+ (if (ert-test-result-expected-p (aref tests pos)
+ (aref results pos))
+ (etypecase (aref results pos)
+ (ert-test-passed (incf (ert--stats-passed-expected stats) d))
+ (ert-test-failed (incf (ert--stats-failed-expected stats) d))
+ (null)
+ (ert-test-aborted-with-non-local-exit))
+ (etypecase (aref results pos)
+ (ert-test-passed (incf (ert--stats-passed-unexpected stats) d))
+ (ert-test-failed (incf (ert--stats-failed-unexpected stats) d))
+ (null)
+ (ert-test-aborted-with-non-local-exit)))))
+ ;; Adjust counters to remove the result that is currently in stats.
+ (update -1)
+ ;; Put new test and result into stats.
+ (setf (aref tests pos) test
+ (aref results pos) result)
+ (remhash (ert--stats-test-key old-test) map)
+ (setf (gethash (ert--stats-test-key test) map) pos)
+ ;; Adjust counters to match new result.
+ (update +1)
+ nil)))
+
+(defun ert--make-stats (tests selector)
+ "Create a new `ert--stats' object for running TESTS.
+
+SELECTOR is the selector that was used to select TESTS."
+ (setq tests (ert--coerce-to-vector tests))
+ (let ((map (make-hash-table :size (length tests))))
+ (loop for i from 0
+ for test across tests
+ for key = (ert--stats-test-key test) do
+ (assert (not (gethash key map)))
+ (setf (gethash key map) i))
+ (make-ert--stats :selector selector
+ :tests tests
+ :test-map map
+ :test-results (make-vector (length tests) nil)
+ :test-start-times (make-vector (length tests) nil)
+ :test-end-times (make-vector (length tests) nil))))
+
+(defun ert-run-or-rerun-test (stats test listener)
+ ;; checkdoc-order: nil
+ "Run the single test TEST and record the result using STATS and LISTENER."
+ (let ((ert--current-run-stats stats)
+ (pos (ert--stats-test-pos stats test)))
+ (ert--stats-set-test-and-result stats pos test nil)
+ ;; Call listener after setting/before resetting
+ ;; (ert--stats-current-test stats); the listener might refresh the
+ ;; mode line display, and if the value is not set yet/any more
+ ;; during this refresh, the mode line will flicker unnecessarily.
+ (setf (ert--stats-current-test stats) test)
+ (funcall listener 'test-started stats test)
+ (setf (ert-test-most-recent-result test) nil)
+ (setf (aref (ert--stats-test-start-times stats) pos) (current-time))
+ (unwind-protect
+ (ert-run-test test)
+ (setf (aref (ert--stats-test-end-times stats) pos) (current-time))
+ (let ((result (ert-test-most-recent-result test)))
+ (ert--stats-set-test-and-result stats pos test result)
+ (funcall listener 'test-ended stats test result))
+ (setf (ert--stats-current-test stats) nil))))
+
+(defun ert-run-tests (selector listener)
+ "Run the tests specified by SELECTOR, sending progress updates to LISTENER."
+ (let* ((tests (ert-select-tests selector t))
+ (stats (ert--make-stats tests selector)))
+ (setf (ert--stats-start-time stats) (current-time))
+ (funcall listener 'run-started stats)
+ (let ((abortedp t))
+ (unwind-protect
+ (let ((ert--current-run-stats stats))
+ (force-mode-line-update)
+ (unwind-protect
+ (progn
+ (loop for test in tests do
+ (ert-run-or-rerun-test stats test listener))
+ (setq abortedp nil))
+ (setf (ert--stats-aborted-p stats) abortedp)
+ (setf (ert--stats-end-time stats) (current-time))
+ (funcall listener 'run-ended stats abortedp)))
+ (force-mode-line-update))
+ stats)))
+
+(defun ert--stats-test-pos (stats test)
+ ;; checkdoc-order: nil
+ "Return the position (index) of TEST in the run represented by STATS."
+ (gethash (ert--stats-test-key test) (ert--stats-test-map stats)))
+
+
+;;; Formatting functions shared across UIs.
+
+(defun ert--format-time-iso8601 (time)
+ "Format TIME in the variant of ISO 8601 used for timestamps in ERT."
+ (format-time-string "%Y-%m-%d %T%z" time))
+
+(defun ert-char-for-test-result (result expectedp)
+ "Return a character that represents the test result RESULT.
+
+EXPECTEDP specifies whether the result was expected."
+ (let ((s (etypecase result
+ (ert-test-passed ".P")
+ (ert-test-failed "fF")
+ (null "--")
+ (ert-test-aborted-with-non-local-exit "aA"))))
+ (elt s (if expectedp 0 1))))
+
+(defun ert-string-for-test-result (result expectedp)
+ "Return a string that represents the test result RESULT.
+
+EXPECTEDP specifies whether the result was expected."
+ (let ((s (etypecase result
+ (ert-test-passed '("passed" "PASSED"))
+ (ert-test-failed '("failed" "FAILED"))
+ (null '("unknown" "UNKNOWN"))
+ (ert-test-aborted-with-non-local-exit '("aborted" "ABORTED")))))
+ (elt s (if expectedp 0 1))))
+
+(defun ert--pp-with-indentation-and-newline (object)
+ "Pretty-print OBJECT, indenting it to the current column of point.
+Ensures a final newline is inserted."
+ (let ((begin (point)))
+ (pp object (current-buffer))
+ (unless (bolp) (insert "\n"))
+ (save-excursion
+ (goto-char begin)
+ (indent-sexp))))
+
+(defun ert--insert-infos (result)
+ "Insert `ert-info' infos from RESULT into current buffer.
+
+RESULT must be an `ert-test-result-with-condition'."
+ (check-type result ert-test-result-with-condition)
+ (dolist (info (ert-test-result-with-condition-infos result))
+ (destructuring-bind (prefix . message) info
+ (let ((begin (point))
+ (indentation (make-string (+ (length prefix) 4) ?\s))
+ (end nil))
+ (unwind-protect
+ (progn
+ (insert message "\n")
+ (setq end (copy-marker (point)))
+ (goto-char begin)
+ (insert " " prefix)
+ (forward-line 1)
+ (while (< (point) end)
+ (insert indentation)
+ (forward-line 1)))
+ (when end (set-marker end nil)))))))
+
+
+;;; Running tests in batch mode.
+
+(defvar ert-batch-backtrace-right-margin 70
+ "*The maximum line length for printing backtraces in `ert-run-tests-batch'.")
+
+;;;###autoload
+(defun ert-run-tests-batch (&optional selector)
+ "Run the tests specified by SELECTOR, printing results to the terminal.
+
+SELECTOR works as described in `ert-select-tests', except if
+SELECTOR is nil, in which case all tests rather than none will be
+run; this makes the command line \"emacs -batch -l my-tests.el -f
+ert-run-tests-batch-and-exit\" useful.
+
+Returns the stats object."
+ (unless selector (setq selector 't))
+ (ert-run-tests
+ selector
+ (lambda (event-type &rest event-args)
+ (ecase event-type
+ (run-started
+ (destructuring-bind (stats) event-args
+ (message "Running %s tests (%s)"
+ (length (ert--stats-tests stats))
+ (ert--format-time-iso8601 (ert--stats-start-time stats)))))
+ (run-ended
+ (destructuring-bind (stats abortedp) event-args
+ (let ((unexpected (ert-stats-completed-unexpected stats))
+ (expected-failures (ert--stats-failed-expected stats)))
+ (message "\n%sRan %s tests, %s results as expected%s (%s)%s\n"
+ (if (not abortedp)
+ ""
+ "Aborted: ")
+ (ert-stats-total stats)
+ (ert-stats-completed-expected stats)
+ (if (zerop unexpected)
+ ""
+ (format ", %s unexpected" unexpected))
+ (ert--format-time-iso8601 (ert--stats-end-time stats))
+ (if (zerop expected-failures)
+ ""
+ (format "\n%s expected failures" expected-failures)))
+ (unless (zerop unexpected)
+ (message "%s unexpected results:" unexpected)
+ (loop for test across (ert--stats-tests stats)
+ for result = (ert-test-most-recent-result test) do
+ (when (not (ert-test-result-expected-p test result))
+ (message "%9s %S"
+ (ert-string-for-test-result result nil)
+ (ert-test-name test))))
+ (message "%s" "")))))
+ (test-started
+ )
+ (test-ended
+ (destructuring-bind (stats test result) event-args
+ (unless (ert-test-result-expected-p test result)
+ (etypecase result
+ (ert-test-passed
+ (message "Test %S passed unexpectedly" (ert-test-name test)))
+ (ert-test-result-with-condition
+ (message "Test %S backtrace:" (ert-test-name test))
+ (with-temp-buffer
+ (ert--print-backtrace (ert-test-result-with-condition-backtrace
+ result))
+ (goto-char (point-min))
+ (while (not (eobp))
+ (let ((start (point))
+ (end (progn (end-of-line) (point))))
+ (setq end (min end
+ (+ start ert-batch-backtrace-right-margin)))
+ (message "%s" (buffer-substring-no-properties
+ start end)))
+ (forward-line 1)))
+ (with-temp-buffer
+ (ert--insert-infos result)
+ (insert " ")
+ (let ((print-escape-newlines t)
+ (print-level 5)
+ (print-length 10))
+ (let ((begin (point)))
+ (ert--pp-with-indentation-and-newline
+ (ert-test-result-with-condition-condition result))))
+ (goto-char (1- (point-max)))
+ (assert (looking-at "\n"))
+ (delete-char 1)
+ (message "Test %S condition:" (ert-test-name test))
+ (message "%s" (buffer-string))))
+ (ert-test-aborted-with-non-local-exit
+ (message "Test %S aborted with non-local exit"
+ (ert-test-name test)))))
+ (let* ((max (prin1-to-string (length (ert--stats-tests stats))))
+ (format-string (concat "%9s %"
+ (prin1-to-string (length max))
+ "s/" max " %S")))
+ (message format-string
+ (ert-string-for-test-result result
+ (ert-test-result-expected-p
+ test result))
+ (1+ (ert--stats-test-pos stats test))
+ (ert-test-name test)))))))))
+
+;;;###autoload
+(defun ert-run-tests-batch-and-exit (&optional selector)
+ "Like `ert-run-tests-batch', but exits Emacs when done.
+
+The exit status will be 0 if all test results were as expected, 1
+on unexpected results, or 2 if the tool detected an error outside
+of the tests (e.g. invalid SELECTOR or bug in the code that runs
+the tests)."
+ (unwind-protect
+ (let ((stats (ert-run-tests-batch selector)))
+ (kill-emacs (if (zerop (ert-stats-completed-unexpected stats)) 0 1)))
+ (unwind-protect
+ (progn
+ (message "Error running tests")
+ (backtrace))
+ (kill-emacs 2))))
+
+
+;;; Utility functions for load/unload actions.
+
+(defun ert--activate-font-lock-keywords ()
+ "Activate font-lock keywords for some of ERT's symbols."
+ (font-lock-add-keywords
+ nil
+ '(("(\\(\\<ert-deftest\\)\\>\\s *\\(\\sw+\\)?"
+ (1 font-lock-keyword-face nil t)
+ (2 font-lock-function-name-face nil t)))))
+
+(defun* ert--remove-from-list (list-var element &key key test)
+ "Remove ELEMENT from the value of LIST-VAR if present.
+
+This can be used as an inverse of `add-to-list'."
+ (unless key (setq key #'identity))
+ (unless test (setq test #'equal))
+ (setf (symbol-value list-var)
+ (ert--remove* element
+ (symbol-value list-var)
+ :key key
+ :test test)))
+
+
+;;; Some basic interactive functions.
+
+(defun ert-read-test-name (prompt &optional default history
+ add-default-to-prompt)
+ "Read the name of a test and return it as a symbol.
+
+Prompt with PROMPT. If DEFAULT is a valid test name, use it as a
+default. HISTORY is the history to use; see `completing-read'.
+If ADD-DEFAULT-TO-PROMPT is non-nil, PROMPT will be modified to
+include the default, if any.
+
+Signals an error if no test name was read."
+ (etypecase default
+ (string (let ((symbol (intern-soft default)))
+ (unless (and symbol (ert-test-boundp symbol))
+ (setq default nil))))
+ (symbol (setq default
+ (if (ert-test-boundp default)
+ (symbol-name default)
+ nil)))
+ (ert-test (setq default (ert-test-name default))))
+ (when add-default-to-prompt
+ (setq prompt (if (null default)
+ (format "%s: " prompt)
+ (format "%s (default %s): " prompt default))))
+ (let ((input (completing-read prompt obarray #'ert-test-boundp
+ t nil history default nil)))
+ ;; completing-read returns an empty string if default was nil and
+ ;; the user just hit enter.
+ (let ((sym (intern-soft input)))
+ (if (ert-test-boundp sym)
+ sym
+ (error "Input does not name a test")))))
+
+(defun ert-read-test-name-at-point (prompt)
+ "Read the name of a test and return it as a symbol.
+As a default, use the symbol at point, or the test at point if in
+the ERT results buffer. Prompt with PROMPT, augmented with the
+default (if any)."
+ (ert-read-test-name prompt (ert-test-at-point) nil t))
+
+(defun ert-find-test-other-window (test-name)
+ "Find, in another window, the definition of TEST-NAME."
+ (interactive (list (ert-read-test-name-at-point "Find test definition: ")))
+ (find-function-do-it test-name 'ert-deftest 'switch-to-buffer-other-window))
+
+(defun ert-delete-test (test-name)
+ "Make the test TEST-NAME unbound.
+
+Nothing more than an interactive interface to `ert-make-test-unbound'."
+ (interactive (list (ert-read-test-name-at-point "Delete test")))
+ (ert-make-test-unbound test-name))
+
+(defun ert-delete-all-tests ()
+ "Make all symbols in `obarray' name no test."
+ (interactive)
+ (when (interactive-p)
+ (unless (y-or-n-p "Delete all tests? ")
+ (error "Aborted")))
+ ;; We can't use `ert-select-tests' here since that gives us only
+ ;; test objects, and going from them back to the test name symbols
+ ;; can fail if the `ert-test' defstruct has been redefined.
+ (mapc #'ert-make-test-unbound (apropos-internal "" #'ert-test-boundp))
+ t)
+
+
+;;; Display of test progress and results.
+
+;; An entry in the results buffer ewoc. There is one entry per test.
+(defstruct ert--ewoc-entry
+ (test (assert nil))
+ ;; If the result of this test was expected, its ewoc entry is hidden
+ ;; initially.
+ (hidden-p (assert nil))
+ ;; An ewoc entry may be collapsed to hide details such as the error
+ ;; condition.
+ ;;
+ ;; I'm not sure the ability to expand and collapse entries is still
+ ;; a useful feature.
+ (expanded-p t)
+ ;; By default, the ewoc entry presents the error condition with
+ ;; certain limits on how much to print (`print-level',
+ ;; `print-length'). The user can interactively switch to a set of
+ ;; higher limits.
+ (extended-printer-limits-p nil))
+
+;; Variables local to the results buffer.
+
+;; The ewoc.
+(defvar ert--results-ewoc)
+;; The stats object.
+(defvar ert--results-stats)
+;; A string with one character per test. Each character represents
+;; the result of the corresponding test. The string is displayed near
+;; the top of the buffer and serves as a progress bar.
+(defvar ert--results-progress-bar-string)
+;; The position where the progress bar button begins.
+(defvar ert--results-progress-bar-button-begin)
+;; The test result listener that updates the buffer when tests are run.
+(defvar ert--results-listener)
+
+(defun ert-insert-test-name-button (test-name)
+ "Insert a button that links to TEST-NAME."
+ (insert-text-button (format "%S" test-name)
+ :type 'ert--test-name-button
+ 'ert-test-name test-name))
+
+(defun ert--results-format-expected-unexpected (expected unexpected)
+ "Return a string indicating EXPECTED expected results, UNEXPECTED unexpected."
+ (if (zerop unexpected)
+ (format "%s" expected)
+ (format "%s (%s unexpected)" (+ expected unexpected) unexpected)))
+
+(defun ert--results-update-ewoc-hf (ewoc stats)
+ "Update the header and footer of EWOC to show certain information from STATS.
+
+Also sets `ert--results-progress-bar-button-begin'."
+ (let ((run-count (ert-stats-completed stats))
+ (results-buffer (current-buffer))
+ ;; Need to save buffer-local value.
+ (font-lock font-lock-mode))
+ (ewoc-set-hf
+ ewoc
+ ;; header
+ (with-temp-buffer
+ (insert "Selector: ")
+ (ert--insert-human-readable-selector (ert--stats-selector stats))
+ (insert "\n")
+ (insert
+ (format (concat "Passed: %s\n"
+ "Failed: %s\n"
+ "Total: %s/%s\n\n")
+ (ert--results-format-expected-unexpected
+ (ert--stats-passed-expected stats)
+ (ert--stats-passed-unexpected stats))
+ (ert--results-format-expected-unexpected
+ (ert--stats-failed-expected stats)
+ (ert--stats-failed-unexpected stats))
+ run-count
+ (ert-stats-total stats)))
+ (insert
+ (format "Started at: %s\n"
+ (ert--format-time-iso8601 (ert--stats-start-time stats))))
+ ;; FIXME: This is ugly. Need to properly define invariants of
+ ;; the `stats' data structure.
+ (let ((state (cond ((ert--stats-aborted-p stats) 'aborted)
+ ((ert--stats-current-test stats) 'running)
+ ((ert--stats-end-time stats) 'finished)
+ (t 'preparing))))
+ (ecase state
+ (preparing
+ (insert ""))
+ (aborted
+ (cond ((ert--stats-current-test stats)
+ (insert "Aborted during test: ")
+ (ert-insert-test-name-button
+ (ert-test-name (ert--stats-current-test stats))))
+ (t
+ (insert "Aborted."))))
+ (running
+ (assert (ert--stats-current-test stats))
+ (insert "Running test: ")
+ (ert-insert-test-name-button (ert-test-name
+ (ert--stats-current-test stats))))
+ (finished
+ (assert (not (ert--stats-current-test stats)))
+ (insert "Finished.")))
+ (insert "\n")
+ (if (ert--stats-end-time stats)
+ (insert
+ (format "%s%s\n"
+ (if (ert--stats-aborted-p stats)
+ "Aborted at: "
+ "Finished at: ")
+ (ert--format-time-iso8601 (ert--stats-end-time stats))))
+ (insert "\n"))
+ (insert "\n"))
+ (let ((progress-bar-string (with-current-buffer results-buffer
+ ert--results-progress-bar-string)))
+ (let ((progress-bar-button-begin
+ (insert-text-button progress-bar-string
+ :type 'ert--results-progress-bar-button
+ 'face (or (and font-lock
+ (ert-face-for-stats stats))
+ 'button))))
+ ;; The header gets copied verbatim to the results buffer,
+ ;; and all positions remain the same, so
+ ;; `progress-bar-button-begin' will be the right position
+ ;; even in the results buffer.
+ (with-current-buffer results-buffer
+ (set (make-local-variable 'ert--results-progress-bar-button-begin)
+ progress-bar-button-begin))))
+ (insert "\n\n")
+ (buffer-string))
+ ;; footer
+ ;;
+ ;; We actually want an empty footer, but that would trigger a bug
+ ;; in ewoc, sometimes clearing the entire buffer. (It's possible
+ ;; that this bug has been fixed since this has been tested; we
+ ;; should test it again.)
+ "\n")))
+
+
+(defvar ert-test-run-redisplay-interval-secs .1
+ "How many seconds ERT should wait between redisplays while running tests.
+
+While running tests, ERT shows the current progress, and this variable
+determines how frequently the progress display is updated.")
+
+(defun ert--results-update-stats-display (ewoc stats)
+ "Update EWOC and the mode line to show data from STATS."
+ ;; TODO(ohler): investigate using `make-progress-reporter'.
+ (ert--results-update-ewoc-hf ewoc stats)
+ (force-mode-line-update)
+ (redisplay t)
+ (setf (ert--stats-next-redisplay stats)
+ (+ (float-time) ert-test-run-redisplay-interval-secs)))
+
+(defun ert--results-update-stats-display-maybe (ewoc stats)
+ "Call `ert--results-update-stats-display' if not called recently.
+
+EWOC and STATS are arguments for `ert--results-update-stats-display'."
+ (when (>= (float-time) (ert--stats-next-redisplay stats))
+ (ert--results-update-stats-display ewoc stats)))
+
+(defun ert--tests-running-mode-line-indicator ()
+ "Return a string for the mode line that shows the test run progress."
+ (let* ((stats ert--current-run-stats)
+ (tests-total (ert-stats-total stats))
+ (tests-completed (ert-stats-completed stats)))
+ (if (>= tests-completed tests-total)
+ (format " ERT(%s/%s,finished)" tests-completed tests-total)
+ (format " ERT(%s/%s):%s"
+ (1+ tests-completed)
+ tests-total
+ (if (null (ert--stats-current-test stats))
+ "?"
+ (format "%S"
+ (ert-test-name (ert--stats-current-test stats))))))))
+
+(defun ert--make-xrefs-region (begin end)
+ "Attach cross-references to function names between BEGIN and END.
+
+BEGIN and END specify a region in the current buffer."
+ (save-excursion
+ (save-restriction
+ (narrow-to-region begin (point))
+ ;; Inhibit optimization in `debugger-make-xrefs' that would
+ ;; sometimes insert unrelated backtrace info into our buffer.
+ (let ((debugger-previous-backtrace nil))
+ (debugger-make-xrefs)))))
+
+(defun ert--string-first-line (s)
+ "Return the first line of S, or S if it contains no newlines.
+
+The return value does not include the line terminator."
+ (substring s 0 (ert--string-position ?\n s)))
+
+(defun ert-face-for-test-result (expectedp)
+ "Return a face that shows whether a test result was expected or unexpected.
+
+If EXPECTEDP is nil, returns the face for unexpected results; if
+non-nil, returns the face for expected results.."
+ (if expectedp 'ert-test-result-expected 'ert-test-result-unexpected))
+
+(defun ert-face-for-stats (stats)
+ "Return a face that represents STATS."
+ (cond ((ert--stats-aborted-p stats) 'nil)
+ ((plusp (ert-stats-completed-unexpected stats))
+ (ert-face-for-test-result nil))
+ ((eql (ert-stats-completed-expected stats) (ert-stats-total stats))
+ (ert-face-for-test-result t))
+ (t 'nil)))
+
+(defun ert--print-test-for-ewoc (entry)
+ "The ewoc print function for ewoc test entries. ENTRY is the entry to print."
+ (let* ((test (ert--ewoc-entry-test entry))
+ (stats ert--results-stats)
+ (result (let ((pos (ert--stats-test-pos stats test)))
+ (assert pos)
+ (aref (ert--stats-test-results stats) pos)))
+ (hiddenp (ert--ewoc-entry-hidden-p entry))
+ (expandedp (ert--ewoc-entry-expanded-p entry))
+ (extended-printer-limits-p (ert--ewoc-entry-extended-printer-limits-p
+ entry)))
+ (cond (hiddenp)
+ (t
+ (let ((expectedp (ert-test-result-expected-p test result)))
+ (insert-text-button (format "%c" (ert-char-for-test-result
+ result expectedp))
+ :type 'ert--results-expand-collapse-button
+ 'face (or (and font-lock-mode
+ (ert-face-for-test-result
+ expectedp))
+ 'button)))
+ (insert " ")
+ (ert-insert-test-name-button (ert-test-name test))
+ (insert "\n")
+ (when (and expandedp (not (eql result 'nil)))
+ (when (ert-test-documentation test)
+ (insert " "
+ (propertize
+ (ert--string-first-line (ert-test-documentation test))
+ 'font-lock-face 'font-lock-doc-face)
+ "\n"))
+ (etypecase result
+ (ert-test-passed
+ (if (ert-test-result-expected-p test result)
+ (insert " passed\n")
+ (insert " passed unexpectedly\n"))
+ (insert ""))
+ (ert-test-result-with-condition
+ (ert--insert-infos result)
+ (let ((print-escape-newlines t)
+ (print-level (if extended-printer-limits-p 12 6))
+ (print-length (if extended-printer-limits-p 100 10)))
+ (insert " ")
+ (let ((begin (point)))
+ (ert--pp-with-indentation-and-newline
+ (ert-test-result-with-condition-condition result))
+ (ert--make-xrefs-region begin (point)))))
+ (ert-test-aborted-with-non-local-exit
+ (insert " aborted\n")))
+ (insert "\n")))))
+ nil)
+
+(defun ert--results-font-lock-function (enabledp)
+ "Redraw the ERT results buffer after font-lock-mode was switched on or off.
+
+ENABLEDP is true if font-lock-mode is switched on, false
+otherwise."
+ (ert--results-update-ewoc-hf ert--results-ewoc ert--results-stats)
+ (ewoc-refresh ert--results-ewoc)
+ (font-lock-default-function enabledp))
+
+(defun ert--setup-results-buffer (stats listener buffer-name)
+ "Set up a test results buffer.
+
+STATS is the stats object; LISTENER is the results listener;
+BUFFER-NAME, if non-nil, is the buffer name to use."
+ (unless buffer-name (setq buffer-name "*ert*"))
+ (let ((buffer (get-buffer-create buffer-name)))
+ (with-current-buffer buffer
+ (setq buffer-read-only t)
+ (let ((inhibit-read-only t))
+ (buffer-disable-undo)
+ (erase-buffer)
+ (ert-results-mode)
+ ;; Erase buffer again in case switching out of the previous
+ ;; mode inserted anything. (This happens e.g. when switching
+ ;; from ert-results-mode to ert-results-mode when
+ ;; font-lock-mode turns itself off in change-major-mode-hook.)
+ (erase-buffer)
+ (set (make-local-variable 'font-lock-function)
+ 'ert--results-font-lock-function)
+ (let ((ewoc (ewoc-create 'ert--print-test-for-ewoc nil nil t)))
+ (set (make-local-variable 'ert--results-ewoc) ewoc)
+ (set (make-local-variable 'ert--results-stats) stats)
+ (set (make-local-variable 'ert--results-progress-bar-string)
+ (make-string (ert-stats-total stats)
+ (ert-char-for-test-result nil t)))
+ (set (make-local-variable 'ert--results-listener) listener)
+ (loop for test across (ert--stats-tests stats) do
+ (ewoc-enter-last ewoc
+ (make-ert--ewoc-entry :test test :hidden-p t)))
+ (ert--results-update-ewoc-hf ert--results-ewoc ert--results-stats)
+ (goto-char (1- (point-max)))
+ buffer)))))
+
+
+(defvar ert--selector-history nil
+ "List of recent test selectors read from terminal.")
+
+;; Should OUTPUT-BUFFER-NAME and MESSAGE-FN really be arguments here?
+;; They are needed only for our automated self-tests at the moment.
+;; Or should there be some other mechanism?
+;;;###autoload
+(defun ert-run-tests-interactively (selector
+ &optional output-buffer-name message-fn)
+ "Run the tests specified by SELECTOR and display the results in a buffer.
+
+SELECTOR works as described in `ert-select-tests'.
+OUTPUT-BUFFER-NAME and MESSAGE-FN should normally be nil; they
+are used for automated self-tests and specify which buffer to use
+and how to display message."
+ (interactive
+ (list (let ((default (if ert--selector-history
+ ;; Can't use `first' here as this form is
+ ;; not compiled, and `first' is not
+ ;; defined without cl.
+ (car ert--selector-history)
+ "t")))
+ (read-from-minibuffer (if (null default)
+ "Run tests: "
+ (format "Run tests (default %s): " default))
+ nil nil t 'ert--selector-history
+ default nil))
+ nil))
+ (unless message-fn (setq message-fn 'message))
+ (lexical-let ((output-buffer-name output-buffer-name)
+ buffer
+ listener
+ (message-fn message-fn))
+ (setq listener
+ (lambda (event-type &rest event-args)
+ (ecase event-type
+ (run-started
+ (destructuring-bind (stats) event-args
+ (setq buffer (ert--setup-results-buffer stats
+ listener
+ output-buffer-name))
+ (pop-to-buffer buffer)))
+ (run-ended
+ (destructuring-bind (stats abortedp) event-args
+ (funcall message-fn
+ "%sRan %s tests, %s results were as expected%s"
+ (if (not abortedp)
+ ""
+ "Aborted: ")
+ (ert-stats-total stats)
+ (ert-stats-completed-expected stats)
+ (let ((unexpected
+ (ert-stats-completed-unexpected stats)))
+ (if (zerop unexpected)
+ ""
+ (format ", %s unexpected" unexpected))))
+ (ert--results-update-stats-display (with-current-buffer buffer
+ ert--results-ewoc)
+ stats)))
+ (test-started
+ (destructuring-bind (stats test) event-args
+ (with-current-buffer buffer
+ (let* ((ewoc ert--results-ewoc)
+ (pos (ert--stats-test-pos stats test))
+ (node (ewoc-nth ewoc pos)))
+ (assert node)
+ (setf (ert--ewoc-entry-test (ewoc-data node)) test)
+ (aset ert--results-progress-bar-string pos
+ (ert-char-for-test-result nil t))
+ (ert--results-update-stats-display-maybe ewoc stats)
+ (ewoc-invalidate ewoc node)))))
+ (test-ended
+ (destructuring-bind (stats test result) event-args
+ (with-current-buffer buffer
+ (let* ((ewoc ert--results-ewoc)
+ (pos (ert--stats-test-pos stats test))
+ (node (ewoc-nth ewoc pos)))
+ (when (ert--ewoc-entry-hidden-p (ewoc-data node))
+ (setf (ert--ewoc-entry-hidden-p (ewoc-data node))
+ (ert-test-result-expected-p test result)))
+ (aset ert--results-progress-bar-string pos
+ (ert-char-for-test-result result
+ (ert-test-result-expected-p
+ test result)))
+ (ert--results-update-stats-display-maybe ewoc stats)
+ (ewoc-invalidate ewoc node))))))))
+ (ert-run-tests
+ selector
+ listener)))
+;;;###autoload
+(defalias 'ert 'ert-run-tests-interactively)
+
+
+;;; Simple view mode for auxiliary information like stack traces or
+;;; messages. Mainly binds "q" for quit.
+
+(define-derived-mode ert-simple-view-mode fundamental-mode "ERT-View"
+ "Major mode for viewing auxiliary information in ERT.")
+
+(loop for (key binding) in
+ '(("q" quit-window)
+ )
+ do
+ (define-key ert-simple-view-mode-map key binding))
+
+
+;;; Commands and button actions for the results buffer.
+
+(define-derived-mode ert-results-mode fundamental-mode "ERT-Results"
+ "Major mode for viewing results of ERT test runs.")
+
+(loop for (key binding) in
+ '(;; Stuff that's not in the menu.
+ ("\t" forward-button)
+ ([backtab] backward-button)
+ ("j" ert-results-jump-between-summary-and-result)
+ ("q" quit-window)
+ ("L" ert-results-toggle-printer-limits-for-test-at-point)
+ ("n" ert-results-next-test)
+ ("p" ert-results-previous-test)
+ ;; Stuff that is in the menu.
+ ("R" ert-results-rerun-all-tests)
+ ("r" ert-results-rerun-test-at-point)
+ ("d" ert-results-rerun-test-at-point-debugging-errors)
+ ("." ert-results-find-test-at-point-other-window)
+ ("b" ert-results-pop-to-backtrace-for-test-at-point)
+ ("m" ert-results-pop-to-messages-for-test-at-point)
+ ("l" ert-results-pop-to-should-forms-for-test-at-point)
+ ("h" ert-results-describe-test-at-point)
+ ("D" ert-delete-test)
+ ("T" ert-results-pop-to-timings)
+ )
+ do
+ (define-key ert-results-mode-map key binding))
+
+(easy-menu-define ert-results-mode-menu ert-results-mode-map
+ "Menu for `ert-results-mode'."
+ '("ERT Results"
+ ["Re-run all tests" ert-results-rerun-all-tests]
+ "--"
+ ["Re-run test" ert-results-rerun-test-at-point]
+ ["Debug test" ert-results-rerun-test-at-point-debugging-errors]
+ ["Show test definition" ert-results-find-test-at-point-other-window]
+ "--"
+ ["Show backtrace" ert-results-pop-to-backtrace-for-test-at-point]
+ ["Show messages" ert-results-pop-to-messages-for-test-at-point]
+ ["Show `should' forms" ert-results-pop-to-should-forms-for-test-at-point]
+ ["Describe test" ert-results-describe-test-at-point]
+ "--"
+ ["Delete test" ert-delete-test]
+ "--"
+ ["Show execution time of each test" ert-results-pop-to-timings]
+ ))
+
+(define-button-type 'ert--results-progress-bar-button
+ 'action #'ert--results-progress-bar-button-action
+ 'help-echo "mouse-2, RET: Reveal test result")
+
+(define-button-type 'ert--test-name-button
+ 'action #'ert--test-name-button-action
+ 'help-echo "mouse-2, RET: Find test definition")
+
+(define-button-type 'ert--results-expand-collapse-button
+ 'action #'ert--results-expand-collapse-button-action
+ 'help-echo "mouse-2, RET: Expand/collapse test result")
+
+(defun ert--results-test-node-or-null-at-point ()
+ "If point is on a valid ewoc node, return it; return nil otherwise.
+
+To be used in the ERT results buffer."
+ (let* ((ewoc ert--results-ewoc)
+ (node (ewoc-locate ewoc)))
+ ;; `ewoc-locate' will return an arbitrary node when point is on
+ ;; header or footer, or when all nodes are invisible. So we need
+ ;; to validate its return value here.
+ ;;
+ ;; Update: I'm seeing nil being returned in some cases now,
+ ;; perhaps this has been changed?
+ (if (and node
+ (>= (point) (ewoc-location node))
+ (not (ert--ewoc-entry-hidden-p (ewoc-data node))))
+ node
+ nil)))
+
+(defun ert--results-test-node-at-point ()
+ "If point is on a valid ewoc node, return it; signal an error otherwise.
+
+To be used in the ERT results buffer."
+ (or (ert--results-test-node-or-null-at-point)
+ (error "No test at point")))
+
+(defun ert-results-next-test ()
+ "Move point to the next test.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (ert--results-move (ewoc-locate ert--results-ewoc) 'ewoc-next
+ "No tests below"))
+
+(defun ert-results-previous-test ()
+ "Move point to the previous test.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (ert--results-move (ewoc-locate ert--results-ewoc) 'ewoc-prev
+ "No tests above"))
+
+(defun ert--results-move (node ewoc-fn error-message)
+ "Move point from NODE to the previous or next node.
+
+EWOC-FN specifies the direction and should be either `ewoc-prev'
+or `ewoc-next'. If there are no more nodes in that direction, an
+error is signalled with the message ERROR-MESSAGE."
+ (loop
+ (setq node (funcall ewoc-fn ert--results-ewoc node))
+ (when (null node)
+ (error "%s" error-message))
+ (unless (ert--ewoc-entry-hidden-p (ewoc-data node))
+ (goto-char (ewoc-location node))
+ (return))))
+
+(defun ert--results-expand-collapse-button-action (button)
+ "Expand or collapse the test node BUTTON belongs to."
+ (let* ((ewoc ert--results-ewoc)
+ (node (save-excursion
+ (goto-char (ert--button-action-position))
+ (ert--results-test-node-at-point)))
+ (entry (ewoc-data node)))
+ (setf (ert--ewoc-entry-expanded-p entry)
+ (not (ert--ewoc-entry-expanded-p entry)))
+ (ewoc-invalidate ewoc node)))
+
+(defun ert-results-find-test-at-point-other-window ()
+ "Find the definition of the test at point in another window.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (let ((name (ert-test-at-point)))
+ (unless name
+ (error "No test at point"))
+ (ert-find-test-other-window name)))
+
+(defun ert--test-name-button-action (button)
+ "Find the definition of the test BUTTON belongs to, in another window."
+ (let ((name (button-get button 'ert-test-name)))
+ (ert-find-test-other-window name)))
+
+(defun ert--ewoc-position (ewoc node)
+ ;; checkdoc-order: nil
+ "Return the position of NODE in EWOC, or nil if NODE is not in EWOC."
+ (loop for i from 0
+ for node-here = (ewoc-nth ewoc 0) then (ewoc-next ewoc node-here)
+ do (when (eql node node-here)
+ (return i))
+ finally (return nil)))
+
+(defun ert-results-jump-between-summary-and-result ()
+ "Jump back and forth between the test run summary and individual test results.
+
+From an ewoc node, jumps to the character that represents the
+same test in the progress bar, and vice versa.
+
+To be used in the ERT results buffer."
+ ;; Maybe this command isn't actually needed much, but if it is, it
+ ;; seems like an indication that the UI design is not optimal. If
+ ;; jumping back and forth between a summary at the top of the buffer
+ ;; and the error log in the remainder of the buffer is useful, then
+ ;; the summary apparently needs to be easily accessible from the
+ ;; error log, and perhaps it would be better to have it in a
+ ;; separate buffer to keep it visible.
+ (interactive)
+ (let ((ewoc ert--results-ewoc)
+ (progress-bar-begin ert--results-progress-bar-button-begin))
+ (cond ((ert--results-test-node-or-null-at-point)
+ (let* ((node (ert--results-test-node-at-point))
+ (pos (ert--ewoc-position ewoc node)))
+ (goto-char (+ progress-bar-begin pos))))
+ ((and (<= progress-bar-begin (point))
+ (< (point) (button-end (button-at progress-bar-begin))))
+ (let* ((node (ewoc-nth ewoc (- (point) progress-bar-begin)))
+ (entry (ewoc-data node)))
+ (when (ert--ewoc-entry-hidden-p entry)
+ (setf (ert--ewoc-entry-hidden-p entry) nil)
+ (ewoc-invalidate ewoc node))
+ (ewoc-goto-node ewoc node)))
+ (t
+ (goto-char progress-bar-begin)))))
+
+(defun ert-test-at-point ()
+ "Return the name of the test at point as a symbol, or nil if none."
+ (or (and (eql major-mode 'ert-results-mode)
+ (let ((test (ert--results-test-at-point-no-redefinition)))
+ (and test (ert-test-name test))))
+ (let* ((thing (thing-at-point 'symbol))
+ (sym (intern-soft thing)))
+ (and (ert-test-boundp sym)
+ sym))))
+
+(defun ert--results-test-at-point-no-redefinition ()
+ "Return the test at point, or nil.
+
+To be used in the ERT results buffer."
+ (assert (eql major-mode 'ert-results-mode))
+ (if (ert--results-test-node-or-null-at-point)
+ (let* ((node (ert--results-test-node-at-point))
+ (test (ert--ewoc-entry-test (ewoc-data node))))
+ test)
+ (let ((progress-bar-begin ert--results-progress-bar-button-begin))
+ (when (and (<= progress-bar-begin (point))
+ (< (point) (button-end (button-at progress-bar-begin))))
+ (let* ((test-index (- (point) progress-bar-begin))
+ (test (aref (ert--stats-tests ert--results-stats)
+ test-index)))
+ test)))))
+
+(defun ert--results-test-at-point-allow-redefinition ()
+ "Look up the test at point, and check whether it has been redefined.
+
+To be used in the ERT results buffer.
+
+Returns a list of two elements: the test (or nil) and a symbol
+specifying whether the test has been redefined.
+
+If a new test has been defined with the same name as the test at
+point, replaces the test at point with the new test, and returns
+the new test and the symbol `redefined'.
+
+If the test has been deleted, returns the old test and the symbol
+`deleted'.
+
+If the test is still current, returns the test and the symbol nil.
+
+If there is no test at point, returns a list with two nils."
+ (let ((test (ert--results-test-at-point-no-redefinition)))
+ (cond ((null test)
+ `(nil nil))
+ ((null (ert-test-name test))
+ `(,test nil))
+ (t
+ (let* ((name (ert-test-name test))
+ (new-test (and (ert-test-boundp name)
+ (ert-get-test name))))
+ (cond ((eql test new-test)
+ `(,test nil))
+ ((null new-test)
+ `(,test deleted))
+ (t
+ (ert--results-update-after-test-redefinition
+ (ert--stats-test-pos ert--results-stats test)
+ new-test)
+ `(,new-test redefined))))))))
+
+(defun ert--results-update-after-test-redefinition (pos new-test)
+ "Update results buffer after the test at pos POS has been redefined.
+
+Also updates the stats object. NEW-TEST is the new test
+definition."
+ (let* ((stats ert--results-stats)
+ (ewoc ert--results-ewoc)
+ (node (ewoc-nth ewoc pos))
+ (entry (ewoc-data node)))
+ (ert--stats-set-test-and-result stats pos new-test nil)
+ (setf (ert--ewoc-entry-test entry) new-test
+ (aref ert--results-progress-bar-string pos) (ert-char-for-test-result
+ nil t))
+ (ewoc-invalidate ewoc node))
+ nil)
+
+(defun ert--button-action-position ()
+ "The buffer position where the last button action was triggered."
+ (cond ((integerp last-command-event)
+ (point))
+ ((eventp last-command-event)
+ (posn-point (event-start last-command-event)))
+ (t (assert nil))))
+
+(defun ert--results-progress-bar-button-action (button)
+ "Jump to details for the test represented by the character clicked in BUTTON."
+ (goto-char (ert--button-action-position))
+ (ert-results-jump-between-summary-and-result))
+
+(defun ert-results-rerun-all-tests ()
+ "Re-run all tests, using the same selector.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (assert (eql major-mode 'ert-results-mode))
+ (let ((selector (ert--stats-selector ert--results-stats)))
+ (ert-run-tests-interactively selector (buffer-name))))
+
+(defun ert-results-rerun-test-at-point ()
+ "Re-run the test at point.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (destructuring-bind (test redefinition-state)
+ (ert--results-test-at-point-allow-redefinition)
+ (when (null test)
+ (error "No test at point"))
+ (let* ((stats ert--results-stats)
+ (progress-message (format "Running %stest %S"
+ (ecase redefinition-state
+ ((nil) "")
+ (redefined "new definition of ")
+ (deleted "deleted "))
+ (ert-test-name test))))
+ ;; Need to save and restore point manually here: When point is on
+ ;; the first visible ewoc entry while the header is updated, point
+ ;; moves to the top of the buffer. This is undesirable, and a
+ ;; simple `save-excursion' doesn't prevent it.
+ (let ((point (point)))
+ (unwind-protect
+ (unwind-protect
+ (progn
+ (message "%s..." progress-message)
+ (ert-run-or-rerun-test stats test
+ ert--results-listener))
+ (ert--results-update-stats-display ert--results-ewoc stats)
+ (message "%s...%s"
+ progress-message
+ (let ((result (ert-test-most-recent-result test)))
+ (ert-string-for-test-result
+ result (ert-test-result-expected-p test result)))))
+ (goto-char point))))))
+
+(defun ert-results-rerun-test-at-point-debugging-errors ()
+ "Re-run the test at point with `ert-debug-on-error' bound to t.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (let ((ert-debug-on-error t))
+ (ert-results-rerun-test-at-point)))
+
+(defun ert-results-pop-to-backtrace-for-test-at-point ()
+ "Display the backtrace for the test at point.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (let* ((test (ert--results-test-at-point-no-redefinition))
+ (stats ert--results-stats)
+ (pos (ert--stats-test-pos stats test))
+ (result (aref (ert--stats-test-results stats) pos)))
+ (etypecase result
+ (ert-test-passed (error "Test passed, no backtrace available"))
+ (ert-test-result-with-condition
+ (let ((backtrace (ert-test-result-with-condition-backtrace result))
+ (buffer (get-buffer-create "*ERT Backtrace*")))
+ (pop-to-buffer buffer)
+ (setq buffer-read-only t)
+ (let ((inhibit-read-only t))
+ (buffer-disable-undo)
+ (erase-buffer)
+ (ert-simple-view-mode)
+ ;; Use unibyte because `debugger-setup-buffer' also does so.
+ (set-buffer-multibyte nil)
+ (setq truncate-lines t)
+ (ert--print-backtrace backtrace)
+ (debugger-make-xrefs)
+ (goto-char (point-min))
+ (insert "Backtrace for test `")
+ (ert-insert-test-name-button (ert-test-name test))
+ (insert "':\n")))))))
+
+(defun ert-results-pop-to-messages-for-test-at-point ()
+ "Display the part of the *Messages* buffer generated during the test at point.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (let* ((test (ert--results-test-at-point-no-redefinition))
+ (stats ert--results-stats)
+ (pos (ert--stats-test-pos stats test))
+ (result (aref (ert--stats-test-results stats) pos)))
+ (let ((buffer (get-buffer-create "*ERT Messages*")))
+ (pop-to-buffer buffer)
+ (setq buffer-read-only t)
+ (let ((inhibit-read-only t))
+ (buffer-disable-undo)
+ (erase-buffer)
+ (ert-simple-view-mode)
+ (insert (ert-test-result-messages result))
+ (goto-char (point-min))
+ (insert "Messages for test `")
+ (ert-insert-test-name-button (ert-test-name test))
+ (insert "':\n")))))
+
+(defun ert-results-pop-to-should-forms-for-test-at-point ()
+ "Display the list of `should' forms executed during the test at point.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (let* ((test (ert--results-test-at-point-no-redefinition))
+ (stats ert--results-stats)
+ (pos (ert--stats-test-pos stats test))
+ (result (aref (ert--stats-test-results stats) pos)))
+ (let ((buffer (get-buffer-create "*ERT list of should forms*")))
+ (pop-to-buffer buffer)
+ (setq buffer-read-only t)
+ (let ((inhibit-read-only t))
+ (buffer-disable-undo)
+ (erase-buffer)
+ (ert-simple-view-mode)
+ (if (null (ert-test-result-should-forms result))
+ (insert "\n(No should forms during this test.)\n")
+ (loop for form-description in (ert-test-result-should-forms result)
+ for i from 1 do
+ (insert "\n")
+ (insert (format "%s: " i))
+ (let ((begin (point)))
+ (ert--pp-with-indentation-and-newline form-description)
+ (ert--make-xrefs-region begin (point)))))
+ (goto-char (point-min))
+ (insert "`should' forms executed during test `")
+ (ert-insert-test-name-button (ert-test-name test))
+ (insert "':\n")
+ (insert "\n")
+ (insert (concat "(Values are shallow copies and may have "
+ "looked different during the test if they\n"
+ "have been modified destructively.)\n"))
+ (forward-line 1)))))
+
+(defun ert-results-toggle-printer-limits-for-test-at-point ()
+ "Toggle how much of the condition to print for the test at point.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (let* ((ewoc ert--results-ewoc)
+ (node (ert--results-test-node-at-point))
+ (entry (ewoc-data node)))
+ (setf (ert--ewoc-entry-extended-printer-limits-p entry)
+ (not (ert--ewoc-entry-extended-printer-limits-p entry)))
+ (ewoc-invalidate ewoc node)))
+
+(defun ert-results-pop-to-timings ()
+ "Display test timings for the last run.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (let* ((stats ert--results-stats)
+ (start-times (ert--stats-test-start-times stats))
+ (end-times (ert--stats-test-end-times stats))
+ (buffer (get-buffer-create "*ERT timings*"))
+ (data (loop for test across (ert--stats-tests stats)
+ for start-time across (ert--stats-test-start-times stats)
+ for end-time across (ert--stats-test-end-times stats)
+ collect (list test
+ (float-time (subtract-time end-time
+ start-time))))))
+ (setq data (sort data (lambda (a b)
+ (> (second a) (second b)))))
+ (pop-to-buffer buffer)
+ (setq buffer-read-only t)
+ (let ((inhibit-read-only t))
+ (buffer-disable-undo)
+ (erase-buffer)
+ (ert-simple-view-mode)
+ (if (null data)
+ (insert "(No data)\n")
+ (insert (format "%-3s %8s %8s\n" "" "time" "cumul"))
+ (loop for (test time) in data
+ for cumul-time = time then (+ cumul-time time)
+ for i from 1 do
+ (let ((begin (point)))
+ (insert (format "%3s: %8.3f %8.3f " i time cumul-time))
+ (ert-insert-test-name-button (ert-test-name test))
+ (insert "\n"))))
+ (goto-char (point-min))
+ (insert "Tests by run time (seconds):\n\n")
+ (forward-line 1))))
+
+;;;###autoload
+(defun ert-describe-test (test-or-test-name)
+ "Display the documentation for TEST-OR-TEST-NAME (a symbol or ert-test)."
+ (interactive (list (ert-read-test-name-at-point "Describe test")))
+ (when (< emacs-major-version 24)
+ (error "Requires Emacs 24"))
+ (let (test-name
+ test-definition)
+ (etypecase test-or-test-name
+ (symbol (setq test-name test-or-test-name
+ test-definition (ert-get-test test-or-test-name)))
+ (ert-test (setq test-name (ert-test-name test-or-test-name)
+ test-definition test-or-test-name)))
+ (help-setup-xref (list #'ert-describe-test test-or-test-name)
+ (called-interactively-p 'interactive))
+ (save-excursion
+ (with-help-window (help-buffer)
+ (with-current-buffer (help-buffer)
+ (insert (if test-name (format "%S" test-name) "<anonymous test>"))
+ (insert " is a test")
+ (let ((file-name (and test-name
+ (symbol-file test-name 'ert-deftest))))
+ (when file-name
+ (insert " defined in `" (file-name-nondirectory file-name) "'")
+ (save-excursion
+ (re-search-backward "`\\([^`']+\\)'" nil t)
+ (help-xref-button 1 'help-function-def test-name file-name)))
+ (insert ".")
+ (fill-region-as-paragraph (point-min) (point))
+ (insert "\n\n")
+ (unless (and (ert-test-boundp test-name)
+ (eql (ert-get-test test-name) test-definition))
+ (let ((begin (point)))
+ (insert "Note: This test has been redefined or deleted, "
+ "this documentation refers to an old definition.")
+ (fill-region-as-paragraph begin (point)))
+ (insert "\n\n"))
+ (insert (or (ert-test-documentation test-definition)
+ "It is not documented.")
+ "\n")))))))
+
+(defun ert-results-describe-test-at-point ()
+ "Display the documentation of the test at point.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (ert-describe-test (ert--results-test-at-point-no-redefinition)))
+
+
+;;; Actions on load/unload.
+
+(add-to-list 'find-function-regexp-alist '(ert-deftest . ert--find-test-regexp))
+(add-to-list 'minor-mode-alist '(ert--current-run-stats
+ (:eval
+ (ert--tests-running-mode-line-indicator))))
+(add-to-list 'emacs-lisp-mode-hook 'ert--activate-font-lock-keywords)
+
+(defun ert--unload-function ()
+ "Unload function to undo the side-effects of loading ert.el."
+ (ert--remove-from-list 'find-function-regexp-alist 'ert-deftest :key #'car)
+ (ert--remove-from-list 'minor-mode-alist 'ert--current-run-stats :key #'car)
+ (ert--remove-from-list 'emacs-lisp-mode-hook
+ 'ert--activate-font-lock-keywords)
+ nil)
+
+(defvar ert-unload-hook '())
+(add-hook 'ert-unload-hook 'ert--unload-function)
+
+
+(provide 'ert)
+
+;;; ert.el ends here
diff --git a/lisp/emacs-lisp/ewoc.el b/lisp/emacs-lisp/ewoc.el
index 56183fb91c..bf9998695e 100644
--- a/lisp/emacs-lisp/ewoc.el
+++ b/lisp/emacs-lisp/ewoc.el
@@ -1,7 +1,6 @@
;;; ewoc.el --- utility to maintain a view of a list of objects in a buffer
-;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1991-2011 Free Software Foundation, Inc.
;; Author: Per Cederqvist <[email protected]>
;; Inge Wallin <[email protected]>
@@ -578,5 +577,4 @@ Return nil if the buffer has been deleted."
;; eval: (put 'ewoc--set-buffer-bind-dll-let* 'lisp-indent-hook 2)
;; End:
-;; arch-tag: d78915b9-9a07-44bf-aac6-04a1fc1bd6d4
;;; ewoc.el ends here
diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el
index 9d59337a7c..9c4a3e9832 100644
--- a/lisp/emacs-lisp/find-func.el
+++ b/lisp/emacs-lisp/find-func.el
@@ -1,7 +1,6 @@
;;; find-func.el --- find the definition of the Emacs Lisp function near point
-;; Copyright (C) 1997, 1999, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Jens Petersen <[email protected]>
;; Maintainer: [email protected]
@@ -563,5 +562,4 @@ Set mark before moving, if the buffer already existed."
(provide 'find-func)
-;; arch-tag: 43ecd81c-74dc-4d9a-8f63-a61e55670d64
;;; find-func.el ends here
diff --git a/lisp/emacs-lisp/find-gc.el b/lisp/emacs-lisp/find-gc.el
index 49d3a7075d..773b8f1140 100644
--- a/lisp/emacs-lisp/find-gc.el
+++ b/lisp/emacs-lisp/find-gc.el
@@ -1,7 +1,6 @@
;;; find-gc.el --- detect functions that call the garbage collector
-;; Copyright (C) 1992, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -159,5 +158,4 @@ Also store it in `find-gc-unsafe'."
(provide 'find-gc)
-;; arch-tag: 4a26a538-a008-40d9-a1ef-23bb6dbecef4
;;; find-gc.el ends here
diff --git a/lisp/emacs-lisp/float-sup.el b/lisp/emacs-lisp/float-sup.el
index 371fe8af3a..ceb1eb3baf 100644
--- a/lisp/emacs-lisp/float-sup.el
+++ b/lisp/emacs-lisp/float-sup.el
@@ -1,7 +1,6 @@
;;; float-sup.el --- define some constants useful for floating point numbers.
-;; Copyright (C) 1985, 1986, 1987, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
diff --git a/lisp/emacs-lisp/generic.el b/lisp/emacs-lisp/generic.el
index 51b23c3f40..770fe01f91 100644
--- a/lisp/emacs-lisp/generic.el
+++ b/lisp/emacs-lisp/generic.el
@@ -1,7 +1,6 @@
;;; generic.el --- defining simple major modes with comment and font-lock
;;
-;; Copyright (C) 1997, 1999, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1999, 2001-2011 Free Software Foundation, Inc.
;;
;; Author: Peter Breton <[email protected]>
;; Created: Fri Sep 27 1996
@@ -316,5 +315,4 @@ regular expression that can be used as an element of
(provide 'generic)
-;; arch-tag: 239c1fc4-1303-48d9-9ac0-657d655669ea
;;; generic.el ends here
diff --git a/lisp/emacs-lisp/gulp.el b/lisp/emacs-lisp/gulp.el
index 9c88ba7111..eca5470fd6 100644
--- a/lisp/emacs-lisp/gulp.el
+++ b/lisp/emacs-lisp/gulp.el
@@ -1,7 +1,6 @@
;;; gulp.el --- ask for updates for Lisp packages
-;; Copyright (C) 1996, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Sam Shteingold <[email protected]>
;; Maintainer: FSF
@@ -175,5 +174,4 @@ That is a list of elements, each of the form (MAINTAINER PACKAGES...)."
(provide 'gulp)
-;; arch-tag: 42750a11-460a-4efc-829f-342d075530e5
;;; gulp.el ends here
diff --git a/lisp/emacs-lisp/helper.el b/lisp/emacs-lisp/helper.el
index 6a59742932..113f584936 100644
--- a/lisp/emacs-lisp/helper.el
+++ b/lisp/emacs-lisp/helper.el
@@ -1,7 +1,6 @@
;;; helper.el --- utility help package supporting help in electric modes
-;; Copyright (C) 1985, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc.
;; Author: K. Shane Hartman
;; Maintainer: FSF
@@ -156,5 +155,4 @@
(provide 'helper)
-;; arch-tag: a0984577-d3e9-4124-ae0d-c46fe740f6a9
;;; helper.el ends here
diff --git a/lisp/emacs-lisp/lisp-mnt.el b/lisp/emacs-lisp/lisp-mnt.el
index 7df65acb28..4d0cacf4ee 100644
--- a/lisp/emacs-lisp/lisp-mnt.el
+++ b/lisp/emacs-lisp/lisp-mnt.el
@@ -1,7 +1,6 @@
;;; lisp-mnt.el --- utility functions for Emacs Lisp maintainers
-;; Copyright (C) 1992, 1994, 1997, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1994, 1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Eric S. Raymond <[email protected]>
;; Maintainer: FSF
@@ -616,5 +615,4 @@ Prompts for bug subject TOPIC. Leaves you in a mail buffer."
(provide 'lisp-mnt)
-;; arch-tag: fa3c5ab4-a37b-4e46-b7cf-b6d78b90e69e
;;; lisp-mnt.el ends here
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 2cdbd11592..37a86b7135 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -1,7 +1,6 @@
;;; lisp-mode.el --- Lisp mode, and its idiosyncratic commands
-;; Copyright (C) 1985, 1986, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1986, 1999-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: lisp, languages
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el
index d0d1520a67..deb06f5254 100644
--- a/lisp/emacs-lisp/lisp.el
+++ b/lisp/emacs-lisp/lisp.el
@@ -1,7 +1,6 @@
;;; lisp.el --- Lisp editing commands for Emacs
-;; Copyright (C) 1985, 1986, 1994, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1986, 1994, 2000-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: lisp, languages
@@ -690,5 +689,4 @@ considered."
(unless (eq predicate 'fboundp)
(lambda (str) (if (fboundp (intern-soft str)) " <f>"))))))))
-;; arch-tag: aa7fa8a4-2e6f-4e9b-9cd9-fef06340e67e
;;; lisp.el ends here
diff --git a/lisp/emacs-lisp/macroexp.el b/lisp/emacs-lisp/macroexp.el
index 6dfd47b4ad..af8047256e 100644
--- a/lisp/emacs-lisp/macroexp.el
+++ b/lisp/emacs-lisp/macroexp.el
@@ -1,6 +1,6 @@
;;; macroexp.el --- Additional macro-expansion support
;;
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;;
;; Author: Miles Bader <[email protected]>
;; Keywords: lisp, compiler, macros
@@ -182,5 +182,4 @@ definitions to shadow the loaded ones for use in file byte-compilation."
(provide 'macroexp)
-;; arch-tag: af9b8c24-c196-43bc-91e1-a3570790fa5a
;;; macroexp.el ends here
diff --git a/lisp/emacs-lisp/map-ynp.el b/lisp/emacs-lisp/map-ynp.el
index 644482a0d4..6ef26fef89 100644
--- a/lisp/emacs-lisp/map-ynp.el
+++ b/lisp/emacs-lisp/map-ynp.el
@@ -1,7 +1,6 @@
;;; map-ynp.el --- general-purpose boolean question-asker
-;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1991-1995, 2000-2011 Free Software Foundation, Inc.
;; Author: Roland McGrath <[email protected]>
;; Maintainer: FSF
@@ -275,5 +274,4 @@ the current %s and exit."
;; Return the number of actions that were taken.
actions))
-;; arch-tag: 1d0a3201-a151-4c10-b231-4da47c9e6dc3
;;; map-ynp.el ends here
diff --git a/lisp/emacs-lisp/package-x.el b/lisp/emacs-lisp/package-x.el
index 38c4d5bbe3..b9994be3d3 100644
--- a/lisp/emacs-lisp/package-x.el
+++ b/lisp/emacs-lisp/package-x.el
@@ -1,6 +1,6 @@
;;; package-x.el --- Package extras
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Tom Tromey <[email protected]>
;; Created: 10 Mar 2007
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index fecddcf16e..59964ff6b9 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -1,6 +1,6 @@
;;; package.el --- Simple package system for Emacs
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Tom Tromey <[email protected]>
;; Created: 10 Mar 2007
@@ -1663,15 +1663,15 @@ A value of nil means to display all packages.")
Optional PACKAGES is a list of names of packages (symbols) to
list; the default is to display everything in `package-alist'."
(require 'finder-inf nil t)
- (with-current-buffer (get-buffer-create "*Packages*")
- (package-menu-mode)
- (set (make-local-variable 'package-menu-package-list) packages)
- (set (make-local-variable 'package-menu-sort-key) nil)
- (package--generate-package-list)
- ;; It's okay to use pop-to-buffer here. The package menu buffer
- ;; has keybindings, and the user just typed `M-x list-packages',
- ;; suggesting that they might want to use them.
- (pop-to-buffer (current-buffer))))
+ (let ((buf (get-buffer-create "*Packages*")))
+ (with-current-buffer buf
+ (package-menu-mode)
+ (set (make-local-variable 'package-menu-package-list) packages)
+ (set (make-local-variable 'package-menu-sort-key) nil)
+ (package--generate-package-list))
+ ;; The package menu buffer has keybindings. If the user types
+ ;; `M-x list-packages', that suggests it should become current.
+ (switch-to-buffer buf)))
;;;###autoload
(defun list-packages ()
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index 5ff26b3dbc..24ea0a3e80 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -1,6 +1,6 @@
;;; pcase.el --- ML-style pattern-matching macro for Elisp
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Keywords:
diff --git a/lisp/emacs-lisp/pp.el b/lisp/emacs-lisp/pp.el
index 79c52e9f1e..2d1b8860a3 100644
--- a/lisp/emacs-lisp/pp.el
+++ b/lisp/emacs-lisp/pp.el
@@ -1,7 +1,6 @@
;;; pp.el --- pretty printer for Emacs Lisp
-;; Copyright (C) 1989, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1989, 1993, 2001-2011 Free Software Foundation, Inc.
;; Author: Randal Schwartz <[email protected]>
;; Keywords: lisp
@@ -202,5 +201,4 @@ Ignores leading comment characters."
(provide 'pp) ; so (require 'pp) works
-;; arch-tag: b0f7c65b-02c7-42bb-9ee3-508a59b8fbb9
;;; pp.el ends here
diff --git a/lisp/emacs-lisp/re-builder.el b/lisp/emacs-lisp/re-builder.el
index 1845effd5b..e3c030b3c6 100644
--- a/lisp/emacs-lisp/re-builder.el
+++ b/lisp/emacs-lisp/re-builder.el
@@ -1,7 +1,6 @@
;;; re-builder.el --- building Regexps with visual feedback
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Detlev Zundel <[email protected]>
;; Keywords: matching, lisp, tools
@@ -60,8 +59,8 @@
;; even the auto updates go all the way. Forcing an update overrides
;; this limit allowing an easy way to see all matches.
-;; Currently `re-builder' understands five different forms of input,
-;; namely `read', `string', `rx', and `sregex' syntax. Read
+;; Currently `re-builder' understands three different forms of input,
+;; namely `read', `string', and `rx' syntax. Read
;; syntax and string syntax are both delimited by `"'s and behave
;; according to their name. With the `string' syntax there's no need
;; to escape the backslashes and double quotes simplifying the editing
@@ -75,7 +74,7 @@
;; When editing a symbolic regular expression, only the first
;; expression in the RE Builder buffer is considered, which helps
;; limiting the extent of the expression like the `"'s do for the text
-;; modes. For the `sregex' syntax the function `sregex' is applied to
+;; modes. For the `rx' syntax the function `rx-to-string' is applied to
;; the evaluated expression read. So you can use quoted arguments
;; with something like '("findme") or you can construct arguments to
;; your hearts delight with a valid ELisp expression. (The compiled
@@ -126,11 +125,10 @@
(defcustom reb-re-syntax 'read
"Syntax for the REs in the RE Builder.
-Can either be `read', `string', `sregex', or `rx'."
+Can either be `read', `string', or `rx'."
:group 're-builder
:type '(choice (const :tag "Read syntax" read)
(const :tag "String syntax" string)
- (const :tag "`sregex' syntax" sregex)
(const :tag "`rx' syntax" rx)))
(defcustom reb-auto-match-limit 200
@@ -244,7 +242,9 @@ Except for Lisp syntax this is the same as `reb-regexp'.")
:help "Quit the RE Builder mode"))
(define-key menu-map [rt]
'(menu-item "Case sensitive" reb-toggle-case
- :button (:toggle . case-fold-search)
+ :button (:toggle . (with-current-buffer
+ reb-target-buffer
+ (null case-fold-search)))
:help "Toggle case sensitivity of searches for RE Builder target buffer"))
(define-key menu-map [rb]
'(menu-item "Change target buffer..." reb-change-target-buffer
@@ -279,10 +279,8 @@ Except for Lisp syntax this is the same as `reb-regexp'.")
emacs-lisp-mode "RE Builder Lisp"
"Major mode for interactively building symbolic Regular Expressions."
;; Pull in packages as needed
- (cond ((eq reb-re-syntax 'sregex) ; sregex is not autoloaded
- (require 'sregex)) ; right now..
- ((eq reb-re-syntax 'rx) ; rx-to-string is autoloaded
- (require 'rx))) ; require rx anyway
+ (cond ((memq reb-re-syntax '(sregex rx)) ; rx-to-string is autoloaded
+ (require 'rx))) ; require rx anyway
(reb-mode-common))
;; Use the same "\C-c" keymap as `reb-mode' and use font-locking from
@@ -612,9 +610,7 @@ optional fourth argument FORCE is non-nil."
(defun reb-cook-regexp (re)
"Return RE after processing it according to `reb-re-syntax'."
- (cond ((eq reb-re-syntax 'sregex)
- (apply 'sregex (eval (car (read-from-string re)))))
- ((eq reb-re-syntax 'rx)
+ (cond ((memq reb-re-syntax '(sregex rx))
(rx-to-string (eval (car (read-from-string re)))))
(t re)))
@@ -718,5 +714,4 @@ If SUBEXP is non-nil mark only the corresponding sub-expressions."
(provide 're-builder)
-;; arch-tag: 5c5515ac-4085-4524-a421-033f44f032e7
;;; re-builder.el ends here
diff --git a/lisp/emacs-lisp/regexp-opt.el b/lisp/emacs-lisp/regexp-opt.el
index 116d7b93d9..b538a7a294 100644
--- a/lisp/emacs-lisp/regexp-opt.el
+++ b/lisp/emacs-lisp/regexp-opt.el
@@ -1,7 +1,6 @@
;;; regexp-opt.el --- generate efficient regexps to match strings
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-2011 Free Software Foundation, Inc.
;; Author: Simon Marshall <[email protected]>
;; Maintainer: FSF
@@ -293,5 +292,4 @@ Merges keywords to avoid backtracking in Emacs' regexp matcher."
(provide 'regexp-opt)
-;; arch-tag: 6c5a66f4-29af-4fd6-8c3b-4b554d5b4370
;;; regexp-opt.el ends here
diff --git a/lisp/emacs-lisp/regi.el b/lisp/emacs-lisp/regi.el
index 78491636d7..8000dcd53d 100644
--- a/lisp/emacs-lisp/regi.el
+++ b/lisp/emacs-lisp/regi.el
@@ -1,7 +1,6 @@
;;; regi.el --- REGular expression Interpreting engine
-;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
;; Author: 1993 Barry A. Warsaw, Century Computing, Inc. <[email protected]>
;; Maintainer: [email protected]
@@ -254,5 +253,4 @@ useful information:
(provide 'regi)
-;; arch-tag: 804b4e45-4109-4f76-9a88-21887b881747
;;; regi.el ends here
diff --git a/lisp/emacs-lisp/ring.el b/lisp/emacs-lisp/ring.el
index b961d403fa..affaa9ce32 100644
--- a/lisp/emacs-lisp/ring.el
+++ b/lisp/emacs-lisp/ring.el
@@ -1,7 +1,6 @@
;;; ring.el --- handle rings of items
-;; Copyright (C) 1992, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: extensions
@@ -236,5 +235,4 @@ If SEQ is already a ring, return it."
(provide 'ring)
-;; arch-tag: e707682b-ed69-47c9-b20f-cf2c68cc92d2
;;; ring.el ends here
diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el
index 522d452c2d..7122de4789 100644
--- a/lisp/emacs-lisp/rx.el
+++ b/lisp/emacs-lisp/rx.el
@@ -1,7 +1,6 @@
;;; rx.el --- sexp notation for regular expressions
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Gerd Moellmann <[email protected]>
;; Maintainer: FSF
@@ -120,19 +119,17 @@
(nonl . not-newline) ; SRE
(anything . (rx-anything 0 nil))
(any . (rx-any 1 nil rx-check-any)) ; inconsistent with SRE
+ (any . ".") ; sregex
(in . any)
(char . any) ; sregex
(not-char . (rx-not-char 1 nil rx-check-any)) ; sregex
(not . (rx-not 1 1 rx-check-not))
- ;; Partially consistent with sregex, whose `repeat' is like our
- ;; `**'. (`repeat' with optional max arg and multiple sexp forms
- ;; is ambiguous.)
- (repeat . (rx-repeat 2 3))
+ (repeat . (rx-repeat 2 nil))
(= . (rx-= 2 nil)) ; SRE
(>= . (rx->= 2 nil)) ; SRE
(** . (rx-** 2 nil)) ; SRE
(submatch . (rx-submatch 1 nil)) ; SRE
- (group . submatch)
+ (group . submatch) ; sregex
(zero-or-more . (rx-kleene 1 nil))
(one-or-more . (rx-kleene 1 nil))
(zero-or-one . (rx-kleene 1 nil))
@@ -175,6 +172,7 @@
(category . (rx-category 1 1 rx-check-category))
(eval . (rx-eval 1 1))
(regexp . (rx-regexp 1 1 stringp))
+ (regex . regexp) ; sregex
(digit . "[[:digit:]]")
(numeric . digit) ; SRE
(num . digit) ; SRE
@@ -295,15 +293,27 @@ regular expression strings.")
`zero-or-more', and `one-or-more'. Dynamically bound.")
-(defun rx-info (op)
+(defun rx-info (op head)
"Return parsing/code generation info for OP.
If OP is the space character ASCII 32, return info for the symbol `?'.
If OP is the character `?', return info for the symbol `??'.
-See also `rx-constituents'."
+See also `rx-constituents'.
+If HEAD is non-nil, then OP is the head of a sexp, otherwise it's
+a standalone symbol."
(cond ((eq op ? ) (setq op '\?))
((eq op ??) (setq op '\??)))
- (while (and (not (null op)) (symbolp op))
- (setq op (cdr (assq op rx-constituents))))
+ (let (old-op)
+ (while (and (not (null op)) (symbolp op))
+ (setq old-op op)
+ (setq op (cdr (assq op rx-constituents)))
+ (when (if head (stringp op) (consp op))
+ ;; We found something but of the wrong kind. Let's look for an
+ ;; alternate definition for the other case.
+ (let ((new-op
+ (cdr (assq old-op (cdr (memq (assq old-op rx-constituents)
+ rx-constituents))))))
+ (if (and new-op (not (if head (stringp new-op) (consp new-op))))
+ (setq op new-op))))))
op)
@@ -311,7 +321,7 @@ See also `rx-constituents'."
"Check FORM according to its car's parsing info."
(unless (listp form)
(error "rx `%s' needs argument(s)" form))
- (let* ((rx (rx-info (car form)))
+ (let* ((rx (rx-info (car form) 'head))
(nargs (1- (length form)))
(min-args (nth 1 rx))
(max-args (nth 2 rx))
@@ -401,7 +411,7 @@ Only both edges of each range is checked."
(setcdr m (1- char)))))
ranges))
-
+
(defun rx-any-condense-range (args)
"Condense by side effect ARGS as range for Rx `any'."
(let (str
@@ -564,7 +574,7 @@ ARG is optional."
(condition-case nil
(rx-form arg)
(error ""))))
- (eq arg 'word-boundary)
+ (eq arg 'word-boundary)
(and (consp arg)
(memq (car arg) '(not any in syntax category))))
(error "rx `not' syntax error: %s" arg))
@@ -643,14 +653,17 @@ If SKIP is non-nil, allow that number of items after the head, i.e.
(defun rx-** (form)
"Parse and produce code from FORM `(** N M ...)'."
(rx-check form)
- (setq form (cons 'repeat (cdr (rx-trans-forms form 2))))
- (rx-form form '*))
+ (rx-form (cons 'repeat (cdr (rx-trans-forms form 2))) '*))
(defun rx-repeat (form)
"Parse and produce code from FORM.
-FORM is either `(repeat N FORM1)' or `(repeat N M FORM1)'."
+FORM is either `(repeat N FORM1)' or `(repeat N M FORMS...)'."
(rx-check form)
+ (if (> (length form) 4)
+ (setq form (rx-trans-forms form 2)))
+ (if (null (nth 2 form))
+ (setq form (cons (nth 0 form) (cons (nth 1 form) (nthcdr 3 form)))))
(cond ((= (length form) 3)
(unless (and (integerp (nth 1 form))
(> (nth 1 form) 0))
@@ -749,15 +762,18 @@ of all atomic regexps."
"Parse and produce code from FORM, which is `(syntax SYMBOL)'."
(rx-check form)
(let* ((sym (cadr form))
- (syntax (assq sym rx-syntax)))
+ (syntax (cdr (assq sym rx-syntax))))
(unless syntax
;; Try sregex compatibility.
- (let ((name (symbol-name sym)))
- (if (= 1 (length name))
- (setq syntax (rassq (aref name 0) rx-syntax))))
+ (cond
+ ((characterp sym) (setq syntax sym))
+ ((symbolp sym)
+ (let ((name (symbol-name sym)))
+ (if (= 1 (length name))
+ (setq syntax (aref name 0))))))
(unless syntax
- (error "Unknown rx syntax `%s'" (cadr form))))
- (format "\\s%c" (cdr syntax))))
+ (error "Unknown rx syntax `%s'" sym)))
+ (format "\\s%c" syntax)))
(defun rx-check-category (form)
@@ -811,7 +827,7 @@ shy groups around the result and some more in other functions."
(cond ((integerp form)
(regexp-quote (char-to-string form)))
((symbolp form)
- (let ((info (rx-info form)))
+ (let ((info (rx-info form nil)))
(cond ((stringp info)
info)
((null info)
@@ -819,7 +835,7 @@ shy groups around the result and some more in other functions."
(t
(funcall (nth 0 info) form)))))
((consp form)
- (let ((info (rx-info (car form))))
+ (let ((info (rx-info (car form) 'head)))
(unless (consp info)
(error "Unknown rx form `%s'" (car form)))
(funcall (nth 0 info) form)))
@@ -1144,5 +1160,4 @@ enclosed in `(and ...)'.
(provide 'rx)
-;; arch-tag: 12d01a63-0008-42bb-ab8c-1c7d63be370b
;;; rx.el ends here
diff --git a/lisp/emacs-lisp/shadow.el b/lisp/emacs-lisp/shadow.el
index e690cbaa1b..c5bad3bd40 100644
--- a/lisp/emacs-lisp/shadow.el
+++ b/lisp/emacs-lisp/shadow.el
@@ -1,7 +1,6 @@
;;; shadow.el --- locate Emacs Lisp file shadowings
-;; Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Terry Jones <[email protected]>
;; Keywords: lisp
diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el
index a7021b3cf7..702e8d880b 100644
--- a/lisp/emacs-lisp/smie.el
+++ b/lisp/emacs-lisp/smie.el
@@ -1,6 +1,6 @@
;;; smie.el --- Simple Minded Indentation Engine
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Keywords: languages, lisp, internal, parsing, indentation
diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el
index b85399263d..c012e48b59 100644
--- a/lisp/emacs-lisp/syntax.el
+++ b/lisp/emacs-lisp/syntax.el
@@ -1,7 +1,6 @@
;;; syntax.el --- helper functions to find syntactic context
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
@@ -578,5 +577,4 @@ Point is at POS when this function returns."
(provide 'syntax)
-;; arch-tag: 302f1eeb-e77c-4680-a8c5-c543e01161a5
;;; syntax.el ends here
diff --git a/lisp/emacs-lisp/tcover-ses.el b/lisp/emacs-lisp/tcover-ses.el
index 8df70f4d97..b91b96b83e 100644
--- a/lisp/emacs-lisp/tcover-ses.el
+++ b/lisp/emacs-lisp/tcover-ses.el
@@ -1,7 +1,6 @@
;;;; testcover-ses.el -- Example use of `testcover' to test "SES"
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Jonathan Yavner <[email protected]>
;; Maintainer: Jonathan Yavner <[email protected]>
@@ -722,5 +721,4 @@ spreadsheet files with invalid formatting."
;;Could do this here: (testcover-end "ses.el")
(message "Done"))
-;; arch-tag: 87052ba4-5cf8-46cf-9375-fe245f3360b8
;; testcover-ses.el ends here.
diff --git a/lisp/emacs-lisp/tcover-unsafep.el b/lisp/emacs-lisp/tcover-unsafep.el
index 47f931bf9d..2be026b98e 100644
--- a/lisp/emacs-lisp/tcover-unsafep.el
+++ b/lisp/emacs-lisp/tcover-unsafep.el
@@ -1,6 +1,6 @@
;;;; testcover-unsafep.el -- Use testcover to test unsafep's code coverage
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Jonathan Yavner <[email protected]>
;; Maintainer: Jonathan Yavner <[email protected]>
@@ -138,5 +138,4 @@
(testcover-end "unsafep.el")
(message "Done"))
-;; arch-tag: a7616c27-1998-47ae-9304-76d1439dbf29
;; testcover-unsafep.el ends here.
diff --git a/lisp/emacs-lisp/testcover.el b/lisp/emacs-lisp/testcover.el
index 95262e17d5..08f757819f 100644
--- a/lisp/emacs-lisp/testcover.el
+++ b/lisp/emacs-lisp/testcover.el
@@ -1,6 +1,6 @@
;;;; testcover.el -- Visual code-coverage tool
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Jonathan Yavner <[email protected]>
;; Maintainer: Jonathan Yavner <[email protected]>
@@ -534,5 +534,4 @@ coverage tests. This function creates many overlays."
(goto-char (next-overlay-change (point)))
(end-of-line))
-;; arch-tag: 72324a4a-4a2e-4142-9249-cc56d6757588
;; testcover.el ends here.
diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el
index b12d906867..5f069226aa 100644
--- a/lisp/emacs-lisp/timer.el
+++ b/lisp/emacs-lisp/timer.el
@@ -1,7 +1,6 @@
;;; timer.el --- run a function with args at some time in future
-;; Copyright (C) 1996, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Package: emacs
diff --git a/lisp/emacs-lisp/tq.el b/lisp/emacs-lisp/tq.el
index b0643edc54..3d3b371ad5 100644
--- a/lisp/emacs-lisp/tq.el
+++ b/lisp/emacs-lisp/tq.el
@@ -1,7 +1,6 @@
;;; tq.el --- utility to maintain a transaction queue
-;; Copyright (C) 1985, 1986, 1987, 1992, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1992, 2001-2011 Free Software Foundation, Inc.
;; Author: Scott Draves <[email protected]>
;; Maintainer: FSF
@@ -167,5 +166,4 @@ This produces more reliable results with some processes."
(provide 'tq)
-;; arch-tag: 65dea08c-4edd-4cde-83a5-e8a15b993b79
;;; tq.el ends here
diff --git a/lisp/emacs-lisp/trace.el b/lisp/emacs-lisp/trace.el
index 194afe1081..22c1f0e7ea 100644
--- a/lisp/emacs-lisp/trace.el
+++ b/lisp/emacs-lisp/trace.el
@@ -1,7 +1,6 @@
;;; trace.el --- tracing facility for Emacs Lisp functions
-;; Copyright (C) 1993, 1998, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Hans Chalupsky <[email protected]>
;; Maintainer: FSF
@@ -299,5 +298,4 @@ was not traced this is a noop."
(provide 'trace)
-;; arch-tag: cfd170a7-4932-4331-8c8b-b7151942e5a1
;;; trace.el ends here
diff --git a/lisp/emacs-lisp/unsafep.el b/lisp/emacs-lisp/unsafep.el
index a62f8de401..0f08d77d4c 100644
--- a/lisp/emacs-lisp/unsafep.el
+++ b/lisp/emacs-lisp/unsafep.el
@@ -1,6 +1,6 @@
;;;; unsafep.el -- Determine whether a Lisp form is safe to evaluate
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Jonathan Yavner <[email protected]>
;; Maintainer: Jonathan Yavner <[email protected]>
@@ -202,6 +202,9 @@ UNSAFEP-VARS is a list of symbols with local bindings."
(dolist (x (nthcdr 3 form))
(setq reason (unsafep-progn (cdr x)))
(if reason (throw 'unsafep reason))))))
+ ((eq fun '\`)
+ ;; Backquoted form - safe if its expansion is.
+ (unsafep (cdr (backquote-process (cadr form)))))
(t
;;First unsafep-function call above wasn't nil, no special case applies
reason)))))
@@ -258,5 +261,4 @@ If TO-BIND is t, check whether SYM is safe to bind."
(local-variable-p sym)))
`(global-variable ,sym))))
-;; arch-tag: 6216f98b-eb8f-467a-9c33-7a7644f50658
;;; unsafep.el ends here
diff --git a/lisp/emacs-lisp/warnings.el b/lisp/emacs-lisp/warnings.el
index ba8c8ffc83..1fb8ac0c2b 100644
--- a/lisp/emacs-lisp/warnings.el
+++ b/lisp/emacs-lisp/warnings.el
@@ -1,6 +1,6 @@
;;; warnings.el --- log and display warnings
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
@@ -337,5 +337,4 @@ this is equivalent to `display-warning', using
(provide 'warnings)
-;; arch-tag: faaad1c8-7b2a-4161-af38-5ab4afde0496
;;; warnings.el ends here
diff --git a/lisp/emacs-lock.el b/lisp/emacs-lock.el
index 906b899bed..22795a47d9 100644
--- a/lisp/emacs-lock.el
+++ b/lisp/emacs-lock.el
@@ -1,7 +1,6 @@
;;; emacs-lock.el --- prevents you from exiting Emacs if a buffer is locked
-;; Copyright (C) 1994, 1997, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc
+;; Copyright (C) 1994, 1997, 2001-2011 Free Software Foundation, Inc
;; Author: Tom Wurgler <[email protected]>
;; Created: 12/8/94
@@ -98,5 +97,4 @@ If the buffer is locked, signal error and display its name."
(provide 'emacs-lock)
-;; arch-tag: 58e6cb43-7cf0-401a-bcb6-4902a0b8bdc1
;;; emacs-lock.el ends here
diff --git a/lisp/emulation/crisp.el b/lisp/emulation/crisp.el
index 9be200168e..b2806e8f8e 100644
--- a/lisp/emulation/crisp.el
+++ b/lisp/emulation/crisp.el
@@ -1,7 +1,6 @@
;;; crisp.el --- CRiSP/Brief Emacs emulator
-;; Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Gary D. Foster <[email protected]>
;; Keywords: emulations brief crisp
@@ -381,5 +380,4 @@ With ARG, turn CRiSP mode on if ARG is positive, off otherwise."
(run-hooks 'crisp-load-hook)
(provide 'crisp)
-;; arch-tag: e5369375-fafb-4240-b7ae-4cb460ef05ee
;;; crisp.el ends here
diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el
index bc64608a28..3bdd9565fb 100644
--- a/lisp/emulation/cua-base.el
+++ b/lisp/emulation/cua-base.el
@@ -1,7 +1,6 @@
;;; cua-base.el --- emulate CUA key bindings
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Kim F. Storm <[email protected]>
;; Keywords: keyboard emulations convenience cua
@@ -1438,6 +1437,7 @@ If ARG is the atom `-', scroll upward by nearly full screen."
(define-key cua-global-keymap [remap yank-pop] 'cua-paste-pop)
;; set mark
(define-key cua-global-keymap [remap set-mark-command] 'cua-set-mark)
+ (define-key cua-global-keymap [remap exchange-point-and-mark] 'cua-exchange-point-and-mark)
;; scrolling
(define-key cua-global-keymap [remap scroll-up] 'cua-scroll-up)
@@ -1452,7 +1452,6 @@ If ARG is the atom `-', scroll upward by nearly full screen."
(when cua-remap-control-v
(define-key cua--cua-keys-keymap [(control v)] 'yank)
(define-key cua--cua-keys-keymap [(meta v)] 'cua-repeat-replace-region))
- (define-key cua--cua-keys-keymap [remap exchange-point-and-mark] 'cua-exchange-point-and-mark)
(define-key cua--prefix-override-keymap [(control x)] 'cua--prefix-override-handler)
(define-key cua--prefix-override-keymap [(control c)] 'cua--prefix-override-handler)
diff --git a/lisp/emulation/cua-gmrk.el b/lisp/emulation/cua-gmrk.el
index 761a3d5ec2..690555e81d 100644
--- a/lisp/emulation/cua-gmrk.el
+++ b/lisp/emulation/cua-gmrk.el
@@ -1,7 +1,6 @@
;;; cua-gmrk.el --- CUA unified global mark support
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Kim F. Storm <[email protected]>
;; Keywords: keyboard emulations convenience cua mark
@@ -381,5 +380,4 @@ With prefix argument, don't jump to global mark when cancelling it."
(provide 'cua-gmrk)
-;; arch-tag: 553d8076-a91d-48ae-825d-6cb962a5f67f
;;; cua-gmrk.el ends here
diff --git a/lisp/emulation/cua-rect.el b/lisp/emulation/cua-rect.el
index 2cbf443886..62ae3ffa7d 100644
--- a/lisp/emulation/cua-rect.el
+++ b/lisp/emulation/cua-rect.el
@@ -1,7 +1,6 @@
;;; cua-rect.el --- CUA unified rectangle support
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Kim F. Storm <[email protected]>
;; Keywords: keyboard emulations convenience CUA
@@ -1492,5 +1491,4 @@ With prefix arg, indent to that column."
(provide 'cua-rect)
-;; arch-tag: b730df53-17b9-4a89-bd63-4a71ec196731
;;; cua-rect.el ends here
diff --git a/lisp/emulation/edt-lk201.el b/lisp/emulation/edt-lk201.el
index e50e064077..6132b455fa 100644
--- a/lisp/emulation/edt-lk201.el
+++ b/lisp/emulation/edt-lk201.el
@@ -1,7 +1,7 @@
;;; edt-lk201.el --- enhanced EDT keypad mode emulation for LK-201 keyboards
-;; Copyright (C) 1986, 1992, 1993, 1995, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1992-1993, 1995, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Kevin Gallagher <[email protected]>
;; Maintainer: Kevin Gallagher <[email protected]>
@@ -57,5 +57,4 @@
("HELP" . [help]) ("DO" . [menu]) ("F17" . [f17]) ("F18" . [f18])
("F19" . [f19]) ("F20" . [f20])))
-;; arch-tag: 36f498cf-c3f6-41b0-911b-83b1348855ec
;;; edt-lk201.el ends here
diff --git a/lisp/emulation/edt-mapper.el b/lisp/emulation/edt-mapper.el
index 6bf50db544..99d204692f 100644
--- a/lisp/emulation/edt-mapper.el
+++ b/lisp/emulation/edt-mapper.el
@@ -1,7 +1,6 @@
;;; edt-mapper.el --- create an EDT LK-201 map file for X-Windows Emacs
-;; Copyright (C) 1994, 1995, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1995, 2000-2011 Free Software Foundation, Inc.
;; Author: Kevin Gallagher <[email protected]>
;; Maintainer: Kevin Gallagher <[email protected]>
@@ -142,6 +141,48 @@
(setq edt-term (getenv "TERM")))
;;;
+;;; Implements a workaround for a feature that was added to simple.el.
+;;;
+;;; Many function keys have no Emacs functions assigned to them by
+;;; default. A subset of these are typically assigned functions in the
+;;; EDT emulation. This includes all the keypad keys and a some others
+;;; like Delete.
+;;;
+;;; Logic in simple.el maps some of these unassigned function keys to
+;;; ordinary typing keys. Where this is the case, a call to
+;;; read-key-sequence, below, does not return the name of the function
+;;; key pressd by the user but, instead, it returns the name of the
+;;; key to which it has been mapped. It needs to know the name of the
+;;; key pressed by the user. As a workaround, we assign a function to
+;;; each of the unassigned function keys of interest, here. These
+;;; assignments override the mapping to other keys and are only
+;;; temporary since, when edt-mapper is finished executing, it causes
+;;; Emacs to exit.
+;;;
+
+(mapc
+ (lambda (function-key)
+ (if (not (lookup-key (current-global-map) function-key))
+ (define-key (current-global-map) function-key 'forward-char)))
+ '([kp-0] [kp-1] [kp-2] [kp-3] [kp-4]
+ [kp-5] [kp-6] [kp-7] [kp-8] [kp-9]
+ [kp-space]
+ [kp-tab]
+ [kp-enter]
+ [kp-multiply]
+ [kp-add]
+ [kp-separator]
+ [kp-subtract]
+ [kp-decimal]
+ [kp-divide]
+ [kp-equal]
+ [backspace]
+ [delete]
+ [tab]
+ [linefeed]
+ [clear]))
+
+;;;
;;; Make sure the window is big enough to display the instructions,
;;; except where window cannot be re-sized.
;;;
@@ -505,5 +546,4 @@
(sit-for 600)
(kill-emacs t)
-;; arch-tag: 9eea59c8-b8b7-4d66-b858-c8920624c518
;;; edt-mapper.el ends here
diff --git a/lisp/emulation/edt-pc.el b/lisp/emulation/edt-pc.el
index 04128ac00b..a51ecd3404 100644
--- a/lisp/emulation/edt-pc.el
+++ b/lisp/emulation/edt-pc.el
@@ -1,7 +1,6 @@
;;; edt-pc.el --- enhanced EDT keypad mode emulation for PC 101 keyboards
-;; Copyright (C) 1986, 1994, 1995, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1994-1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Kevin Gallagher <[email protected]>
;; Maintainer: Kevin Gallagher <[email protected]>
@@ -87,5 +86,4 @@
("HELP" . "" ) ("DO" . "" ) ("F17" . "" ) ("F18" . "" )
("F19" . "" ) ("F20" . "" )))
-;; arch-tag: 4593d053-183a-4062-97de-57b8877595ce
;;; edt-pc.el ends here
diff --git a/lisp/emulation/edt-vt100.el b/lisp/emulation/edt-vt100.el
index 9416a9ad48..1dca1f19df 100644
--- a/lisp/emulation/edt-vt100.el
+++ b/lisp/emulation/edt-vt100.el
@@ -1,7 +1,7 @@
;;; edt-vt100.el --- enhanced EDT keypad mode emulation for VT series terminals
-;; Copyright (C) 1986, 1992, 1993, 1995, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1992-1993, 1995, 2002-2011
+;; Free Software Foundation, Inc.
;; Author: Kevin Gallagher <[email protected]>
;; Maintainer: Kevin Gallagher <[email protected]>
@@ -48,5 +48,4 @@
"Set terminal width to 132 columns."
(vt100-wide-mode 1))
-;; arch-tag: c9f10c95-915f-44b5-93ff-4654abca4dd4
;;; edt-vt100.el ends here
diff --git a/lisp/emulation/edt.el b/lisp/emulation/edt.el
index bfed09e0df..68550cc30e 100644
--- a/lisp/emulation/edt.el
+++ b/lisp/emulation/edt.el
@@ -1,8 +1,6 @@
;;; edt.el --- enhanced EDT keypad mode emulation for GNU Emacs
-;; Copyright (C) 1986, 1992, 1993, 1994, 1995, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1992-1995, 2000-2011 Free Software Foundation, Inc.
;; Author: Kevin Gallagher <[email protected]>
;; Maintainer: Kevin Gallagher <[email protected]>
diff --git a/lisp/emulation/keypad.el b/lisp/emulation/keypad.el
index 5ec8236651..0156e54f90 100644
--- a/lisp/emulation/keypad.el
+++ b/lisp/emulation/keypad.el
@@ -1,7 +1,6 @@
;;; keypad.el --- simplified keypad bindings
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Kim F. Storm <[email protected]>
;; Keywords: keyboard convenience
@@ -270,5 +269,4 @@ the decimal key on the keypad is mapped to DECIMAL instead of `.'"
(setq i (1+ i)))))
-;; arch-tag: 0899d2bd-9e12-4b4e-9aef-d0014d3b6414
;;; keypad.el ends here
diff --git a/lisp/emulation/pc-mode.el b/lisp/emulation/pc-mode.el
index 37e6cc1aa4..c0ed1925b4 100644
--- a/lisp/emulation/pc-mode.el
+++ b/lisp/emulation/pc-mode.el
@@ -1,7 +1,6 @@
;;; pc-mode.el --- emulate certain key bindings used on PCs
-;; Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: emulations
@@ -53,5 +52,4 @@ C-Escape does list-buffers."
(provide 'pc-mode)
-;; arch-tag: df007c05-f885-4cd0-8c1e-487d0f8dd9c9
;;; pc-mode.el ends here
diff --git a/lisp/emulation/pc-select.el b/lisp/emulation/pc-select.el
index 8dcdb991ab..76562dd75c 100644
--- a/lisp/emulation/pc-select.el
+++ b/lisp/emulation/pc-select.el
@@ -2,8 +2,7 @@
;;; (or MAC GUI or MS-windoze (bah)) look-and-feel
;;; including key bindings.
-;; Copyright (C) 1995, 1996, 1997, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Michael Staats <[email protected]>
;; Keywords: convenience emulations
@@ -983,5 +982,4 @@ but before calling PC Selection mode):
(setq pc-select-key-bindings-alist nil
pc-select-saved-settings-alist nil))))
-;; arch-tag: 10697b70-ae07-4f3e-ad23-7814a3f418c2
;;; pc-select.el ends here
diff --git a/lisp/emulation/tpu-edt.el b/lisp/emulation/tpu-edt.el
index f77cf23d81..f86d3be0fc 100644
--- a/lisp/emulation/tpu-edt.el
+++ b/lisp/emulation/tpu-edt.el
@@ -1,7 +1,6 @@
;;; tpu-edt.el --- Emacs emulating TPU emulating EDT
-;; Copyright (C) 1993, 1994, 1995, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1995, 2000-2011 Free Software Foundation, Inc.
;; Author: Rob Riepel <[email protected]>
;; Maintainer: Rob Riepel <[email protected]>
@@ -2438,7 +2437,7 @@ If FILE is nil, try to load a default file. The default file names are
;;;### (autoloads (tpu-set-cursor-bound tpu-set-cursor-free tpu-set-scroll-margins
-;;;;;; tpu-cursor-free-mode) "tpu-extras" "tpu-extras.el" "fe5b7795d6b6720a98b805ee47a08bdf")
+;;;;;; tpu-cursor-free-mode) "tpu-extras" "tpu-extras.el" "0d2f0cd1c728d2eb9028a6e01b1a5df1")
;;; Generated autoloads from tpu-extras.el
(autoload 'tpu-cursor-free-mode "tpu-extras" "\
@@ -2465,5 +2464,4 @@ Constrain the cursor to the flow of the text.
(provide 'tpu-edt)
-;; arch-tag: f3dfe61c-2cbd-4f73-b9cc-eb215020b857
;;; tpu-edt.el ends here
diff --git a/lisp/emulation/tpu-extras.el b/lisp/emulation/tpu-extras.el
index 311b8e2516..235b16e92b 100644
--- a/lisp/emulation/tpu-extras.el
+++ b/lisp/emulation/tpu-extras.el
@@ -1,7 +1,6 @@
;;; tpu-extras.el --- scroll margins and free cursor mode for TPU-edt
-;; Copyright (C) 1993, 1994, 1995, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1995, 2000-2011 Free Software Foundation, Inc.
;; Author: Rob Riepel <[email protected]>
;; Maintainer: Rob Riepel <[email protected]>
diff --git a/lisp/emulation/tpu-mapper.el b/lisp/emulation/tpu-mapper.el
index b4942564eb..15417a137f 100644
--- a/lisp/emulation/tpu-mapper.el
+++ b/lisp/emulation/tpu-mapper.el
@@ -1,7 +1,6 @@
;;; tpu-mapper.el --- create a TPU-edt X-windows keymap file
-;; Copyright (C) 1993, 1994, 1995, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Rob Riepel <[email protected]>
;; Maintainer: Rob Riepel <[email protected]>
@@ -350,5 +349,4 @@ your local X guru can try to figure out why the key is being ignored."
")
(goto-char (point-min)))
-;; arch-tag: bab5872f-cd3a-4c1c-aedb-047b67646f6c
;;; tpu-mapper.el ends here
diff --git a/lisp/emulation/vi.el b/lisp/emulation/vi.el
index a65dd44e39..5bab974164 100644
--- a/lisp/emulation/vi.el
+++ b/lisp/emulation/vi.el
@@ -1488,5 +1488,4 @@ With ARG, inserts that many newlines."
(provide 'vi)
-;; arch-tag: ac9bdac3-8acb-4ddd-bdae-c6dd873153b3
;;; vi.el ends here
diff --git a/lisp/emulation/vip.el b/lisp/emulation/vip.el
index 0474ba7c67..328fbac903 100644
--- a/lisp/emulation/vip.el
+++ b/lisp/emulation/vip.el
@@ -1,7 +1,7 @@
;;; vip.el --- a VI Package for GNU Emacs
-;; Copyright (C) 1986, 1987, 1988, 1992, 1993, 1998, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986-1988, 1992-1993, 1998, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Masahiko Sato <[email protected]>
;; Keywords: emulations
@@ -3054,5 +3054,4 @@ vip-s-string"
(provide 'vip)
-;; arch-tag: bff623ef-48f7-41d4-9aa3-2e840c9ab415
;;; vip.el ends here
diff --git a/lisp/emulation/viper-cmd.el b/lisp/emulation/viper-cmd.el
index 4e90889ddd..fae249da9d 100644
--- a/lisp/emulation/viper-cmd.el
+++ b/lisp/emulation/viper-cmd.el
@@ -1,7 +1,6 @@
;;; viper-cmd.el --- Vi command support for Viper
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: viper
diff --git a/lisp/emulation/viper-ex.el b/lisp/emulation/viper-ex.el
index be387d7724..93bf8251ce 100644
--- a/lisp/emulation/viper-ex.el
+++ b/lisp/emulation/viper-ex.el
@@ -1,7 +1,6 @@
;;; viper-ex.el --- functions implementing the Ex commands for Viper
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: viper
@@ -2303,5 +2302,4 @@ Type 'mak ' (including the space) to run make with no args."
-;; arch-tag: 56b80d36-f880-4d10-bd66-85ad91a295db
;;; viper-ex.el ends here
diff --git a/lisp/emulation/viper-init.el b/lisp/emulation/viper-init.el
index 5af9692217..c069c38700 100644
--- a/lisp/emulation/viper-init.el
+++ b/lisp/emulation/viper-init.el
@@ -1,7 +1,6 @@
;;; viper-init.el --- some common definitions for Viper
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: viper
diff --git a/lisp/emulation/viper-keym.el b/lisp/emulation/viper-keym.el
index d75573673d..f3bd6bece6 100644
--- a/lisp/emulation/viper-keym.el
+++ b/lisp/emulation/viper-keym.el
@@ -1,7 +1,6 @@
;;; viper-keym.el --- Viper keymaps
-;; Copyright (C) 1994, 1995, 1996, 1997, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: viper
@@ -673,5 +672,4 @@ form ((key . function) (key . function) ... )."
;; End:
-;; arch-tag: 43af4b2f-0bea-400b-889e-221ebc00acb1
;;; viper-keym.el ends here
diff --git a/lisp/emulation/viper-macs.el b/lisp/emulation/viper-macs.el
index 71d565632e..00153c1ff0 100644
--- a/lisp/emulation/viper-macs.el
+++ b/lisp/emulation/viper-macs.el
@@ -1,7 +1,6 @@
;;; viper-macs.el --- functions implementing keyboard macros for Viper
-;; Copyright (C) 1994, 1995, 1996, 1997, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: viper
@@ -932,5 +931,4 @@ name from there."
(call-last-kbd-macro)))
-;; arch-tag: ecd3cc5c-8cd0-4bbe-b2ec-7e75a4b7d0aa
;;; viper-macs.el ends here
diff --git a/lisp/emulation/viper-mous.el b/lisp/emulation/viper-mous.el
index 9bea921e16..778910017c 100644
--- a/lisp/emulation/viper-mous.el
+++ b/lisp/emulation/viper-mous.el
@@ -1,7 +1,6 @@
;;; viper-mous.el --- mouse support for Viper
-;; Copyright (C) 1994, 1995, 1996, 1997, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: viper
@@ -663,5 +662,4 @@ This buffer may be different from the one where the click occurred."
;; End:
-;; arch-tag: e56b2390-06c4-4dd1-96f5-c7876e2d8c2f
;;; viper-mous.el ends here
diff --git a/lisp/emulation/viper-util.el b/lisp/emulation/viper-util.el
index 6868a96008..4aace25fc9 100644
--- a/lisp/emulation/viper-util.el
+++ b/lisp/emulation/viper-util.el
@@ -1,8 +1,6 @@
;;; viper-util.el --- Utilities used by viper.el
-;; Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1994-1997, 1999-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: viper
@@ -1556,5 +1554,4 @@ This option is appropriate if you like Emacs-style words."
;; eval: (put 'viper-deflocalvar 'lisp-indent-hook 'defun)
;; End:
-;; arch-tag: 7f023fd5-dd9e-4378-a397-9c179553b0e3
;;; viper-util.el ends here
diff --git a/lisp/emulation/viper.el b/lisp/emulation/viper.el
index 04833a836a..0da3345aae 100644
--- a/lisp/emulation/viper.el
+++ b/lisp/emulation/viper.el
@@ -3,8 +3,7 @@
;; and a venomous VI PERil.
;; Viper Is also a Package for Emacs Rebels.
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Keywords: emulations
@@ -1375,5 +1374,4 @@ These two lines must come in the order given.
;; eval: (put 'viper-deflocalvar 'lisp-indent-hook 'defun)
;; End:
-;; arch-tag: 5f3e844c-c4e6-4bbd-9b73-63bdc14e7d79
;;; viper.el ends here
diff --git a/lisp/emulation/ws-mode.el b/lisp/emulation/ws-mode.el
index 35f54b71d6..69f7b1d50e 100644
--- a/lisp/emulation/ws-mode.el
+++ b/lisp/emulation/ws-mode.el
@@ -1,7 +1,6 @@
;;; ws-mode.el --- WordStar emulation mode for GNU Emacs
-;; Copyright (C) 1991, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1991, 2001-2011 Free Software Foundation, Inc.
;; Author: Juergen Nickelsen <[email protected]>
;; Version: 0.7
@@ -742,5 +741,4 @@ sWith: " )
(provide 'ws-mode)
-;; arch-tag: 6dd864bf-2ccb-4d59-af6e-492eba2890a3
;;; ws-mode.el ends here
diff --git a/lisp/env.el b/lisp/env.el
index b69f2d2b0e..5e915eb312 100644
--- a/lisp/env.el
+++ b/lisp/env.el
@@ -1,7 +1,6 @@
;;; env.el --- functions to manipulate environment variables
-;; Copyright (C) 1991, 1994, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1991, 1994, 2000-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: processes, unix
@@ -210,5 +209,4 @@ in the environment list of the selected frame."
(provide 'env)
-;; arch-tag: b7d6a8f7-bc81-46db-8e39-8d721d4ed0b8
;;; env.el ends here
diff --git a/lisp/epa-dired.el b/lisp/epa-dired.el
index 80ecef6f54..db1ddd7ce5 100644
--- a/lisp/epa-dired.el
+++ b/lisp/epa-dired.el
@@ -1,5 +1,5 @@
;;; epa-dired.el --- the EasyPG Assistant, dired extension
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Keywords: PGP, GnuPG
@@ -74,5 +74,4 @@ If no one is selected, symmetric encryption will be performed. "))
(provide 'epa-dired)
-;; arch-tag: 2025700b-48d0-4684-bc94-228ad1f8e9ff
;;; epa-dired.el ends here
diff --git a/lisp/epa-file.el b/lisp/epa-file.el
index 95d8423020..b0f9d2dffb 100644
--- a/lisp/epa-file.el
+++ b/lisp/epa-file.el
@@ -1,5 +1,5 @@
;;; epa-file.el --- the EasyPG Assistant, transparent file encryption
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Keywords: PGP, GnuPG
@@ -35,9 +35,16 @@ way."
:type 'boolean
:group 'epa-file)
-(defcustom epa-file-select-keys nil
- "If non-nil, always asks user to select recipients."
- :type 'boolean
+(defcustom epa-file-select-keys 'silent
+ "Control whether or not to pop up the key selection dialog.
+
+If t, always asks user to select recipients.
+If nil, query user only when `epa-file-encrypt-to' is not set.
+If neither t nor nil, doesn't ask user. In this case, symmetric
+encryption is used."
+ :type '(choice (const :tag "Ask always" t)
+ (const :tag "Ask when recipients are not set" nil)
+ (const :tag "Don't ask" silent))
:group 'epa-file)
(defvar epa-file-passphrase-alist nil)
@@ -218,9 +225,10 @@ way."
end (point-max)))
(epa-file--encode-coding-string (buffer-substring start end)
coding-system))
- (if (or epa-file-select-keys
- (not (local-variable-p 'epa-file-encrypt-to
- (current-buffer))))
+ (if (or (eq epa-file-select-keys t)
+ (and (null epa-file-select-keys)
+ (not (local-variable-p 'epa-file-encrypt-to
+ (current-buffer)))))
(epa-select-keys
context
"Select recipents for encryption.
@@ -290,5 +298,4 @@ If no one is selected, symmetric encryption will be performed. "))))
(provide 'epa-file)
-;; arch-tag: 5715152f-0eb1-4dbc-9008-07098775314d
;;; epa-file.el ends here
diff --git a/lisp/epa-hook.el b/lisp/epa-hook.el
index 5fb7e2c0bf..1dbc95bb7d 100644
--- a/lisp/epa-hook.el
+++ b/lisp/epa-hook.el
@@ -1,5 +1,5 @@
;;; epa-hook.el --- preloaded code to enable epa-file.el
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Keywords: PGP, GnuPG
@@ -109,5 +109,4 @@ Return the new status of auto encryption (non-nil means on)."
(provide 'epa-hook)
-;; arch-tag: f75c8a50-d32e-4eb3-9ec6-9e940c1fc8b5
;;; epa-hook.el ends here
diff --git a/lisp/epa-mail.el b/lisp/epa-mail.el
index ab47cbf60b..6e35854111 100644
--- a/lisp/epa-mail.el
+++ b/lisp/epa-mail.el
@@ -1,5 +1,5 @@
;;; epa-mail.el --- the EasyPG Assistant, minor-mode for mail composer
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Keywords: PGP, GnuPG, mail, message
@@ -197,5 +197,4 @@ Don't use this command in Lisp programs!"
(provide 'epa-mail)
-;; arch-tag: a6f82b3f-d177-4a11-af95-040da55927d2
;;; epa-mail.el ends here
diff --git a/lisp/epa.el b/lisp/epa.el
index 687a31a8c3..43e202c1b1 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -1,7 +1,6 @@
;;; epa.el --- the EasyPG Assistant
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Keywords: PGP, GnuPG
diff --git a/lisp/epg-config.el b/lisp/epg-config.el
index a439fa0480..38f7dbdaa7 100644
--- a/lisp/epg-config.el
+++ b/lisp/epg-config.el
@@ -1,6 +1,6 @@
;;; epg-config.el --- configuration of the EasyPG Library
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Keywords: PGP, GnuPG
@@ -147,5 +147,4 @@ Note that the buffer name starts with a space."
(provide 'epg-config)
-;; arch-tag: 9aca7cb8-5f63-4bcb-84ee-46fd2db0763f
;;; epg-config.el ends here
diff --git a/lisp/epg.el b/lisp/epg.el
index a1541361b4..c096ec6df9 100644
--- a/lisp/epg.el
+++ b/lisp/epg.el
@@ -1,6 +1,5 @@
;;; epg.el --- the EasyPG Library
-;; Copyright (C) 1999, 2000, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2000, 2002-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Keywords: PGP, GnuPG
@@ -1562,14 +1561,14 @@ This function is for internal use only."
(defun epg--status-KEYEXPIRED (context string)
(epg-context-set-result-for
- context 'error
+ context 'key
(cons (list 'key-expired (cons 'expiration-time
(epg--time-from-seconds string)))
(epg-context-result-for context 'error))))
(defun epg--status-KEYREVOKED (context string)
(epg-context-set-result-for
- context 'error
+ context 'key
(cons '(key-revoked)
(epg-context-result-for context 'error))))
@@ -2650,5 +2649,4 @@ Type names are resolved using `epg-dn-type-alist'."
(provide 'epg)
-;; arch-tag: de8f0acc-1bcf-4c14-a09e-bfffe1b579b7
;;; epg.el ends here
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 210f6985dc..879dd22856 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,8 @@
+2011-01-13 Stefan Monnier <[email protected]>
+
+ * erc.el (erc-mode):
+ * erc-dcc.el (erc-dcc-chat-mode): Use define-derived-mode.
+
2010-11-11 Glenn Morris <[email protected]>
* erc-lang.el (erc-cmd-LANG): Fix what may have been a typo.
@@ -25,17 +30,17 @@
2010-08-14 Vivek Dasmohapatra <[email protected]>
* erc-join.el (erc-autojoin-timing, erc-autojoin-delay): New vars.
- (erc-autojoin-channels-delayed, erc-autojoin-after-ident): New
- functions.
+ (erc-autojoin-channels-delayed, erc-autojoin-after-ident):
+ New functions.
(erc-autojoin-channels): Allow autojoining after ident (Bug#5521).
2010-08-08 Fran Litterio <[email protected]>
- * erc-backend.el (erc-server-filter-function): Call
- erc-log-irc-protocol.
+ * erc-backend.el (erc-server-filter-function):
+ Call erc-log-irc-protocol.
- * erc.el (erc-toggle-debug-irc-protocol): Bind
- erc-toggle-debug-irc-protocol to t.
+ * erc.el (erc-toggle-debug-irc-protocol):
+ Bind erc-toggle-debug-irc-protocol to t.
2010-05-07 Chong Yidong <[email protected]>
@@ -126,7 +131,7 @@
See ChangeLog.08 for earlier changes.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2009-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -148,4 +153,3 @@ See ChangeLog.08 for earlier changes.
;; add-log-time-zone-rule: t
;; End:
-;; arch-tag: d4703244-4a8d-49b1-ab34-ad0d56600ef8
diff --git a/lisp/erc/ChangeLog.01 b/lisp/erc/ChangeLog.01
index 79825684b7..962acd5bfc 100644
--- a/lisp/erc/ChangeLog.01
+++ b/lisp/erc/ChangeLog.01
@@ -1035,7 +1035,7 @@
* erc-speak.el, erc.el: New file.
- Copyright (C) 2001, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2006-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -1056,4 +1056,3 @@
;; coding: utf-8
;; End:
-;; arch-tag: 306c4b58-f9ae-4f3d-9fd9-db2d743f05a6
diff --git a/lisp/erc/ChangeLog.02 b/lisp/erc/ChangeLog.02
index 2dfb009cec..09ab1cb379 100644
--- a/lisp/erc/ChangeLog.02
+++ b/lisp/erc/ChangeLog.02
@@ -2596,7 +2596,7 @@
See ChangeLog.01 for earlier changes.
- Copyright (C) 2002, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2006-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -2617,4 +2617,3 @@ See ChangeLog.01 for earlier changes.
;; coding: utf-8
;; End:
-;; arch-tag: a6779d5e-99fa-442b-98cf-90e73eb2c272
diff --git a/lisp/erc/ChangeLog.03 b/lisp/erc/ChangeLog.03
index 6f46837ad1..7f82a9bcbe 100644
--- a/lisp/erc/ChangeLog.03
+++ b/lisp/erc/ChangeLog.03
@@ -2140,7 +2140,7 @@
See ChangeLog.02 for earlier changes.
- Copyright (C) 2003, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2006-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -2161,4 +2161,3 @@ See ChangeLog.02 for earlier changes.
;; coding: utf-8
;; End:
-;; arch-tag: 808865e1-3cce-4c5b-9997-95a8b7a9d384
diff --git a/lisp/erc/ChangeLog.04 b/lisp/erc/ChangeLog.04
index a1cbab740b..7db040fd23 100644
--- a/lisp/erc/ChangeLog.04
+++ b/lisp/erc/ChangeLog.04
@@ -2072,7 +2072,7 @@
See ChangeLog.03 for earlier changes.
- Copyright (C) 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -2093,4 +2093,3 @@ See ChangeLog.03 for earlier changes.
;; coding: utf-8
;; End:
-;; arch-tag: cc606d2d-635b-4b36-829b-a50e3c51e2d1
diff --git a/lisp/erc/ChangeLog.05 b/lisp/erc/ChangeLog.05
index 66e2c8251d..fd5fde00a4 100644
--- a/lisp/erc/ChangeLog.05
+++ b/lisp/erc/ChangeLog.05
@@ -1217,7 +1217,7 @@
See ChangeLog.04 for earlier changes.
- Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2005-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -1238,4 +1238,3 @@ See ChangeLog.04 for earlier changes.
;; coding: utf-8
;; End:
-;; arch-tag: 70f1733a-3e2f-43c2-91c3-d9ace93f82ba
diff --git a/lisp/erc/ChangeLog.06 b/lisp/erc/ChangeLog.06
index a1a196b79a..e3026c96a4 100644
--- a/lisp/erc/ChangeLog.06
+++ b/lisp/erc/ChangeLog.06
@@ -1430,7 +1430,7 @@
See ChangeLog.05 for earlier changes.
- Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2006-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -1452,4 +1452,3 @@ See ChangeLog.05 for earlier changes.
;; add-log-time-zone-rule: t
;; End:
-;; arch-tag: 865a75f6-2bcb-46df-bf0c-b514dadf688a
diff --git a/lisp/erc/ChangeLog.07 b/lisp/erc/ChangeLog.07
index 0a3bb3e35b..b32155bbce 100644
--- a/lisp/erc/ChangeLog.07
+++ b/lisp/erc/ChangeLog.07
@@ -812,7 +812,7 @@
See ChangeLog.06 for earlier changes.
- Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2007-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -834,4 +834,3 @@ See ChangeLog.06 for earlier changes.
;; add-log-time-zone-rule: t
;; End:
-;; arch-tag: 3369b6e5-96b1-4b32-96cd-9a905c747496
diff --git a/lisp/erc/ChangeLog.08 b/lisp/erc/ChangeLog.08
index d07a707d6f..feff487fa6 100644
--- a/lisp/erc/ChangeLog.08
+++ b/lisp/erc/ChangeLog.08
@@ -405,7 +405,7 @@
See ChangeLog.07 for earlier changes.
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2008-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -427,4 +427,3 @@ See ChangeLog.07 for earlier changes.
;; add-log-time-zone-rule: t
;; End:
-;; arch-tag: 15787dfd-e091-4c8c-8b88-747b474e1ac7
diff --git a/lisp/erc/erc-autoaway.el b/lisp/erc/erc-autoaway.el
index 59215b10cd..a15e038ddd 100644
--- a/lisp/erc/erc-autoaway.el
+++ b/lisp/erc/erc-autoaway.el
@@ -1,7 +1,6 @@
;;; erc-autoaway.el --- Provides autoaway for ERC
-;; Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Jorgen Schaefer <[email protected]>
;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?ErcAutoAway
@@ -286,4 +285,3 @@ activer server buffer available."
;; tab-width: 8
;; End:
-;; arch-tag: 16fc241e-8358-4b56-9fe2-116bdd0ba3bc
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 3bc56989f4..8a25e5f600 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -1,6 +1,6 @@
;;; erc-backend.el --- Backend network communication for ERC
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Filename: erc-backend.el
;; Author: Lawrence Mitchell <[email protected]>
@@ -1994,4 +1994,3 @@ See `erc-display-error-notice'." nil
;; indent-tabs-mode: nil
;; End:
-;; arch-tag: a64e6bb7-a780-4efd-8f98-083b18c7c84a
diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el
index 141834e490..0b11c3bee2 100644
--- a/lisp/erc/erc-button.el
+++ b/lisp/erc/erc-button.el
@@ -1,7 +1,6 @@
;; erc-button.el --- A way of buttonizing certain things in ERC buffers
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Mario Lang <[email protected]>
;; Keywords: irc, button, url, regexp
@@ -534,4 +533,3 @@ and `apropos' for other symbols."
;; indent-tabs-mode: nil
;; End:
-;; arch-tag: 7d23bed4-2f30-4273-a03f-d7a274c605c4
diff --git a/lisp/erc/erc-capab.el b/lisp/erc/erc-capab.el
index fb55988c0e..6b76c4246a 100644
--- a/lisp/erc/erc-capab.el
+++ b/lisp/erc/erc-capab.el
@@ -1,6 +1,6 @@
;;; erc-capab.el --- support for dancer-ircd and hyperion's CAPAB
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; 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
@@ -202,5 +202,4 @@ PARSED is an `erc-parsed' response struct."
(provide 'erc-capab)
-;; arch-tag: 27b6d668-7ee5-4e47-b9f0-27d7a4362062
;;; erc-capab.el ends here
diff --git a/lisp/erc/erc-compat.el b/lisp/erc/erc-compat.el
index 6bda826857..792c8dd88b 100644
--- a/lisp/erc/erc-compat.el
+++ b/lisp/erc/erc-compat.el
@@ -1,7 +1,6 @@
;;; erc-compat.el --- ERC compatibility code for XEmacs
-;; Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2003, 2005-2011 Free Software Foundation, Inc.
;; Author: Alex Schroeder <[email protected]>
;; URL: http://www.emacswiki.org/cgi-bin/wiki/ERC
@@ -165,4 +164,3 @@ If START or END is negative, it counts from the end."
;; tab-width: 8
;; End:
-;; arch-tag: 8948ffe0-aff8-4ad8-a196-368ebbfd58ff
diff --git a/lisp/erc/erc-dcc.el b/lisp/erc/erc-dcc.el
index 2da4c83b7c..88f0fe605f 100644
--- a/lisp/erc/erc-dcc.el
+++ b/lisp/erc/erc-dcc.el
@@ -1,7 +1,7 @@
;;; erc-dcc.el --- CTCP DCC module for ERC
-;; Copyright (C) 1993, 1994, 1995, 1998, 2002, 2003, 2004, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1995, 1998, 2002-2004, 2006-2011
+;; Free Software Foundation, Inc.
;; Author: Ben A. Mesander <[email protected]>
;; Noah Friedman <[email protected]>
@@ -1098,17 +1098,11 @@ Possible values are: ask, auto, ignore."
map)
"Keymap for `erc-dcc-mode'.")
-(defun erc-dcc-chat-mode ()
+(define-derived-mode erc-dcc-chat-mode fundamental-mode "DCC-Chat"
"Major mode for wasting time via DCC chat."
- (interactive)
- (kill-all-local-variables)
(setq mode-line-process '(":%s")
- mode-name "DCC-Chat"
- major-mode 'erc-dcc-chat-mode
erc-send-input-line-function 'erc-dcc-chat-send-input-line
- erc-default-recipients '(dcc))
- (use-local-map erc-dcc-chat-mode-map)
- (run-hooks 'erc-dcc-chat-mode-hook))
+ erc-default-recipients '(dcc)))
(defun erc-dcc-chat-send-input-line (recipient line &optional force)
"Send LINE to the remote end.
@@ -1257,4 +1251,3 @@ other client."
;; indent-tabs-mode: nil
;; End:
-;; arch-tag: cda5a6b3-c510-4dbe-b699-84cccfa04edb
diff --git a/lisp/erc/erc-ezbounce.el b/lisp/erc/erc-ezbounce.el
index bd6ec1d687..b480d83e28 100644
--- a/lisp/erc/erc-ezbounce.el
+++ b/lisp/erc/erc-ezbounce.el
@@ -1,6 +1,6 @@
;;; erc-ezbounce.el --- Handle EZBounce bouncer commands
-;; Copyright (C) 2002, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Andreas Fuchs <[email protected]>
;; Keywords: comm
@@ -174,5 +174,4 @@ in the alist is `nil', prompt for the appropriate values."
(provide 'erc-ezbounce)
-;; arch-tag: e972aa7b-a9f4-4d16-a489-074ec7a1002e
;;; erc-ezbounce.el ends here
diff --git a/lisp/erc/erc-fill.el b/lisp/erc/erc-fill.el
index cd9a7e0f9a..0b9a4051d6 100644
--- a/lisp/erc/erc-fill.el
+++ b/lisp/erc/erc-fill.el
@@ -1,7 +1,6 @@
;;; erc-fill.el --- Filling IRC messages in various ways
-;; Copyright (C) 2001, 2002, 2003, 2004, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Andreas Fuchs <[email protected]>
;; Mario Lang <[email protected]>
@@ -193,4 +192,3 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'."
;; indent-tabs-mode: nil
;; End:
-;; arch-tag: 89224581-c2c2-4e26-92e5-e3a390dc516a
diff --git a/lisp/erc/erc-goodies.el b/lisp/erc/erc-goodies.el
index 00b8847133..b2cf9e3562 100644
--- a/lisp/erc/erc-goodies.el
+++ b/lisp/erc/erc-goodies.el
@@ -1,7 +1,6 @@
;; erc-goodies.el --- Collection of ERC modules
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Jorgen Schaefer <[email protected]>
@@ -569,5 +568,4 @@ servers. If called from a program, PROC specifies the server process."
(provide 'erc-goodies)
-;; arch-tag: d987ae26-9e28-4c72-9596-e617309fb582
;;; erc-goodies.el ends here
diff --git a/lisp/erc/erc-hecomplete.el b/lisp/erc/erc-hecomplete.el
index 22a5bb73d8..530c586d24 100644
--- a/lisp/erc/erc-hecomplete.el
+++ b/lisp/erc/erc-hecomplete.el
@@ -1,6 +1,6 @@
;;; erc-hecomplete.el --- Provides Nick name completion for ERC
-;; Copyright (C) 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2002, 2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Alex Schroeder <[email protected]>
;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?ErcCompletion
@@ -220,4 +220,3 @@ Window configurations are stored in
;; tab-width: 8
;; End:
-;; arch-tag: 3be13ee8-8fdb-41ab-83c2-6582c757b91e
diff --git a/lisp/erc/erc-ibuffer.el b/lisp/erc/erc-ibuffer.el
index a6b4976d67..9d658eec2f 100644
--- a/lisp/erc/erc-ibuffer.el
+++ b/lisp/erc/erc-ibuffer.el
@@ -1,7 +1,6 @@
;;; erc-ibuffer.el --- ibuffer integration with ERC
-;; Copyright (C) 2002, 2004, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Mario Lang <[email protected]>
;; Keywords: comm
@@ -190,4 +189,3 @@
;; tab-width: 8
;; End:
-;; arch-tag: fbad56a5-8595-45e0-a8c8-d8bb91e26944
diff --git a/lisp/erc/erc-identd.el b/lisp/erc/erc-identd.el
index d889dbdc84..140802deff 100644
--- a/lisp/erc/erc-identd.el
+++ b/lisp/erc/erc-identd.el
@@ -1,6 +1,6 @@
;;; erc-identd.el --- RFC1413 (identd authentication protocol) server
-;; Copyright (C) 2003, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2006-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
;; Keywords: comm, processes
@@ -118,4 +118,3 @@ The default port is specified by `erc-identd-port'."
;; tab-width: 8
;; End:
-;; arch-tag: e0b5f926-0f35-40b9-8ddb-ca06b62a7544
diff --git a/lisp/erc/erc-imenu.el b/lisp/erc/erc-imenu.el
index a79a82c425..3e6e853ff7 100644
--- a/lisp/erc/erc-imenu.el
+++ b/lisp/erc/erc-imenu.el
@@ -1,6 +1,6 @@
;;; erc-imenu.el -- Imenu support for ERC
-;; Copyright (C) 2001, 2002, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2002, 2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Mario Lang <[email protected]>
;; Keywords: comm
@@ -133,4 +133,3 @@ Don't rely on this function, read it first!"
;; tab-width: 8
;; End:
-;; arch-tag: 35c69082-ca29-43f7-a050-8da5f400de81
diff --git a/lisp/erc/erc-join.el b/lisp/erc/erc-join.el
index c54c2c534f..c158c47ab6 100644
--- a/lisp/erc/erc-join.el
+++ b/lisp/erc/erc-join.el
@@ -1,6 +1,6 @@
;;; erc-join.el --- autojoin channels on connect and reconnects
-;; Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Alex Schroeder <[email protected]>
;; Keywords: irc
@@ -202,4 +202,3 @@ This function is run from `erc-nickserv-identified-hook'."
;; tab-width: 8
;; End:
-;; arch-tag: d62d8b15-8e31-49d6-8a73-12f11e717414
diff --git a/lisp/erc/erc-lang.el b/lisp/erc/erc-lang.el
index a7e971acc6..84a4c60816 100644
--- a/lisp/erc/erc-lang.el
+++ b/lisp/erc/erc-lang.el
@@ -1,7 +1,6 @@
;;; erc-lang.el --- provide the LANG command to ERC
-;; Copyright (C) 2002, 2004, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Alex Schroeder <[email protected]>
;; Maintainer: Alex Schroeder <[email protected]>
diff --git a/lisp/erc/erc-list.el b/lisp/erc/erc-list.el
index 8bf0d213f8..955b654f92 100644
--- a/lisp/erc/erc-list.el
+++ b/lisp/erc/erc-list.el
@@ -1,6 +1,6 @@
;;; erc-list.el --- /list support for ERC
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Tom Tromey <[email protected]>
;; Version: 0.1
@@ -223,4 +223,3 @@ to RFC and send the LIST header (#321) at start of list transmission."
;; tab-width: 8
;; End:
-;; arch-tag: 99c5f9cb-6bac-4224-86bf-e394768cd1d0
diff --git a/lisp/erc/erc-log.el b/lisp/erc/erc-log.el
index 98e58a3033..24990e1e06 100644
--- a/lisp/erc/erc-log.el
+++ b/lisp/erc/erc-log.el
@@ -1,6 +1,6 @@
;;; erc-log.el --- Logging facilities for ERC.
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Lawrence Mitchell <[email protected]>
;; Keywords: IRC, chat, client, Internet, logging
@@ -451,4 +451,3 @@ You can save every individual message by putting this function on
;; tab-width: 8
;; End:
-;; arch-tag: 54072f99-9f0a-4846-8908-2ccde92221de
diff --git a/lisp/erc/erc-match.el b/lisp/erc/erc-match.el
index 5e5d31d434..bde51da6e3 100644
--- a/lisp/erc/erc-match.el
+++ b/lisp/erc/erc-match.el
@@ -1,7 +1,6 @@
;;; erc-match.el --- Highlight messages matching certain regexps
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Andreas Fuchs <[email protected]>
;; Keywords: comm, faces
@@ -635,4 +634,3 @@ This function is meant to be called from `erc-text-matched-hook'."
;; tab-width: 8
;; End:
-;; arch-tag: 1f1f595e-abcc-4b0b-83db-598a1d3f0f82
diff --git a/lisp/erc/erc-menu.el b/lisp/erc/erc-menu.el
index 793484bee6..ea4ed399a6 100644
--- a/lisp/erc/erc-menu.el
+++ b/lisp/erc/erc-menu.el
@@ -1,7 +1,6 @@
;; erc-menu.el -- Menu-bar definitions for ERC
-;; Copyright (C) 2001, 2002, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2002, 2004-2011 Free Software Foundation, Inc.
;; Author: Mario Lang <[email protected]>
;; Keywords: comm, processes, menu
@@ -148,4 +147,3 @@ ERC menu yet.")
;; tab-width: 8
;; End:
-;; arch-tag: 671219f2-b082-4753-a185-1d0c7e0c05bd
diff --git a/lisp/erc/erc-netsplit.el b/lisp/erc/erc-netsplit.el
index d16dae34f2..d5f4ec48ba 100644
--- a/lisp/erc/erc-netsplit.el
+++ b/lisp/erc/erc-netsplit.el
@@ -1,6 +1,6 @@
;;; erc-netsplit.el --- Reduce JOIN/QUIT messages on netsplits
-;; Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Mario Lang <[email protected]>
;; Keywords: comm
@@ -209,4 +209,3 @@ join from that split has been detected or not.")
;; tab-width: 8
;; End:
-;; arch-tag: 61a85cb0-7e7b-4312-a4f6-313c7a25a6e8
diff --git a/lisp/erc/erc-networks.el b/lisp/erc/erc-networks.el
index a53968479c..1f94ef4409 100644
--- a/lisp/erc/erc-networks.el
+++ b/lisp/erc/erc-networks.el
@@ -1,6 +1,6 @@
;;; erc-networks.el --- IRC networks
-;; Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2004-2011 Free Software Foundation, Inc.
;; Author: Mario Lang <[email protected]>
;; Keywords: comm
@@ -865,4 +865,3 @@ VALUE is the options value.")
;; tab-width: 8
;; End:
-;; arch-tag: 68cccabd-f66b-456c-9abe-5f993a2dc91c
diff --git a/lisp/erc/erc-notify.el b/lisp/erc/erc-notify.el
index 27189ba205..1b245ec2e3 100644
--- a/lisp/erc/erc-notify.el
+++ b/lisp/erc/erc-notify.el
@@ -1,6 +1,6 @@
;;; erc-notify.el --- Online status change notification
-;; Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Mario Lang <[email protected]>
;; Keywords: comm
@@ -251,4 +251,3 @@ with args, toggle notify status of people."
;; tab-width: 8
;; End:
-;; arch-tag: 0fb19dd0-1359-458a-89b7-81dc195a588e
diff --git a/lisp/erc/erc-page.el b/lisp/erc/erc-page.el
index 130a5e19e5..5776dd6fc1 100644
--- a/lisp/erc/erc-page.el
+++ b/lisp/erc/erc-page.el
@@ -1,6 +1,6 @@
;; erc-page.el - CTCP PAGE support for ERC
-;; Copyright (C) 2002, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation
+;; Copyright (C) 2002, 2004, 2006-2011 Free Software Foundation
;; This file is part of GNU Emacs.
@@ -109,4 +109,3 @@ receive pages if `erc-page-mode' is on."
;; tab-width: 8
;; End:
-;; arch-tag: 82fd2e0e-6060-4dd2-9788-8c1411e844de
diff --git a/lisp/erc/erc-pcomplete.el b/lisp/erc/erc-pcomplete.el
index cabec21d11..355770c5dc 100644
--- a/lisp/erc/erc-pcomplete.el
+++ b/lisp/erc/erc-pcomplete.el
@@ -1,6 +1,6 @@
;;; erc-pcomplete.el --- Provides programmable completion for ERC
-;; Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Sacha Chua <[email protected]>
;; Keywords: comm, convenience
@@ -279,4 +279,3 @@ up to where point is right now."
;; indent-tabs-mode: nil
;; End:
-;; arch-tag: 32a7703b-be87-45a4-82f3-9eed5a628911
diff --git a/lisp/erc/erc-replace.el b/lisp/erc/erc-replace.el
index a272828eed..4d3ba1e230 100644
--- a/lisp/erc/erc-replace.el
+++ b/lisp/erc/erc-replace.el
@@ -1,7 +1,6 @@
;; erc-replace.el -- wash and massage messages inserted into the buffer
-;; Copyright (C) 2001, 2002, 2004, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2002, 2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Andreas Fuchs <[email protected]>
;; Maintainer: Mario Lang ([email protected])
@@ -94,4 +93,3 @@ It replaces text according to `erc-replace-alist'."
;; tab-width: 8
;; End:
-;; arch-tag: dd904a59-d8a6-47f8-ac3a-76b698289a18
diff --git a/lisp/erc/erc-ring.el b/lisp/erc/erc-ring.el
index ad209ab105..345c636fa7 100644
--- a/lisp/erc/erc-ring.el
+++ b/lisp/erc/erc-ring.el
@@ -1,7 +1,6 @@
;; erc-ring.el -- Command history handling for erc using ring.el
-;; Copyright (C) 2001, 2002, 2003, 2004, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Alex Schroeder <[email protected]>
;; Keywords: comm
@@ -144,4 +143,3 @@ containing a password."
;; indent-tabs-mode: nil
;; End:
-;; arch-tag: b77924a8-a80e-489d-84cd-b351761ea5c8
diff --git a/lisp/erc/erc-services.el b/lisp/erc/erc-services.el
index 50a100d693..3acc600b42 100644
--- a/lisp/erc/erc-services.el
+++ b/lisp/erc/erc-services.el
@@ -1,6 +1,6 @@
;;; erc-services.el --- Identify to NickServ
-;; Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2004, 2006-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -445,4 +445,3 @@ When called interactively, read the password using `read-passwd'."
;; tab-width: 8
;; End:
-;; arch-tag: d401c8aa-d938-4255-96a9-3efb64c47e58
diff --git a/lisp/erc/erc-sound.el b/lisp/erc/erc-sound.el
index 7d55afae9f..3253aec338 100644
--- a/lisp/erc/erc-sound.el
+++ b/lisp/erc/erc-sound.el
@@ -1,6 +1,6 @@
;;; erc-sound.el --- CTCP SOUND support for ERC
-;; Copyright (C) 2002, 2003, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2003, 2006-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -147,4 +147,3 @@ See also `play-sound-file'."
;; tab-width: 8
;; End:
-;; arch-tag: 53657d1d-007f-4a20-91c1-588e71cf0cee
diff --git a/lisp/erc/erc-speedbar.el b/lisp/erc/erc-speedbar.el
index bf45061d70..3d80371cc6 100644
--- a/lisp/erc/erc-speedbar.el
+++ b/lisp/erc/erc-speedbar.el
@@ -1,7 +1,6 @@
;;; erc-speedbar.el --- Speedbar support for ERC
-;; Copyright (C) 2001, 2002, 2003, 2004, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Mario Lang <[email protected]>
;; Contributor: Eric M. Ludlam <[email protected]>
@@ -366,4 +365,3 @@ The INDENT level is ignored."
;; tab-width: 8
;; End:
-;; arch-tag: 7a6558a4-3308-4bf5-a284-e1d042c933c6
diff --git a/lisp/erc/erc-spelling.el b/lisp/erc/erc-spelling.el
index da0d96ac73..5bb3c877db 100644
--- a/lisp/erc/erc-spelling.el
+++ b/lisp/erc/erc-spelling.el
@@ -1,6 +1,6 @@
;;; erc-spelling.el --- use flyspell in ERC
-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2005-2011 Free Software Foundation, Inc.
;; Author: Jorgen Schaefer <[email protected]>
;; Keywords: irc
@@ -106,5 +106,4 @@ The cadr is the beginning and the caddr is the end."
(provide 'erc-spelling)
-;; arch-tag: 04ae1c46-0fd1-4e1a-8b80-55bfa471c945
;;; erc-spelling.el ends here
diff --git a/lisp/erc/erc-stamp.el b/lisp/erc/erc-stamp.el
index 6db2bacc6b..cfe8616ab6 100644
--- a/lisp/erc/erc-stamp.el
+++ b/lisp/erc/erc-stamp.el
@@ -1,7 +1,6 @@
;;; erc-stamp.el --- Timestamping for ERC messages
-;; Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Mario Lang <[email protected]>
;; Keywords: comm, processes, timestamp
@@ -422,4 +421,3 @@ NOW is position of point currently."
;; tab-width: 8
;; End:
-;; arch-tag: 57aefab4-63e0-4c48-91d5-6efa145487e0
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index 8d4f4c19a5..b15cdb023a 100644
--- a/lisp/erc/erc-track.el
+++ b/lisp/erc/erc-track.el
@@ -1,7 +1,6 @@
;;; erc-track.el --- Track modified channel buffers
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Mario Lang <[email protected]>
;; Keywords: comm, faces
@@ -1068,4 +1067,3 @@ switch back to the last non-ERC buffer visited. Next is defined by
;; tab-width: 8
;; End:
-;; arch-tag: 11b439f5-e5d7-4c6c-bb3f-eda98f9b0ac1
diff --git a/lisp/erc/erc-truncate.el b/lisp/erc/erc-truncate.el
index 61f6eca10f..4666850863 100644
--- a/lisp/erc/erc-truncate.el
+++ b/lisp/erc/erc-truncate.el
@@ -1,6 +1,6 @@
;;; erc-truncate.el --- Functions for truncating ERC buffers
-;; Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003-2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Andreas Fuchs <[email protected]>
;; Keywords: IRC, chat, client, Internet, logging
@@ -115,4 +115,3 @@ Meant to be used in hooks, like `erc-insert-post-hook'."
;; tab-width: 8
;; End:
-;; arch-tag: 22a2ea78-871f-4870-8f1e-efe534170311
diff --git a/lisp/erc/erc-xdcc.el b/lisp/erc/erc-xdcc.el
index 8d900e8291..f4f75c1520 100644
--- a/lisp/erc/erc-xdcc.el
+++ b/lisp/erc/erc-xdcc.el
@@ -1,6 +1,6 @@
;;; erc-xdcc.el --- XDCC file-server support for ERC
-;; Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003-2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Mario Lang <[email protected]>
;; Keywords: comm, processes
@@ -136,4 +136,3 @@ being evaluated and should return strings."
;; tab-width: 8
;; End:
-;; arch-tag: a13b62fe-2399-4562-af4e-f18a8dd4b9c8
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 54f87982f8..110ee8d1c3 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -1,7 +1,6 @@
;; erc.el --- An Emacs Internet Relay Chat client
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Alexander L. Belikoff ([email protected])
;; Contributors: Sergey Berezin ([email protected]),
@@ -1439,28 +1438,16 @@ Defaults to the server buffer."
;; Mode activation routines
-(defun erc-mode ()
- "Major mode for Emacs IRC.
-Special commands:
-
-\\{erc-mode-map}
-
-Turning on `erc-mode' runs the hook `erc-mode-hook'."
- (kill-all-local-variables)
- (use-local-map erc-mode-map)
- (setq mode-name "ERC"
- major-mode 'erc-mode
- local-abbrev-table erc-mode-abbrev-table)
- (set-syntax-table erc-mode-syntax-table)
+(define-derived-mode erc-mode fundamental-mode "ERC"
+ "Major mode for Emacs IRC."
+ (setq local-abbrev-table erc-mode-abbrev-table)
(when (boundp 'next-line-add-newlines)
(set (make-local-variable 'next-line-add-newlines) nil))
(setq line-move-ignore-invisible t)
(set (make-local-variable 'paragraph-separate)
(concat "\C-l\\|\\(^" (regexp-quote (erc-prompt)) "\\)"))
(set (make-local-variable 'paragraph-start)
- (concat "\\(" (regexp-quote (erc-prompt)) "\\)"))
- ;; Run the mode hooks
- (run-hooks 'erc-mode-hook))
+ (concat "\\(" (regexp-quote (erc-prompt)) "\\)")))
;; activation
@@ -6541,4 +6528,3 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL."
;; tab-width: 8
;; End:
-;; arch-tag: d19587f6-627e-48c1-8d86-58595fa3eca3
diff --git a/lisp/eshell/.gitignore b/lisp/eshell/.gitignore
index 8f16f9600f..2abf84ba3e 100644
--- a/lisp/eshell/.gitignore
+++ b/lisp/eshell/.gitignore
@@ -1,3 +1,2 @@
esh-groups.el
-# arch-tag: 270e983f-fee5-4b6d-a00b-c1bafdee8690
diff --git a/lisp/eshell/em-alias.el b/lisp/eshell/em-alias.el
index 6b24c269b3..aa138cb4dc 100644
--- a/lisp/eshell/em-alias.el
+++ b/lisp/eshell/em-alias.el
@@ -1,7 +1,6 @@
;;; em-alias.el --- creation and management of command aliases
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -279,5 +278,4 @@ These are all the command aliases which begin with NAME."
;; generated-autoload-file: "esh-groups.el"
;; End:
-;; arch-tag: 8b018fc1-4e07-4ccc-aa73-c0a1ba361f82
;;; em-alias.el ends here
diff --git a/lisp/eshell/em-banner.el b/lisp/eshell/em-banner.el
index 9087cae369..b2ebde98ce 100644
--- a/lisp/eshell/em-banner.el
+++ b/lisp/eshell/em-banner.el
@@ -1,7 +1,6 @@
;;; em-banner.el --- sample module that displays a login banner
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -96,5 +95,4 @@ This can be any sexp, and should end with at least two newlines."
;; generated-autoload-file: "esh-groups.el"
;; End:
-;; arch-tag: e738b4ef-8671-42ae-a757-291779b92491
;;; em-banner.el ends here
diff --git a/lisp/eshell/em-basic.el b/lisp/eshell/em-basic.el
index ce72f752d4..df1987e13e 100644
--- a/lisp/eshell/em-basic.el
+++ b/lisp/eshell/em-basic.el
@@ -1,7 +1,6 @@
;;; em-basic.el --- basic shell builtin commands
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -184,5 +183,4 @@ or `eshell-printn' for display."
;; generated-autoload-file: "esh-groups.el"
;; End:
-;; arch-tag: 385a31b1-cb95-46f0-9829-9d352ee77db8
;;; em-basic.el ends here
diff --git a/lisp/eshell/em-cmpl.el b/lisp/eshell/em-cmpl.el
index 554e010a1b..f3f104c1ed 100644
--- a/lisp/eshell/em-cmpl.el
+++ b/lisp/eshell/em-cmpl.el
@@ -1,7 +1,6 @@
;;; em-cmpl.el --- completion using the TAB key
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -455,5 +454,4 @@ to writing a completion function."
;; generated-autoload-file: "esh-groups.el"
;; End:
-;; arch-tag: 0e914699-673a-45f8-8cbf-82e1dbc571bc
;;; em-cmpl.el ends here
diff --git a/lisp/eshell/em-dirs.el b/lisp/eshell/em-dirs.el
index f4b2575def..64555ab15e 100644
--- a/lisp/eshell/em-dirs.el
+++ b/lisp/eshell/em-dirs.el
@@ -1,7 +1,6 @@
;;; em-dirs.el --- directory navigation commands
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -573,5 +572,4 @@ in the minibuffer:
;; generated-autoload-file: "esh-groups.el"
;; End:
-;; arch-tag: 1e9c5a95-f1bd-45f8-ad36-55aac706e787
;;; em-dirs.el ends here
diff --git a/lisp/eshell/em-glob.el b/lisp/eshell/em-glob.el
index 6996bdbb7a..2a565c5c82 100644
--- a/lisp/eshell/em-glob.el
+++ b/lisp/eshell/em-glob.el
@@ -1,7 +1,6 @@
;;; em-glob.el --- extended file name globbing
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
diff --git a/lisp/eshell/em-hist.el b/lisp/eshell/em-hist.el
index 1f64426133..5ec529f4b8 100644
--- a/lisp/eshell/em-hist.el
+++ b/lisp/eshell/em-hist.el
@@ -1,7 +1,6 @@
;;; em-hist.el --- history list management
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -837,6 +836,8 @@ With prefix argument N, search for Nth previous match.
If N is negative, find the next or Nth next match."
(interactive (eshell-regexp-arg "Previous input matching (regexp): "))
(setq arg (eshell-search-arg arg))
+ (if (> eshell-last-output-end (point))
+ (error "Point not located after prompt"))
(let ((pos (eshell-previous-matching-input-string-position regexp arg)))
;; Has a match been found?
(if (null pos)
@@ -844,7 +845,7 @@ If N is negative, find the next or Nth next match."
(setq eshell-history-index pos)
(unless (minibuffer-window-active-p (selected-window))
(message "History item: %d" (- (ring-length eshell-history-ring) pos)))
- ;; Can't use kill-region as it sets this-command
+ ;; Can't use kill-region as it sets this-command
(delete-region eshell-last-output-end (point))
(insert-and-inherit (eshell-get-history pos)))))
@@ -996,5 +997,4 @@ If N is negative, search backwards for the -Nth previous match."
;; generated-autoload-file: "esh-groups.el"
;; End:
-;; arch-tag: 1a847333-f864-4b96-9acd-b549d620b6c6
;;; em-hist.el ends here
diff --git a/lisp/eshell/em-ls.el b/lisp/eshell/em-ls.el
index 84af53efe5..7714629f2f 100644
--- a/lisp/eshell/em-ls.el
+++ b/lisp/eshell/em-ls.el
@@ -1,7 +1,6 @@
;;; em-ls.el --- implementation of ls in Lisp
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
diff --git a/lisp/eshell/em-pred.el b/lisp/eshell/em-pred.el
index 2b5cb1a0dc..33085c067f 100644
--- a/lisp/eshell/em-pred.el
+++ b/lisp/eshell/em-pred.el
@@ -1,7 +1,6 @@
;;; em-pred.el --- argument predicates and modifiers (ala zsh)
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
diff --git a/lisp/eshell/em-prompt.el b/lisp/eshell/em-prompt.el
index 29e1ace26b..448d2cdf30 100644
--- a/lisp/eshell/em-prompt.el
+++ b/lisp/eshell/em-prompt.el
@@ -1,7 +1,6 @@
;;; em-prompt.el --- command prompts
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -177,5 +176,4 @@ If this takes us past the end of the current line, don't skip at all."
;; generated-autoload-file: "esh-groups.el"
;; End:
-;; arch-tag: 01c1574b-ce70-4e89-bc38-e6619f61e208
;;; em-prompt.el ends here
diff --git a/lisp/eshell/em-rebind.el b/lisp/eshell/em-rebind.el
index 9b208d6480..6def23e1b7 100644
--- a/lisp/eshell/em-rebind.el
+++ b/lisp/eshell/em-rebind.el
@@ -1,7 +1,6 @@
;;; em-rebind.el --- rebind keys when point is at current input
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -91,7 +90,6 @@ This is default behavior of shells like bash."
'(beginning-of-line-text
beginning-of-line
move-to-column
- move-to-column-force
move-to-left-margin
move-to-tab-stop
forward-char
@@ -247,5 +245,4 @@ input."
;; generated-autoload-file: "esh-groups.el"
;; End:
-;; arch-tag: 76d84f12-cc56-4d67-9b7d-c6b44ad20530
;;; em-rebind.el ends here
diff --git a/lisp/eshell/em-script.el b/lisp/eshell/em-script.el
index 21a5d80407..ed4ad1c071 100644
--- a/lisp/eshell/em-script.el
+++ b/lisp/eshell/em-script.el
@@ -1,7 +1,6 @@
;;; em-script.el --- Eshell script files
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -142,5 +141,4 @@ environment, binding ARGS to $1, $2, etc.")
;; generated-autoload-file: "esh-groups.el"
;; End:
-;; arch-tag: a346439d-5ba8-4faf-ac2b-3aacfeaa4647
;;; em-script.el ends here
diff --git a/lisp/eshell/em-smart.el b/lisp/eshell/em-smart.el
index afe3cf826b..2c54930e43 100644
--- a/lisp/eshell/em-smart.el
+++ b/lisp/eshell/em-smart.el
@@ -1,7 +1,6 @@
;;; em-smart.el --- smart display of output
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -327,5 +326,4 @@ and the end of the buffer are still visible."
;; generated-autoload-file: "esh-groups.el"
;; End:
-;; arch-tag: 8c0112c7-379c-4d54-9a1c-204d68786a4b
;;; em-smart.el ends here
diff --git a/lisp/eshell/em-term.el b/lisp/eshell/em-term.el
index bd27d9f262..be394ba5b2 100644
--- a/lisp/eshell/em-term.el
+++ b/lisp/eshell/em-term.el
@@ -1,7 +1,6 @@
;;; em-term.el --- running visual commands
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -267,5 +266,4 @@ allowed."
;; generated-autoload-file: "esh-groups.el"
;; End:
-;; arch-tag: ab7c8fe4-3101-4257-925b-1354c6b2fe9d
;;; em-term.el ends here
diff --git a/lisp/eshell/em-unix.el b/lisp/eshell/em-unix.el
index d4f6241508..dc5650d240 100644
--- a/lisp/eshell/em-unix.el
+++ b/lisp/eshell/em-unix.el
@@ -1,7 +1,6 @@
;;; em-unix.el --- UNIX command aliases
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
diff --git a/lisp/eshell/em-xtra.el b/lisp/eshell/em-xtra.el
index 6f49bf4e0f..50bda108e9 100644
--- a/lisp/eshell/em-xtra.el
+++ b/lisp/eshell/em-xtra.el
@@ -1,7 +1,6 @@
;;; em-xtra.el --- extra alias functions
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -123,5 +122,4 @@ naturally accessible within Emacs."
;; generated-autoload-file: "esh-groups.el"
;; End:
-;; arch-tag: f944cfda-a118-470c-a0d6-b41a3a5c99c7
;;; em-xtra.el ends here
diff --git a/lisp/eshell/esh-arg.el b/lisp/eshell/esh-arg.el
index e6d73acd43..f42440ae4e 100644
--- a/lisp/eshell/esh-arg.el
+++ b/lisp/eshell/esh-arg.el
@@ -1,7 +1,6 @@
;;; esh-arg.el --- argument processing
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -391,5 +390,4 @@ special character that is not itself a backslash."
(char-to-string (char-after)))))
(goto-char end)))))))
-;; arch-tag: 7f593a2b-8fc1-4def-8f84-8f51ed0198d6
;;; esh-arg.el ends here
diff --git a/lisp/eshell/esh-cmd.el b/lisp/eshell/esh-cmd.el
index a12d8fb7f3..0567beb9a5 100644
--- a/lisp/eshell/esh-cmd.el
+++ b/lisp/eshell/esh-cmd.el
@@ -1,7 +1,6 @@
;;; esh-cmd.el --- command invocation
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -1434,5 +1433,4 @@ messages, and errors."
(provide 'esh-cmd)
-;; arch-tag: 8e4f3867-a0c5-441f-96ba-ddd142d94366
;;; esh-cmd.el ends here
diff --git a/lisp/eshell/esh-ext.el b/lisp/eshell/esh-ext.el
index 8a3f86a399..f0b9a5eb08 100644
--- a/lisp/eshell/esh-ext.el
+++ b/lisp/eshell/esh-ext.el
@@ -1,7 +1,6 @@
;;; esh-ext.el --- commands external to Eshell
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -306,5 +305,4 @@ line of the form #!<interp>."
(cdr interp)))))
(or interp (list fullname)))))))
-;; arch-tag: 178d4064-7e60-4745-b81f-bab5d8d7c40f
;;; esh-ext.el ends here
diff --git a/lisp/eshell/esh-io.el b/lisp/eshell/esh-io.el
index 53b6fd2163..ef8966f1d7 100644
--- a/lisp/eshell/esh-io.el
+++ b/lisp/eshell/esh-io.el
@@ -1,7 +1,6 @@
;;; esh-io.el --- I/O management
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -516,5 +515,4 @@ Returns what was actually sent, or nil if nothing was sent."
(eshell-output-object-to-target object (car target))
(setq target (cdr target))))))
-;; arch-tag: 9ca2080f-d5e0-4b26-aa0b-d59194a905a2
;;; esh-io.el ends here
diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el
index 4477f13847..3735ee35fd 100644
--- a/lisp/eshell/esh-mode.el
+++ b/lisp/eshell/esh-mode.el
@@ -1,7 +1,6 @@
;;; esh-mode.el --- user interface
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -1083,5 +1082,4 @@ This function could be in the list `eshell-output-filter-functions'."
(custom-add-option 'eshell-output-filter-functions
'eshell-handle-ansi-color)
-;; arch-tag: ec65bc2b-da14-4547-81d3-a32af3a4dc57
;;; esh-mode.el ends here
diff --git a/lisp/eshell/esh-module.el b/lisp/eshell/esh-module.el
index cf66f62648..5a62c71355 100644
--- a/lisp/eshell/esh-module.el
+++ b/lisp/eshell/esh-module.el
@@ -1,7 +1,6 @@
;;; esh-module.el --- Eshell modules
-;; Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2000, 2002-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
;; Keywords: processes
@@ -100,5 +99,4 @@ customization group. Example: `eshell-cmpl' for that module."
(unload-feature module)
(message "Unloading %s...done" (symbol-name module))))))
-;; arch-tag: 97a3fa16-9d08-40e6-bc2c-36bd70986507
;;; esh-module.el ends here
diff --git a/lisp/eshell/esh-opt.el b/lisp/eshell/esh-opt.el
index 7662217237..d716240687 100644
--- a/lisp/eshell/esh-opt.el
+++ b/lisp/eshell/esh-opt.el
@@ -1,7 +1,6 @@
;;; esh-opt.el --- command options processing
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
diff --git a/lisp/eshell/esh-proc.el b/lisp/eshell/esh-proc.el
index ccc36ed994..f697a40055 100644
--- a/lisp/eshell/esh-proc.el
+++ b/lisp/eshell/esh-proc.el
@@ -1,7 +1,6 @@
;;; esh-proc.el --- process management
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -527,5 +526,4 @@ See the variable `eshell-kill-processes-on-exit'."
(eshell-send-input nil nil t)
(eshell-process-interact 'process-send-eof))
-;; arch-tag: ac477a3e-ee4d-4b44-8ec6-212010e607bb
;;; esh-proc.el ends here
diff --git a/lisp/eshell/esh-test.el b/lisp/eshell/esh-test.el
index 50d0a8e861..f5c55dd8ae 100644
--- a/lisp/eshell/esh-test.el
+++ b/lisp/eshell/esh-test.el
@@ -1,7 +1,6 @@
;;; esh-test.el --- Eshell test suite
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el
index 0a2ebba528..2de147acb0 100644
--- a/lisp/eshell/esh-util.el
+++ b/lisp/eshell/esh-util.el
@@ -1,7 +1,6 @@
;;; esh-util.el --- general utilities
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
diff --git a/lisp/eshell/esh-var.el b/lisp/eshell/esh-var.el
index f76d1de3c8..4c42b305ec 100644
--- a/lisp/eshell/esh-var.el
+++ b/lisp/eshell/esh-var.el
@@ -1,7 +1,6 @@
;;; esh-var.el --- handling of variables
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
@@ -653,5 +652,4 @@ For example, to retrieve the second element of a user's record in
(setq pcomplete-stub (substring arg pos))
(throw 'pcomplete-completions (pcomplete-entries)))))
-;; arch-tag: 393654fe-bdad-4f27-9a10-b1472ded14cf
;;; esh-var.el ends here
diff --git a/lisp/eshell/eshell.el b/lisp/eshell/eshell.el
index 89ec3ab9c6..7690a102a9 100644
--- a/lisp/eshell/eshell.el
+++ b/lisp/eshell/eshell.el
@@ -1,7 +1,6 @@
;;; eshell.el --- the Emacs command shell
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
;; Version: 2.4.2
@@ -285,7 +284,8 @@ shells such as bash, zsh, rc, 4dos."
"`eshell-buffer-name' is a member of `same-window-buffer-names'"
(member eshell-buffer-name same-window-buffer-names))
-(defcustom eshell-directory-name (convert-standard-filename "~/.eshell/")
+(defcustom eshell-directory-name
+ (locate-user-emacs-file "eshell/" ".eshell/")
"The directory where Eshell control files should be kept."
:type 'directory
:group 'eshell)
@@ -490,5 +490,4 @@ Emacs."
(provide 'eshell)
-;; arch-tag: 9d4d5214-0e4e-4e02-b349-39add640d63f
;;; eshell.el ends here
diff --git a/lisp/expand.el b/lisp/expand.el
index 14bc210232..ae68c00c89 100644
--- a/lisp/expand.el
+++ b/lisp/expand.el
@@ -1,7 +1,6 @@
;;; expand.el --- make abbreviations more usable
-;; Copyright (C) 1995, 1996, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Frederic Lepied <[email protected]>
;; Maintainer: Frederic Lepied <[email protected]>
@@ -504,5 +503,4 @@ This is used only in conjunction with `expand-add-abbrevs'."
;; run load hooks
(run-hooks 'expand-load-hook)
-;; arch-tag: fee53e9e-30e3-4ef3-b191-9785e1f8e885
;;; expand.el ends here
diff --git a/lisp/ezimage.el b/lisp/ezimage.el
index b77def7618..c0ba247494 100644
--- a/lisp/ezimage.el
+++ b/lisp/ezimage.el
@@ -1,7 +1,6 @@
;;; ezimage --- Generalized Image management
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: file, tags, tools
@@ -350,5 +349,4 @@ See `ezimage-expand-image-button-alist' for details."
(provide 'ezimage)
-;; arch-tag: d4ea2d93-3c7a-4cb3-b5a6-c1b9178183aa
;;; sb-image.el ends here
diff --git a/lisp/face-remap.el b/lisp/face-remap.el
index f7f469b0cc..9e5ab58636 100644
--- a/lisp/face-remap.el
+++ b/lisp/face-remap.el
@@ -1,6 +1,6 @@
;;; face-remap.el --- Functions for managing `face-remapping-alist'
;;
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;;
;; Author: Miles Bader <[email protected]>
;; Keywords: faces, face remapping, display, user commands
@@ -423,5 +423,4 @@ Besides the choice of face, it is the same as `buffer-face-mode'."
(provide 'face-remap)
-;; arch-tag: 5c5f034b-8d58-4967-82bd-d61fd364e686
;;; face-remap.el ends here
diff --git a/lisp/facemenu.el b/lisp/facemenu.el
index f2a7958d93..e76e920a9f 100644
--- a/lisp/facemenu.el
+++ b/lisp/facemenu.el
@@ -1,7 +1,6 @@
;;; facemenu.el --- create a face menu for interactively adding fonts to text
-;; Copyright (C) 1994, 1995, 1996, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Boris Goldowsky <[email protected]>
;; Keywords: faces
@@ -910,5 +909,4 @@ Returns the non-nil value it found, or nil if all were nil."
(provide 'facemenu)
-;; arch-tag: 85f6d02b-9085-420e-b651-0678f0e9c7eb
;;; facemenu.el ends here
diff --git a/lisp/faces.el b/lisp/faces.el
index ba8535aac4..a9d26de604 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -1,8 +1,6 @@
;;; faces.el --- Lisp faces
-;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-;; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1992-1996, 1998-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
diff --git a/lisp/ffap.el b/lisp/ffap.el
index 23caae7496..97105ed422 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -1,7 +1,6 @@
;;; ffap.el --- find file (or url) at point
-;; Copyright (C) 1995, 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Michelangelo Grigni <[email protected]>
;; Maintainer: FSF
@@ -1960,5 +1959,4 @@ Of course if you do not like these bindings, just roll your own!")
(provide 'ffap)
-;; arch-tag: 9dd3e88a-5dec-4607-bd57-60ae9ede8ebc
;;; ffap.el ends here
diff --git a/lisp/filecache.el b/lisp/filecache.el
index 51b7ce59b1..ef41fb4190 100644
--- a/lisp/filecache.el
+++ b/lisp/filecache.el
@@ -1,7 +1,6 @@
;;; filecache.el --- find files using a pre-loaded cache
-;; Copyright (C) 1996, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 2000-2011 Free Software Foundation, Inc.
;; Author: Peter Breton <[email protected]>
;; Created: Sun Nov 10 1996
diff --git a/lisp/files-x.el b/lisp/files-x.el
index 222141bd35..a3cb5331e6 100644
--- a/lisp/files-x.el
+++ b/lisp/files-x.el
@@ -1,6 +1,6 @@
;;; files-x.el --- extended file handling commands
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Juri Linkov <[email protected]>
;; Maintainer: FSF
@@ -461,5 +461,4 @@ from the MODE alist ignoring the input argument VALUE."
(provide 'files-x)
-;; arch-tag: 949d263c-30a8-4b49-af26-cda97c7c5477
;;; files-x.el ends here
diff --git a/lisp/files.el b/lisp/files.el
index 460b005b9e..7abf5361bb 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -1,8 +1,6 @@
;;; files.el --- file input and output commands for Emacs
-;; Copyright (C) 1985, 1986, 1987, 1992, 1993, 1994, 1995, 1996,
-;; 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1992-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Package: emacs
@@ -57,7 +55,10 @@ when it has unsaved changes."
A list of elements of the form (FROM . TO), each meaning to replace
FROM with TO when it appears in a directory name. This replacement is
done when setting up the default directory of a newly visited file.
-*Every* FROM string should start with \"\\\\`\".
+
+FROM is matched against directory names anchored at the first
+character, so it should start with a \"\\\\`\", or, if directory
+names cannot have embedded newlines, with a \"^\".
FROM and TO should be equivalent names, which refer to the
same directory. Do not use `~' in the TO strings;
@@ -1556,7 +1557,7 @@ killed."
(error "Aborted"))
(when (and (buffer-modified-p) buffer-file-name)
(if (yes-or-no-p (format "Buffer %s is modified; save it first? "
- (buffer-name)))
+ (buffer-name)))
(save-buffer)
(unless (yes-or-no-p "Kill and replace the buffer without saving it? ")
(error "Aborted"))))
@@ -1758,12 +1759,11 @@ When nil, never request confirmation."
"If file SIZE larger than `large-file-warning-threshold', allow user to abort.
OP-TYPE specifies the file operation being performed (for message to user)."
(when (and large-file-warning-threshold size
- (> size large-file-warning-threshold)
- (not (y-or-n-p
- (format "File %s is large (%dMB), really %s? "
- (file-name-nondirectory filename)
- (/ size 1048576) op-type))))
- (error "Aborted")))
+ (> size large-file-warning-threshold)
+ (not (y-or-n-p (format "File %s is large (%dMB), really %s? "
+ (file-name-nondirectory filename)
+ (/ size 1048576) op-type))))
+ (error "Aborted")))
(defun find-file-noselect (filename &optional nowarn rawfile wildcards)
"Read file FILENAME into a buffer and return the buffer.
@@ -2337,6 +2337,7 @@ ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|7Z\\)\\'" . archive-mode)
("\\.oak\\'" . scheme-mode)
("\\.sgml?\\'" . sgml-mode)
("\\.x[ms]l\\'" . xml-mode)
+ ("\\.dbk\\'" . xml-mode)
("\\.dtd\\'" . sgml-mode)
("\\.ds\\(ss\\)?l\\'" . dsssl-mode)
("\\.js\\'" . js-mode) ; javascript-mode would be better
@@ -2371,7 +2372,7 @@ ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|7Z\\)\\'" . archive-mode)
("\\.\\(diffs?\\|patch\\|rej\\)\\'" . diff-mode)
("\\.\\(dif\\|pat\\)\\'" . diff-mode) ; for MSDOG
("\\.[eE]?[pP][sS]\\'" . ps-mode)
- ("\\.\\(?:PDF\\|DVI\\|pdf\\|dvi\\)\\'" . doc-view-mode)
+ ("\\.\\(?:PDF\\|DVI\\|OD[FGPST]\\|DOCX?\\|XLSX?\\|PPTX?\\|pdf\\|dvi\\|od[fgpst]\\|docx?\\|xlsx?\\|pptx?\\)\\'" . doc-view-mode-maybe)
("configure\\.\\(ac\\|in\\)\\'" . autoconf-mode)
("\\.s\\(v\\|iv\\|ieve\\)\\'" . sieve-mode)
("BROWSE\\'" . ebrowse-tree-mode)
@@ -2875,6 +2876,7 @@ is a file-local variable (a symbol) and VALUE is the value
specified. The actual value in the buffer may differ from VALUE,
if it is changed by the major or minor modes, or by the user.")
(make-variable-buffer-local 'file-local-variables-alist)
+(put 'file-local-variables-alist 'permanent-local t)
(defvar dir-local-variables-alist nil
"Alist of directory-local variable settings in the current buffer.
@@ -2904,91 +2906,80 @@ DIR-NAME is a directory name if these settings come from
directory-local variables, or nil otherwise."
(if noninteractive
nil
- (let ((name (or dir-name
- (if buffer-file-name
- (file-name-nondirectory buffer-file-name)
- (concat "buffer " (buffer-name)))))
- (offer-save (and (eq enable-local-variables t) unsafe-vars))
- prompt char)
- (save-window-excursion
- (let ((buf (get-buffer-create "*Local Variables*")))
- (pop-to-buffer buf)
- (set (make-local-variable 'cursor-type) nil)
- (erase-buffer)
- (if unsafe-vars
- (insert "The local variables list in " name
- "\ncontains values that may not be safe (*)"
- (if risky-vars
- ", and variables that are risky (**)."
- "."))
- (if risky-vars
- (insert "The local variables list in " name
- "\ncontains variables that are risky (**).")
- (insert "A local variables list is specified in " name ".")))
- (insert "\n\nDo you want to apply it? You can type
+ (save-window-excursion
+ (let* ((name (or dir-name
+ (if buffer-file-name
+ (file-name-nondirectory buffer-file-name)
+ (concat "buffer " (buffer-name)))))
+ (offer-save (and (eq enable-local-variables t)
+ unsafe-vars))
+ (exit-chars
+ (if offer-save '(?! ?y ?n ?\s ?\C-g) '(?y ?n ?\s ?\C-g)))
+ (buf (pop-to-buffer "*Local Variables*"))
+ prompt char)
+ (set (make-local-variable 'cursor-type) nil)
+ (erase-buffer)
+ (cond
+ (unsafe-vars
+ (insert "The local variables list in " name
+ "\ncontains values that may not be safe (*)"
+ (if risky-vars
+ ", and variables that are risky (**)."
+ ".")))
+ (risky-vars
+ (insert "The local variables list in " name
+ "\ncontains variables that are risky (**)."))
+ (t
+ (insert "A local variables list is specified in " name ".")))
+ (insert "\n\nDo you want to apply it? You can type
y -- to apply the local variables list.
n -- to ignore the local variables list.")
- (if offer-save
- (insert "
+ (if offer-save
+ (insert "
! -- to apply the local variables list, and permanently mark these
values (*) as safe (in the future, they will be set automatically.)\n\n")
- (insert "\n\n"))
- (dolist (elt all-vars)
- (cond ((member elt unsafe-vars)
- (insert " * "))
- ((member elt risky-vars)
- (insert " ** "))
- (t
- (insert " ")))
- (princ (car elt) buf)
- (insert " : ")
- ;; Make strings with embedded whitespace easier to read.
- (let ((print-escape-newlines t))
- (prin1 (cdr elt) buf))
- (insert "\n"))
- (setq prompt
- (format "Please type %s%s: "
- (if offer-save "y, n, or !" "y or n")
- (if (< (line-number-at-pos) (window-body-height))
- ""
- ", or C-v to scroll")))
- (goto-char (point-min))
- (let ((cursor-in-echo-area t)
- (executing-kbd-macro executing-kbd-macro)
- (exit-chars
- (if offer-save '(?! ?y ?n ?\s ?\C-g) '(?y ?n ?\s ?\C-g)))
- done)
- (while (not done)
- (message "%s" prompt)
- (setq char (read-event))
- (if (numberp char)
- (cond ((eq char ?\C-v)
- (condition-case nil
- (scroll-up)
- (error (goto-char (point-min)))))
- ;; read-event returns -1 if we are in a kbd
- ;; macro and there are no more events in the
- ;; macro. In that case, attempt to get an
- ;; event interactively.
- ((and executing-kbd-macro (= char -1))
- (setq executing-kbd-macro nil))
- (t (setq done (memq (downcase char) exit-chars)))))))
- (setq char (downcase char))
- (when (and offer-save (= char ?!) unsafe-vars)
- (dolist (elt unsafe-vars)
- (add-to-list 'safe-local-variable-values elt))
- ;; When this is called from desktop-restore-file-buffer,
- ;; coding-system-for-read may be non-nil. Reset it before
- ;; writing to .emacs.
- (if (or custom-file user-init-file)
- (let ((coding-system-for-read nil))
- (customize-save-variable
- 'safe-local-variable-values
- safe-local-variable-values))))
- (kill-buffer buf)
- (or (= char ?!)
- (= char ?\s)
- (= char ?y)))))))
+ (insert "\n\n"))
+ (dolist (elt all-vars)
+ (cond ((member elt unsafe-vars)
+ (insert " * "))
+ ((member elt risky-vars)
+ (insert " ** "))
+ (t
+ (insert " ")))
+ (princ (car elt) buf)
+ (insert " : ")
+ ;; Make strings with embedded whitespace easier to read.
+ (let ((print-escape-newlines t))
+ (prin1 (cdr elt) buf))
+ (insert "\n"))
+ (setq prompt
+ (format "Please type %s%s: "
+ (if offer-save "y, n, or !" "y or n")
+ (if (< (line-number-at-pos) (window-body-height))
+ ""
+ (push ?\C-v exit-chars)
+ ", or C-v to scroll")))
+ (goto-char (point-min))
+ (while (null char)
+ (setq char (read-char-choice prompt exit-chars t))
+ (when (eq char ?\C-v)
+ (condition-case nil
+ (scroll-up)
+ (error (goto-char (point-min))))
+ (setq char nil)))
+ (kill-buffer buf)
+ (when (and offer-save (= char ?!) unsafe-vars)
+ (dolist (elt unsafe-vars)
+ (add-to-list 'safe-local-variable-values elt))
+ ;; When this is called from desktop-restore-file-buffer,
+ ;; coding-system-for-read may be non-nil. Reset it before
+ ;; writing to .emacs.
+ (if (or custom-file user-init-file)
+ (let ((coding-system-for-read nil))
+ (customize-save-variable
+ 'safe-local-variable-values
+ safe-local-variable-values))))
+ (memq char '(?! ?\s ?y))))))
(defun hack-local-variables-prop-line (&optional mode-only)
"Return local variables specified in the -*- line.
@@ -3592,7 +3583,7 @@ the old visited file has been renamed to the new name FILENAME."
(and buffer (not (eq buffer (current-buffer)))
(not no-query)
(not (y-or-n-p (format "A buffer is visiting %s; proceed? "
- filename)))
+ filename)))
(error "Aborted")))
(or (equal filename buffer-file-name)
(progn
@@ -3785,10 +3776,9 @@ BACKUPNAME is the backup file name, which is the old file renamed."
(rename-file real-file-name backupname t)
(setq setmodes (list modes context backupname)))
(file-error
- ;; If trouble writing the backup, write it in ~.
- (setq backupname (expand-file-name
- (convert-standard-filename
- "~/%backup%~")))
+ ;; If trouble writing the backup, write it in
+ ;; .emacs.d/%backup%.
+ (setq backupname (locate-user-emacs-file "%backup%~"))
(message "Cannot write backup file; backing up in %s"
backupname)
(sleep-for 1)
@@ -4167,11 +4157,29 @@ on a DOS/Windows machine, it returns FILENAME in expanded form."
(dremote (file-remote-p directory)))
(if ;; Conditions for separate trees
(or
- ;; Test for different drives on DOS/Windows
+ ;; Test for different filesystems on DOS/Windows
(and
;; Should `cygwin' really be included here? --stef
(memq system-type '(ms-dos cygwin windows-nt))
- (not (eq t (compare-strings filename 0 2 directory 0 2))))
+ (or
+ ;; Test for different drive letters
+ (not (eq t (compare-strings filename 0 2 directory 0 2)))
+ ;; Test for UNCs on different servers
+ (not (eq t (compare-strings
+ (progn
+ (if (string-match "\\`//\\([^:/]+\\)/" filename)
+ (match-string 1 filename)
+ ;; Windows file names cannot have ? in
+ ;; them, so use that to detect when
+ ;; neither FILENAME nor DIRECTORY is a
+ ;; UNC.
+ "?"))
+ 0 nil
+ (progn
+ (if (string-match "\\`//\\([^:/]+\\)/" directory)
+ (match-string 1 directory)
+ "?"))
+ 0 nil t)))))
;; Test for different remote file system identification
(not (equal fremote dremote)))
filename
@@ -4328,8 +4336,9 @@ Before and after saving the buffer, this function runs
(or (verify-visited-file-modtime (current-buffer))
(not (file-exists-p buffer-file-name))
(yes-or-no-p
- (format "%s has changed since visited or saved. Save anyway? "
- (file-name-nondirectory buffer-file-name)))
+ (format
+ "%s has changed since visited or saved. Save anyway? "
+ (file-name-nondirectory buffer-file-name)))
(error "Save not confirmed"))
(save-restriction
(widen)
@@ -4406,9 +4415,10 @@ Before and after saving the buffer, this function runs
(if (not (file-exists-p buffer-file-name))
(error "Directory %s write-protected" dir)
(if (yes-or-no-p
- (format "File %s is write-protected; try to save anyway? "
- (file-name-nondirectory
- buffer-file-name)))
+ (format
+ "File %s is write-protected; try to save anyway? "
+ (file-name-nondirectory
+ buffer-file-name)))
(setq tempsetmodes t)
(error "Attempt to save to a file which you aren't allowed to write"))))))
(or buffer-backed-up
@@ -4599,8 +4609,7 @@ change the additional actions you can take on files."
(progn
(if (or arg
(eq save-abbrevs 'silently)
- (y-or-n-p (format "Save abbrevs in %s? "
- abbrev-file-name)))
+ (y-or-n-p (format "Save abbrevs in %s? " abbrev-file-name)))
(write-abbrev-file nil))
;; Don't keep bothering user if he says no.
(setq abbrevs-changed nil)
@@ -5216,10 +5225,10 @@ This command is used in the special Dired buffer created by
(defun kill-buffer-ask (buffer)
"Kill BUFFER if confirmed."
- (when (yes-or-no-p
- (format "Buffer %s %s. Kill? " (buffer-name buffer)
- (if (buffer-modified-p buffer)
- "HAS BEEN EDITED" "is unmodified")))
+ (when (yes-or-no-p (format "Buffer %s %s. Kill? "
+ (buffer-name buffer)
+ (if (buffer-modified-p buffer)
+ "HAS BEEN EDITED" "is unmodified")))
(kill-buffer buffer)))
(defun kill-some-buffers (&optional list)
@@ -6107,8 +6116,7 @@ only these files will be asked to be saved."
(substitute-in-file-name identity)
;; `add' means add "/:" to the result.
(file-truename add 0)
- ;; `quote' means add "/:" to buffer-file-name.
- (insert-file-contents quote 0)
+ (insert-file-contents insert-file-contents 0)
;; `unquote-then-quote' means set buffer-file-name
;; temporarily to unquoted filename.
(verify-visited-file-modtime unquote-then-quote)
@@ -6139,20 +6147,18 @@ only these files will be asked to be saved."
"/"
(substring (car pair) 2)))))
(setq file-arg-indices (cdr file-arg-indices))))
- (cond ((eq method 'identity)
- (car arguments))
- ((eq method 'add)
- (concat "/:" (apply operation arguments)))
- ((eq method 'quote)
- (unwind-protect
+ (case method
+ (identity (car arguments))
+ (add (concat "/:" (apply operation arguments)))
+ (insert-file-contents
+ (let ((visit (nth 1 arguments)))
+ (prog1
(apply operation arguments)
- (setq buffer-file-name (concat "/:" buffer-file-name))))
- ((eq method 'unquote-then-quote)
- (let (res)
- (setq buffer-file-name (substring buffer-file-name 2))
- (setq res (apply operation arguments))
- (setq buffer-file-name (concat "/:" buffer-file-name))
- res))
+ (when (and visit buffer-file-name)
+ (setq buffer-file-name (concat "/:" buffer-file-name))))))
+ (unquote-then-quote
+ (let ((buffer-file-name (substring buffer-file-name 2)))
+ (apply operation arguments)))
(t
(apply operation arguments)))))
diff --git a/lisp/filesets.el b/lisp/filesets.el
index d530269bae..269ee331fb 100644
--- a/lisp/filesets.el
+++ b/lisp/filesets.el
@@ -1,7 +1,6 @@
;;; filesets.el --- handle group of files
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Thomas Link <[email protected]>
;; Maintainer: FSF
@@ -2534,5 +2533,4 @@ Set up hooks, load the cache file -- if existing -- and build the menu."
;; sentence-end-double-space:t
;; End:
-;; arch-tag: 2c03f85f-c3df-4cec-b0a3-b46fd5592d70
;;; filesets.el ends here
diff --git a/lisp/find-cmd.el b/lisp/find-cmd.el
index 11b64b0471..8b0c1eb522 100644
--- a/lisp/find-cmd.el
+++ b/lisp/find-cmd.el
@@ -1,6 +1,6 @@
;;; find-cmd.el --- Build a valid find(1) command with sexps
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Philip Jackson <[email protected]>
;; Version: 0.6
@@ -240,5 +240,4 @@ them into valid switches. The result is -and(ed) together."
(provide 'find-cmd)
-;; arch-tag: 9687fd9e-4e90-4022-864a-f904526e2046
;;; find-cmd.el ends here
diff --git a/lisp/find-dired.el b/lisp/find-dired.el
index 0c8229c8f7..144d6633be 100644
--- a/lisp/find-dired.el
+++ b/lisp/find-dired.el
@@ -1,7 +1,6 @@
;;; find-dired.el --- run a `find' command and dired the output
-;; Copyright (C) 1992, 1994, 1995, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1994-1995, 2000-2011 Free Software Foundation, Inc.
;; Author: Roland McGrath <[email protected]>,
;; Sebastian Kremer <[email protected]>
@@ -312,5 +311,4 @@ Thus ARG can also contain additional grep options."
(provide 'find-dired)
-;; arch-tag: 8edece95-af00-4221-bc74-a4bd2f75f9b0
;;; find-dired.el ends here
diff --git a/lisp/find-file.el b/lisp/find-file.el
index 80a7718277..7ace6ce01d 100644
--- a/lisp/find-file.el
+++ b/lisp/find-file.el
@@ -4,8 +4,7 @@
;; Maintainer: FSF
;; Keywords: c, matching, tools
-;; Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1995, 2001-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -968,5 +967,4 @@ That name was previously determined by `ff-which-function-are-we-in'."
(provide 'find-file)
-;; arch-tag: 5a2fc49e-3b0a-4708-9acf-fb14e471a97a
;;; find-file.el ends here
diff --git a/lisp/find-lisp.el b/lisp/find-lisp.el
index 1e1b0d0cb7..cacfd57e9f 100644
--- a/lisp/find-lisp.el
+++ b/lisp/find-lisp.el
@@ -4,8 +4,7 @@
;; Created: Fri Mar 26 1999
;; Keywords: unix
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -356,5 +355,4 @@ It is a function which takes two arguments, the directory and its parent."
(provide 'find-lisp)
-;; arch-tag: a711374c-f12a-46f6-aa18-ba7d77b9602a
;;; find-lisp.el ends here
diff --git a/lisp/finder.el b/lisp/finder.el
index 655ad5383b..784de0a4d4 100644
--- a/lisp/finder.el
+++ b/lisp/finder.el
@@ -1,7 +1,6 @@
;;; finder.el --- topic & keyword-based code finder
-;; Copyright (C) 1992, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1997-1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Eric S. Raymond <[email protected]>
;; Created: 16 Jun 1992
@@ -428,5 +427,4 @@ Delete the window and kill all Finder-related buffers."
(provide 'finder)
-;; arch-tag: ec85ff49-8cb8-41f5-a63f-9131d53ce2c5
;;; finder.el ends here
diff --git a/lisp/flow-ctrl.el b/lisp/flow-ctrl.el
index 0225880e95..a025f0a184 100644
--- a/lisp/flow-ctrl.el
+++ b/lisp/flow-ctrl.el
@@ -1,7 +1,6 @@
;;; flow-ctrl.el --- help for lusers on cu(1) or ttys with wired-in ^S/^Q flow control
-;; Copyright (C) 1990, 1991, 1994, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1991, 1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Kevin Gallagher
;; Maintainer: FSF
@@ -122,5 +121,4 @@ to get the effect of a C-q."
(provide 'flow-ctrl)
-;; arch-tag: 0eb7b19e-0d93-4e0b-9ea2-72b574076a56
;;; flow-ctrl.el ends here
diff --git a/lisp/foldout.el b/lisp/foldout.el
index 4c7ef29a07..b0eaf753d6 100644
--- a/lisp/foldout.el
+++ b/lisp/foldout.el
@@ -1,7 +1,6 @@
;;; foldout.el --- folding extensions for outline-mode and outline-minor-mode
-;; Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Kevin Broadey <[email protected]>
;; Maintainer: FSF
@@ -565,5 +564,4 @@ Valid modifiers are shift, control, meta, alt, hyper and super.")
(provide 'foldout)
-;; arch-tag: 19d095a2-1f09-42a7-a5ac-e2a3078cfe95
;;; foldout.el ends here
diff --git a/lisp/follow.el b/lisp/follow.el
index fa8d3f8a81..7e6d4e7ee3 100644
--- a/lisp/follow.el
+++ b/lisp/follow.el
@@ -1,7 +1,6 @@
;;; follow.el --- synchronize windows showing the same buffer
-;; Copyright (C) 1995, 1996, 1997, 1999, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-1997, 1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Anders Lindgren <[email protected]>
;; Maintainer: FSF (Anders' email bounces, Sep 2005)
@@ -2122,5 +2121,4 @@ This prevents `mouse-drag-region' from messing things up."
;; | save it". -- Douglas Adams, "Last Chance to See" |
;; \------------------------------------------------------------------------/
-;; arch-tag: 7b16bb1a-808c-4991-a8cc-66d3822936d0
;;; follow.el ends here
diff --git a/lisp/font-core.el b/lisp/font-core.el
index 5f8af5a521..fcaaf33b71 100644
--- a/lisp/font-core.el
+++ b/lisp/font-core.el
@@ -1,8 +1,6 @@
;;; font-core.el --- Core interface to font-lock
-;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-;; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1992-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: languages, faces
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index fe873297dc..b7b617fcff 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -1,8 +1,6 @@
;;; font-lock.el --- Electric font lock mode
-;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992-2011 Free Software Foundation, Inc.
;; Author: Jamie Zawinski
;; Richard Stallman
@@ -276,13 +274,14 @@ decoration for buffers in C++ mode, and level 1 decoration otherwise."
(integer :tag "level" 1)))))
:group 'font-lock)
-(defcustom font-lock-verbose 0
+(defcustom font-lock-verbose nil
"If non-nil, means show status messages for buffer fontification.
If a number, only buffers greater than this size have fontification messages."
:type '(choice (const :tag "never" nil)
(other :tag "always" t)
(integer :tag "size"))
- :group 'font-lock)
+ :group 'font-lock
+ :version "24.1")
;; Originally these variable values were face names such as `bold' etc.
diff --git a/lisp/format-spec.el b/lisp/format-spec.el
index d177a43cc1..68d57b73db 100644
--- a/lisp/format-spec.el
+++ b/lisp/format-spec.el
@@ -1,7 +1,6 @@
;;; format-spec.el --- functions for formatting arbitrary formatting strings
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: tools
diff --git a/lisp/format.el b/lisp/format.el
index 0436187d98..c5b48173e3 100644
--- a/lisp/format.el
+++ b/lisp/format.el
@@ -1,7 +1,7 @@
;;; format.el --- read and save files in multiple formats
-;; Copyright (C) 1994, 1995, 1997, 1999, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1995, 1997, 1999, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Boris Goldowsky <[email protected]>
;; Package: emacs
@@ -181,8 +181,7 @@ it should be a Lisp function. Decoding is done for the given BUFFER."
;; We should perhaps go via a temporary buffer and copy it
;; back, in case of errors.
(if (and (zerop (save-window-excursion
- (shell-command-on-region (point-min) (point-max)
- method t t
+ (shell-command-on-region from to method t t
error-buff)))
;; gzip gives zero exit status with bad args, for instance.
(zerop (with-current-buffer error-buff
@@ -1088,5 +1087,4 @@ OLD and NEW are the values."
(provide 'format)
-;; arch-tag: c387e9c7-a93d-47bf-89bc-8ca67e96755a
;;; format.el ends here
diff --git a/lisp/forms-d2.el b/lisp/forms-d2.el
index 98c0466740..12cd5d7d57 100644
--- a/lisp/forms-d2.el
+++ b/lisp/forms-d2.el
@@ -1,7 +1,6 @@
;;; forms-d2.el --- demo forms-mode -*- no-byte-compile: t -*-
-;; Copyright (C) 1991, 1994, 1995, 1996, 1997, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1991, 1994-1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Johan Vromans <[email protected]>
;; Created: 1989
@@ -101,5 +100,4 @@ used to fill to the column."
;; That's all, folks!
-;; arch-tag: 8e5d5dac-7abf-4722-ab5e-03eb749beaca
;;; forms-d2.el ends here
diff --git a/lisp/forms-pass.el b/lisp/forms-pass.el
index 431dca5878..b635c965cf 100644
--- a/lisp/forms-pass.el
+++ b/lisp/forms-pass.el
@@ -30,5 +30,4 @@
"Shell: " 7
"\n"))
-;; arch-tag: 74801012-1a2d-4173-b9e4-fcfa241e2305
;;; forms-pass.el ends here
diff --git a/lisp/forms.el b/lisp/forms.el
index 50f7ac9f50..9ae824131e 100644
--- a/lisp/forms.el
+++ b/lisp/forms.el
@@ -1,7 +1,6 @@
;;; forms.el --- Forms mode: edit a file as a form to fill in
-;; Copyright (C) 1991, 1994, 1995, 1996, 1997, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1991, 1994-1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Johan Vromans <[email protected]>
@@ -2055,5 +2054,4 @@ Usage: (setq forms-number-of-fields
(goto-char (point-max))
(insert ret)))))
-;; arch-tag: 4a6695c7-d47a-4a21-809b-5cec7f8ec7a1
;;; forms.el ends here
diff --git a/lisp/frame.el b/lisp/frame.el
index b133851b44..050bd49f45 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -1,7 +1,6 @@
;;; frame.el --- multi-frame management independent of window systems
-;; Copyright (C) 1993, 1994, 1996, 1997, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1993-1994, 1996-1997, 2000-2011
;; Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -1545,7 +1544,7 @@ cursor display. On a text-only terminal, this is not implemented."
:init-value (not (or noninteractive
no-blinking-cursor
(eq system-type 'ms-dos)
- (not (memq window-system '(x w32)))))
+ (not (memq window-system '(x w32 ns)))))
:initialize 'custom-initialize-delay
:group 'cursor
:global t
diff --git a/lisp/fringe.el b/lisp/fringe.el
index 6f5f496e90..7d009b03e7 100644
--- a/lisp/fringe.el
+++ b/lisp/fringe.el
@@ -1,7 +1,6 @@
;;; fringe.el --- fringe setup and control -*- coding: utf-8 -*-
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Simon Josefsson <[email protected]>
;; Maintainer: FSF
@@ -269,5 +268,4 @@ SIDE must be the symbol `left' or `right'."
(provide 'fringe)
-;; arch-tag: 6611ef60-0869-47ed-8b93-587ee7d3ff5d
;;; fringe.el ends here
diff --git a/lisp/generic-x.el b/lisp/generic-x.el
index 8c2e8b4bc9..e23af4dff7 100644
--- a/lisp/generic-x.el
+++ b/lisp/generic-x.el
@@ -1,7 +1,6 @@
;;; generic-x.el --- A collection of generic modes
-;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Peter Breton <[email protected]>
;; Created: Tue Oct 08 1996
@@ -1992,5 +1991,4 @@ like an INI file. You can add this hook to `find-file-hook'."
(provide 'generic-x)
-;; arch-tag: cde692a5-9ff6-4506-9999-c67999c2bdb5
;;; generic-x.el ends here
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 2ff18436ed..f9bcd902cd 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,612 @@
+2011-01-31 Lars Ingebrigtsen <[email protected]>
+
+ * gnus-art.el (article-transform-date): Rewrite to still work when
+ there are several rfc2822 parts.
+ (article-transform-date): Fix infinite recursion.
+ (article-date-ut): Replace infinitely many Date headers with a single
+ one when called interactively.
+
+ * nnimap.el (nnimap-wait-for-response): Wait for results in a more
+ secure manner.
+
+ * gnus-art.el (article-update-date-lapsed): Try to avoid having point
+ move around by not using save-window-excursion. It seems to work...
+
+2011-01-31 Katsumi Yamaoka <[email protected]>
+
+ * gnus-art.el (article-make-date-line): Work for user-defined format.
+
+2011-01-31 Lars Ingebrigtsen <[email protected]>
+
+ * nntp.el (nntp-retrieve-group-data-early)
+ (nntp-finish-retrieve-group-infos): Implement the asynchronous data
+ fetching functions.
+
+ * gnus-start.el (gnus-read-active-for-groups): Read the active files
+ thoroughly for all backends that have no known groups. This should
+ allow new nnml methods to retrieve mail.
+
+ * gnus-group.el (gnus-group-jump-to-group): Allow jumping to groups
+ that Gnus doesn't know exists again.
+
+ * gnus-art.el (gnus-article-date-lapsed-new-header): Removed.
+ (gnus-treat-date-ut): Ditto.
+ (gnus-article-update-date-header): Renamed.
+ (gnus-treat-date-local): Removed.
+ (gnus-treat-date-english): Removed.
+ (gnus-treat-date-lapsed): Removed.
+ (gnus-treat-date-combined-lapsed): Removed.
+ (gnus-treat-date-original): Removed.
+ (gnus-treat-date-iso8601): Removed.
+ (gnus-treat-date-user-defined): Removed.
+ (gnus-article-date-headers): New variable to control all the date
+ header options.
+ (article-date-ut): Rewrite to allow using the new way to format date
+ headers(s).
+
+2011-01-30 Lars Ingebrigtsen <[email protected]>
+
+ * nnmail.el (nnmail-article-group): Check for a direct fancy split
+ method.
+ (nnmail-article-group): A better test for fanciness.
+
+ * nnimap.el (nnimap-request-head): Protect against not finding the
+ article by Message-ID.
+
+2011-01-29 Lars Ingebrigtsen <[email protected]>
+
+ * gnus-art.el (article-update-date-lapsed): Try a better way to really
+ keep point at the "same place".
+
+2011-01-28 Lars Ingebrigtsen <[email protected]>
+
+ * gnus-sum.el (gnus-select-newsgroup): Don't try to alter the active
+ data if the group is unactivated.
+
+2011-01-28 Julien Danjou <[email protected]>
+
+ * gnus-win.el: Remove dead function gnus-window-configuration-element.
+ (gnus-all-windows-visible-p): Remove old compatibility code.
+ (gnus-window-top-edge): Add docstring.
+
+ * gnus-group.el (gnus-group-jump-to-group): Set must match to t.
+
+2011-01-28 Lars Ingebrigtsen <[email protected]>
+
+ * gnus-int.el (gnus-request-marks): Call *-request-marks instead of the
+ older request-update-info.
+
+ * gnus-art.el (article-make-date-line): Limit the length a bit more.
+
+2011-01-28 Daiki Ueno <[email protected]>
+
+ * mml2015.el (mml2015-epg-sign, mml2015-epg-encrypt): Give
+ mml2015-signers higher precedence over mml2015-sign-with-sender.
+
+2011-01-27 Lars Ingebrigtsen <[email protected]>
+
+ * gnus-group.el (gnus-group-refresh-group): Refresh even non-visible
+ groups. This makes the nndraft:queue group pop up if it's not already
+ there.
+
+ * gnus-sum.el (gnus-summary-read-group-1): Fix the "contains no
+ messages" logic, which was reversed.
+
+ * gnus-art.el (article-update-date-lapsed): Ensure that point stays at
+ the "same place" even if point is on the line being replaced.
+ (article-update-date-lapsed): Allow updating both the combined lapsed
+ and the lapsed headers.
+ (article-update-date-lapsed): Skip past all the X-Sent/Date headers.
+ (article-make-date-line): Limit the number of segments dynamically to
+ avoid too-long lines.
+
+2011-01-27 Julien Danjou <[email protected]>
+
+ * mml2015.el (mml2015-epg-sign): Add and use mml2015-sign-with-sender.
+ (mml2015-epg-encrypt): Use mml2015-sign-with-sender.
+
+2011-01-27 Katsumi Yamaoka <[email protected]>
+
+ * shr.el (shr-expand-newlines, shr-previous-newline-padding-width):
+ Use plist-get instead of the cl function getf.
+
+2011-01-27 Glenn Morris <[email protected]>
+
+ * gnus-util.el (float-time): Get rid of compiler warning, again.
+
+2011-01-27 Lars Ingebrigtsen <[email protected]>
+
+ * shr.el (shr-put-color): Special-case background colours: Do put them
+ at the blank parts at the front of the lines.
+
+ * gnus-draft.el (gnus-draft-clear-marks): New function to be run as an
+ exit hook to nix out all data on readedness on group exit.
+
+ * gnus-util.el (float-time): If float-time is bound, always use it on
+ all Emacsen. It's unclear why the subrp check was there.
+ (time-date): Require to make some autoload issues on XEmacs go away.
+
+ * shr.el (shr-put-color): Don't do the box padding in tables, since
+ they're already padded.
+
+2011-01-26 Lars Ingebrigtsen <[email protected]>
+
+ * gnus-art.el (gnus-article-next-page): When the last line of the
+ article is displayed, scroll down once more instead of going to the
+ next article at once.
+ (article-lapsed-string): Refactor out and allow specifying how many
+ segments you want.
+ (gnus-article-setup-buffer): Start updating the lapsed header directly.
+ (gnus-article-update-lapsed-header): New variable.
+
+ * shr.el: Revert change that made headings use different-sized faces.
+ The Emacs display engine isn't advanced enough that, for instance,
+ tables can comfortably use differntly-sized faces.
+
+2011-01-25 Lars Ingebrigtsen <[email protected]>
+
+ * nnimap.el (nnimap-open-connection-1): Store the actual stream type
+ used.
+ (nnimap-login): Prefer plain LOGIN if it's enabled (since it requires
+ fewer round trips than CRAM-MD5, and it's less likely to be buggy), and
+ we're using an encrypted connection.
+
+ * proto-stream.el: Alter the interface functions to also return the
+ actual stream type used: network or tls.
+
+2011-01-25 Julien Danjou <[email protected]>
+
+ * mm-view.el (mm-display-shell-script-inline): Fix typo in docstring.
+ (mm-display-javascript-inline): New function.
+
+ * mm-decode.el (mm-inline-media-tests): Add application/javascript
+ viewing function.
+
+2011-01-25 Katsumi Yamaoka <[email protected]>
+
+ * shr.el (shr-expand-newlines): Fix variable name.
+
+2011-01-25 Lars Ingebrigtsen <[email protected]>
+
+ * shr.el (shr-expand-newlines): Make nested boxes work.
+
+2011-01-24 Lars Ingebrigtsen <[email protected]>
+
+ * shr.el (shr-expand-newlines): Proof of concept implemantation of boxy
+ backgrounds.
+ (shr-expand-newlines): Switch to using overlays to enable kill'n'yank
+ in a more sensible manner.
+
+2011-01-24 Teodor Zlatanov <[email protected]>
+
+ * mml-smime.el (mml-smime-use): Make it a defcustom and default to 'epg
+ if EPG is loaded.
+
+2011-01-24 Julien Danjou <[email protected]>
+
+ * shr.el: Use defface to create shr-tag-h[1-6] faces to fontify h[1-6]
+ tags.
+
+2011-01-24 Lars Ingebrigtsen <[email protected]>
+
+ * gnus-art.el (gnus-article-read-summary-keys): Don't call disabled
+ commands.
+
+ * gnus-gravatar.el (gnus-gravatar-insert): Don't move point around
+ in the article buffer.
+ (gnus-gravatar-insert): Use blank space from the current buffer to
+ avoid breaking text properties. This makes X-Sent updating work again.
+
+ * gravatar.el (gravatar-retrieve): Be silent when retrieving.
+
+2011-01-23 Lars Ingebrigtsen <[email protected]>
+
+ * gnus-html.el (gnus-html-image-fetched): Kill the buffer anyway, and
+ fix the bug in url-http.el instead.
+
+ * shr.el (shr-image-fetched): Ditto.
+
+ * shr.el (shr-image-fetched): Avoid having point move in the article
+ buffer.
+
+ * gnus-html.el (gnus-html-image-fetched): Don't kill the temporary
+ buffer after being called. It's apparently being killed by url.el, and
+ killing it made point move to end-of-buffer in a random buffer.
+
+ * shr.el (shr-image-fetched): Ditto.
+
+2011-01-23 Julien Danjou <[email protected]>
+
+ * mm-decode.el (mm-inline-media-tests): Change text/org to text/x-org.
+
+ * mm-uu.el (mm-uu-org-src-code-block-extract): Change text/org to
+ text/x-org.
+
+2011-01-22 Lars Ingebrigtsen <[email protected]>
+
+ * gnus-sum.el (gnus-summary-move-article): Protect against backends
+ (i.e., nnimap) returning nil as the article number.
+
+2011-01-22 Kazuhiro Ito <[email protected]> (tiny change)
+
+ * flow-fill.el (fill-flowed): Make `delete-space' option correspond to
+ "DelSp" parameter in RFC3676.
+
+2011-01-22 Lars Ingebrigtsen <[email protected]>
+
+ * message.el (message-check-recipients): Display the encoded version of
+ the bogus address if they differ.
+
+ * gnus-draft.el (gnus-group-send-queue): Really refresh the queue group
+ after sending.
+
+ * gnus-agent.el (gnus-agent-send-mail): Ditto.
+
+ * gnus-group.el (gnus-group-refresh-group): New convenience function.
+
+ * gnus-draft.el (gnus-group-send-queue): Update the queue group in the
+ group buffer after sending the queue.
+
+ * gnus-agent.el (gnus-agent-send-mail): Ditto.
+
+2011-01-22 Julien Danjou <[email protected]>
+
+ * mailcap.el (mailcap-mime-extensions): Rename text/org to text/x-org.
+
+2011-01-22 Lars Ingebrigtsen <[email protected]>
+
+ * mm-decode.el (mm-preferred-alternative-precedence): Don't bug out on
+ nested related parts.
+
+ * nnfolder.el (nnfolder-request-expire-articles): Return the list of
+ unexpired articles. This fixes the regression that led expiry marks to
+ disappear from nnfolder groups.
+
+2011-01-21 Stefan Monnier <[email protected]>
+
+ * gnus-art.el (gnus-button-alist, gnus-button-handle-info-keystrokes):
+ Don't confuse the "ret" of "retrograde" with RET.
+
+2011-01-21 Julien Danjou <[email protected]>
+
+ * gnus-art.el (gnus-mime-display-single): Use mm-display-inline rather
+ than mm-insert-inline.
+
+2011-01-21 Katsumi Yamaoka <[email protected]>
+
+ * gnus-art.el (gnus-article-remove-images, gnus-article-show-images):
+ Widen article buffer.
+
+2011-01-20 Stefan Monnier <[email protected]>
+
+ * mm-util.el (mm-find-buffer-file-coding-system): Don't forget to kill
+ the temp buffer.
+ * message.el (message-mailer-swallows-blank-line): Use with-temp-buffer.
+
+2011-01-20 Julien Danjou <[email protected]>
+
+ * mm-decode.el (mm-inline-media-tests): Add text/x-sh.
+
+ * gnus-art.el (gnus-mime-inline-part): Use mm-display-inline rather
+ than mm-insert-inline to insert inline part: this respect
+ mm-inline-media-tests displayers.
+
+ * mm-view.el (mm-display-shell-script-inline): New function.
+
+ * mm-decode.el (mm-inline-media-tests): Add x-shellscript and x-sh.
+
+ * mm-uu.el (mm-uu-type-alist): Add org block.
+ (mm-uu-org-src-code-block-extract): New function.
+
+ * mm-view.el (mm-display-org-inline): New function.
+
+ * mm-decode.el (mm-automatic-display): Add text/org.
+
+ * mailcap.el (mailcap-mime-extensions): Add .org.
+
+2011-01-19 Katsumi Yamaoka <[email protected]>
+
+ * gnus-art.el (gnus-article-highlight): Remove argument passed to
+ gnus-article-add-buttons.
+
+2011-01-19 Tom Rauchenwald <[email protected]> (tiny change)
+
+ * spam.el (spam-spamassassin-register-with-sa-learn): Insert a full
+ From header with a date and "nobody" as the sender.
+
+2011-01-19 Julien Danjou <[email protected]>
+
+ * gnus-art.el (gnus-article-add-buttons): Simplify condition.
+ (gnus-button-push): Remove gnus-button-entry function, it fails heavily
+ if you have the same regexp several times.
+ (gnus-button-push): Fix matching when regexp is symbol.
+
+2011-01-15 Glenn Morris <[email protected]>
+
+ * message.el (message-mail): A compose-mail function should
+ accept headers as strings.
+
+2011-01-13 Chong Yidong <[email protected]>
+
+ * message.el (message-tool-bar-gnome): Tweak tool-bar items.
+ Add :vert-only tags.
+ (message-mail): New arg RETURN-ACTION.
+ (message-return-action): New var.
+ (message-bury): Use it.
+ (message-mode): Make it buffer-local.
+ (message-send-and-exit): Always call message-bury.
+
+ * gnus-msg.el (gnus-msg-mail): New arg RETURN-ACTION. Pass it to
+ message-mail.
+
+2011-01-11 Lars Magne Ingebrigtsen <[email protected]>
+
+ * nnimap.el (nnimap-convert-partial-article): Protect against
+ zero-length body parts.
+
+ * mm-decode.el (mm-preferred-alternative-precedence):
+ Discourage showing empty parts.
+
+ * gnus-int.el (gnus-request-accept-article): Don't try to update marks
+ and stuff if the backend didn't return the article number. This fixes
+ an Exchange-related nnimap bug.
+
+ * gnus-sum.el (gnus-summary-next-article): Remove hack to reselect
+ group window, because it does the wrong thing when a separate frame
+ displays the group buffer.
+
+ * proto-stream.el (open-protocol-stream): Protect against the low-level
+ transport functions returning nil.
+
+2011-01-07 Daiki Ueno <[email protected]>
+
+ * mml2015.el (epg-sub-key-fingerprint): Autoload.
+ (mml2015-epg-find-usable-secret-key): New function.
+ (mml2015-epg-sign): Use mml2015-epg-find-usable-secret-key instead of
+ mml2015-epg-find-usable-key (Bug#7797).
+ (mml2015-epg-encrypt): Ditto.
+
+2011-01-03 Lars Magne Ingebrigtsen <[email protected]>
+
+ * flow-fill.el (fill-flowed-encode): Do encoding citation-aware.
+
+2011-01-03 Glenn Morris <[email protected]>
+
+ * sieve-manage.el (sieve-manage-open): Correctly set sieve-manage-port.
+
+ * sieve.el (sieve-open-server): Give a more explicit error if
+ sieve-manage-open returns nil. (Bug#7720)
+
+2011-01-02 Karl Fogel <[email protected]>
+
+ * gnus-msg.el (gnus-message-replyencrypt): Default to `t'.
+
+2011-01-02 Lars Magne Ingebrigtsen <[email protected]>
+
+ * nnimap.el (nnimap-login): Prefer AUTH=CRAM-MD5, if it's available.
+ This avoids sending passwords in plain text over non-encrypted
+ channels.
+
+ * shr.el (shr-rescale-image): Display all GIF images as animated images.
+
+ * nnimap.el (nnimap-login): Refactored out into own function, and
+ implement CRAM-MD5.
+ (nnimap-wait-for-line): Refactored out.
+
+ * mm-view.el (mml-smime): Require.
+
+2010-12-20 David Engster <[email protected]>
+
+ * mm-view.el (mm-view-pkcs7-decrypt): If mml-smime-use is set to 'epg,
+ use EPG to decrypt S/MIME messages instead of openssl.
+
+2011-01-02 Lars Magne Ingebrigtsen <[email protected]>
+
+ * nnimap.el (nnimap-request-group): Avoid double SELECT on `M-g'.
+
+ * gnus-group.el (gnus-group-kill-group): Don't try to update the group
+ status is the group clearly is unreachable.
+
+ * auth-source.el (auth-source-create): Add the optional second
+ parameter to `local-variable-p' to be compatible with XEmacs.
+
+2011-01-02 Wang Diancheng <[email protected]> (tiny change)
+
+ * nnml.el (nnml-request-article): Allow requesting by Message-ID to
+ work when using a compressed nnml folder.
+
+2011-01-02 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus-sum.el (gnus-select-newsgroup): Don't propagate marks to
+ backends after sanitising on entry, because this never makes sense:
+ If the articles have gone missing, then the data no longer exists on
+ the backend, and if they haven't, then Gnus is wrong, and shouldn't
+ overwrite anything anyway.
+
+ * shr.el (shr-insert-document): Bind shr-width dynamically to
+ window-width if it's nil.
+
+2010-12-30 Tassilo Horn <[email protected]>
+
+ * shr.el (shr-width, shr-insert-document): Allow nil as shr-width value
+ with the meaning of using the full emacs window width for rendering.
+
+2010-12-27 Daiki Ueno <[email protected]>
+
+ * mml2015.el (mml2015-epg-sign, mml2015-epg-encrypt): Take care the
+ case when sender is not given.
+
+2010-12-23 Julien Danjou <[email protected]>
+
+ * gnus-gravatar.el (gnus-gravatar-transform-address): Set
+ `mail-extr-ignore-realname-equals-mailbox-name' to nil when extracting
+ the addresses, otherwise we might misplaced the gravatar.
+
+2010-12-21 Daiki Ueno <[email protected]>
+
+ * mml1991.el (pgg-sign-region, pgg-encrypt-region):
+ * gnus-art.el (pgg-snarf-keys-region): Autoload since PGG is now
+ obsolete in Emacs.
+
+2010-12-20 Julien Danjou <[email protected]>
+
+ * gnus-util.el (gnus-rescale-image): Revert last change.
+
+2010-12-17 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus-group.el (gnus-group-delete-articles): New command.
+
+2010-12-17 Andrew Cohen <[email protected]>
+
+ * nnir.el (nnir-mode): Make sure 'gnus-registry-install is bound.
+
+2010-12-17 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus-sum.el (gnus-get-newsgroup-headers): Revert the last change
+ here, since it's up to the backends to do CRLF removal if their
+ protocol has it.
+
+ * nnimap.el (nnimap-retrieve-headers): Remove CRLF from the headers.
+
+2010-12-17 Julien Danjou <[email protected]>
+
+ * gnus-util.el (gnus-rescale-image): Allow to resize images even if
+ they are from file. Can also scale up.
+
+2010-12-17 Andrew Cohen <[email protected]>
+
+ * gnus-sum.el (gnus-summary-refer-thread): Simplify code. Restore
+ gnus-use-agent.
+ (gnus-get-newsgroup-headers): Avoid unwanted spaces at eol.
+
+ * nnir.el (nnir-get-active): Ignore nnir-ignored-newsgroups if null.
+
+2010-12-17 Julien Danjou <[email protected]>
+
+ * gravatar.el (gravatar-retrieve-synchronously): New function.
+ (gravatar-get-data): Make more robust.
+
+2010-12-16 Lars Magne Ingebrigtsen <[email protected]>
+
+ * nnimap.el (nnimap-wait-for-response): Fix the end-point calculation
+ to really consider the last line.
+
+2010-12-16 Daiki Ueno <[email protected]>
+
+ * auth-source.el (auth-source-gpg-encrypt-to): New variable to set the
+ list of recipient keys, or use symmetric encryption if not a list.
+ (auth-source-create): Use it to make `epa-file-encrypt-to' local for an
+ EPA override, replacing the call to `netrc-store-data'.
+
+2010-12-16 Dan Davison <[email protected]> (tiny change)
+
+ * gnus-srvr.el: Avoid passing nil regexp argument to
+ delete-matching-lines.
+
+2010-12-16 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus-html.el (gnus-html-schedule-image-fetching): Make sure the HTML
+ fetching stops when Gnus exits.
+
+ * nnfolder.el (nnfolder-save-all-buffers): Refactor out into its own
+ function.
+ (nnfolder-request-expire-articles): Save all the buffers after doing
+ expiry.
+
+ * nnmail.el (nnmail-expiry-target-group): Revert the "all articles are
+ the last article", since that led to serious performance regressions
+ when expiring nnml groups.
+
+2010-12-16 Andrew Cohen <[email protected]>
+
+ * nnir.el: Improve customizations.
+
+2010-12-16 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus-start.el (gnus-subscribe-newsgroup): Notify the backend.
+
+ * gnus-group.el (gnus-group-kill-group): Notify the backend that the
+ group has been killed.
+ (gnus-group-yank-group): Ditto.
+
+ * gnus-srvr.el (gnus-browse-unsubscribe-group): Ditto.
+
+ * nnimap.el (nnimap-request-update-group-status): New function.
+
+ * gnus-int.el (gnus-request-update-group-status): New interface
+ function.
+
+ * gnus-sum.el (gnus-summary-push-marks-to-backend): Fix the logic for
+ copying read-ness to the backends.
+
+ * nnimap.el (nnimap-quirk): New function.
+ (nnimap-retrieve-group-data-early): Use it.
+ (nnimap-quirks): New alist.
+
+2010-12-16 Katsumi Yamaoka <[email protected]>
+
+ * shr.el (shr-insert): Set shr-start after deleting trailing space;
+ don't delete it within indentation.
+
+2010-12-16 Lars Magne Ingebrigtsen <[email protected]>
+
+ * nnimap.el (nnimap-wait-for-response): Always look (at least) at the
+ previous line.
+
+2010-12-15 Lars Magne Ingebrigtsen <[email protected]>
+
+ * nnimap.el (nnimap-retrieve-group-data-early): Fix the syntax of the
+ QRESYNC command by deleting a superfluous space which broke Cyrus
+ servers. This change will break other servers that are buggy the other
+ way around.
+
+2010-12-14 Teodor Zlatanov <[email protected]>
+
+ * spam.el: Reindent and fix long lines.
+ (spam-copy-or-move-routine): Exclude invalid move destinations.
+
+2010-12-14 Andrew Cohen <[email protected]>
+
+ * nnir.el (nnir-mode): Don't install registry hooks if user hasn't
+ installed the registry.
+
+2010-12-13 Andrew Cohen <[email protected]>
+
+ * nnir.el (nnir-run-gmane): Better check for gmane groups: error out if
+ groupname doesn't contain "gmane".
+
+2010-12-13 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus-start.el (gnus-matches-options-n): Fix typo in last change.
+ (gnus-1): Don't create the nndrafts group twice.
+ (gnus-setup-news): There's no need to read the active file here, since
+ that's done again later on a per-backend basis.
+ (gnus-start-draft-setup): Make sure that the new group is started out
+ empty.
+
+ * gnus-agent.el (gnus-agentize): Don't create the queue group
+ automatically on startup. It'll be created later, if needed.
+
+ * gnus-start.el (gnus-auto-subscribed-groups): Add nnimap to the list
+ of automatically subscribed groups.
+ (gnus-auto-subscribed-categories): New variable.
+ (gnus-matches-options-n): Use it.
+ (gnus-default-subscribed-newsgroups): Remove unused variable.
+ (gnus-start-draft-setup): Message a bit less.
+
+2010-12-13 Andrew Cohen <[email protected]>
+
+ * nnir.el (nnir-run-imap): Return article list in order of increasing
+ UID.
+
+2010-12-13 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus-sum.el (gnus-summary-enter-digest-group):
+ Mention gnus-auto-select-on-ephemeral-exit.
+
+ * proto-stream.el (proto-stream-open-network-only): Fix the calling
+ convention of the network-only option.
+
2010-12-10 Lars Magne Ingebrigtsen <[email protected]>
* proto-stream.el (proto-stream-open-network-only): New function to
@@ -232,8 +841,8 @@
(nnir-mode): Install nnir-specific hooks for updating the registry.
* gnus-sum.el
- (gnus-article-original-subject,gnus-newsgroup-original-name): Remove
- obsolete variables.
+ (gnus-article-original-subject,gnus-newsgroup-original-name):
+ Remove obsolete variables.
(gnus-summary-move-article): Remove use of obsolete variables.
(gnus-summary-local-variables): Make move and delete hooks local to
summary buffers.
@@ -349,7 +958,7 @@
* nntp.el (nntp-open-connection): Report what the connection error is.
- * proto-stream.el (open-protocol-stream): Renamed from
+ * proto-stream.el (open-protocol-stream): Rename from
open-proto-stream.
2010-11-27 Lars Magne Ingebrigtsen <[email protected]>
@@ -630,8 +1239,8 @@
* shr.el (shr-parse-style): Replace \n with space in style parsing.
- * shr-color.el (shr-color-hsl-to-rgb-fractions): Use
- shr-color-hue-to-rgb.
+ * shr-color.el (shr-color-hsl-to-rgb-fractions):
+ Use shr-color-hue-to-rgb.
(shr-color->hexadecimal): Call shr-color-hsl-to-rgb-fractions.
2010-11-23 Lars Magne Ingebrigtsen <[email protected]>
@@ -18750,8 +19359,7 @@
See ChangeLog.2 for earlier changes.
- Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2004-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/lisp/gnus/ChangeLog.1 b/lisp/gnus/ChangeLog.1
index 520b3a4b73..7448808b20 100644
--- a/lisp/gnus/ChangeLog.1
+++ b/lisp/gnus/ChangeLog.1
@@ -3708,8 +3708,7 @@
* gnus.el: Quassia Gnus v0.1 is released.
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1997-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -3725,5 +3724,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: c2f4e9c8-94fb-4c63-bdfd-4ab680cc9db7
diff --git a/lisp/gnus/ChangeLog.2 b/lisp/gnus/ChangeLog.2
index 767b50bbe0..381ae544b2 100644
--- a/lisp/gnus/ChangeLog.2
+++ b/lisp/gnus/ChangeLog.2
@@ -18553,8 +18553,7 @@
See ChangeLog.1 for earlier changes.
- Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2000-2002, 2004-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -18574,5 +18573,3 @@ See ChangeLog.1 for earlier changes.
;; Local Variables:
;; coding: iso-2022-7bit
;; End:
-
-;; arch-tag: 956fd310-042f-4fca-8dca-a01dbe06acff
diff --git a/lisp/gnus/auth-source.el b/lisp/gnus/auth-source.el
index 20e4af189d..e94cfb137b 100644
--- a/lisp/gnus/auth-source.el
+++ b/lisp/gnus/auth-source.el
@@ -1,6 +1,6 @@
;;; auth-source.el --- authentication sources for Gnus and Emacs
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Ted Zlatanov <[email protected]>
;; Keywords: news
@@ -159,6 +159,15 @@ can get pretty complex."
(const :tag "Any" t)
(string :tag "Specific user name"))))))))
+(defcustom auth-source-gpg-encrypt-to t
+ "List of recipient keys that `authinfo.gpg' encrypted to.
+If the value is not a list, symmetric encryption will be used."
+ :group 'auth-source
+ :version "23.2" ;; No Gnus
+ :type '(choice (const :tag "Symmetric encryption" t)
+ (repeat :tag "Recipient public keys"
+ (string :tag "Recipient public key"))))
+
;; temp for debugging
;; (unintern 'auth-source-protocols)
;; (unintern 'auth-sources)
@@ -352,9 +361,28 @@ Return structure as specified by MODE."
;; netrc interface.
(when (y-or-n-p (format "Do you want to save this password in %s? "
source))
- (netrc-store-data source host prot
- (or user (cdr (assoc "login" result)))
- (cdr (assoc "password" result))))))
+ ;; the code below is almost same as `netrc-store-data' except
+ ;; the `epa-file-encrypt-to' hack (see bug#7487).
+ (with-temp-buffer
+ (when (file-exists-p source)
+ (insert-file-contents source))
+ (when auth-source-gpg-encrypt-to
+ ;; making `epa-file-encrypt-to' local to this buffer lets
+ ;; epa-file skip the key selection query (see the
+ ;; `local-variable-p' check in `epa-file-write-region').
+ (unless (local-variable-p 'epa-file-encrypt-to (current-buffer))
+ (make-local-variable 'epa-file-encrypt-to))
+ (if (listp auth-source-gpg-encrypt-to)
+ (setq epa-file-encrypt-to auth-source-gpg-encrypt-to)))
+ (goto-char (point-max))
+ (unless (bolp)
+ (insert "\n"))
+ (insert (format "machine %s login %s password %s port %s\n"
+ host
+ (or user (cdr (assoc "login" result)))
+ (cdr (assoc "password" result))
+ prot))
+ (write-region (point-min) (point-max) source nil 'silent)))))
(if (consp mode)
(mapcar #'cdr result)
(cdar result))))
diff --git a/lisp/gnus/canlock.el b/lisp/gnus/canlock.el
index 4298bc901c..5727bef37e 100644
--- a/lisp/gnus/canlock.el
+++ b/lisp/gnus/canlock.el
@@ -1,7 +1,6 @@
;;; canlock.el --- functions for Cancel-Lock feature
-;; Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Katsumi Yamaoka <[email protected]>
;; Keywords: news, cancel-lock, hmac, sha1, rfc2104
diff --git a/lisp/gnus/compface.el b/lisp/gnus/compface.el
index 8c26341a6e..2a2383777c 100644
--- a/lisp/gnus/compface.el
+++ b/lisp/gnus/compface.el
@@ -1,6 +1,6 @@
;;; compface.el --- functions for converting X-Face headers
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/deuglify.el b/lisp/gnus/deuglify.el
index 60f8c95bb2..1e2a566f72 100644
--- a/lisp/gnus/deuglify.el
+++ b/lisp/gnus/deuglify.el
@@ -1,7 +1,6 @@
;;; deuglify.el --- deuglify broken Outlook (Express) articles
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Raymond Scholz <[email protected]>
;; Thomas Steffen
diff --git a/lisp/gnus/ecomplete.el b/lisp/gnus/ecomplete.el
index 1f70567496..6a47b119f1 100644
--- a/lisp/gnus/ecomplete.el
+++ b/lisp/gnus/ecomplete.el
@@ -1,7 +1,6 @@
;;; ecomplete.el --- electric completion of addresses and the like
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: mail
diff --git a/lisp/gnus/flow-fill.el b/lisp/gnus/flow-fill.el
index 2420577ea4..cdaebbd683 100644
--- a/lisp/gnus/flow-fill.el
+++ b/lisp/gnus/flow-fill.el
@@ -1,7 +1,6 @@
;;; flow-fill.el --- interpret RFC2646 "flowed" text
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Simon Josefsson <[email protected]>
;; Keywords: mail
@@ -82,19 +81,38 @@ RFC 2646 suggests 66 characters for readability."
;; Go through each paragraph, filling it and adding SPC
;; as the last character on each line.
(while (setq end (text-property-any start (point-max) 'hard 't))
- (let ((fill-column (eval fill-flowed-encode-column)))
- (fill-region start end t 'nosqueeze 'to-eop))
- (goto-char start)
- ;; `fill-region' probably distorted end.
- (setq end (text-property-any start (point-max) 'hard 't))
- (while (and (< (point) end)
- (re-search-forward "$" (1- end) t))
- (insert " ")
- (setq end (1+ end))
- (forward-char))
- (goto-char (setq start (1+ end)))))
+ (save-restriction
+ (narrow-to-region start end)
+ (let ((fill-column (eval fill-flowed-encode-column)))
+ (fill-flowed-fill-buffer))
+ (goto-char (point-min))
+ (while (re-search-forward "\n" nil t)
+ (replace-match " \n" t t))
+ (goto-char (setq start (1+ (point-max)))))))
t)))
+(defun fill-flowed-fill-buffer ()
+ (let ((prefix nil)
+ (prev-prefix nil)
+ (start (point-min)))
+ (goto-char (point-min))
+ (while (not (eobp))
+ (setq prefix (and (looking-at "[> ]+")
+ (match-string 0)))
+ (if (equal prefix prev-prefix)
+ (forward-line 1)
+ (save-restriction
+ (narrow-to-region start (point))
+ (let ((fill-prefix prev-prefix))
+ (fill-region (point-min) (point-max) t 'nosqueeze 'to-eop))
+ (goto-char (point-max)))
+ (setq prev-prefix prefix
+ start (point))))
+ (save-restriction
+ (narrow-to-region start (point))
+ (let ((fill-prefix prev-prefix))
+ (fill-region (point-min) (point-max) t 'nosqueeze 'to-eop)))))
+
;;;###autoload
(defun fill-flowed (&optional buffer delete-space)
(with-current-buffer (or (current-buffer) buffer)
@@ -105,8 +123,6 @@ RFC 2646 suggests 66 characters for readability."
(forward-line 1))
(goto-char (point-min))
(while (re-search-forward " $" nil t)
- (when delete-space
- (delete-char -1))
(when (save-excursion
(beginning-of-line)
(looking-at "^\\(>*\\)\\( ?\\)"))
@@ -134,6 +150,8 @@ RFC 2646 suggests 66 characters for readability."
(replace-match (if (string= (match-string 2) " ")
"" "\\2")))
(backward-delete-char -1)
+ (when delete-space
+ (delete-char -1))
(end-of-line))
(unless sig
(condition-case nil
diff --git a/lisp/gnus/gmm-utils.el b/lisp/gnus/gmm-utils.el
index e16fc5efa6..8deb27379a 100644
--- a/lisp/gnus/gmm-utils.el
+++ b/lisp/gnus/gmm-utils.el
@@ -1,7 +1,6 @@
;;; gmm-utils.el --- Utility functions for Gnus, Message and MML
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Reiner Steib <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 8edfecde15..204d63d37e 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -1,7 +1,6 @@
;;; gnus-agent.el --- unplugged support for Gnus
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; This file is part of GNU Emacs.
@@ -203,8 +202,7 @@ queue. Otherwise, queue if and only if unplugged."
(const :format "When unplugged" t)))
(defcustom gnus-agent-prompt-send-queue nil
- "If non-nil, `gnus-group-send-queue' will prompt if called when
-unplugged."
+ "If non-nil, `gnus-group-send-queue' will prompt if called when unplugged."
:version "22.1"
:group 'gnus-agent
:type 'boolean)
@@ -685,7 +683,6 @@ This will modify the `gnus-setup-news-hook', and
minor mode in all Gnus buffers."
(interactive)
(gnus-open-agent)
- (add-hook 'gnus-setup-news-hook 'gnus-agent-queue-setup)
(unless gnus-agent-send-mail-function
(setq gnus-agent-send-mail-function
(or message-send-mail-real-function
@@ -732,7 +729,8 @@ Optional arg GROUP-NAME allows to specify another group."
(concat "^" (regexp-quote mail-header-separator) "\n"))
(replace-match "\n")
(gnus-agent-insert-meta-information 'mail)
- (gnus-request-accept-article "nndraft:queue" nil t t)))
+ (gnus-request-accept-article "nndraft:queue" nil t t)
+ (gnus-group-refresh-group "nndraft:queue")))
(defun gnus-agent-insert-meta-information (type &optional method)
"Insert meta-information into the message that says how it's to be posted.
@@ -1514,7 +1512,7 @@ downloaded into the agent."
"Fetch ARTICLES from GROUP and put them into the Agent."
(when articles
(gnus-agent-load-alist group)
- (let* ((alist gnus-agent-article-alist)
+ (let* ((alist gnus-agent-article-alist)
(headers (if (< (length articles) 2) nil gnus-newsgroup-headers))
(selected-sets (list nil))
(current-set-size 0)
@@ -1556,9 +1554,9 @@ downloaded into the agent."
;; 65 char/line. If the line count
;; is missing, arbitrarily assume a
;; size of 1000 characters.
- (max (* 65 (mail-header-lines
- (car headers)))
- 1000)
+ (max (* 65 (mail-header-lines
+ (car headers)))
+ 1000)
char-size))
0))))
(setcar selected-sets (nreverse (car selected-sets)))
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 8d8aaa0e36..a76a71be64 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -1,7 +1,6 @@
;;; gnus-art.el --- article mode commands for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
@@ -169,7 +168,7 @@ If `gnus-visible-headers' is non-nil, this variable will be ignored."
:group 'gnus-article-hiding)
(defcustom gnus-visible-headers
- "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^[BGF]?Cc:\\|^Posted-To:\\|^Mail-Copies-To:\\|^Mail-Followup-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-From:\\|^X-Sent:"
+ "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^[BGF]?Cc:\\|^Posted-To:\\|^Mail-Copies-To:\\|^Mail-Followup-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-From:"
"*All headers that do not match this regexp will be hidden.
This variable can also be a list of regexp of headers to remain visible.
If this variable is non-nil, `gnus-ignored-headers' will be ignored."
@@ -1015,14 +1014,55 @@ on parts -- for instance, adding Vcard info to a database."
:group 'gnus-article-mime
:type '(repeat (cons :format "%v" (string :tag "MIME type") function)))
-(defcustom gnus-article-date-lapsed-new-header nil
- "Whether the X-Sent and Date headers can coexist.
-When using `gnus-treat-date-lapsed', the \"X-Sent:\" header will
-either replace the old \"Date:\" header (if this variable is nil), or
-be added below it (otherwise)."
- :version "21.1"
+(defcustom gnus-article-date-headers
+ (let ((types '(ut local english lapsed combined-lapsed
+ iso8601 original user-defined))
+ default)
+ ;; Try to respect the legacy `gnus-treat-date-*' variables, if
+ ;; they're set.
+ (dolist (type types)
+ (let ((variable (intern (format "gnus-treat-date-%s" type))))
+ (when (and (boundp variable)
+ (symbol-value variable))
+ (push type default))))
+ (when (and (or (not (boundp (intern "gnus-article-date-lapsed-new-header")))
+ (not (symbol-value (intern "gnus-article-date-lapsed-new-header"))))
+ (memq 'lapsed default))
+ (setq default (delq 'lapsed default)))
+ (or default
+ ;; If they weren't set, we default to `combined-lapsed'.
+ '(combined-lapsed)))
+ "A list of Date header formats to display.
+Valid formats are `ut' (universal time), `local' (local time
+zone), `english' (readable English), `lapsed' (elapsed time),
+`combined-lapsed' (both the original date and the elapsed time),
+`original' (the original date header), `iso8601' (ISO8601
+format), and `user-defined' (a user-defined format defined by the
+`gnus-article-time-format' variable).
+
+You have as many date headers as you want in the article buffer.
+Some of these headers are updated automatically. See
+`gnus-article-update-date-headers' for details."
+ :version "24.1"
:group 'gnus-article-headers
- :type 'boolean)
+ :type '(repeat
+ (item :tag "Universal time (UT)" :value 'ut)
+ (item :tag "Local time zone" :value 'local)
+ (item :tag "Readable English" :value 'english)
+ (item :tag "Elapsed time" :value 'lapsed)
+ (item :tag "Original and elapsed time" :value 'combined-lapsed)
+ (item :tag "Original date header" :value 'original)
+ (item :tag "ISO8601 format" :value 'iso8601)
+ (item :tag "User-defined" :value 'user-defined)))
+
+(defcustom gnus-article-update-date-headers 1
+ "How often to update the date header.
+If nil, don't update it at all."
+ :version "24.1"
+ :group 'gnus-article-headers
+ :type '(choice
+ (item :tag "Don't update" :value nil)
+ integer))
(defcustom gnus-article-mime-match-handle-function 'undisplayed-alternative
"Function called with a MIME handle as the argument.
@@ -1127,6 +1167,15 @@ predicate. See Info node `(gnus)Customizing Articles'."
:type gnus-article-treat-head-custom)
(put 'gnus-treat-buttonize-head 'highlight t)
+(defcustom gnus-treat-date 'head
+ "Display dates according to the `gnus-article-date-headers' variable.
+Valid values are nil, t, `head', `first', `last', an integer or a
+predicate. See Info node `(gnus)Customizing Articles'."
+ :version "24.1"
+ :group 'gnus-article-treat
+ :link '(custom-manual "(gnus)Customizing Articles")
+ :type gnus-article-treat-head-custom)
+
(defcustom gnus-treat-emphasize 50000
"Emphasize text.
Valid values are nil, t, `head', `first', `last', an integer or a
@@ -1258,65 +1307,6 @@ predicate. See Info node `(gnus)Customizing Articles'."
:type gnus-article-treat-custom)
(put 'gnus-treat-highlight-citation 'highlight t)
-(defcustom gnus-treat-date-ut nil
- "Display the Date in UT (GMT).
-Valid values are nil, t, `head', `first', `last', an integer or a
-predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-head-custom)
-
-(defcustom gnus-treat-date-local nil
- "Display the Date in the local timezone.
-Valid values are nil, t, `head', `first', `last', an integer or a
-predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-head-custom)
-
-(defcustom gnus-treat-date-english nil
- "Display the Date in a format that can be read aloud in English.
-Valid values are nil, t, `head', `first', `last', an integer or a
-predicate. See Info node `(gnus)Customizing Articles'."
- :version "22.1"
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-head-custom)
-
-(defcustom gnus-treat-date-lapsed nil
- "Display the Date header in a way that says how much time has elapsed.
-Valid values are nil, t, `head', `first', `last', an integer or a
-predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-head-custom)
-
-(defcustom gnus-treat-date-original nil
- "Display the date in the original timezone.
-Valid values are nil, t, `head', `first', `last', an integer or a
-predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-head-custom)
-
-(defcustom gnus-treat-date-iso8601 nil
- "Display the date in the ISO8601 format.
-Valid values are nil, t, `head', `first', `last', an integer or a
-predicate. See Info node `(gnus)Customizing Articles'."
- :version "21.1"
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-head-custom)
-
-(defcustom gnus-treat-date-user-defined nil
- "Display the date in a user-defined format.
-The format is defined by the `gnus-article-time-format' variable.
-Valid values are nil, t, `head', `first', `last', an integer or a
-predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-head-custom)
-
(defcustom gnus-treat-strip-headers-in-body t
"Strip the X-No-Archive header line from the beginning of the body.
Valid values are nil, t, `head', `first', `last', an integer or a
@@ -1594,6 +1584,7 @@ predicate. See Info node `(gnus)Customizing Articles'."
"Fill long lines.
Valid values are nil, t, `head', `first', `last', an integer or a
predicate. See Info node `(gnus)Customizing Articles'."
+ :version "24.1"
:group 'gnus-article-treat
:link '(custom-manual "(gnus)Customizing Articles")
:type gnus-article-treat-custom)
@@ -1673,13 +1664,6 @@ regexp."
(gnus-treat-fill-long-lines gnus-article-fill-cited-long-lines)
(gnus-treat-strip-cr gnus-article-remove-cr)
(gnus-treat-unsplit-urls gnus-article-unsplit-urls)
- (gnus-treat-date-ut gnus-article-date-ut)
- (gnus-treat-date-local gnus-article-date-local)
- (gnus-treat-date-english gnus-article-date-english)
- (gnus-treat-date-original gnus-article-date-original)
- (gnus-treat-date-user-defined gnus-article-date-user)
- (gnus-treat-date-iso8601 gnus-article-date-iso8601)
- (gnus-treat-date-lapsed gnus-article-date-lapsed)
(gnus-treat-display-x-face gnus-article-display-x-face)
(gnus-treat-display-face gnus-article-display-face)
(gnus-treat-hide-headers gnus-article-maybe-hide-headers)
@@ -1691,6 +1675,7 @@ regexp."
(gnus-treat-mail-picon gnus-treat-mail-picon)
(gnus-treat-newsgroups-picon gnus-treat-newsgroups-picon)
(gnus-treat-strip-pem gnus-article-hide-pem)
+ (gnus-treat-date gnus-article-treat-date)
(gnus-treat-from-gravatar gnus-treat-from-gravatar)
(gnus-treat-mail-gravatar gnus-treat-mail-gravatar)
(gnus-treat-highlight-headers gnus-article-highlight-headers)
@@ -2274,19 +2259,23 @@ unfolded."
"Remove all images from the article buffer."
(interactive)
(gnus-with-article-buffer
- (dolist (elem gnus-article-image-alist)
- (gnus-delete-images (car elem)))))
+ (save-restriction
+ (widen)
+ (dolist (elem gnus-article-image-alist)
+ (gnus-delete-images (car elem))))))
(defun gnus-article-show-images ()
"Show any images that are in the HTML-rendered article buffer.
This only works if the article in question is HTML."
(interactive)
(gnus-with-article-buffer
- (dolist (region (gnus-find-text-property-region (point-min) (point-max)
- 'image-displayer))
- (destructuring-bind (start end function) region
- (funcall function (get-text-property start 'image-url)
- start end)))))
+ (save-restriction
+ (widen)
+ (dolist (region (gnus-find-text-property-region (point-min) (point-max)
+ 'image-displayer))
+ (destructuring-bind (start end function) region
+ (funcall function (get-text-property start 'image-url)
+ start end))))))
(defun gnus-article-treat-fold-newsgroups ()
"Unfold folded message headers.
@@ -3419,84 +3408,70 @@ lines forward."
(forward-line 1)
(setq ended t)))))
-(defun article-date-ut (&optional type highlight)
- "Convert DATE date to universal time in the current article.
-If TYPE is `local', convert to local time; if it is `lapsed', output
-how much time has lapsed since DATE. For `lapsed', the value of
-`gnus-article-date-lapsed-new-header' says whether the \"X-Sent:\" header
-should replace the \"Date:\" one, or should be added below it."
+(defun article-treat-date ()
+ (article-date-ut gnus-article-date-headers t))
+
+(defun article-date-ut (&optional type highlight date-position)
+ "Convert DATE date to TYPE in the current article.
+The default type is `ut'. See `gnus-article-date-headers' for
+possible values."
(interactive (list 'ut t))
- (let* ((tdate-regexp "^Date:[ \t]\\|^X-Sent:[ \t]")
- (date-regexp (cond ((not gnus-article-date-lapsed-new-header)
- tdate-regexp)
- ((eq type 'lapsed)
- "^X-Sent:[ \t]")
- (article-lapsed-timer
- "^Date:[ \t]")
- (t
- tdate-regexp)))
- (case-fold-search t)
+ (let* ((case-fold-search t)
(inhibit-read-only t)
(inhibit-point-motion-hooks t)
+ (first t)
pos date bface eface)
(save-excursion
(save-restriction
- (widen)
(goto-char (point-min))
- (while (or (setq date (get-text-property (setq pos (point))
- 'original-date))
- (when (setq pos (next-single-property-change
- (point) 'original-date))
- (setq date (get-text-property pos 'original-date))
- t))
- (narrow-to-region
- pos (if (setq pos (text-property-any pos (point-max)
- 'original-date nil))
- (progn
- (goto-char pos)
- (if (or (bolp) (eobp))
- (point)
- (1+ (point))))
- (point-max)))
- (goto-char (point-min))
- (when (re-search-forward tdate-regexp nil t)
- (setq bface (get-text-property (point-at-bol) 'face)
- eface (get-text-property (1- (point-at-eol)) 'face)))
- (goto-char (point-min))
- (setq pos nil)
- ;; Delete any old Date headers.
- (while (re-search-forward date-regexp nil t)
- (if pos
- (delete-region (point-at-bol) (progn
- (gnus-article-forward-header)
- (point)))
- (delete-region (point-at-bol) (progn
- (gnus-article-forward-header)
- (forward-char -1)
- (point)))
- (setq pos (point))))
- (when (and (not pos)
- (re-search-forward tdate-regexp nil t))
- (forward-line 1))
- (gnus-goto-char pos)
- (insert (article-make-date-line date (or type 'ut)))
- (unless pos
- (insert "\n")
- (forward-line -1))
- ;; Do highlighting.
- (beginning-of-line)
- (when (looking-at "\\([^:]+\\): *\\(.*\\)$")
- (put-text-property (match-beginning 1) (1+ (match-end 1))
- 'face bface)
- (put-text-property (match-beginning 2) (match-end 2)
- 'face eface))
- (put-text-property (point-min) (1- (point-max)) 'original-date date)
- (goto-char (point-max))
- (widen))))))
+ (when (re-search-forward "^Date:" nil t)
+ (setq bface (get-text-property (point-at-bol) 'face)
+ eface (get-text-property (1- (point-at-eol)) 'face)))
+ (goto-char (point-min))
+ ;; Delete any old Date headers.
+ (if date-position
+ (progn
+ (goto-char date-position)
+ (setq date (get-text-property (point) 'original-date))
+ (delete-region (point)
+ (progn
+ (gnus-article-forward-header)
+ (point)))
+ (article-transform-date date type bface eface))
+ (while (re-search-forward "^Date:" nil t)
+ (setq date (get-text-property (match-beginning 0) 'original-date))
+ (delete-region (point-at-bol) (progn
+ (gnus-article-forward-header)
+ (point))))
+ (article-transform-date date type bface eface))))))
+
+(defun article-transform-date (date type bface eface)
+ (dolist (this-type (cond
+ ((null type)
+ (list 'ut))
+ ((atom type)
+ (list type))
+ (t
+ type)))
+ (insert (article-make-date-line date (or this-type 'ut)) "\n")
+ (forward-line -1)
+ (beginning-of-line)
+ (put-text-property (point) (1+ (point))
+ 'original-date date)
+ (put-text-property (point) (1+ (point))
+ 'gnus-date-type this-type)
+ ;; Do highlighting.
+ (when (looking-at "\\([^:]+\\): *\\(.*\\)$")
+ (put-text-property (match-beginning 1) (1+ (match-end 1))
+ 'face bface)
+ (put-text-property (match-beginning 2) (match-end 2)
+ 'face eface))
+ (forward-line 1)))
(defun article-make-date-line (date type)
"Return a DATE line of TYPE."
- (unless (memq type '(local ut original user iso8601 lapsed english))
+ (unless (memq type '(local ut original user-defined iso8601 lapsed english
+ combined-lapsed))
(error "Unknown conversion type: %s" type))
(condition-case ()
(let ((time (date-to-time date)))
@@ -3524,7 +3499,7 @@ should replace the \"Date:\" one, or should be added below it."
(substring date 0 (match-beginning 0))
date)))
;; Let the user define the format.
- ((eq type 'user)
+ ((eq type 'user-defined)
(let ((format (or (condition-case nil
(with-current-buffer gnus-summary-buffer
gnus-article-time-format)
@@ -3542,49 +3517,25 @@ should replace the \"Date:\" one, or should be added below it."
(format "%s%02d%02d"
(if (> tz 0) "+" "-") (/ (abs tz) 3600)
(/ (% (abs tz) 3600) 60)))))
- ;; Do an X-Sent lapsed format.
+ ;; Do a lapsed format.
((eq type 'lapsed)
- ;; If the date is seriously mangled, the timezone functions are
- ;; liable to bug out, so we ignore all errors.
- (let* ((now (current-time))
- (real-time (subtract-time now time))
- (real-sec (and real-time
- (+ (* (float (car real-time)) 65536)
- (cadr real-time))))
- (sec (and real-time (abs real-sec)))
- num prev)
- (cond
- ((null real-time)
- "X-Sent: Unknown")
- ((zerop sec)
- "X-Sent: Now")
- (t
- (concat
- "X-Sent: "
- ;; This is a bit convoluted, but basically we go
- ;; through the time units for years, weeks, etc,
- ;; and divide things to see whether that results
- ;; in positive answers.
- (mapconcat
- (lambda (unit)
- (if (zerop (setq num (ffloor (/ sec (cdr unit)))))
- ;; The (remaining) seconds are too few to
- ;; be divided into this time unit.
- ""
- ;; It's big enough, so we output it.
- (setq sec (- sec (* num (cdr unit))))
- (prog1
- (concat (if prev ", " "") (int-to-string
- (floor num))
- " " (symbol-name (car unit))
- (if (> num 1) "s" ""))
- (setq prev t))))
- article-time-units "")
- ;; If dates are odd, then it might appear like the
- ;; article was sent in the future.
- (if (> real-sec 0)
- " ago"
- " in the future"))))))
+ (concat "Date: " (article-lapsed-string time)))
+ ;; A combined date/lapsed format.
+ ((eq type 'combined-lapsed)
+ (let ((date-string (article-make-date-line date 'original))
+ (segments 3)
+ lapsed-string)
+ (while (and
+ (setq lapsed-string
+ (concat " (" (article-lapsed-string time segments) ")"))
+ (> (+ (length date-string)
+ (length lapsed-string))
+ (+ fill-column 6))
+ (> segments 0))
+ (setq segments (1- segments)))
+ (if (> segments 0)
+ (concat date-string lapsed-string)
+ date-string)))
;; Display the date in proper English
((eq type 'english)
(let ((dtime (decode-time time)))
@@ -3606,9 +3557,56 @@ should replace the \"Date:\" one, or should be added below it."
(format "%02d" (nth 2 dtime))
":"
(format "%02d" (nth 1 dtime)))))))
- (error
+ (foo
(format "Date: %s (from Gnus)" date))))
+(defun article-lapsed-string (time &optional max-segments)
+ ;; If the date is seriously mangled, the timezone functions are
+ ;; liable to bug out, so we ignore all errors.
+ (let* ((now (current-time))
+ (real-time (subtract-time now time))
+ (real-sec (and real-time
+ (+ (* (float (car real-time)) 65536)
+ (cadr real-time))))
+ (sec (and real-time (abs real-sec)))
+ (segments 0)
+ num prev)
+ (unless max-segments
+ (setq max-segments (length article-time-units)))
+ (cond
+ ((null real-time)
+ "Unknown")
+ ((zerop sec)
+ "Now")
+ (t
+ (concat
+ ;; This is a bit convoluted, but basically we go
+ ;; through the time units for years, weeks, etc,
+ ;; and divide things to see whether that results
+ ;; in positive answers.
+ (mapconcat
+ (lambda (unit)
+ (if (or (zerop (setq num (ffloor (/ sec (cdr unit)))))
+ (>= segments max-segments))
+ ;; The (remaining) seconds are too few to
+ ;; be divided into this time unit.
+ ""
+ ;; It's big enough, so we output it.
+ (setq sec (- sec (* num (cdr unit))))
+ (prog1
+ (concat (if prev ", " "") (int-to-string
+ (floor num))
+ " " (symbol-name (car unit))
+ (if (> num 1) "s" ""))
+ (setq prev t
+ segments (1+ segments)))))
+ article-time-units "")
+ ;; If dates are odd, then it might appear like the
+ ;; article was sent in the future.
+ (if (> real-sec 0)
+ " ago"
+ " in the future"))))))
+
(defun article-date-local (&optional highlight)
"Convert the current article date to the local timezone."
(interactive (list t))
@@ -3631,26 +3629,42 @@ function and want to see what the date was before converting."
(interactive (list t))
(article-date-ut 'lapsed highlight))
+(defun article-date-combined-lapsed (&optional highlight)
+ "Convert the current article date to time lapsed since it was sent."
+ (interactive (list t))
+ (article-date-ut 'combined-lapsed highlight))
+
(defun article-update-date-lapsed ()
"Function to be run from a timer to update the lapsed time line."
(save-match-data
- (let (deactivate-mark)
- (save-excursion
- (ignore-errors
- (walk-windows
- (lambda (w)
- (set-buffer (window-buffer w))
- (when (eq major-mode 'gnus-article-mode)
- (let ((mark (point-marker)))
- (goto-char (point-min))
- (when (re-search-forward "^X-Sent:" nil t)
- (article-date-lapsed t))
- (goto-char (marker-position mark))
- (move-marker mark nil))))
- nil 'visible))))))
+ (let ((buffer (current-buffer)))
+ (ignore-errors
+ (walk-windows
+ (lambda (w)
+ (set-buffer (window-buffer w))
+ (when (eq major-mode 'gnus-article-mode)
+ (let ((old-line (count-lines (point-min) (point)))
+ (old-column (current-column)))
+ (goto-char (point-min))
+ (while (re-search-forward "^Date:" nil t)
+ (let ((type (get-text-property (match-beginning 0) 'gnus-date-type)))
+ (when (memq type '(lapsed combined-lapsed user-format))
+ (save-excursion
+ (article-date-ut type t (match-beginning 0)))
+ (forward-line 1))))
+ (goto-char (point-min))
+ (when (> old-column 0)
+ (setq old-line (1- old-line)))
+ (forward-line old-line)
+ (end-of-line)
+ (when (> (current-column) old-column)
+ (beginning-of-line)
+ (forward-char old-column)))))
+ nil 'visible))
+ (set-buffer buffer))))
(defun gnus-start-date-timer (&optional n)
- "Start a timer to update the X-Sent header in the article buffers.
+ "Start a timer to update the Date headers in the article buffers.
The numerical prefix says how frequently (in seconds) the function
is to run."
(interactive "p")
@@ -3661,7 +3675,7 @@ is to run."
(run-at-time 1 n 'article-update-date-lapsed)))
(defun gnus-stop-date-timer ()
- "Stop the X-Sent timer."
+ "Stop the Date timer."
(interactive)
(when article-lapsed-timer
(nnheader-cancel-timer article-lapsed-timer)
@@ -4286,12 +4300,14 @@ If variable `gnus-use-long-file-name' is non-nil, it is
article-date-english
article-date-iso8601
article-date-original
+ article-treat-date
article-date-ut
article-decode-mime-words
article-decode-charset
article-decode-encoded-words
article-date-user
article-date-lapsed
+ article-date-combined-lapsed
article-emphasize
article-treat-dumbquotes
article-treat-non-ascii
@@ -4412,7 +4428,6 @@ commands:
(gnus-update-format-specifications nil 'article-mode)
(set (make-local-variable 'page-delimiter) gnus-page-delimiter)
(set (make-local-variable 'gnus-page-broken) nil)
- (make-local-variable 'gnus-button-marker-list)
(make-local-variable 'gnus-article-current-summary)
(make-local-variable 'gnus-article-mime-handles)
(make-local-variable 'gnus-article-decoded-p)
@@ -4435,10 +4450,6 @@ commands:
(mm-enable-multibyte)
(gnus-run-mode-hooks 'gnus-article-mode-hook))
-(defvar gnus-button-marker-list nil
- "Regexp matching any of the regexps from `gnus-button-alist'.
-Internal variable.")
-
(defun gnus-article-setup-buffer ()
"Initialize the article buffer."
(let* ((name (if gnus-single-article-buffer "*Article*"
@@ -4482,8 +4493,6 @@ Internal variable.")
(setq gnus-article-mime-handle-alist nil)
(buffer-disable-undo)
(setq buffer-read-only t)
- ;; This list just keeps growing if we don't reset it.
- (setq gnus-button-marker-list nil)
(unless (eq major-mode 'gnus-article-mode)
(gnus-article-mode))
(setq truncate-lines gnus-article-truncate-lines)
@@ -4495,6 +4504,9 @@ Internal variable.")
(setq gnus-summary-buffer
(gnus-summary-buffer-name gnus-newsgroup-name))
(gnus-summary-set-local-parameters gnus-newsgroup-name)
+ (when (and gnus-article-update-date-headers
+ (not article-lapsed-timer))
+ (gnus-start-date-timer gnus-article-update-date-headers))
(current-buffer)))))
;; Set article window start at LINE, where LINE is the number of lines
@@ -5255,15 +5267,7 @@ Compressed files like .gz and .bz2 are decompressed."
(if (mm-handle-undisplayer handle)
(mm-remove-part handle))))
(forward-line 2)
- (mm-insert-inline
- handle
- (if (or coding-system
- (and charset
- (setq coding-system
- (mm-charset-to-coding-system charset))
- (not (eq coding-system 'ascii))))
- (mm-decode-coding-string contents coding-system)
- (mm-string-to-multibyte contents)))
+ (mm-display-inline handle)
(goto-char b)))))
(defun gnus-mime-set-charset-parameters (handle charset)
@@ -5907,18 +5911,7 @@ If displaying \"text/html\" is discouraged \(see
(forward-line -1)
(setq beg (point)))
(gnus-article-insert-newline)
- (mm-insert-inline
- handle
- (let ((charset (or (mail-content-type-get (mm-handle-type handle)
- 'charset)
- (and (equal type "text/calendar") 'utf-8))))
- (cond ((not charset)
- (mm-string-as-multibyte (mm-get-part handle)))
- ((eq charset 'gnus-decoded)
- (with-current-buffer (mm-handle-buffer handle)
- (buffer-string)))
- (t
- (mm-decode-string (mm-get-part handle) charset)))))
+ (mm-display-inline handle)
(goto-char (point-max))))
;; Do highlighting.
(save-excursion
@@ -6289,7 +6282,7 @@ Argument LINES specifies lines to be scrolled up."
(save-excursion
(end-of-line)
(and (pos-visible-in-window-p) ;Not continuation line.
- (>= (1+ (point)) (point-max))))) ;Allow for trailing newline.
+ (>= (point) (point-max)))))
;; Nothing in this page.
(if (or (not gnus-page-broken)
(save-excursion
@@ -6453,6 +6446,8 @@ not have a face in `gnus-article-boring-faces'."
(ding)
(unless (member keys nosave-in-article)
(set-buffer gnus-article-current-summary))
+ (when (get func 'disabled)
+ (error "Function %s disabled" func))
(call-interactively func)
(setq new-sum-point (point)))
(when (member keys nosave-but-article)
@@ -6481,8 +6476,11 @@ not have a face in `gnus-article-boring-faces'."
(select-window win))))
(setq in-buffer (current-buffer))
;; We disable the pick minor mode commands.
- (if (and (setq func (let (gnus-pick-mode)
- (key-binding keys t)))
+ (setq func (let (gnus-pick-mode)
+ (key-binding keys t)))
+ (when (get func 'disabled)
+ (error "Function %s disabled" func))
+ (if (and func
(functionp func)
(condition-case code
(progn
@@ -7489,17 +7487,17 @@ positives are possible."
;; Info links like `C-h i d m Gnus RET' or `C-h i d m Gnus RET i partial RET'
0 (>= gnus-button-emacs-level 1) gnus-button-handle-info-keystrokes 0)
;; This is custom
- ("M-x[ \t\n]\\(customize-[^ ]+\\)[ \t\n]RET[ \t\n]\\([^ ]+\\)[ \t\n]RET" 0
+ ("M-x[ \t\n]\\(customize-[^ ]+\\)[ \t\n]RET[ \t\n]\\([^ ]+\\)[ \t\n]RET\\>" 0
(>= gnus-button-emacs-level 1) gnus-button-handle-custom 1 2)
;; Emacs help commands
- ("M-x[ \t\n]+apropos[ \t\n]+RET[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET"
+ ("M-x[ \t\n]+apropos[ \t\n]+RET[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET\\>"
;; regexp doesn't match arguments containing ` '.
0 (>= gnus-button-emacs-level 1) gnus-button-handle-apropos 1)
- ("M-x[ \t\n]+apropos-command[ \t\n]+RET[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET"
+ ("M-x[ \t\n]+apropos-command[ \t\n]+RET[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET\\>"
0 (>= gnus-button-emacs-level 1) gnus-button-handle-apropos-command 1)
- ("M-x[ \t\n]+apropos-variable[ \t\n]+RET[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET"
+ ("M-x[ \t\n]+apropos-variable[ \t\n]+RET[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET\\>"
0 (>= gnus-button-emacs-level 1) gnus-button-handle-apropos-variable 1)
- ("M-x[ \t\n]+apropos-documentation[ \t\n]+RET[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET"
+ ("M-x[ \t\n]+apropos-documentation[ \t\n]+RET[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET\\>"
0 (>= gnus-button-emacs-level 1) gnus-button-handle-apropos-documentation 1)
;; The following entries may lead to many false positives so don't enable
;; them by default (use a high button level).
@@ -7514,11 +7512,11 @@ positives are possible."
0 (>= gnus-button-emacs-level 9) gnus-button-handle-symbol 1)
("(setq[ \t\n]+\\([a-z][a-z0-9]+-[-a-z0-9]+\\)[ \t\n]+.+)"
1 (>= gnus-button-emacs-level 7) gnus-button-handle-describe-variable 1)
- ("\\bM-x[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET"
+ ("\\bM-x[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET\\>"
1 (>= gnus-button-emacs-level 7) gnus-button-handle-describe-function 1)
- ("\\b\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+f[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET"
+ ("\\b\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+f[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET\\>"
0 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-function 2)
- ("\\b\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+v[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET"
+ ("\\b\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+v[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET\\>"
0 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-variable 2)
("`\\(\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+k[ \t\n]+\\([^']+\\)\\)'"
;; Unlike the other regexps we really have to require quoting
@@ -7657,7 +7655,7 @@ do the highlighting. See the documentation for those functions."
(gnus-article-highlight-headers)
(gnus-article-highlight-citation force)
(gnus-article-highlight-signature)
- (gnus-article-add-buttons force)
+ (gnus-article-add-buttons)
(gnus-article-add-buttons-to-head))
(defun gnus-article-highlight-some (&optional force)
@@ -7725,28 +7723,16 @@ It does this by highlighting everything after
"Say whether PROP exists in the region."
(text-property-not-all b e prop nil))
-(defun gnus-article-add-buttons (&optional force)
+(defun gnus-article-add-buttons ()
"Find external references in the article and make buttons of them.
\"External references\" are things like Message-IDs and URLs, as
specified by `gnus-button-alist'."
- (interactive (list 'force))
+ (interactive)
(gnus-with-article-buffer
(let ((inhibit-point-motion-hooks t)
(case-fold-search t)
(alist gnus-button-alist)
beg entry regexp)
- ;; Remove all old markers.
- (let (marker entry new-list)
- (while (setq marker (pop gnus-button-marker-list))
- (if (or (< marker (point-min)) (>= marker (point-max)))
- (push marker new-list)
- (goto-char marker)
- (when (setq entry (gnus-button-entry))
- (put-text-property (match-beginning (nth 1 entry))
- (match-end (nth 1 entry))
- 'gnus-callback nil))
- (set-marker marker nil)))
- (setq gnus-button-marker-list new-list))
;; We skip the headers.
(article-goto-body)
(setq beg (point))
@@ -7757,18 +7743,16 @@ specified by `gnus-button-alist'."
(let ((start (match-beginning (nth 1 entry)))
(end (match-end (nth 1 entry)))
(from (match-beginning 0)))
- (when (and (or (eq t (nth 2 entry))
- (eval (nth 2 entry)))
+ (when (and (eval (nth 2 entry))
(not (gnus-button-in-region-p
start end 'gnus-callback)))
;; That optional form returned non-nil, so we add the
;; button.
(setq from (set-marker (make-marker) from))
- (push from gnus-button-marker-list)
(unless (and (eq (car entry) 'gnus-button-url-regexp)
(gnus-article-extend-url-button from start end))
(gnus-article-add-button start end
- 'gnus-button-push from)
+ 'gnus-button-push (list from entry))
(gnus-put-text-property
start end
'gnus-string (buffer-substring-no-properties
@@ -7915,41 +7899,38 @@ url is put as the `gnus-button-url' overlay property on the button."
(let ((gnus-article-mime-handle-alist-1 gnus-article-mime-handle-alist))
(gnus-set-mode-line 'article))))
-(defun gnus-button-entry ()
- ;; Return the first entry in `gnus-button-alist' matching this place.
- (let ((alist gnus-button-alist)
- (entry nil))
- (while alist
- (setq entry (pop alist))
- (if (looking-at (eval (car entry)))
- (setq alist nil)
- (setq entry nil)))
- entry))
-
-(defun gnus-button-push (marker)
+(defun gnus-button-push (marker-and-entry)
;; Push button starting at MARKER.
(save-excursion
- (goto-char marker)
- (let* ((entry (gnus-button-entry))
- (inhibit-point-motion-hooks t)
- (fun (nth 3 entry))
- (args (or (and (eq (car entry) 'gnus-button-url-regexp)
- (get-char-property marker 'gnus-button-url))
- (mapcar (lambda (group)
- (let ((string (match-string group)))
- (set-text-properties
- 0 (length string) nil string)
- string))
- (nthcdr 4 entry)))))
- (cond
- ((fboundp fun)
- (apply fun args))
- ((and (boundp fun)
- (fboundp (symbol-value fun)))
- (apply (symbol-value fun) args))
- (t
- (gnus-message 1 "You must define `%S' to use this button"
- (cons fun args)))))))
+ (let* ((marker (car marker-and-entry))
+ (entry (cadr marker-and-entry))
+ (regexp (car entry))
+ (inhibit-point-motion-hooks t))
+ (goto-char marker)
+ ;; This is obviously true, or something bad is happening :)
+ ;; But we need it to have the match-data
+ (when (looking-at (or (if (symbolp regexp)
+ (symbol-value regexp)
+ regexp)))
+ (let ((fun (nth 3 entry))
+ (args (or (and (eq (car entry) 'gnus-button-url-regexp)
+ (get-char-property marker 'gnus-button-url))
+ (mapcar (lambda (group)
+ (let ((string (match-string group)))
+ (set-text-properties
+ 0 (length string) nil string)
+ string))
+ (nthcdr 4 entry)))))
+
+ (cond
+ ((fboundp fun)
+ (apply fun args))
+ ((and (boundp fun)
+ (fboundp (symbol-value fun)))
+ (apply (symbol-value fun) args))
+ (t
+ (gnus-message 1 "You must define `%S' to use this button"
+ (cons fun args)))))))))
(defun gnus-parse-news-url (url)
(let (scheme server port group message-id articles)
@@ -8060,7 +8041,7 @@ url is put as the `gnus-button-url' overlay property on the button."
(if (string-match
(concat "\\b\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+i[ \t\n]+d?[ \t\n]?m[ \t\n]+"
"\\([^ ]+ ?[^ ]+\\)[ \t\n]+RET"
- "\\([ \t\n]+i[ \t\n]+[^ ]+ ?[^ ]+[ \t\n]+RET"
+ "\\([ \t\n]+i[ \t\n]+[^ ]+ ?[^ ]+[ \t\n]+RET\\>"
"\\(?:[ \t\n,]*\\)\\)?")
url)
(setq node (match-string 2 url)
@@ -8070,7 +8051,7 @@ url is put as the `gnus-button-url' overlay property on the button."
(Info-directory)
(Info-menu node)
(when (> (length indx) 0)
- (string-match (concat "[ \t\n]+i[ \t\n]+\\([^ ]+ ?[^ ]+\\)[ \t\n]+RET"
+ (string-match (concat "[ \t\n]+i[ \t\n]+\\([^ ]+ ?[^ ]+\\)[ \t\n]+RET\\>"
"\\([ \t\n,]*\\)")
indx)
(setq comma (match-string 2 indx))
@@ -8086,6 +8067,7 @@ url is put as the `gnus-button-url' overlay property on the button."
(Info-index-next 1)))
nil)))
+(autoload 'pgg-snarf-keys-region "pgg")
;; Called after pgg-snarf-keys-region, which autoloads pgg.el.
(declare-function pgg-display-output-buffer "pgg" (start end status))
diff --git a/lisp/gnus/gnus-async.el b/lisp/gnus/gnus-async.el
index 9bb28f3a05..b7e24b8dcf 100644
--- a/lisp/gnus/gnus-async.el
+++ b/lisp/gnus/gnus-async.el
@@ -1,7 +1,6 @@
;;; gnus-async.el --- asynchronous support for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/gnus-bcklg.el b/lisp/gnus/gnus-bcklg.el
index 6823332880..d3fee3538b 100644
--- a/lisp/gnus/gnus-bcklg.el
+++ b/lisp/gnus/gnus-bcklg.el
@@ -1,7 +1,6 @@
;;; gnus-bcklg.el --- backlog functions for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/gnus-bookmark.el b/lisp/gnus/gnus-bookmark.el
index 1fcbf352f1..f86c94571a 100644
--- a/lisp/gnus/gnus-bookmark.el
+++ b/lisp/gnus/gnus-bookmark.el
@@ -1,7 +1,6 @@
;;; gnus-bookmark.el --- Bookmarks in Gnus
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Bastien Guerry <bzg AT altern DOT org>
;; Keywords: news
diff --git a/lisp/gnus/gnus-cache.el b/lisp/gnus/gnus-cache.el
index 50ab1c64a2..203368f76e 100644
--- a/lisp/gnus/gnus-cache.el
+++ b/lisp/gnus/gnus-cache.el
@@ -1,7 +1,6 @@
;;; gnus-cache.el --- cache interface for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/gnus-cite.el b/lisp/gnus/gnus-cite.el
index aa719076e3..d205437b81 100644
--- a/lisp/gnus/gnus-cite.el
+++ b/lisp/gnus/gnus-cite.el
@@ -1,7 +1,6 @@
;;; gnus-cite.el --- parse citations in articles for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Per Abhiddenware
diff --git a/lisp/gnus/gnus-cus.el b/lisp/gnus/gnus-cus.el
index 6da91bdc26..2f99abba22 100644
--- a/lisp/gnus/gnus-cus.el
+++ b/lisp/gnus/gnus-cus.el
@@ -1,7 +1,6 @@
;;; gnus-cus.el --- customization commands for Gnus
-;; Copyright (C) 1996, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1999-2011 Free Software Foundation, Inc.
;; Author: Per Abrahamsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/gnus-delay.el b/lisp/gnus/gnus-delay.el
index a257e5495a..a06a510ecd 100644
--- a/lisp/gnus/gnus-delay.el
+++ b/lisp/gnus/gnus-delay.el
@@ -1,7 +1,6 @@
;;; gnus-delay.el --- Delayed posting of articles
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Kai Gro�johann <[email protected]>
;; Keywords: mail, news, extensions
diff --git a/lisp/gnus/gnus-demon.el b/lisp/gnus/gnus-demon.el
index ad40117b44..2a45b9363f 100644
--- a/lisp/gnus/gnus-demon.el
+++ b/lisp/gnus/gnus-demon.el
@@ -1,7 +1,6 @@
;;; gnus-demon.el --- daemonic Gnus behavior
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/gnus-diary.el b/lisp/gnus/gnus-diary.el
index c2b95c7099..0b5a7ebf1f 100644
--- a/lisp/gnus/gnus-diary.el
+++ b/lisp/gnus/gnus-diary.el
@@ -1,7 +1,6 @@
;;; gnus-diary.el --- Wrapper around the NNDiary Gnus back end
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Didier Verna <[email protected]>
;; Maintainer: Didier Verna <[email protected]>
diff --git a/lisp/gnus/gnus-dired.el b/lisp/gnus/gnus-dired.el
index 8b6d3911e1..c38b0cd360 100644
--- a/lisp/gnus/gnus-dired.el
+++ b/lisp/gnus/gnus-dired.el
@@ -1,7 +1,6 @@
;;; gnus-dired.el --- utility functions where gnus and dired meet
-;; Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2001-2011 Free Software Foundation, Inc.
;; Authors: Benjamin Rutt <[email protected]>,
;; Shenghuo Zhu <[email protected]>
diff --git a/lisp/gnus/gnus-draft.el b/lisp/gnus/gnus-draft.el
index e397a701da..78ef713c40 100644
--- a/lisp/gnus/gnus-draft.el
+++ b/lisp/gnus/gnus-draft.el
@@ -1,7 +1,6 @@
;;; gnus-draft.el --- draft message support for Gnus
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
@@ -69,7 +68,8 @@
(gnus-draft-mode
;; Set up the menu.
(when (gnus-visual-p 'draft-menu 'menu)
- (gnus-draft-make-menu-bar)))))
+ (gnus-draft-make-menu-bar))
+ (add-hook 'gnus-summary-prepare-exit-hook 'gnus-draft-clear-marks t t))))
;;; Commands
@@ -221,7 +221,8 @@ Obeys the standard process/prefix convention."
(let ((message-sending-message
(format "Sending message %d of %d..."
(- total (length articles)) total)))
- (gnus-draft-send article))))))))
+ (gnus-draft-send article))))))
+ (gnus-group-refresh-group "nndraft:queue")))
;;;###autoload
(defun gnus-draft-reminder ()
@@ -325,6 +326,12 @@ Obeys the standard process/prefix convention."
(pop-to-buffer buff t)))
(error "The draft %s is under edit" file)))))
+(defun gnus-draft-clear-marks ()
+ (setq gnus-newsgroup-reads nil
+ gnus-newsgroup-marked nil
+ gnus-newsgroup-unreads
+ (gnus-uncompress-range (gnus-active gnus-newsgroup-name))))
+
(provide 'gnus-draft)
;;; gnus-draft.el ends here
diff --git a/lisp/gnus/gnus-dup.el b/lisp/gnus/gnus-dup.el
index be909ccd79..eaecc07d76 100644
--- a/lisp/gnus/gnus-dup.el
+++ b/lisp/gnus/gnus-dup.el
@@ -1,7 +1,6 @@
;;; gnus-dup.el --- suppression of duplicate articles in Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/gnus-eform.el b/lisp/gnus/gnus-eform.el
index 96b645686e..4075e7a762 100644
--- a/lisp/gnus/gnus-eform.el
+++ b/lisp/gnus/gnus-eform.el
@@ -1,7 +1,6 @@
;;; gnus-eform.el --- a mode for editing forms for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/gnus-ems.el b/lisp/gnus/gnus-ems.el
index d7d9076712..bc85e4960d 100644
--- a/lisp/gnus/gnus-ems.el
+++ b/lisp/gnus/gnus-ems.el
@@ -1,7 +1,6 @@
;;; gnus-ems.el --- functions for making Gnus work under different Emacsen
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/gnus-fun.el b/lisp/gnus/gnus-fun.el
index 0f28bf5e5e..cb495623af 100644
--- a/lisp/gnus/gnus-fun.el
+++ b/lisp/gnus/gnus-fun.el
@@ -1,6 +1,6 @@
;;; gnus-fun.el --- various frivolous extension functions to Gnus
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/gnus-gravatar.el b/lisp/gnus/gnus-gravatar.el
index 1bd64e9533..7208889a16 100644
--- a/lisp/gnus/gnus-gravatar.el
+++ b/lisp/gnus/gnus-gravatar.el
@@ -1,6 +1,6 @@
;;; gnus-gravatar.el --- Gnus Gravatar support
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Julien Danjou <[email protected]>
;; Keywords: news
@@ -54,9 +54,10 @@ If nil, default to `gravatar-size'."
(defun gnus-gravatar-transform-address (header category &optional force)
(gnus-with-article-headers
(let* ((mail-extr-disable-voodoo t)
+ (mail-extr-ignore-realname-equals-mailbox-name nil)
(addresses (mail-extract-address-components
(or (mail-fetch-field header) "") t))
- (gravatar-size gnus-gravatar-size)
+ (gravatar-size (or gnus-gravatar-size gravatar-size))
name)
(dolist (address addresses)
(when (and (setq name (car address))
@@ -79,37 +80,44 @@ If nil, default to `gravatar-size'."
"Insert GRAVATAR for ADDRESS in HEADER in current article buffer.
Set image category to CATEGORY."
(unless (eq gravatar 'error)
- (gnus-with-article-headers
- ;; The buffer can be gone at this time
- (when (buffer-live-p (current-buffer))
- (gnus-article-goto-header header)
- (mail-header-narrow-to-field)
- (let ((real-name (car address))
- (mail-address (cadr address)))
- (when (if real-name
- (re-search-forward
- (concat (gnus-replace-in-string
- (regexp-quote real-name) "[\t ]+" "[\t\n ]+")
- "\\|"
- (regexp-quote mail-address))
- nil t)
- (search-forward mail-address nil t))
- (goto-char (1- (match-beginning 0)))
- ;; If we're on the " quoting the name, go backward
- (when (looking-at "[\"<]")
- (goto-char (1- (point))))
- ;; Do not do anything if there's already a gravatar. This can
- ;; happens if the buffer has been regenerated in the mean time, for
- ;; example we were fetching someaddress, and then we change to
- ;; another mail with the same someaddress.
- (unless (memq 'gnus-gravatar (text-properties-at (point)))
- (let ((point (point)))
- (unless (featurep 'xemacs)
- (setq gravatar (append gravatar gnus-gravatar-properties)))
- (gnus-put-image gravatar nil category)
- (put-text-property point (point) 'gnus-gravatar address)
- (gnus-add-wash-type category)
- (gnus-add-image category gravatar)))))))))
+ (with-current-buffer gnus-article-buffer
+ (let ((mark (point-marker))
+ (inhibit-read-only t)
+ (inhibit-point-motion-hooks t)
+ (case-fold-search t))
+ (save-restriction
+ (article-narrow-to-head)
+ ;; The buffer can be gone at this time
+ (when (buffer-live-p (current-buffer))
+ (gnus-article-goto-header header)
+ (mail-header-narrow-to-field)
+ (let ((real-name (car address))
+ (mail-address (cadr address)))
+ (when (if real-name
+ (re-search-forward
+ (concat (gnus-replace-in-string
+ (regexp-quote real-name) "[\t ]+" "[\t\n ]+")
+ "\\|"
+ (regexp-quote mail-address))
+ nil t)
+ (search-forward mail-address nil t))
+ (goto-char (1- (match-beginning 0)))
+ ;; If we're on the " quoting the name, go backward
+ (when (looking-at "[\"<]")
+ (goto-char (1- (point))))
+ ;; Do not do anything if there's already a gravatar. This can
+ ;; happens if the buffer has been regenerated in the mean time, for
+ ;; example we were fetching someaddress, and then we change to
+ ;; another mail with the same someaddress.
+ (unless (memq 'gnus-gravatar (text-properties-at (point)))
+ (let ((point (point)))
+ (unless (featurep 'xemacs)
+ (setq gravatar (append gravatar gnus-gravatar-properties)))
+ (gnus-put-image gravatar (buffer-substring (point) (1+ point)) category)
+ (put-text-property point (point) 'gnus-gravatar address)
+ (gnus-add-wash-type category)
+ (gnus-add-image category gravatar)))))))
+ (goto-char (marker-position mark))))))
;;;###autoload
(defun gnus-treat-from-gravatar (&optional force)
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 5ece145716..30cd1275e7 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -1,7 +1,6 @@
;;; gnus-group.el --- group mode commands for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
@@ -1677,6 +1676,13 @@ and ends at END."
" "))
" "))
+
+(defun gnus-group-refresh-group (group)
+ (gnus-activate-group group)
+ (gnus-get-unread-articles-in-group (gnus-get-info group)
+ (gnus-active group))
+ (gnus-group-update-group group))
+
(defun gnus-group-update-group (group &optional visible-only)
"Update all lines where GROUP appear.
If VISIBLE-ONLY is non-nil, the group won't be displayed if it isn't
@@ -2461,7 +2467,7 @@ If PROMPT (the prefix) is a number, use the prompt specified in
`gnus-group-jump-to-group-prompt'."
(interactive
(list (gnus-group-completing-read
- nil nil (gnus-read-active-file-p)
+ nil nil nil
(if current-prefix-arg
(cdr (assq current-prefix-arg gnus-group-jump-to-group-prompt))
(or (and (stringp gnus-group-jump-to-group-prompt)
@@ -2734,6 +2740,15 @@ server."
(lambda (group)
(gnus-group-delete-group group nil t))))))
+(defun gnus-group-delete-articles (group)
+ "Delete all articles in the current group."
+ (interactive (list (gnus-group-group-name)))
+ (let ((articles (gnus-uncompress-range (gnus-active group))))
+ (when (gnus-yes-or-no-p
+ (format "Do you really want to delete these %d articles forever? "
+ (length articles)))
+ (gnus-request-expire-articles articles group 'force))))
+
(defun gnus-group-delete-group (group &optional force no-prompt)
"Delete the current group. Only meaningful with editable groups.
If FORCE (the prefix) is non-nil, all the articles in the group will
@@ -3781,6 +3796,8 @@ of groups killed."
gnus-list-of-killed-groups))
(gnus-group-change-level
(if entry entry group) gnus-level-killed (if entry nil level))
+ (when (numberp (gnus-group-unread group))
+ (gnus-request-update-group-status group 'unsubscribe))
(message "Killed group %s" (gnus-group-decoded-name group)))
;; If there are lots and lots of groups to be killed, we use
;; this thing instead.
@@ -3803,7 +3820,9 @@ of groups killed."
(setq gnus-zombie-list (delete group gnus-zombie-list))))
;; There may be more than one instance displayed.
(while (gnus-group-goto-group group)
- (gnus-delete-line)))
+ (gnus-delete-line))
+ (when (numberp (gnus-group-unread group))
+ (gnus-request-update-group-status group 'unsubscribe)))
(gnus-make-hashtable-from-newsrc-alist))
(gnus-group-position-point)
@@ -3831,6 +3850,7 @@ yanked) a list of yanked groups is returned."
(and prev (gnus-group-entry prev))
t)
(gnus-group-insert-group-line-info group)
+ (gnus-request-update-group-status group 'subscribe)
(gnus-undo-register
`(when (gnus-group-goto-group ,group)
(gnus-group-kill-group 1))))
diff --git a/lisp/gnus/gnus-html.el b/lisp/gnus/gnus-html.el
index 63a14b204f..7c0d63fb24 100644
--- a/lisp/gnus/gnus-html.el
+++ b/lisp/gnus/gnus-html.el
@@ -1,6 +1,6 @@
;;; gnus-html.el --- Render HTML in a buffer.
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: html, web
@@ -395,7 +395,7 @@ Use ALT-TEXT for the image string."
4)
(setq args (nconc args (list t))))
(ignore-errors
- (apply #'url-retrieve args))))
+ (push (apply #'url-retrieve args) gnus-buffers))))
(defun gnus-html-image-fetched (status buffer image)
"Callback function called when image has been fetched."
diff --git a/lisp/gnus/gnus-int.el b/lisp/gnus/gnus-int.el
index 4328454012..a67063bb97 100644
--- a/lisp/gnus/gnus-int.el
+++ b/lisp/gnus/gnus-int.el
@@ -1,7 +1,6 @@
;;; gnus-int.el --- backend interface functions for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
@@ -473,6 +472,18 @@ If FETCH-OLD, retrieve all headers (or some subset thereof) in the group."
(funcall (gnus-get-function gnus-command-method 'request-type)
(gnus-group-real-name group) article))))
+(defun gnus-request-update-group-status (group status)
+ "Change the status of a group.
+Valid statuses include `subscribe' and `unsubscribe'."
+ (let ((gnus-command-method (gnus-find-method-for-group group)))
+ (if (not (gnus-check-backend-function
+ 'request-update-group-status (car gnus-command-method)))
+ nil
+ (funcall
+ (gnus-get-function gnus-command-method 'request-update-group-status)
+ (gnus-group-real-name group) status
+ (nth 1 gnus-command-method)))))
+
(defun gnus-request-set-mark (group action)
"Set marks on articles in the back end."
(let ((gnus-command-method (gnus-find-method-for-group group)))
@@ -627,8 +638,7 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned."
(when (gnus-check-backend-function
'request-marks (car gnus-command-method))
(let ((group (gnus-info-group info)))
- (and (funcall (gnus-get-function gnus-command-method
- 'request-update-info)
+ (and (funcall (gnus-get-function gnus-command-method 'request-marks)
(gnus-group-real-name group)
info (nth 1 gnus-command-method))
;; If the minimum article number is greater than 1, then all
@@ -699,7 +709,9 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned."
(if (stringp group) (gnus-group-real-name group) group)
(cadr gnus-command-method)
last)))
- (when (and gnus-agent (gnus-agent-method-p gnus-command-method))
+ (when (and gnus-agent
+ (gnus-agent-method-p gnus-command-method)
+ (cdr result))
(gnus-agent-regenerate-group group (list (cdr result))))
result))
diff --git a/lisp/gnus/gnus-kill.el b/lisp/gnus/gnus-kill.el
index 17a6266c9b..fdbe125ff1 100644
--- a/lisp/gnus/gnus-kill.el
+++ b/lisp/gnus/gnus-kill.el
@@ -1,7 +1,6 @@
;;; gnus-kill.el --- kill commands for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Masanobu UMEDA <[email protected]>
;; Lars Magne Ingebrigtsen <[email protected]>
diff --git a/lisp/gnus/gnus-logic.el b/lisp/gnus/gnus-logic.el
index 9637ebfb38..51b44e6052 100644
--- a/lisp/gnus/gnus-logic.el
+++ b/lisp/gnus/gnus-logic.el
@@ -1,7 +1,6 @@
;;; gnus-logic.el --- advanced scoring code for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/gnus-mh.el b/lisp/gnus/gnus-mh.el
index 7df4b46629..1c9d31ab6c 100644
--- a/lisp/gnus/gnus-mh.el
+++ b/lisp/gnus/gnus-mh.el
@@ -1,7 +1,6 @@
;;; gnus-mh.el --- mh-e interface for Gnus
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-2011 Free Software Foundation, Inc.
;; Author: Masanobu UMEDA <[email protected]>
;; Lars Magne Ingebrigtsen <[email protected]>
diff --git a/lisp/gnus/gnus-ml.el b/lisp/gnus/gnus-ml.el
index 5c42ef515f..d99680f592 100644
--- a/lisp/gnus/gnus-ml.el
+++ b/lisp/gnus/gnus-ml.el
@@ -1,7 +1,6 @@
;;; gnus-ml.el --- Mailing list minor mode for Gnus
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Julien Gilles <[email protected]>
;; Keywords: news, mail
diff --git a/lisp/gnus/gnus-mlspl.el b/lisp/gnus/gnus-mlspl.el
index 509e391480..ccc145b7e2 100644
--- a/lisp/gnus/gnus-mlspl.el
+++ b/lisp/gnus/gnus-mlspl.el
@@ -1,7 +1,6 @@
;;; gnus-mlspl.el --- a group params-based mail splitting mechanism
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Alexandre Oliva <[email protected]>
;; Keywords: news, mail
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el
index d77abfa1c6..08fef2327a 100644
--- a/lisp/gnus/gnus-msg.el
+++ b/lisp/gnus/gnus-msg.el
@@ -1,7 +1,6 @@
;;; gnus-msg.el --- mail and post interface for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Masanobu UMEDA <[email protected]>
;; Lars Magne Ingebrigtsen <[email protected]>
@@ -243,10 +242,10 @@ See also the `mml-default-sign-method' variable."
:group 'gnus-message
:type 'boolean)
-(defcustom gnus-message-replyencrypt
- nil
+(defcustom gnus-message-replyencrypt t
"Automatically encrypt replies to encrypted messages.
See also the `mml-default-encrypt-method' variable."
+ :version "24.1"
:group 'gnus-message
:type 'boolean)
@@ -476,7 +475,7 @@ Thank you for your help in stamping out bugs.
;;;###autoload
(defun gnus-msg-mail (&optional to subject other-headers continue
- switch-action yank-action send-actions)
+ switch-action yank-action send-actions return-action)
"Start editing a mail message to be sent.
Like `message-mail', but with Gnus paraphernalia, particularly the
Gcc: header for archiving purposes."
@@ -485,7 +484,7 @@ Gcc: header for archiving purposes."
mail-buf)
(gnus-setup-message 'message
(message-mail to subject other-headers continue
- nil yank-action send-actions))
+ nil yank-action send-actions return-action))
(when switch-action
(setq mail-buf (current-buffer))
(switch-to-buffer buf)
diff --git a/lisp/gnus/gnus-picon.el b/lisp/gnus/gnus-picon.el
index d24f04e021..dc6feeec0a 100644
--- a/lisp/gnus/gnus-picon.el
+++ b/lisp/gnus/gnus-picon.el
@@ -1,7 +1,6 @@
;;; gnus-picon.el --- displaying pretty icons in Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news xpm annotation glyph faces
diff --git a/lisp/gnus/gnus-range.el b/lisp/gnus/gnus-range.el
index a4262df532..794d1642cd 100644
--- a/lisp/gnus/gnus-range.el
+++ b/lisp/gnus/gnus-range.el
@@ -1,7 +1,6 @@
;;; gnus-range.el --- range and sequence functions for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index 79080f21b7..cef173ce1e 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -1,7 +1,6 @@
;;; gnus-registry.el --- article registry for Gnus
-;;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Ted Zlatanov <[email protected]>
;; Keywords: news registry
diff --git a/lisp/gnus/gnus-salt.el b/lisp/gnus/gnus-salt.el
index a72d594a38..43a8eba4be 100644
--- a/lisp/gnus/gnus-salt.el
+++ b/lisp/gnus/gnus-salt.el
@@ -1,7 +1,6 @@
;;; gnus-salt.el --- alternate summary mode interfaces for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/gnus-score.el b/lisp/gnus/gnus-score.el
index a9c666e246..e376b7a7b6 100644
--- a/lisp/gnus/gnus-score.el
+++ b/lisp/gnus/gnus-score.el
@@ -1,7 +1,6 @@
;;; gnus-score.el --- scoring code for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Per Abrahamsen <[email protected]>
;; Lars Magne Ingebrigtsen <[email protected]>
diff --git a/lisp/gnus/gnus-setup.el b/lisp/gnus/gnus-setup.el
index d5578ff693..bd7c3a77c3 100644
--- a/lisp/gnus/gnus-setup.el
+++ b/lisp/gnus/gnus-setup.el
@@ -1,7 +1,6 @@
;;; gnus-setup.el --- Initialization & Setup for Gnus 5
-;; Copyright (C) 1995, 1996, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-1996, 2000-2011 Free Software Foundation, Inc.
;; Author: Steven L. Baur <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/gnus-sieve.el b/lisp/gnus/gnus-sieve.el
index a7ddbf08f7..376dd4277a 100644
--- a/lisp/gnus/gnus-sieve.el
+++ b/lisp/gnus/gnus-sieve.el
@@ -1,6 +1,6 @@
;;; gnus-sieve.el --- Utilities to manage sieve scripts for Gnus
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: NAGY Andras <[email protected]>,
;; Simon Josefsson <[email protected]>
diff --git a/lisp/gnus/gnus-spec.el b/lisp/gnus/gnus-spec.el
index 31e440e22d..4682f51247 100644
--- a/lisp/gnus/gnus-spec.el
+++ b/lisp/gnus/gnus-spec.el
@@ -1,7 +1,6 @@
;;; gnus-spec.el --- format spec functions for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/gnus-srvr.el b/lisp/gnus/gnus-srvr.el
index 19fd5fe663..9bf2d37a3e 100644
--- a/lisp/gnus/gnus-srvr.el
+++ b/lisp/gnus/gnus-srvr.el
@@ -1,7 +1,6 @@
;;; gnus-srvr.el --- virtual server support for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
@@ -766,7 +765,8 @@ claim them."
(with-current-buffer nntp-server-buffer
(let ((cur (current-buffer)))
(goto-char (point-min))
- (unless (string= gnus-ignored-newsgroups "")
+ (unless (or (null gnus-ignored-newsgroups)
+ (string= gnus-ignored-newsgroups ""))
(delete-matching-lines gnus-ignored-newsgroups))
;; We treat NNTP as a special case to avoid problems with
;; garbage group names like `"foo' that appear in some badly
@@ -992,7 +992,8 @@ how new groups will be entered into the group buffer."
;; mechanism for new group subscription.
(gnus-call-subscribe-functions
gnus-browse-subscribe-newsgroup-method
- group)))
+ group)
+ (gnus-request-update-group-status group 'subscribe)))
(delete-char 1)
(insert (let ((lvl (gnus-group-level group)))
(cond
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index 8663d67fd0..3879df3c4b 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -1,7 +1,6 @@
;;; gnus-start.el --- startup functions for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
@@ -86,14 +85,6 @@ If a file with the `.el' or `.elc' suffixes exists, it will be read instead."
:group 'gnus-start
:type '(choice file (const nil)))
-(defcustom gnus-default-subscribed-newsgroups nil
- "List of newsgroups to subscribe, when a user runs Gnus the first time.
-The value should be a list of strings.
-If it is t, Gnus will not do anything special the first time it is
-started; it'll just use the normal newsgroups subscription methods."
- :group 'gnus-start
- :type '(choice (repeat string) (const :tag "Nothing special" t)))
-
(defcustom gnus-use-dribble-file t
"*Non-nil means that Gnus will use a dribble file to store user updates.
If Emacs should crash without saving the .newsrc files, complete
@@ -341,8 +332,17 @@ hierarchy in its entirety."
:group 'gnus-group-new
:type 'boolean)
+(defcustom gnus-auto-subscribed-categories '(mail post-mail)
+ "*New groups from methods of these categories will be subscribed automatically.
+Note that this variable only deals with new groups. It has no
+effect whatsoever on old groups. The default is to automatically
+subscribe all groups from mail-like backends."
+ :version "24.1"
+ :group 'gnus-group-new
+ :type '(repeat symbol))
+
(defcustom gnus-auto-subscribed-groups
- "^nnml\\|^nnfolder\\|^nnmbox\\|^nnmh\\|^nnbabyl\\|^nnmaildir"
+ "^nnml\\|^nnfolder\\|^nnmbox\\|^nnmh\\|^nnbabyl\\|^nnmaildir\\|^nnimap"
"*All new groups that match this regexp will be subscribed automatically.
Note that this variable only deals with new groups. It has no effect
whatsoever on old groups.
@@ -644,6 +644,7 @@ the first newsgroup."
(gnus-group-change-level
newsgroup gnus-level-default-subscribed
gnus-level-killed (gnus-group-entry (or next "dummy.group")))
+ (gnus-request-update-group-status newsgroup 'subscribe)
(gnus-message 5 "Subscribe newsgroup: %s" newsgroup)
(run-hook-with-args 'gnus-subscribe-newsgroup-hooks newsgroup)
t))
@@ -784,10 +785,9 @@ prompt the user for the name of an NNTP server to use."
(gnus-start-news-server (and arg (not level))))))
(if (and (not dont-connect)
(not did-connect))
+ ;; Couldn't connect to the server, so bail out.
(gnus-group-quit)
(gnus-run-hooks 'gnus-startup-hook)
- ;; NNTP server is successfully open.
-
;; Find the current startup file name.
(setq gnus-current-startup-file
(gnus-make-newsrc-file gnus-startup-file))
@@ -797,11 +797,10 @@ prompt the user for the name of an NNTP server to use."
(gnus-dribble-read-file))
;; Do the actual startup.
- (if gnus-agent
- (gnus-request-create-group "queue" '(nndraft "")))
- (gnus-request-create-group "drafts" '(nndraft ""))
(gnus-setup-news nil level dont-connect)
(gnus-run-hooks 'gnus-setup-news-hook)
+ (when gnus-agent
+ (gnus-request-create-group "queue" '(nndraft "")))
(gnus-start-draft-setup)
;; Generate the group buffer.
(gnus-group-list-groups level)
@@ -816,10 +815,10 @@ prompt the user for the name of an NNTP server to use."
(gnus-request-create-group "drafts" '(nndraft ""))
(unless (gnus-group-entry "nndraft:drafts")
(let ((gnus-level-default-subscribed 1))
- (gnus-subscribe-group "nndraft:drafts" nil '(nndraft ""))))
+ (gnus-subscribe-group "nndraft:drafts" nil '(nndraft "")))
+ (setcar (gnus-group-entry "nndraft:drafts") 0))
(unless (equal (gnus-group-get-parameter "nndraft:drafts" 'gnus-dummy t)
'((gnus-draft-mode)))
- (gnus-message 3 "Setting up drafts group")
(gnus-group-set-parameter
"nndraft:drafts" 'gnus-dummy '((gnus-draft-mode)))))
@@ -996,27 +995,8 @@ If LEVEL is non-nil, the news will be set up at level LEVEL."
(when (or (null gnus-read-active-file)
(eq gnus-read-active-file 'some))
(gnus-update-active-hashtb-from-killed))
-
- ;; Validate agent covered methods now that gnus-server-alist has
- ;; been initialized.
- ;; NOTE: This is here for one purpose only. By validating the
- ;; agentized server's, it converts the old 5.10.3, and earlier,
- ;; format to the current format. That enables the agent code
- ;; within gnus-read-active-file to function correctly.
- (if gnus-agent
- (gnus-agent-read-servers-validate))
-
- ;; Read the active file and create `gnus-active-hashtb'.
- ;; If `gnus-read-active-file' is nil, then we just create an empty
- ;; hash table. The partial filling out of the hash table will be
- ;; done in `gnus-get-unread-articles'.
- (and gnus-read-active-file
- (not level)
- (gnus-read-active-file nil dont-connect))
-
(unless gnus-active-hashtb
(setq gnus-active-hashtb (gnus-make-hashtable 4096)))
-
;; Initialize the cache.
(when gnus-use-cache
(gnus-cache-open))
@@ -1158,6 +1138,12 @@ for new groups, and subscribe the new groups as zombies."
((and gnus-options-subscribe
(string-match gnus-options-subscribe group))
'subscribe)
+ ((let ((do-subscribe nil))
+ (dolist (category gnus-auto-subscribed-categories)
+ (when (gnus-member-of-valid category group)
+ (setq do-subscribe t)))
+ do-subscribe)
+ 'subscribe)
((and gnus-auto-subscribed-groups
(string-match gnus-auto-subscribed-groups group))
'subscribe)
@@ -1522,7 +1508,7 @@ If SCAN, request a scan of that group as well."
(gnus-info-group info)))))
(gnus-activate-group (gnus-info-group info) nil t))
- ;; Allow backends to update marks,
+ ;; Allow backends to update marks,
(when gnus-use-backend-marks
(let ((method (inline (gnus-find-method-for-group
(gnus-info-group info)))))
@@ -1757,11 +1743,13 @@ If SCAN, request a scan of that group as well."
(cond
((and
(gnus-check-backend-function 'finish-retrieve-group-infos (car method))
+ infos
(or (not (gnus-agent-method-p method))
(gnus-online method)))
(gnus-finish-retrieve-group-infos method infos early-data)
(gnus-agent-save-active method))
- ((gnus-check-backend-function 'retrieve-groups (car method))
+ ((and (gnus-check-backend-function 'retrieve-groups (car method))
+ infos)
(when (gnus-check-backend-function 'request-scan (car method))
(gnus-request-scan nil method))
(let (groups)
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 1bb4b4a689..3b003b7462 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -1,7 +1,6 @@
;;; gnus-sum.el --- summary mode commands for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
@@ -360,7 +359,7 @@ first subject), `unread' (place point on the subject line of the first
unread article), `best' (place point on the subject line of the
higest-scored article), `unseen' (place point on the subject line of
the first unseen article), `unseen-or-unread' (place point on the subject
-line of the first unseen article or, if all article have been seen, on the
+line of the first unseen article or, if all articles have been seen, on the
subject line of the first unread article), or a function to be called to
place point on some subject line."
:version "24.1"
@@ -3940,11 +3939,9 @@ If NO-DISPLAY, don't generate a summary buffer."
(gnus-group-jump-to-group group)
(gnus-group-next-unread-group 1))
(gnus-handle-ephemeral-exit quit-config)))
- (let ((grpinfo (gnus-get-info group)))
- (if (null (gnus-info-read grpinfo))
- (gnus-message 3 "Group %s contains no messages"
- (gnus-group-decoded-name group))
- (gnus-message 3 "Can't select group")))
+ (if (null (gnus-list-of-unread-articles group))
+ (gnus-message 3 "Group %s contains no messages" group)
+ (gnus-message 3 "Can't select group"))
nil)
;; The user did a `C-g' while prompting for number of articles,
;; so we exit this group.
@@ -5545,7 +5542,8 @@ If SELECT-ARTICLES, only select those articles from GROUP."
(mm-decode-coding-string group charset)
(mm-decode-coding-string (gnus-status-message group) charset)))
- (when gnus-agent
+ (when (and gnus-agent
+ (gnus-active group))
(gnus-agent-possibly-alter-active group (gnus-active group) info)
(setq gnus-summary-use-undownloaded-faces
@@ -5603,7 +5601,7 @@ If SELECT-ARTICLES, only select those articles from GROUP."
(setq gnus-newsgroup-processable nil)
- (gnus-update-read-articles group gnus-newsgroup-unreads)
+ (gnus-update-read-articles group gnus-newsgroup-unreads t)
;; Adjust and set lists of article marks.
(when info
@@ -7687,9 +7685,6 @@ If BACKWARD, the previous article is selected instead of the next."
(if (eq gnus-keep-same-level 'best)
(gnus-summary-best-group gnus-newsgroup-name)
(gnus-summary-search-group backward gnus-keep-same-level))))
- ;; For some reason, the group window gets selected. We change
- ;; it back.
- (select-window (get-buffer-window (current-buffer)))
;; Select next unread newsgroup automagically.
(cond
((or (not gnus-auto-select-next)
@@ -8868,30 +8863,27 @@ fetch what's specified by the `gnus-refer-thread-limit'
variable."
(interactive "P")
(gnus-warp-to-article)
- (let ((id (mail-header-id (gnus-summary-article-header)))
- (gnus-inhibit-demon t)
- (gnus-agent nil)
- (gnus-summary-ignore-duplicates t)
- (gnus-read-all-available-headers t)
- (limit (if limit (prefix-numeric-value limit)
- gnus-refer-thread-limit)))
+ (let* ((header (gnus-summary-article-header))
+ (id (mail-header-id header))
+ (gnus-inhibit-demon t)
+ (gnus-summary-ignore-duplicates t)
+ (gnus-read-all-available-headers t)
+ (limit (if limit (prefix-numeric-value limit)
+ gnus-refer-thread-limit)))
(setq gnus-newsgroup-headers
(gnus-merge
'list gnus-newsgroup-headers
(if (gnus-check-backend-function
'request-thread gnus-newsgroup-name)
- (gnus-request-thread (gnus-summary-article-header))
+ (gnus-request-thread header)
(let* ((last (if (numberp limit)
- (min (+ (mail-header-number
- (gnus-summary-article-header))
+ (min (+ (mail-header-number header)
limit)
gnus-newsgroup-highest)
gnus-newsgroup-highest))
(subject (gnus-simplify-subject
- (mail-header-subject
- (gnus-summary-article-header))))
- (refs (split-string (or (mail-header-references
- (gnus-summary-article-header))
+ (mail-header-subject header)))
+ (refs (split-string (or (mail-header-references header)
"")))
(gnus-parse-headers-hook
(lambda () (goto-char (point-min))
@@ -8982,8 +8974,11 @@ variable."
(defun gnus-summary-enter-digest-group (&optional force)
"Enter an nndoc group based on the current article.
-If FORCE, force a digest interpretation. If not, try
-to guess what the document format is."
+If FORCE, force a digest interpretation. If not, try to guess
+what the document format is.
+
+To control what happens when you exit the group, see the
+`gnus-auto-select-on-ephemeral-exit' variable."
(interactive "P")
(let ((conf gnus-current-window-configuration))
(save-window-excursion
@@ -9839,7 +9834,8 @@ ACTION can be either `move' (the default), `crosspost' or `copy'."
(unless (member to-group to-groups)
(push to-group to-groups))
- (unless (memq article gnus-newsgroup-unreads)
+ (when (and (not (memq article gnus-newsgroup-unreads))
+ (cdr art-group))
(push 'read to-marks)
(gnus-info-set-read
info (gnus-add-to-range (gnus-info-read info)
@@ -9856,14 +9852,16 @@ ACTION can be either `move' (the default), `crosspost' or `copy'."
;; Enter the article into the cache in the new group,
;; if that is required.
- (when gnus-use-cache
+ (when (and to-article
+ gnus-use-cache)
(gnus-cache-possibly-enter-article
to-group to-article
(memq article gnus-newsgroup-marked)
(memq article gnus-newsgroup-dormant)
(memq article gnus-newsgroup-unreads)))
- (when gnus-preserve-marks
+ (when (and gnus-preserve-marks
+ to-article)
;; Copy any marks over to the new group.
(when (and (equal to-group gnus-newsgroup-name)
(not (memq article gnus-newsgroup-unreads)))
@@ -9955,7 +9953,7 @@ ACTION can be either `move' (the default), `crosspost' or `copy'."
(defun gnus-summary-push-marks-to-backend (article)
(let ((set nil)
(marks gnus-article-mark-lists))
- (when (memq article gnus-newsgroup-unreads)
+ (unless (memq article gnus-newsgroup-unreads)
(push 'read set))
(while marks
(when (and (eq (gnus-article-mark-to-type (cdar marks)) 'list)
diff --git a/lisp/gnus/gnus-sync.el b/lisp/gnus/gnus-sync.el
index 8a492e8d2c..892b10a0d0 100644
--- a/lisp/gnus/gnus-sync.el
+++ b/lisp/gnus/gnus-sync.el
@@ -1,6 +1,6 @@
;;; gnus-sync.el --- synchronization facility for Gnus
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Ted Zlatanov <[email protected]>
;; Keywords: news synchronization nntp nnrss
diff --git a/lisp/gnus/gnus-topic.el b/lisp/gnus/gnus-topic.el
index e4afc7c2fb..f1a2ed43e2 100644
--- a/lisp/gnus/gnus-topic.el
+++ b/lisp/gnus/gnus-topic.el
@@ -1,7 +1,6 @@
;;; gnus-topic.el --- a folding minor mode for Gnus group buffers
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Ilja Weis <[email protected]>
;; Lars Magne Ingebrigtsen <[email protected]>
diff --git a/lisp/gnus/gnus-undo.el b/lisp/gnus/gnus-undo.el
index 5c45d3241d..5530c3d9a3 100644
--- a/lisp/gnus/gnus-undo.el
+++ b/lisp/gnus/gnus-undo.el
@@ -1,7 +1,6 @@
;;; gnus-undo.el --- minor mode for undoing in Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index fa4bf076a3..d298c71544 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -1,7 +1,6 @@
;;; gnus-util.el --- utility functions for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
@@ -39,6 +38,8 @@
(eval-when-compile
(require 'cl))
+(require 'time-date)
+
(defcustom gnus-completing-read-function 'gnus-emacs-completing-read
"Function use to do completing read."
:version "24.1"
@@ -332,10 +333,11 @@ Symbols are also allowed; their print names are used instead."
(and (= (car fdate) (car date))
(> (nth 1 fdate) (nth 1 date))))))
+;; Every version of Emacs Gnus supports has built-in float-time.
+;; The featurep test silences an irritating compiler warning.
(eval-and-compile
(if (or (featurep 'emacs)
- (and (fboundp 'float-time)
- (subrp (symbol-function 'float-time))))
+ (fboundp 'float-time))
(defalias 'gnus-float-time 'float-time)
(defun gnus-float-time (&optional time)
"Convert time value TIME to a floating point number.
diff --git a/lisp/gnus/gnus-uu.el b/lisp/gnus/gnus-uu.el
index d4f382a0c2..d6aad53902 100644
--- a/lisp/gnus/gnus-uu.el
+++ b/lisp/gnus/gnus-uu.el
@@ -1,7 +1,7 @@
;;; gnus-uu.el --- extract (uu)encoded files in Gnus
-;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1993-1998, 2000-2011
+;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Created: 2 Oct 1993
diff --git a/lisp/gnus/gnus-vm.el b/lisp/gnus/gnus-vm.el
index 9ca7813702..522f03c43c 100644
--- a/lisp/gnus/gnus-vm.el
+++ b/lisp/gnus/gnus-vm.el
@@ -1,7 +1,6 @@
;;; gnus-vm.el --- vm interface for Gnus
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-2011 Free Software Foundation, Inc.
;; Author: Per Persson <[email protected]>
;; Keywords: news, mail
diff --git a/lisp/gnus/gnus-win.el b/lisp/gnus/gnus-win.el
index 652d9fda94..156f9a020f 100644
--- a/lisp/gnus/gnus-win.el
+++ b/lisp/gnus/gnus-win.el
@@ -1,7 +1,6 @@
;;; gnus-win.el --- window configuration functions for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
@@ -39,9 +38,6 @@
:group 'gnus-windows
:type 'boolean)
-(defvar gnus-window-configuration nil
- "Obsolete variable. See `gnus-buffer-configuration'.")
-
(defcustom gnus-window-min-width 2
"*Minimum width of Gnus buffers."
:group 'gnus-windows
@@ -222,12 +218,6 @@ See the Gnus manual for an explanation of the syntax used.")
(delete-frame (car gnus-created-frames))))
(pop gnus-created-frames)))
-(defun gnus-window-configuration-element (list)
- (while (and list
- (not (assq (car list) gnus-window-configuration)))
- (pop list))
- (cadr (assq (car list) gnus-window-configuration)))
-
;;;###autoload
(defun gnus-add-configuration (conf)
"Add the window configuration CONF to `gnus-buffer-configuration'."
@@ -447,11 +437,7 @@ should have point."
type buffer win buf)
(while (and (setq split (pop stack))
all-visible)
- ;; Be backwards compatible.
- (when (vectorp split)
- (setq split (append split nil)))
- (when (or (consp (car split))
- (vectorp (car split)))
+ (when (consp (car split))
(push 1.0 split)
(push 'vertical split))
;; The SPLIT might be something that is to be evaled to
@@ -483,6 +469,7 @@ should have point."
all-visible)))
(defun gnus-window-top-edge (&optional window)
+ "Return the top coordinate of WINDOW."
(nth 1 (window-edges window)))
(defun gnus-remove-some-windows ()
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index b4f7f83618..47b772b78d 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -1,8 +1,7 @@
;;; gnus.el --- a newsreader for GNU Emacs
-;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, 1995, 1996, 1997,
-;; 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1987-1990, 1993-1998, 2000-2011
+;; Free Software Foundation, Inc.
;; Author: Masanobu UMEDA <[email protected]>
;; Lars Magne Ingebrigtsen <[email protected]>
diff --git a/lisp/gnus/gravatar.el b/lisp/gnus/gravatar.el
index 50b0ba1d63..0c97080d84 100644
--- a/lisp/gnus/gravatar.el
+++ b/lisp/gnus/gravatar.el
@@ -1,6 +1,6 @@
;;; gravatar.el --- Get Gravatars
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Julien Danjou <[email protected]>
;; Keywords: news
@@ -78,10 +78,11 @@
(defun gravatar-get-data ()
"Get data from current buffer."
- (when (string-match "^HTTP/.+ 200 OK$"
- (buffer-substring (point-min) (line-end-position)))
- (when (search-forward "\n\n" nil t)
- (buffer-substring (point) (point-max)))))
+ (save-excursion
+ (goto-char (point-min))
+ (when (re-search-forward "^HTTP/.+ 200 OK$" nil (line-end-position))
+ (when (search-forward "\n\n" nil t)
+ (buffer-substring (point) (point-max))))))
(eval-and-compile
(cond ((featurep 'xemacs)
@@ -98,7 +99,7 @@
If no image available, return 'error."
(let ((data (gravatar-get-data)))
(if data
- (gravatar-create-image data nil t)
+ (gravatar-create-image data nil t)
'error)))
;;;###autoload
@@ -107,9 +108,15 @@ If no image available, return 'error."
You can provide a list of argument to pass to CB in CBARGS."
(let ((url (gravatar-build-url mail-address)))
(if (gravatar-cache-expired url)
- (url-retrieve url
- 'gravatar-retrieved
- (list cb (when cbargs cbargs)))
+ (let ((args (list url
+ 'gravatar-retrieved
+ (list cb (when cbargs cbargs)))))
+ (when (> (length (if (featurep 'xemacs)
+ (cdr (split-string (function-arglist 'url-retrieve)))
+ (help-function-arglist 'url-retrieve)))
+ 4)
+ (setq args (nconc args (list t))))
+ (apply #'url-retrieve args))
(apply cb
(with-temp-buffer
(mm-disable-multibyte)
@@ -117,6 +124,23 @@ You can provide a list of argument to pass to CB in CBARGS."
(gravatar-data->image))
cbargs))))
+;;;###autoload
+(defun gravatar-retrieve-synchronously (mail-address)
+ "Retrieve MAIL-ADDRESS gravatar and returns it."
+ (let ((url (gravatar-build-url mail-address)))
+ (if (gravatar-cache-expired url)
+ (with-current-buffer (url-retrieve-synchronously url)
+ (when gravatar-automatic-caching
+ (url-store-in-cache (current-buffer)))
+ (let ((data (gravatar-data->image)))
+ (kill-buffer (current-buffer))
+ data))
+ (with-temp-buffer
+ (mm-disable-multibyte)
+ (url-cache-extract (url-cache-create-filename url))
+ (gravatar-data->image)))))
+
+
(defun gravatar-retrieved (status cb &optional cbargs)
"Callback function used by `gravatar-retrieve'."
;; Store gravatar?
diff --git a/lisp/gnus/html2text.el b/lisp/gnus/html2text.el
index 6411eb6256..0635ab0afc 100644
--- a/lisp/gnus/html2text.el
+++ b/lisp/gnus/html2text.el
@@ -1,6 +1,6 @@
;;; html2text.el --- a simple html to plain text converter
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Joakim Hove <[email protected]>
diff --git a/lisp/gnus/ietf-drums.el b/lisp/gnus/ietf-drums.el
index f72b09c572..4d99cea760 100644
--- a/lisp/gnus/ietf-drums.el
+++ b/lisp/gnus/ietf-drums.el
@@ -1,7 +1,6 @@
;;; ietf-drums.el --- Functions for parsing RFC822bis headers
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; This file is part of GNU Emacs.
diff --git a/lisp/gnus/legacy-gnus-agent.el b/lisp/gnus/legacy-gnus-agent.el
index 3b55220ace..6c6d119c0c 100644
--- a/lisp/gnus/legacy-gnus-agent.el
+++ b/lisp/gnus/legacy-gnus-agent.el
@@ -1,6 +1,6 @@
;;; gnus-agent.el --- Legacy unplugged support for Gnus
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Kevin Greiner <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/mail-parse.el b/lisp/gnus/mail-parse.el
index 53094960e1..06aac77648 100644
--- a/lisp/gnus/mail-parse.el
+++ b/lisp/gnus/mail-parse.el
@@ -1,7 +1,6 @@
;;; mail-parse.el --- Interface functions for parsing mail
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; This file is part of GNU Emacs.
diff --git a/lisp/gnus/mail-prsvr.el b/lisp/gnus/mail-prsvr.el
index fb63e58a04..b87656dab4 100644
--- a/lisp/gnus/mail-prsvr.el
+++ b/lisp/gnus/mail-prsvr.el
@@ -1,7 +1,6 @@
;;; mail-prsvr.el --- Interface variables for parsing mail
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; This file is part of GNU Emacs.
diff --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el
index 137a18f27e..f98c195ead 100644
--- a/lisp/gnus/mail-source.el
+++ b/lisp/gnus/mail-source.el
@@ -1,7 +1,6 @@
;;; mail-source.el --- functions for fetching mail
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news, mail
diff --git a/lisp/gnus/mailcap.el b/lisp/gnus/mailcap.el
index 36a710d58c..dffb279dab 100644
--- a/lisp/gnus/mailcap.el
+++ b/lisp/gnus/mailcap.el
@@ -1,7 +1,6 @@
;;; mailcap.el --- MIME media types configuration
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: William M. Perry <[email protected]>
;; Lars Magne Ingebrigtsen <[email protected]>
@@ -910,7 +909,8 @@ If NO-DECODE is non-nil, don't decode STRING."
(".zip" . "application/zip")
(".ai" . "application/postscript")
(".jpe" . "image/jpeg")
- (".jpeg" . "image/jpeg"))
+ (".jpeg" . "image/jpeg")
+ (".org" . "text/x-org"))
"An alist of file extensions and corresponding MIME content-types.
This exists for you to customize the information in Lisp. It is
merged with values from mailcap files by `mailcap-parse-mimetypes'.")
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 78652fb2ee..e7783ba013 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -1,7 +1,6 @@
;;; message.el --- composing mail and news messages
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: mail, news
@@ -1120,6 +1119,8 @@ It is a vector of the following headers:
(defvar message-checksum nil)
(defvar message-send-actions nil
"A list of actions to be performed upon successful sending of a message.")
+(defvar message-return-action nil
+ "Action to return to the caller after sending or postphoning a message.")
(defvar message-exit-actions nil
"A list of actions to be performed upon exiting after sending a message.")
(defvar message-kill-actions nil
@@ -1182,14 +1183,11 @@ called and its result is inserted."
(if (and (string-match "sparc-sun-sunos\\(\\'\\|[^5]\\)"
system-configuration)
(file-readable-p "/etc/sendmail.cf")
- (let ((buffer (get-buffer-create " *temp*")))
- (unwind-protect
- (with-current-buffer buffer
- (insert-file-contents "/etc/sendmail.cf")
- (goto-char (point-min))
- (let ((case-fold-search nil))
- (re-search-forward "^OR\\>" nil t)))
- (kill-buffer buffer))))
+ (with-temp-buffer
+ (insert-file-contents "/etc/sendmail.cf")
+ (goto-char (point-min))
+ (let ((case-fold-search nil))
+ (re-search-forward "^OR\\>" nil t))))
;; According to RFC822, "The field-name must be composed of printable
;; ASCII characters (i. e., characters that have decimal values between
;; 33 and 126, except colon)", i. e., any chars except ctl chars,
@@ -2863,6 +2861,7 @@ M-RET `message-newline-and-reformat' (break the line and reformat)."
(set (make-local-variable 'message-reply-buffer) nil)
(set (make-local-variable 'message-inserted-headers) nil)
(set (make-local-variable 'message-send-actions) nil)
+ (set (make-local-variable 'message-return-action) nil)
(set (make-local-variable 'message-exit-actions) nil)
(set (make-local-variable 'message-kill-actions) nil)
(set (make-local-variable 'message-postpone-actions) nil)
@@ -3955,11 +3954,9 @@ The text will also be indented the normal way."
(actions message-exit-actions))
(when (and (message-send arg)
(buffer-name buf))
+ (message-bury buf)
(if message-kill-buffer-on-exit
- (kill-buffer buf)
- (bury-buffer buf)
- (when (eq buf (current-buffer))
- (message-bury buf)))
+ (kill-buffer buf))
(message-do-actions actions)
t)))
@@ -4009,9 +4006,8 @@ Instead, just auto-save the buffer and then bury it."
"Bury this mail BUFFER."
(let ((newbuf (other-buffer buffer)))
(bury-buffer buffer)
- (if (and (window-dedicated-p (selected-window))
- (not (null (delq (selected-frame) (visible-frame-list)))))
- (delete-frame (selected-frame))
+ (if message-return-action
+ (apply (car message-return-action) (cdr message-return-action))
(switch-to-buffer newbuf))))
(defun message-send (&optional arg)
@@ -4131,7 +4127,6 @@ not have PROP."
(nreverse regions)))
(defcustom message-bogus-addresses
- ;; '("noreply" "nospam" "invalid")
'("noreply" "nospam" "invalid" "@@" "[^[:ascii:]].*@" "[ \t]")
"List of regexps of potentially bogus mail addresses.
See `message-check-recipients' how to setup checking.
@@ -4297,7 +4292,17 @@ This function could be useful in `message-setup-hook'."
(and bog
(not (y-or-n-p
(format
- "Address `%s' might be bogus. Continue? " bog)))
+ "Address `%s'%s might be bogus. Continue? "
+ bog
+ ;; If the encoded version of the email address
+ ;; is different from the unencoded version,
+ ;; then we likely have invisible characters or
+ ;; the like. Display the encoded version,
+ ;; too.
+ (let ((encoded (rfc2047-encode-string bog)))
+ (if (string= encoded bog)
+ ""
+ (format " (%s)" encoded))))))
(error "Bogus address"))))))))
(custom-add-option 'message-setup-hook 'message-check-recipients)
@@ -6304,11 +6309,11 @@ between beginning of field and beginning of line."
;; YANK-ACTION, if non-nil, can be a buffer or a yank action of the
;; form (FUNCTION . ARGS).
(defun message-setup (headers &optional yank-action actions
- continue switch-function)
+ continue switch-function return-action)
(let ((mua (message-mail-user-agent))
subject to field)
(if (not (and message-this-is-mail mua))
- (message-setup-1 headers yank-action actions)
+ (message-setup-1 headers yank-action actions return-action)
(setq headers (copy-sequence headers))
(setq field (assq 'Subject headers))
(when field
@@ -6356,11 +6361,12 @@ are not included."
(push header result)))
(nreverse result)))
-(defun message-setup-1 (headers &optional yank-action actions)
+(defun message-setup-1 (headers &optional yank-action actions return-action)
(dolist (action actions)
(condition-case nil
(add-to-list 'message-send-actions
`(apply ',(car action) ',(cdr action)))))
+ (setq message-return-action return-action)
(setq message-reply-buffer
(if (and (consp yank-action)
(eq (car yank-action) 'insert-buffer))
@@ -6489,9 +6495,9 @@ are not included."
;;;
;;;###autoload
-(defun message-mail (&optional to subject
- other-headers continue switch-function
- yank-action send-actions)
+(defun message-mail (&optional to subject other-headers continue
+ switch-function yank-action send-actions
+ return-action &rest ignored)
"Start editing a mail message to be sent.
OTHER-HEADERS is an alist of header/value pairs. CONTINUE says whether
to continue editing a message already being composed. SWITCH-FUNCTION
@@ -6511,8 +6517,15 @@ is a function used to switch to and display the mail buffer."
(message-setup
(nconc
`((To . ,(or to "")) (Subject . ,(or subject "")))
- (when other-headers other-headers))
- yank-action send-actions continue switch-function)
+ ;; C-h f compose-mail says that headers should be specified as
+ ;; (string . value); however all the rest of message expects
+ ;; headers to be symbols, not strings (eg message-header-format-alist).
+ ;; http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00337.html
+ ;; We need to convert any string input, eg from rmail-start-mail.
+ (dolist (h other-headers other-headers)
+ (if (stringp (car h)) (setcar h (intern (capitalize (car h)))))))
+ yank-action send-actions continue switch-function
+ return-action)
;; FIXME: Should return nil if failure.
t))
@@ -7642,24 +7655,22 @@ Pre-defined symbols include `message-tool-bar-gnome' and
(defcustom message-tool-bar-gnome
'((ispell-message "spell" nil
+ :vert-only t
:visible (or (not (boundp 'flyspell-mode))
(not flyspell-mode)))
(flyspell-buffer "spell" t
+ :vert-only t
:visible (and (boundp 'flyspell-mode)
flyspell-mode)
:help "Flyspell whole buffer")
- (gmm-ignore "separator")
- (message-send-and-exit "mail/send")
+ (message-send-and-exit "mail/send" t :label "Send")
(message-dont-send "mail/save-draft")
- (message-kill-buffer "close") ;; stock_cancel
- (mml-attach-file "attach" mml-mode-map)
+ (mml-attach-file "attach" mml-mode-map :vert-only t)
(mml-preview "mail/preview" mml-mode-map)
(mml-secure-message-sign-encrypt "lock" mml-mode-map :visible nil)
(message-insert-importance-high "important" nil :visible nil)
(message-insert-importance-low "unimportant" nil :visible nil)
- (message-insert-disposition-notification-to "receipt" nil :visible nil)
- (gmm-customize-mode "preferences" t :help "Edit mode preferences")
- (message-info "help" t :help "Message manual"))
+ (message-insert-disposition-notification-to "receipt" nil :visible nil))
"List of items for the message tool bar (GNOME style).
See `gmm-tool-bar-from-list' for details on the format of the list."
diff --git a/lisp/gnus/messcompat.el b/lisp/gnus/messcompat.el
index de67d8ce7e..c0c5125aee 100644
--- a/lisp/gnus/messcompat.el
+++ b/lisp/gnus/messcompat.el
@@ -1,7 +1,6 @@
;;; messcompat.el --- making message mode compatible with mail mode
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: mail, news
diff --git a/lisp/gnus/mm-bodies.el b/lisp/gnus/mm-bodies.el
index 5a70f33d95..9952f410f0 100644
--- a/lisp/gnus/mm-bodies.el
+++ b/lisp/gnus/mm-bodies.el
@@ -1,7 +1,6 @@
;;; mm-bodies.el --- Functions for decoding MIME things
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; MORIOKA Tomohiko <[email protected]>
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index 216ed6624d..d7bc882a84 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -1,7 +1,6 @@
;;; mm-decode.el --- Functions for decoding MIME things
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; MORIOKA Tomohiko <[email protected]>
@@ -237,7 +236,12 @@ before the external MIME handler is invoked."
(lambda (handle) (fboundp 'diff-mode)))
("application/emacs-lisp" mm-display-elisp-inline identity)
("application/x-emacs-lisp" mm-display-elisp-inline identity)
+ ("application/x-shellscript" mm-display-shell-script-inline identity)
+ ("application/x-sh" mm-display-shell-script-inline identity)
+ ("text/x-sh" mm-display-shell-script-inline identity)
+ ("application/javascript" mm-display-javascript-inline identity)
("text/dns" mm-display-dns-inline identity)
+ ("text/x-org" mm-display-org-inline identity)
("text/html"
mm-inline-text-html
(lambda (handle)
@@ -313,7 +317,8 @@ when selecting a different article."
"application/pkcs7-signature" "application/x-pkcs7-mime"
"application/pkcs7-mime"
;; Mutt still uses this even though it has already been withdrawn.
- "application/pgp\\'")
+ "application/pgp\\'"
+ "text/x-org")
"A list of MIME types to be displayed automatically."
:type '(repeat regexp)
:group 'mime-display)
@@ -1367,13 +1372,19 @@ Use CMD as the process."
(defun mm-preferred-alternative-precedence (handles)
"Return the precedence based on HANDLES and `mm-discouraged-alternatives'."
- (let ((seq (nreverse (mapcar #'mm-handle-media-type
- handles))))
- (dolist (disc (reverse mm-discouraged-alternatives))
- (dolist (elem (copy-sequence seq))
- (when (string-match disc elem)
- (setq seq (nconc (delete elem seq) (list elem))))))
- seq))
+ (setq handles (reverse handles))
+ (dolist (disc (reverse mm-discouraged-alternatives))
+ (dolist (handle (copy-sequence handles))
+ (when (string-match disc (mm-handle-media-type handle))
+ (setq handles (nconc (delete handle handles) (list handle))))))
+ ;; Remove empty parts.
+ (dolist (handle (copy-sequence handles))
+ (when (and (bufferp (mm-handle-buffer handle))
+ (not (with-current-buffer (mm-handle-buffer handle)
+ (goto-char (point-min))
+ (re-search-forward "[^ \t\n]" nil t))))
+ (setq handles (nconc (delete handle handles) (list handle)))))
+ (mapcar #'mm-handle-media-type handles))
(defun mm-get-content-id (id)
"Return the handle(s) referred to by ID."
diff --git a/lisp/gnus/mm-encode.el b/lisp/gnus/mm-encode.el
index 296a24351b..055ba475b8 100644
--- a/lisp/gnus/mm-encode.el
+++ b/lisp/gnus/mm-encode.el
@@ -1,7 +1,6 @@
;;; mm-encode.el --- Functions for encoding MIME things
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; MORIOKA Tomohiko <[email protected]>
diff --git a/lisp/gnus/mm-extern.el b/lisp/gnus/mm-extern.el
index 92de611738..5f4a9a85fc 100644
--- a/lisp/gnus/mm-extern.el
+++ b/lisp/gnus/mm-extern.el
@@ -1,7 +1,6 @@
;;; mm-extern.el --- showing message/external-body
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Shenghuo Zhu <[email protected]>
;; Keywords: message external-body
diff --git a/lisp/gnus/mm-partial.el b/lisp/gnus/mm-partial.el
index 6509b648fe..017b604e9b 100644
--- a/lisp/gnus/mm-partial.el
+++ b/lisp/gnus/mm-partial.el
@@ -1,7 +1,6 @@
;;; mm-partial.el --- showing message/partial
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Shenghuo Zhu <[email protected]>
;; Keywords: message partial
diff --git a/lisp/gnus/mm-url.el b/lisp/gnus/mm-url.el
index 0c2b80c9ca..498d061251 100644
--- a/lisp/gnus/mm-url.el
+++ b/lisp/gnus/mm-url.el
@@ -1,7 +1,6 @@
;;; mm-url.el --- a wrapper of url functions/commands for Gnus
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Shenghuo Zhu <[email protected]>
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el
index c07d0bf6e8..435c3bba00 100644
--- a/lisp/gnus/mm-util.el
+++ b/lisp/gnus/mm-util.el
@@ -1,7 +1,6 @@
;;; mm-util.el --- Utility functions for Mule and low level things
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; MORIOKA Tomohiko <[email protected]>
@@ -1604,7 +1603,7 @@ gzip, bzip2, etc. are allowed."
(insert decomp)
(setq filename (file-name-sans-extension filename)))
(goto-char (point-min))
- (prog1
+ (unwind-protect
(cond
((boundp 'set-auto-coding-function) ;; Emacs
(if filename
diff --git a/lisp/gnus/mm-uu.el b/lisp/gnus/mm-uu.el
index a10700ee3d..7f96f449da 100644
--- a/lisp/gnus/mm-uu.el
+++ b/lisp/gnus/mm-uu.el
@@ -1,7 +1,6 @@
;;; mm-uu.el --- Return uu stuff as mm handles
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Shenghuo Zhu <[email protected]>
;; Keywords: postscript uudecode binhex shar forward gnatsweb pgp
@@ -186,7 +185,15 @@ This can be either \"inline\" or \"attachment\".")
"^\\\\end{document}"
mm-uu-latex-extract
nil
- mm-uu-latex-test))
+ mm-uu-latex-test)
+ (org-src-code-block
+ "^[ \t]*#\\+begin_"
+ "^[ \t]*#\\+end_"
+ mm-uu-org-src-code-block-extract)
+ (org-meta-line
+ "^[ \t]*#\\+[[:alpha:]]+: "
+ "$"
+ mm-uu-org-src-code-block-extract))
"A list of specifications for non-MIME attachments.
Each element consist of the following entries: label,
start-regexp, end-regexp, extract-function, test-function.
@@ -383,6 +390,10 @@ apply the face `mm-uu-extract'."
(list mm-dissect-disposition
(cons 'filename file-name))))
+(defun mm-uu-org-src-code-block-extract ()
+ (mm-make-handle (mm-uu-copy-to-buffer start-point end-point)
+ '("text/x-org")))
+
(defvar gnus-newsgroup-name)
(defun mm-uu-emacs-sources-test ()
diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el
index 083781b0f9..d63d20239d 100644
--- a/lisp/gnus/mm-view.el
+++ b/lisp/gnus/mm-view.el
@@ -1,7 +1,6 @@
;;; mm-view.el --- functions for viewing MIME objects
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; This file is part of GNU Emacs.
@@ -32,6 +31,7 @@
(require 'mm-bodies)
(require 'mm-decode)
(require 'smime)
+(require 'mml-smime)
(autoload 'gnus-completing-read "gnus-util")
(autoload 'gnus-window-inside-pixel-edges "gnus-ems")
@@ -631,6 +631,18 @@
(defun mm-display-dns-inline (handle)
(mm-display-inline-fontify handle 'dns-mode))
+(defun mm-display-org-inline (handle)
+ "Show an Org mode text from HANDLE inline."
+ (mm-display-inline-fontify handle 'org-mode))
+
+(defun mm-display-shell-script-inline (handle)
+ "Show a shell script from HANDLE inline."
+ (mm-display-inline-fontify handle 'shell-script-mode))
+
+(defun mm-display-javascript-inline (handle)
+ "Show JavsScript code from HANDLE inline."
+ (mm-display-inline-fontify handle 'javascript-mode))
+
;; id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
;; us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 }
(defvar mm-pkcs7-signed-magic
@@ -683,17 +695,23 @@
(defun mm-view-pkcs7-decrypt (handle &optional from)
(insert-buffer-substring (mm-handle-buffer handle))
(goto-char (point-min))
- (insert "MIME-Version: 1.0\n")
- (mm-insert-headers "application/pkcs7-mime" "base64" "smime.p7m")
- (smime-decrypt-region
- (point-min) (point-max)
- (if (= (length smime-keys) 1)
- (cadar smime-keys)
- (smime-get-key-by-email
- (gnus-completing-read
- "Decipher using key"
- smime-keys nil nil nil (car-safe (car-safe smime-keys)))))
- from)
+ (if (eq mml-smime-use 'epg)
+ ;; Use EPG/gpgsm
+ (let ((part (base64-decode-string (buffer-string))))
+ (erase-buffer)
+ (insert (epg-decrypt-string (epg-make-context 'CMS) part)))
+ ;; Use openssl
+ (insert "MIME-Version: 1.0\n")
+ (mm-insert-headers "application/pkcs7-mime" "base64" "smime.p7m")
+ (smime-decrypt-region
+ (point-min) (point-max)
+ (if (= (length smime-keys) 1)
+ (cadar smime-keys)
+ (smime-get-key-by-email
+ (gnus-completing-read
+ "Decipher using key"
+ smime-keys nil nil nil (car-safe (car-safe smime-keys)))))
+ from))
(goto-char (point-min))
(while (search-forward "\r\n" nil t)
(replace-match "\n"))
diff --git a/lisp/gnus/mml-sec.el b/lisp/gnus/mml-sec.el
index 267f6483d2..1c6405b2b3 100644
--- a/lisp/gnus/mml-sec.el
+++ b/lisp/gnus/mml-sec.el
@@ -1,7 +1,6 @@
;;; mml-sec.el --- A package with security functions for MML documents
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Simon Josefsson <[email protected]>
diff --git a/lisp/gnus/mml-smime.el b/lisp/gnus/mml-smime.el
index 33050fecae..43c91604ec 100644
--- a/lisp/gnus/mml-smime.el
+++ b/lisp/gnus/mml-smime.el
@@ -1,7 +1,6 @@
;;; mml-smime.el --- S/MIME support for MML
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Simon Josefsson <[email protected]>
;; Keywords: Gnus, MIME, S/MIME, MML
@@ -37,7 +36,12 @@
(autoload 'message-narrow-to-headers "message")
(autoload 'message-fetch-field "message")
-(defvar mml-smime-use 'openssl)
+(defcustom mml-smime-use (if (featurep 'epg) 'epg 'openssl)
+ "Whether to use OpenSSL or EPG to decrypt S/MIME messages.
+Defaults to EPG if it's loaded."
+ :group 'mime-security
+ :type '(choice (const :tag "EPG" epg)
+ (const :tag "OpenSSL" openssl)))
(defvar mml-smime-function-alist
'((openssl mml-smime-openssl-sign
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index 7dc6b76afa..8b196fa26f 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -1,7 +1,6 @@
;;; mml.el --- A package for parsing and validating MML documents
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; This file is part of GNU Emacs.
diff --git a/lisp/gnus/mml1991.el b/lisp/gnus/mml1991.el
index 98e7903b01..0ce74b1d76 100644
--- a/lisp/gnus/mml1991.el
+++ b/lisp/gnus/mml1991.el
@@ -1,7 +1,6 @@
;;; mml1991.el --- Old PGP message format (RFC 1991) support for MML
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Sascha L�decke <[email protected]>,
;; Simon Josefsson <[email protected]> (Mailcrypt interface, Gnus glue)
@@ -168,6 +167,9 @@ Whether the passphrase is cached at all is controlled by
;; pgg wrapper
+(autoload 'pgg-sign-region "pgg")
+(autoload 'pgg-encrypt-region "pgg")
+
(defvar pgg-default-user-id)
(defvar pgg-errors-buffer)
(defvar pgg-output-buffer)
diff --git a/lisp/gnus/mml2015.el b/lisp/gnus/mml2015.el
index e247abbb47..1271168fff 100644
--- a/lisp/gnus/mml2015.el
+++ b/lisp/gnus/mml2015.el
@@ -1,7 +1,6 @@
;;; mml2015.el --- MIME Security with Pretty Good Privacy (PGP)
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Shenghuo Zhu <[email protected]>
;; Keywords: PGP MIME MML
@@ -117,10 +116,17 @@ Whether the passphrase is cached at all is controlled by
:type 'integer)
(defcustom mml2015-signers nil
- "A list of your own key ID which will be used to sign a message."
+ "A list of your own key ID which will be used to sign a message.
+If set, it overrides the setting of `mml2015-sign-with-sender'."
:group 'mime-security
:type '(repeat (string :tag "Key ID")))
+(defcustom mml2015-sign-with-sender nil
+ "If t, use message sender so find a key to sign with."
+ :group 'mime-security
+ :type 'boolean
+ :version "24.1")
+
(defcustom mml2015-encrypt-to-self nil
"If t, add your own key ID to recipient list when encryption."
:group 'mime-security
@@ -742,6 +748,7 @@ Whether the passphrase is cached at all is controlled by
(autoload 'epg-key-sub-key-list "epg")
(autoload 'epg-sub-key-capability "epg")
(autoload 'epg-sub-key-validity "epg")
+(autoload 'epg-sub-key-fingerprint "epg")
(autoload 'epg-configuration "epg-config")
(autoload 'epg-expand-group "epg-config")
(autoload 'epa-select-keys "epa")
@@ -784,6 +791,24 @@ Whether the passphrase is cached at all is controlled by
(setq pointer (cdr pointer))))
(setq keys (cdr keys)))))
+;; XXX: since gpg --list-secret-keys does not return validity of each
+;; key, `mml2015-epg-find-usable-key' defined above is not enough for
+;; secret keys. The function `mml2015-epg-find-usable-secret-key'
+;; below looks at appropriate public keys to check usability.
+(defun mml2015-epg-find-usable-secret-key (context name usage)
+ (let ((secret-keys (epg-list-keys context name t))
+ secret-key)
+ (while (and (not secret-key) secret-keys)
+ (if (mml2015-epg-find-usable-key
+ (epg-list-keys context (epg-sub-key-fingerprint
+ (car (epg-key-sub-key-list
+ (car secret-keys)))))
+ usage)
+ (setq secret-key (car secret-keys)
+ secret-keys nil)
+ (setq secret-keys (cdr secret-keys))))
+ secret-key))
+
(defun mml2015-epg-decrypt (handle ctl)
(catch 'error
(let ((inhibit-redisplay t)
@@ -942,6 +967,9 @@ Whether the passphrase is cached at all is controlled by
(context (epg-make-context))
(boundary (mml-compute-boundary cont))
(sender (message-options-get 'message-sender))
+ (signer-names (or mml2015-signers
+ (if (and mml2015-sign-with-sender sender)
+ (list (concat "<" sender ">")))))
signer-key
(signers
(or (message-options-get 'mml2015-epg-signers)
@@ -951,14 +979,15 @@ Whether the passphrase is cached at all is controlled by
(epa-select-keys context "\
Select keys for signing.
If no one is selected, default secret key is used. "
- (cons sender mml2015-signers) t)
+ signer-names
+ t)
(if (or sender mml2015-signers)
(delq nil
(mapcar
(lambda (signer)
- (setq signer-key (mml2015-epg-find-usable-key
- (epg-list-keys context signer t)
- 'sign))
+ (setq signer-key
+ (mml2015-epg-find-usable-secret-key
+ context signer 'sign))
(unless (or signer-key
(y-or-n-p
(format
@@ -966,7 +995,7 @@ If no one is selected, default secret key is used. "
signer)))
(error "No secret key for %s" signer))
signer-key)
- (cons sender mml2015-signers))))))))
+ signer-names)))))))
signature micalg)
(epg-context-set-armor context t)
(epg-context-set-textmode context t)
@@ -1006,14 +1035,18 @@ If no one is selected, default secret key is used. "
(goto-char (point-max))))
(defun mml2015-epg-encrypt (cont &optional sign)
- (let ((inhibit-redisplay t)
- (context (epg-make-context))
- (config (epg-configuration))
- (sender (message-options-get 'message-sender))
- (recipients (message-options-get 'mml2015-epg-recipients))
- cipher signers
- (boundary (mml-compute-boundary cont))
- recipient-key signer-key)
+ (let* ((inhibit-redisplay t)
+ (context (epg-make-context))
+ (boundary (mml-compute-boundary cont))
+ (config (epg-configuration))
+ (recipients (message-options-get 'mml2015-epg-recipients))
+ cipher
+ (sender (message-options-get 'message-sender))
+ (signer-names (or mml2015-signers
+ (if (and mml2015-sign-with-sender sender)
+ (list (concat "<" sender ">")))))
+ signers
+ recipient-key signer-key)
(unless recipients
(setq recipients
(apply #'nconc
@@ -1027,9 +1060,9 @@ If no one is selected, default secret key is used. "
(read-string "Recipients: ")))
"[ \f\t\n\r\v,]+"))))
(when mml2015-encrypt-to-self
- (unless (or sender mml2015-signers)
- (error "Message sender and mml2015-signers not set"))
- (setq recipients (nconc recipients (cons sender mml2015-signers))))
+ (unless signer-names
+ (error "Neither message sender nor mml2015-signers are set"))
+ (setq recipients (nconc recipients signer-names)))
(if (eq mm-encrypt-option 'guided)
(setq recipients
(epa-select-keys context "\
@@ -1062,14 +1095,15 @@ If no one is selected, symmetric encryption will be performed. "
(epa-select-keys context "\
Select keys for signing.
If no one is selected, default secret key is used. "
- (cons sender mml2015-signers) t)
+ signer-names
+ t)
(if (or sender mml2015-signers)
(delq nil
(mapcar
(lambda (signer)
- (setq signer-key (mml2015-epg-find-usable-key
- (epg-list-keys context signer t)
- 'sign))
+ (setq signer-key
+ (mml2015-epg-find-usable-secret-key
+ context signer 'sign))
(unless (or signer-key
(y-or-n-p
(format
@@ -1077,7 +1111,7 @@ If no one is selected, default secret key is used. "
signer)))
(error "No secret key for %s" signer))
signer-key)
- (cons sender mml2015-signers))))))))
+ signer-names)))))))
(epg-context-set-signers context signers))
(epg-context-set-armor context t)
(epg-context-set-textmode context t)
diff --git a/lisp/gnus/nnagent.el b/lisp/gnus/nnagent.el
index 9f75b00bbc..f6f0d6c143 100644
--- a/lisp/gnus/nnagent.el
+++ b/lisp/gnus/nnagent.el
@@ -1,7 +1,6 @@
;;; nnagent.el --- offline backend for Gnus
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news, mail
diff --git a/lisp/gnus/nnbabyl.el b/lisp/gnus/nnbabyl.el
index 6e91517baa..e10620683c 100644
--- a/lisp/gnus/nnbabyl.el
+++ b/lisp/gnus/nnbabyl.el
@@ -1,8 +1,6 @@
;;; nnbabyl.el --- rmail mbox access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1099, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Masanobu UMEDA <[email protected]>
diff --git a/lisp/gnus/nndiary.el b/lisp/gnus/nndiary.el
index e634b9cada..db7ac1b44f 100644
--- a/lisp/gnus/nndiary.el
+++ b/lisp/gnus/nndiary.el
@@ -1,7 +1,6 @@
;;; nndiary.el --- A diary back end for Gnus
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Didier Verna <[email protected]>
;; Maintainer: Didier Verna <[email protected]>
diff --git a/lisp/gnus/nndir.el b/lisp/gnus/nndir.el
index b6de7afa01..736f37c1fa 100644
--- a/lisp/gnus/nndir.el
+++ b/lisp/gnus/nndir.el
@@ -1,7 +1,6 @@
;;; nndir.el --- single directory newsgroup access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/nndoc.el b/lisp/gnus/nndoc.el
index 0dee06d293..f900e02eb0 100644
--- a/lisp/gnus/nndoc.el
+++ b/lisp/gnus/nndoc.el
@@ -1,7 +1,6 @@
;;; nndoc.el --- single file access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Masanobu UMEDA <[email protected]>
diff --git a/lisp/gnus/nndraft.el b/lisp/gnus/nndraft.el
index 98c14d4cab..006348869e 100644
--- a/lisp/gnus/nndraft.el
+++ b/lisp/gnus/nndraft.el
@@ -1,7 +1,6 @@
;;; nndraft.el --- draft article access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/nneething.el b/lisp/gnus/nneething.el
index 2de2dca82b..7f4fab0a99 100644
--- a/lisp/gnus/nneething.el
+++ b/lisp/gnus/nneething.el
@@ -1,7 +1,6 @@
;;; nneething.el --- arbitrary file access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Masanobu UMEDA <[email protected]>
diff --git a/lisp/gnus/nnfolder.el b/lisp/gnus/nnfolder.el
index 5de8653948..dd11ff71dd 100644
--- a/lisp/gnus/nnfolder.el
+++ b/lisp/gnus/nnfolder.el
@@ -1,7 +1,6 @@
;;; nnfolder.el --- mail folder access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Simon Josefsson <[email protected]> (adding MARKS)
;; ShengHuo Zhu <[email protected]> (adding NOV)
@@ -322,20 +321,20 @@ the group. Then the marks file will be regenerated properly by Gnus.")
(when nnfolder-get-new-mail
(nnfolder-possibly-change-group group server)
(nnmail-get-new-mail
- 'nnfolder
- (lambda ()
- (let ((bufs nnfolder-buffer-alist))
- (save-excursion
- (while bufs
- (if (not (gnus-buffer-live-p (nth 1 (car bufs))))
- (setq nnfolder-buffer-alist
- (delq (car bufs) nnfolder-buffer-alist))
- (set-buffer (nth 1 (car bufs)))
- (nnfolder-save-buffer)
- (kill-buffer (current-buffer)))
- (setq bufs (cdr bufs))))))
- nnfolder-directory
- group)))
+ 'nnfolder 'nnfolder-save-all-buffers
+ nnfolder-directory group)))
+
+(defun nnfolder-save-all-buffers ()
+ (let ((bufs nnfolder-buffer-alist))
+ (save-excursion
+ (while bufs
+ (if (not (gnus-buffer-live-p (nth 1 (car bufs))))
+ (setq nnfolder-buffer-alist
+ (delq (car bufs) nnfolder-buffer-alist))
+ (set-buffer (nth 1 (car bufs)))
+ (nnfolder-save-buffer)
+ (kill-buffer (current-buffer)))
+ (setq bufs (cdr bufs))))))
;; Don't close the buffer if we're not shutting down the server. This way,
;; we can keep the buffer in the group buffer cache, and not have to grovel
@@ -488,6 +487,7 @@ the group. Then the marks file will be regenerated properly by Gnus.")
(nnfolder-save-buffer)
(nnfolder-adjust-min-active newsgroup)
(nnfolder-save-active nnfolder-group-alist nnfolder-active-file)
+ (nnfolder-save-all-buffers)
(gnus-sorted-difference articles (nreverse deleted-articles)))))
(deffoo nnfolder-request-move-article (article group server accept-form
diff --git a/lisp/gnus/nngateway.el b/lisp/gnus/nngateway.el
index 1c0d7753ef..994cefc9d0 100644
--- a/lisp/gnus/nngateway.el
+++ b/lisp/gnus/nngateway.el
@@ -1,7 +1,6 @@
;;; nngateway.el --- posting news via mail gateways
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news, mail
diff --git a/lisp/gnus/nnheader.el b/lisp/gnus/nnheader.el
index cc2706eaf2..20cdeb557d 100644
--- a/lisp/gnus/nnheader.el
+++ b/lisp/gnus/nnheader.el
@@ -1,8 +1,7 @@
;;; nnheader.el --- header access macros for Gnus and its backends
-;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994,
-;; 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1987-1990, 1993-1998, 2000-2011
+;; Free Software Foundation, Inc.
;; Author: Masanobu UMEDA <[email protected]>
;; Lars Magne Ingebrigtsen <[email protected]>
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index 0462cf946e..005f60b5c7 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -1,6 +1,6 @@
;;; nnimap.el --- IMAP interface for Gnus
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Simon Josefsson <[email protected]>
@@ -124,7 +124,7 @@ textual parts.")
(defstruct nnimap
group process commands capabilities select-result newlinep server
- last-command-time greeting examined)
+ last-command-time greeting examined stream-type)
(defvar nnimap-object nil)
@@ -139,6 +139,9 @@ textual parts.")
(download "gnus-download")
(forward "gnus-forward")))
+(defvar nnimap-quirks
+ '(("QRESYNC" "Zimbra" "QRESYNC ")))
+
(defun nnimap-buffer ()
(nnimap-find-process-buffer nntp-server-buffer))
@@ -164,7 +167,8 @@ textual parts.")
(nnimap-article-ranges (gnus-compress-sequence articles))
(nnimap-header-parameters))
t)
- (nnimap-transform-headers))
+ (nnimap-transform-headers)
+ (nnheader-remove-cr-followed-by-lf))
(insert-buffer-substring
(nnimap-find-process-buffer (current-buffer))))
'headers))
@@ -346,7 +350,7 @@ textual parts.")
login-result credentials)
(when nnimap-server-port
(setq ports (append ports (list nnimap-server-port))))
- (destructuring-bind (stream greeting capabilities)
+ (destructuring-bind (stream greeting capabilities stream-type)
(open-protocol-stream
"*nnimap*" (current-buffer) nnimap-address (car (last ports))
:type nnimap-stream
@@ -358,6 +362,7 @@ textual parts.")
(when (gnus-string-match-p "STARTTLS" capabilities)
"1 STARTTLS\r\n")))
(setf (nnimap-process nnimap-object) stream)
+ (setf (nnimap-stream-type nnimap-object) stream-type)
(if (not stream)
(progn
(nnheader-report 'nnimap "Unable to contact %s:%s via %s"
@@ -386,17 +391,7 @@ textual parts.")
(nnimap-credentials nnimap-address ports)))))
(setq nnimap-object nil)
(setq login-result
- (if (and (nnimap-capability "AUTH=PLAIN")
- (nnimap-capability "LOGINDISABLED"))
- (nnimap-command
- "AUTHENTICATE PLAIN %s"
- (base64-encode-string
- (format "\000%s\000%s"
- (nnimap-quote-specials (car credentials))
- (nnimap-quote-specials (cadr credentials)))))
- (nnimap-command "LOGIN %S %S"
- (car credentials)
- (cadr credentials))))
+ (nnimap-login (car credentials) (cadr credentials)))
(unless (car login-result)
;; If the login failed, then forget the credentials
;; that are now possibly cached.
@@ -413,6 +408,39 @@ textual parts.")
(nnimap-command "ENABLE QRESYNC"))
(nnimap-process nnimap-object))))))))
+(autoload 'rfc2104-hash "rfc2104")
+
+(defun nnimap-login (user password)
+ (cond
+ ;; Prefer plain LOGIN if it's enabled (since it requires fewer
+ ;; round trips than CRAM-MD5, and it's less likely to be buggy),
+ ;; and we're using an encrypted connection.
+ ((and (not (nnimap-capability "LOGINDISABLED"))
+ (eq (nnimap-stream-type nnimap-object) 'tls))
+ (nnimap-command "LOGIN %S %S" user password))
+ ((nnimap-capability "AUTH=CRAM-MD5")
+ (erase-buffer)
+ (let ((sequence (nnimap-send-command "AUTHENTICATE CRAM-MD5"))
+ (challenge (nnimap-wait-for-line "^\\+\\(.*\\)\n")))
+ (process-send-string
+ (get-buffer-process (current-buffer))
+ (concat
+ (base64-encode-string
+ (concat user " "
+ (rfc2104-hash 'md5 64 16 password
+ (base64-decode-string challenge))))
+ "\r\n"))
+ (nnimap-wait-for-response sequence)))
+ ((not (nnimap-capability "LOGINDISABLED"))
+ (nnimap-command "LOGIN %S %S" user password))
+ ((nnimap-capability "AUTH=PLAIN")
+ (nnimap-command
+ "AUTHENTICATE PLAIN %s"
+ (base64-encode-string
+ (format "\000%s\000%s"
+ (nnimap-quote-specials user)
+ (nnimap-quote-specials password)))))))
+
(defun nnimap-quote-specials (string)
(with-temp-buffer
(insert string)
@@ -491,15 +519,17 @@ textual parts.")
(with-current-buffer (nnimap-buffer)
(when (stringp article)
(setq article (nnimap-find-article-by-message-id group article)))
- (nnimap-get-whole-article
- article (format "UID FETCH %%d %s"
- (nnimap-header-parameters)))
- (let ((buffer (current-buffer)))
- (with-current-buffer (or to-buffer nntp-server-buffer)
- (erase-buffer)
- (insert-buffer-substring buffer)
- (nnheader-ms-strip-cr)
- (cons group article))))))
+ (if (null article)
+ nil
+ (nnimap-get-whole-article
+ article (format "UID FETCH %%d %s"
+ (nnimap-header-parameters)))
+ (let ((buffer (current-buffer)))
+ (with-current-buffer (or to-buffer nntp-server-buffer)
+ (erase-buffer)
+ (insert-buffer-substring buffer)
+ (nnheader-ms-strip-cr)
+ (cons group article)))))))
(defun nnimap-get-whole-article (article &optional command)
(let ((result
@@ -561,7 +591,7 @@ textual parts.")
;; Collect all the body parts.
(while (looking-at ".*BODY\\[\\([.0-9]+\\)\\]")
(setq id (match-string 1)
- bytes (nnimap-get-length))
+ bytes (or (nnimap-get-length) 0))
(beginning-of-line)
(delete-region (point) (progn (forward-line 1) (point)))
(push (list id (buffer-substring (point) (+ (point) bytes)))
@@ -635,7 +665,7 @@ textual parts.")
(let ((result (nnimap-possibly-change-group
;; Don't SELECT the group if we're going to select it
;; later, anyway.
- (if (and dont-check
+ (if (and (not dont-check)
(assoc group nnimap-current-infos))
nil
group)
@@ -897,6 +927,16 @@ textual parts.")
(push flag flags)))
flags))
+(deffoo nnimap-request-update-group-status (group status &optional server)
+ (when (nnimap-possibly-change-group nil server)
+ (let ((command (assoc
+ status
+ '((subscribe "SUBSCRIBE")
+ (unsubscribe "UNSUBSCRIBE")))))
+ (when command
+ (with-current-buffer (nnimap-buffer)
+ (nnimap-command "%s %S" (cadr command) (utf7-encode group t)))))))
+
(deffoo nnimap-request-set-mark (group actions &optional server)
(when (nnimap-possibly-change-group group server)
(let (sequence)
@@ -1080,8 +1120,9 @@ textual parts.")
uidvalidity
modseq)
(push
- (list (nnimap-send-command "EXAMINE %S (QRESYNC (%s %s))"
+ (list (nnimap-send-command "EXAMINE %S (%s (%s %s))"
(utf7-encode group t)
+ (nnimap-quirk "QRESYNC")
uidvalidity modseq)
'qresync
nil group 'qresync)
@@ -1107,6 +1148,15 @@ textual parts.")
sequences))))
sequences))))
+(defun nnimap-quirk (command)
+ (let ((quirk (assoc command nnimap-quirks)))
+ ;; If this server is of a type that matches a quirk, then return
+ ;; the "quirked" command instead of the proper one.
+ (if (or (null quirk)
+ (not (string-match (nth 1 quirk) (nnimap-greeting nnimap-object))))
+ command
+ (nth 2 quirk))))
+
(deffoo nnimap-finish-retrieve-group-infos (server infos sequences)
(when (and sequences
(nnimap-possibly-change-group nil server))
@@ -1517,8 +1567,9 @@ textual parts.")
(nnimap-parse-response))
(defun nnimap-wait-for-connection (&optional regexp)
- (unless regexp
- (setq regexp "^[*.] .*\n"))
+ (nnimap-wait-for-line (or regexp "^[*.] .*\n") "[*.] \\([A-Z0-9]+\\)"))
+
+(defun nnimap-wait-for-line (regexp &optional response-regexp)
(let ((process (get-buffer-process (current-buffer))))
(goto-char (point-min))
(while (and (memq (process-status process)
@@ -1527,7 +1578,7 @@ textual parts.")
(nnheader-accept-process-output process)
(goto-char (point-min)))
(forward-line -1)
- (and (looking-at "[*.] \\([A-Z0-9]+\\)")
+ (and (looking-at (or response-regexp regexp))
(match-string 1))))
(defun nnimap-wait-for-response (sequence &optional messagep)
@@ -1538,12 +1589,14 @@ textual parts.")
(goto-char (point-max))
(while (and (setq openp (memq (process-status process)
'(open run)))
- (not (re-search-backward
- (format "^%d .*\n" sequence)
- (if nnimap-streaming
- (max (point-min) (- (point) 500))
- (point-min))
- t)))
+ (progn
+ ;; Skip past any "*" lines that the server has
+ ;; output.
+ (while (and (not (bobp))
+ (progn
+ (forward-line -1)
+ (looking-at "\\*"))))
+ (not (looking-at (format "%d " sequence)))))
(when messagep
(nnheader-message 7 "nnimap read %dk" (/ (buffer-size) 1000)))
(nnheader-accept-process-output process)
diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el
index 3b1d3246c0..8e91c68b39 100644
--- a/lisp/gnus/nnir.el
+++ b/lisp/gnus/nnir.el
@@ -1,7 +1,6 @@
;;; nnir.el --- search mail with various search engines -*- coding: iso-8859-1 -*-
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Kai Gro�johann <[email protected]>
;; Swish-e and Swish++ backends by:
@@ -289,7 +288,9 @@ is `(valuefunc member)'."
(autoload 'nnimap-buffer "nnimap")
(autoload 'nnimap-command "nnimap")
(autoload 'nnimap-possibly-change-group "nnimap")
- (autoload 'gnus-registry-action "gnus-registry"))
+ (autoload 'gnus-registry-action "gnus-registry")
+ (defvar gnus-registry-install))
+
(nnoo-declare nnir)
(nnoo-define-basics nnir)
@@ -303,13 +304,6 @@ is `(valuefunc member)'."
"Search groups in Gnus with assorted seach engines."
:group 'gnus)
-(defcustom nnir-method-default-engines
- '((nnimap . imap)
- (nntp . gmane))
- "*Alist of default search engines keyed by server method."
- :type '(alist)
- :group 'nnir)
-
(defcustom nnir-ignored-newsgroups ""
"*A regexp to match newsgroups in the active file that should
be skipped when searching."
@@ -327,7 +321,7 @@ with three items unique to nnir summary buffers:
%g Article original short group name (string)
If nil this will use `gnus-summary-line-format'."
- :type '(regexp)
+ :type '(string)
:group 'nnir)
(defcustom nnir-retrieve-headers-override-function nil
@@ -345,7 +339,8 @@ result, `gnus-retrieve-headers' will be called instead."
"*The default IMAP search key for an nnir search. Must be one of
the keys in `nnir-imap-search-arguments'. To use raw imap queries
by default set this to \"Imap\"."
- :type '(string)
+ :type `(choice ,@(mapcar (lambda (elem) (list 'const (car elem)))
+ nnir-imap-search-arguments))
:group 'nnir)
(defcustom nnir-swish++-configuration-file
@@ -544,6 +539,18 @@ needs the variables `nnir-namazu-program',
Add an entry here when adding a new search engine.")
+(defcustom nnir-method-default-engines
+ '((nnimap . imap)
+ (nntp . gmane))
+ "*Alist of default search engines keyed by server method."
+ :type `(repeat (cons (choice (const nnimap) (const nttp) (const nnspool)
+ (const nneething) (const nndir) (const nnmbox)
+ (const nnml) (const nnmh) (const nndraft)
+ (const nnfolder) (const nnmaildir))
+ (choice
+ ,@(mapcar (lambda (elem) (list 'const (car elem)))
+ nnir-engines))))
+ :group 'nnir)
;; Gnus glue.
@@ -804,7 +811,7 @@ details on the language and supported extensions"
(message "Searching %s... %d matches" group arts)))
(message "Searching %s...done" group))
(quit nil))
- artlist))
+ (nreverse artlist)))
groups)))))
(defun nnir-imap-make-query (criteria qstring)
@@ -1397,14 +1404,15 @@ Tested with Namazu 2.0.6 on a GNU/Linux system."
;; gmane interface
(defun nnir-run-gmane (query srv &optional groups)
"Run a search against a gmane back-end server."
- (if (gnus-string-match-p "gmane" srv)
(let* ((case-fold-search t)
(qstring (cdr (assq 'query query)))
(server (cadr (gnus-server-to-method srv)))
(groupspec (mapconcat
(lambda (x)
- (format "group:%s" (gnus-group-short-name x)))
- groups " "))
+ (if (gnus-string-match-p "gmane" x)
+ (format "group:%s" (gnus-group-short-name x))
+ (error "Can't search non-gmane groups: %s" x)))
+ groups " "))
(authorspec
(if (assq 'author query)
(format "author:%s" (cdr (assq 'author query))) ""))
@@ -1439,9 +1447,7 @@ Tested with Namazu 2.0.6 on a GNU/Linux system."
(string-to-number (match-string 2 xref)) xscore)
artlist)))))
(forward-line 1)))
- (apply 'vector (nreverse (mm-delete-duplicates artlist))))
- (message "Can't search non-gmane nntp groups")
- nil))
+ (apply 'vector (nreverse (mm-delete-duplicates artlist)))))
;;; Util Code:
@@ -1536,7 +1542,8 @@ server is of form 'backend:name'."
(let ((cur (current-buffer))
name)
(goto-char (point-min))
- (unless (string= nnir-ignored-newsgroups "")
+ (unless (or (null nnir-ignored-newsgroups)
+ (string= nnir-ignored-newsgroups ""))
(delete-matching-lines nnir-ignored-newsgroups))
(if (eq (car method) 'nntp)
(while (not (eobp))
@@ -1582,12 +1589,14 @@ server is of form 'backend:name'."
(when (eq (car (gnus-find-method-for-group gnus-newsgroup-name)) 'nnir)
(setq gnus-summary-line-format
(or nnir-summary-line-format gnus-summary-line-format))
- (remove-hook 'gnus-summary-article-delete-hook 'gnus-registry-action t)
- (remove-hook 'gnus-summary-article-move-hook 'gnus-registry-action t)
- (remove-hook 'gnus-summary-article-expire-hook 'gnus-registry-action t)
- (add-hook 'gnus-summary-article-delete-hook 'nnir-registry-action t t)
- (add-hook 'gnus-summary-article-move-hook 'nnir-registry-action t t)
- (add-hook 'gnus-summary-article-expire-hook 'nnir-registry-action t t)))
+ (when (and (boundp 'gnus-registry-install)
+ (eq gnus-registry-install t))
+ (remove-hook 'gnus-summary-article-delete-hook 'gnus-registry-action t)
+ (remove-hook 'gnus-summary-article-move-hook 'gnus-registry-action t)
+ (remove-hook 'gnus-summary-article-expire-hook 'gnus-registry-action t)
+ (add-hook 'gnus-summary-article-delete-hook 'nnir-registry-action t t)
+ (add-hook 'gnus-summary-article-move-hook 'nnir-registry-action t t)
+ (add-hook 'gnus-summary-article-expire-hook 'nnir-registry-action t t))))
diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el
index 06b464c0b2..b2336e13b6 100644
--- a/lisp/gnus/nnmail.el
+++ b/lisp/gnus/nnmail.el
@@ -1,8 +1,6 @@
;;; nnmail.el --- mail support functions for the Gnus mail backends
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news, mail
@@ -1150,6 +1148,7 @@ FUNC will be called with the group name to determine the article number."
(setq nnmail-split-trace nil))
(if (or (and (symbolp nnmail-split-methods)
(fboundp nnmail-split-methods))
+ (not (consp (car-safe nnmail-split-methods)))
(and (listp nnmail-split-methods)
;; Not a regular split method, so it has to be a
;; fancy one.
@@ -1915,7 +1914,7 @@ If TIME is nil, then return the cutoff time for oldness instead."
(unless (eq target 'delete)
(when (or (gnus-request-group target)
(gnus-request-create-group target))
- (let ((group-art (gnus-request-accept-article target nil t t)))
+ (let ((group-art (gnus-request-accept-article target nil nil t)))
(when (and (consp group-art)
(cdr group-art))
(gnus-group-mark-article-read target (cdr group-art))))))))
diff --git a/lisp/gnus/nnmairix.el b/lisp/gnus/nnmairix.el
index 7ea2437b95..b82d6c2ee7 100644
--- a/lisp/gnus/nnmairix.el
+++ b/lisp/gnus/nnmairix.el
@@ -1,6 +1,6 @@
;;; nnmairix.el --- Mairix back end for Gnus, the Emacs newsreader
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: David Engster <[email protected]>
;; Keywords: mail searching
diff --git a/lisp/gnus/nnmbox.el b/lisp/gnus/nnmbox.el
index 003c424f58..aac5a064a7 100644
--- a/lisp/gnus/nnmbox.el
+++ b/lisp/gnus/nnmbox.el
@@ -1,7 +1,6 @@
;;; nnmbox.el --- mail mbox access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Masanobu UMEDA <[email protected]>
diff --git a/lisp/gnus/nnmh.el b/lisp/gnus/nnmh.el
index 984144e0d9..5fa1a89cf4 100644
--- a/lisp/gnus/nnmh.el
+++ b/lisp/gnus/nnmh.el
@@ -1,7 +1,6 @@
;;; nnmh.el --- mhspool access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Masanobu UMEDA <[email protected]>
diff --git a/lisp/gnus/nnml.el b/lisp/gnus/nnml.el
index 46a6d903f7..399008cec1 100644
--- a/lisp/gnus/nnml.el
+++ b/lisp/gnus/nnml.el
@@ -1,7 +1,7 @@
;;; nnml.el --- mail spool access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software
+;; Foundation, Inc.
;; Authors: Didier Verna <[email protected]> (adding compaction)
;; Simon Josefsson <[email protected]> (adding MARKS)
@@ -235,7 +235,11 @@ non-nil.")
(nnheader-article-to-file-alist
(setq gpath (nnml-group-pathname (car group-num)
nil server))))))
- (setq path (concat gpath (int-to-string (cdr group-num)))))
+ (nnml-update-file-alist)
+ (setq path (concat gpath (if nnml-use-compressed-files
+ (cdr (assq (cdr group-num)
+ nnml-article-file-alist))
+ (number-to-string (cdr group-num))))))
(setq path (nnml-article-to-file id)))
(cond
((not path)
diff --git a/lisp/gnus/nnoo.el b/lisp/gnus/nnoo.el
index 083bedc6e1..bbe47fcf5c 100644
--- a/lisp/gnus/nnoo.el
+++ b/lisp/gnus/nnoo.el
@@ -1,7 +1,6 @@
;;; nnoo.el --- OO Gnus Backends
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/nnregistry.el b/lisp/gnus/nnregistry.el
index 03ff5e716a..947ba4b236 100644
--- a/lisp/gnus/nnregistry.el
+++ b/lisp/gnus/nnregistry.el
@@ -1,7 +1,7 @@
;;; nnregistry.el --- access to articles via Gnus' message-id registry
;;; -*- coding: utf-8 -*-
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Authors: Ludovic Courtès <[email protected]>
;; Keywords: news, mail
diff --git a/lisp/gnus/nnrss.el b/lisp/gnus/nnrss.el
index 9a02c26073..b12700fac6 100644
--- a/lisp/gnus/nnrss.el
+++ b/lisp/gnus/nnrss.el
@@ -1,7 +1,6 @@
;;; nnrss.el --- interfacing with RSS
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Shenghuo Zhu <[email protected]>
;; Keywords: RSS
diff --git a/lisp/gnus/nnspool.el b/lisp/gnus/nnspool.el
index 1916c1ac9a..6c23f41132 100644
--- a/lisp/gnus/nnspool.el
+++ b/lisp/gnus/nnspool.el
@@ -1,7 +1,6 @@
;;; nnspool.el --- spool access for GNU Emacs
-;; Copyright (C) 1988, 1989, 1990, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1988-1990, 1993-1998, 2000-2011
;; Free Software Foundation, Inc.
;; Author: Masanobu UMEDA <[email protected]>
diff --git a/lisp/gnus/nntp.el b/lisp/gnus/nntp.el
index c0072a6ef2..cae0150dd1 100644
--- a/lisp/gnus/nntp.el
+++ b/lisp/gnus/nntp.el
@@ -1,8 +1,7 @@
;;; nntp.el --- nntp access for Gnus
-;; Copyright (C) 1987, 1988, 1989, 1990, 1992, 1993, 1994, 1995, 1996,
-;; 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1987-1990, 1992-1998, 2000-2011
+;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
@@ -775,6 +774,62 @@ command whose response triggered the error."
(nntp-copy-to-buffer nntp-server-buffer (point-min) (point-max))
'headers)))))
+(deffoo nntp-retrieve-group-data-early (server infos)
+ "Retrieve group info on INFOS."
+ (nntp-with-open-group nil server
+ (when (nntp-find-connection-buffer nntp-server-buffer)
+ ;; The first time this is run, this variable is `try'. So we
+ ;; try.
+ (when (eq nntp-server-list-active-group 'try)
+ (nntp-try-list-active (gnus-group-real-name (gnus-info-group (car infos)))))
+ (with-current-buffer (nntp-find-connection-buffer nntp-server-buffer)
+ (erase-buffer)
+ (let ((nntp-inhibit-erase t)
+ (command (if nntp-server-list-active-group
+ "LIST ACTIVE" "GROUP")))
+ (dolist (info infos)
+ (nntp-send-command
+ nil command (gnus-group-real-name (gnus-info-group info)))))
+ (length infos)))))
+
+(deffoo nntp-finish-retrieve-group-infos (server infos count)
+ (nntp-with-open-group nil server
+ (let ((buf (nntp-find-connection-buffer nntp-server-buffer))
+ (method (gnus-find-method-for-group
+ (gnus-info-group (car infos))
+ (car infos)))
+ (received 0)
+ (last-point 1))
+ (when buf
+ (with-current-buffer buf
+ (while (and (gnus-buffer-live-p buf)
+ (progn
+ (goto-char last-point)
+ ;; Count replies.
+ (while (re-search-forward "^[0-9]" nil t)
+ (incf received))
+ (setq last-point (point))
+ (< received count)))
+ (nntp-accept-response))
+ ;; We now have all the entries. Remove CRs.
+ (goto-char (point-min))
+ (while (search-forward "\r" nil t)
+ (replace-match "" t t))
+
+ (if (not nntp-server-list-active-group)
+ (progn
+ (nntp-copy-to-buffer nntp-server-buffer
+ (point-min) (point-max))
+ (gnus-groups-to-gnus-format method gnus-active-hashtb t))
+ ;; We have read active entries, so we just delete the
+ ;; superfluous gunk.
+ (goto-char (point-min))
+ (while (re-search-forward "^[.2-5]" nil t)
+ (delete-region (match-beginning 0)
+ (progn (forward-line 1) (point))))
+ (nntp-copy-to-buffer nntp-server-buffer (point-min) (point-max))
+ (gnus-active-to-gnus-format method gnus-active-hashtb nil t)))))))
+
(deffoo nntp-retrieve-groups (groups &optional server)
"Retrieve group info on GROUPS."
(nntp-with-open-group
diff --git a/lisp/gnus/nnvirtual.el b/lisp/gnus/nnvirtual.el
index 88ff852e85..0cc53ad233 100644
--- a/lisp/gnus/nnvirtual.el
+++ b/lisp/gnus/nnvirtual.el
@@ -1,7 +1,6 @@
;;; nnvirtual.el --- virtual newsgroups access for Gnus
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-2011 Free Software Foundation, Inc.
;; Author: David Moore <[email protected]>
;; Lars Magne Ingebrigtsen <[email protected]>
diff --git a/lisp/gnus/nnweb.el b/lisp/gnus/nnweb.el
index ac643f9ed1..f190bb7cff 100644
--- a/lisp/gnus/nnweb.el
+++ b/lisp/gnus/nnweb.el
@@ -1,7 +1,6 @@
;;; nnweb.el --- retrieving articles via web search engines
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
diff --git a/lisp/gnus/pop3.el b/lisp/gnus/pop3.el
index eef53c2797..08cd7cd4ef 100644
--- a/lisp/gnus/pop3.el
+++ b/lisp/gnus/pop3.el
@@ -1,7 +1,6 @@
;;; pop3.el --- Post Office Protocol (RFC 1460) interface
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Richard L. Pieri <[email protected]>
;; Maintainer: FSF
diff --git a/lisp/gnus/proto-stream.el b/lisp/gnus/proto-stream.el
index e8df945b94..9117ac9f4e 100644
--- a/lisp/gnus/proto-stream.el
+++ b/lisp/gnus/proto-stream.el
@@ -1,6 +1,6 @@
;;; proto-stream.el --- negotiating TLS, STARTTLS and other connections
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: network
@@ -101,17 +101,28 @@ command to switch on STARTTLS otherwise."
(setq type 'network))
((eq type 'ssl)
(setq type 'tls)))
- (destructuring-bind (stream greeting capabilities)
- (funcall (intern (format "proto-stream-open-%s" type) obarray)
- name buffer host service parameters)
- (list (and stream
- (memq (process-status stream)
- '(open run))
- stream)
- greeting capabilities))))
+ (let ((open-result
+ (funcall (intern (format "proto-stream-open-%s" type) obarray)
+ name buffer host service parameters)))
+ (if (null open-result)
+ (list nil nil nil type)
+ (let ((stream (car open-result)))
+ (list (and stream
+ (memq (process-status stream)
+ '(open run))
+ stream)
+ (nth 1 open-result)
+ (nth 2 open-result)
+ (nth 3 open-result)))))))
(defun proto-stream-open-network-only (name buffer host service parameters)
- (open-network-stream name buffer host service))
+ (let ((start (with-current-buffer buffer (point)))
+ (stream (open-network-stream name buffer host service)))
+ (list stream
+ (proto-stream-get-response
+ stream start (proto-stream-eoc parameters))
+ nil
+ 'network)))
(defun proto-stream-open-network (name buffer host service parameters)
(let* ((start (with-current-buffer buffer (point)))
@@ -122,7 +133,7 @@ command to switch on STARTTLS otherwise."
(greeting (proto-stream-get-response stream start eoc))
success)
(if (not capability-command)
- (list stream greeting nil)
+ (list stream greeting nil 'network)
(let* ((capabilities
(proto-stream-command stream capability-command eoc))
(starttls-command
@@ -140,7 +151,7 @@ command to switch on STARTTLS otherwise."
(delete-process stream)
nil)
;; Otherwise, just return this plain network connection.
- (list stream greeting capabilities)))
+ (list stream greeting capabilities 'network)))
;; We have some kind of STARTTLS support, so we try to
;; upgrade the connection opportunistically.
((or (fboundp 'open-gnutls-stream)
@@ -168,7 +179,7 @@ command to switch on STARTTLS otherwise."
(progn
(delete-process stream)
nil)
- (list stream greeting capabilities)))
+ (list stream greeting capabilities 'network)))
;; The server said it was OK to start doing STARTTLS negotiations.
(if (fboundp 'open-gnutls-stream)
(gnutls-negotiate stream nil)
@@ -185,7 +196,7 @@ command to switch on STARTTLS otherwise."
;; Re-get the capabilities, since they may have changed
;; after switching to TLS.
(list stream greeting
- (proto-stream-command stream capability-command eoc))))
+ (proto-stream-command stream capability-command eoc) 'tls)))
;; We don't have STARTTLS support available, but the caller
;; requested a STARTTLS connection, so we give up.
((eq (cadr (memq :type parameters)) 'starttls)
@@ -193,7 +204,7 @@ command to switch on STARTTLS otherwise."
nil)
;; Fall back on using a plain network stream.
(t
- (list stream greeting capabilities)))))))
+ (list stream greeting capabilities 'network)))))))
(defun proto-stream-command (stream command eoc)
(let ((start (with-current-buffer (process-buffer stream) (point-max))))
@@ -234,7 +245,7 @@ command to switch on STARTTLS otherwise."
(when (re-search-forward (proto-stream-eoc parameters) nil t)
(goto-char (match-beginning 0))
(delete-region (point-min) (line-beginning-position))))
- (proto-stream-capability-open start stream parameters)))))
+ (proto-stream-capability-open start stream parameters 'tls)))))
(defun proto-stream-open-shell (name buffer host service parameters)
(proto-stream-capability-open
@@ -247,16 +258,17 @@ command to switch on STARTTLS otherwise."
(format-spec-make
?s host
?p service))))
- parameters))
+ parameters 'network))
-(defun proto-stream-capability-open (start stream parameters)
+(defun proto-stream-capability-open (start stream parameters stream-type)
(let ((capability-command (cadr (memq :capability-command parameters)))
(greeting (proto-stream-get-response
stream start (proto-stream-eoc parameters))))
(list stream greeting
(and capability-command
(proto-stream-command
- stream capability-command (proto-stream-eoc parameters))))))
+ stream capability-command (proto-stream-eoc parameters)))
+ stream-type)))
(defun proto-stream-eoc (parameters)
(or (cadr (memq :end-of-command parameters))
diff --git a/lisp/gnus/qp.el b/lisp/gnus/qp.el
index 90975c48cd..584e24177a 100644
--- a/lisp/gnus/qp.el
+++ b/lisp/gnus/qp.el
@@ -1,7 +1,6 @@
;;; qp.el --- Quoted-Printable functions
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: mail, extensions
diff --git a/lisp/gnus/rfc1843.el b/lisp/gnus/rfc1843.el
index 87fcde6013..019dc6ed8a 100644
--- a/lisp/gnus/rfc1843.el
+++ b/lisp/gnus/rfc1843.el
@@ -1,7 +1,6 @@
;;; rfc1843.el --- HZ (rfc1843) decoding
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Shenghuo Zhu <[email protected]>
;; Keywords: news HZ HZ+ mail i18n
diff --git a/lisp/gnus/rfc2045.el b/lisp/gnus/rfc2045.el
index 0263129c20..d9aaf88b04 100644
--- a/lisp/gnus/rfc2045.el
+++ b/lisp/gnus/rfc2045.el
@@ -1,7 +1,6 @@
;;; rfc2045.el --- Functions for decoding rfc2045 headers
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; This file is part of GNU Emacs.
diff --git a/lisp/gnus/rfc2047.el b/lisp/gnus/rfc2047.el
index 51eef88dad..e82192b91d 100644
--- a/lisp/gnus/rfc2047.el
+++ b/lisp/gnus/rfc2047.el
@@ -1,7 +1,6 @@
;;; rfc2047.el --- functions for encoding and decoding rfc2047 messages
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; MORIOKA Tomohiko <[email protected]>
diff --git a/lisp/gnus/rfc2104.el b/lisp/gnus/rfc2104.el
index c1d0723197..158cf4bae2 100644
--- a/lisp/gnus/rfc2104.el
+++ b/lisp/gnus/rfc2104.el
@@ -1,7 +1,6 @@
;;; rfc2104.el --- RFC2104 Hashed Message Authentication Codes
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Simon Josefsson <[email protected]>
;; Keywords: mail
diff --git a/lisp/gnus/rfc2231.el b/lisp/gnus/rfc2231.el
index 0b028a08b8..306b67cd7c 100644
--- a/lisp/gnus/rfc2231.el
+++ b/lisp/gnus/rfc2231.el
@@ -1,7 +1,6 @@
;;; rfc2231.el --- Functions for decoding rfc2231 headers
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; This file is part of GNU Emacs.
diff --git a/lisp/gnus/rtree.el b/lisp/gnus/rtree.el
index 04079b1ba8..869ca4f006 100644
--- a/lisp/gnus/rtree.el
+++ b/lisp/gnus/rtree.el
@@ -1,6 +1,6 @@
;;; rtree.el --- functions for manipulating range trees
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
diff --git a/lisp/gnus/score-mode.el b/lisp/gnus/score-mode.el
index 04eae85bac..a7ed6bc0cb 100644
--- a/lisp/gnus/score-mode.el
+++ b/lisp/gnus/score-mode.el
@@ -1,7 +1,6 @@
;;; score-mode.el --- mode for editing Gnus score files
-;; Copyright (C) 1996, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news, mail
diff --git a/lisp/gnus/shr-color.el b/lisp/gnus/shr-color.el
index afb56ae38a..4b885d9dbf 100644
--- a/lisp/gnus/shr-color.el
+++ b/lisp/gnus/shr-color.el
@@ -1,6 +1,6 @@
;;; shr-color.el --- Simple HTML Renderer color management
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Julien Danjou <[email protected]>
;; Keywords: html
diff --git a/lisp/gnus/shr.el b/lisp/gnus/shr.el
index 692d126234..f3c75ccd6a 100644
--- a/lisp/gnus/shr.el
+++ b/lisp/gnus/shr.el
@@ -1,6 +1,6 @@
;;; shr.el --- Simple HTML Renderer
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: html
@@ -74,8 +74,12 @@ fit these criteria."
:type 'character)
(defcustom shr-width fill-column
- "Frame width to use for rendering."
- :type 'integer
+ "Frame width to use for rendering.
+May either be an integer specifying a fixed width in characters,
+or nil, meaning that the full width of the window should be
+used."
+ :type '(choice (integer :tag "Fixed width in characters")
+ (const :tag "Use the width of the window" nil))
:group 'shr)
(defvar shr-content-function nil
@@ -113,7 +117,8 @@ cid: URL as the argument.")
(defun shr-insert-document (dom)
(setq shr-content-cache nil)
(let ((shr-state nil)
- (shr-start nil))
+ (shr-start nil)
+ (shr-width (or shr-width (window-width))))
(shr-descend (shr-transform-dom dom))))
(defun shr-copy-url ()
@@ -253,16 +258,12 @@ redirects somewhere else."
(when (and (bolp)
(> shr-indentation 0))
(shr-indent))
- ;; The shr-start is a special variable that is used to pass
- ;; upwards the first point in the buffer where the text really
- ;; starts.
- (unless shr-start
- (setq shr-start (point)))
;; No space is needed behind a wide character categorized as
;; kinsoku-bol, between characters both categorized as nospace,
;; or at the beginning of a line.
(let (prev)
- (when (and (eq (preceding-char) ? )
+ (when (and (> (current-column) shr-indentation)
+ (eq (preceding-char) ? )
(or (= (line-beginning-position) (1- (point)))
(and (shr-char-breakable-p
(setq prev (char-after (- (point) 2))))
@@ -270,6 +271,11 @@ redirects somewhere else."
(and (shr-char-nospace-p prev)
(shr-char-nospace-p (aref elem 0)))))
(delete-char -1)))
+ ;; The shr-start is a special variable that is used to pass
+ ;; upwards the first point in the buffer where the text really
+ ;; starts.
+ (unless shr-start
+ (setq shr-start (point)))
(insert elem)
(let (found)
(while (and (> (current-column) shr-width)
@@ -456,11 +462,12 @@ redirects somewhere else."
(search-forward "\r\n\r\n" nil t))
(let ((data (buffer-substring (point) (point-max))))
(with-current-buffer buffer
- (let ((alt (buffer-substring start end))
- (inhibit-read-only t))
- (delete-region start end)
- (goto-char start)
- (shr-put-image data alt))))))
+ (save-excursion
+ (let ((alt (buffer-substring start end))
+ (inhibit-read-only t))
+ (delete-region start end)
+ (goto-char start)
+ (shr-put-image data alt)))))))
(kill-buffer (current-buffer)))
(defun shr-put-image (data alt)
@@ -501,6 +508,9 @@ redirects somewhere else."
(create-image data 'imagemagick t
:width window-width)
image)))
+ (when (and (fboundp 'create-animated-image)
+ (eq (image-type data nil t) 'gif))
+ (setq image (create-animated-image data 'gif t)))
image)))
;; url-cache-extract autoloads url-cache.
@@ -602,13 +612,67 @@ ones, in case fg and bg are nil."
(save-excursion
(goto-char start)
(while (< (point) end)
- (when (bolp)
+ (when (and (bolp)
+ (not (eq type :background)))
(skip-chars-forward " "))
(when (> (line-end-position) (point))
(shr-put-color-1 (point) (min (line-end-position) end) type color))
(if (< (line-end-position) end)
(forward-line 1)
- (goto-char end)))))
+ (goto-char end)))
+ (when (and (eq type :background)
+ (= shr-table-depth 0))
+ (shr-expand-newlines start end color))))
+
+(defun shr-expand-newlines (start end color)
+ (save-restriction
+ ;; Skip past all white space at the start and ends.
+ (goto-char start)
+ (skip-chars-forward " \t\n")
+ (beginning-of-line)
+ (setq start (point))
+ (goto-char end)
+ (skip-chars-backward " \t\n")
+ (forward-line 1)
+ (setq end (point))
+ (narrow-to-region start end)
+ (let ((width (shr-natural-width))
+ column)
+ (goto-char (point-min))
+ (while (not (eobp))
+ (end-of-line)
+ (when (and (< (setq column (current-column)) width)
+ (< (setq column (shr-previous-newline-padding-width column))
+ width))
+ (let ((overlay (make-overlay (point) (1+ (point)))))
+ (overlay-put overlay 'before-string
+ (concat
+ (mapconcat
+ (lambda (overlay)
+ (let ((string (plist-get
+ (overlay-properties overlay)
+ 'before-string)))
+ (if (not string)
+ ""
+ (overlay-put overlay 'before-string "")
+ string)))
+ (overlays-at (point))
+ "")
+ (propertize (make-string (- width column) ? )
+ 'face (list :background color))))))
+ (forward-line 1)))))
+
+(defun shr-previous-newline-padding-width (width)
+ (let ((overlays (overlays-at (point)))
+ (previous-width 0))
+ (if (null overlays)
+ width
+ (dolist (overlay overlays)
+ (setq previous-width
+ (+ previous-width
+ (length (plist-get (overlay-properties overlay)
+ 'before-string)))))
+ (+ width previous-width))))
(defun shr-put-color-1 (start end type color)
(let* ((old-props (get-text-property start 'face))
diff --git a/lisp/gnus/sieve-manage.el b/lisp/gnus/sieve-manage.el
index a3647061d1..d115f40528 100644
--- a/lisp/gnus/sieve-manage.el
+++ b/lisp/gnus/sieve-manage.el
@@ -1,7 +1,6 @@
;;; sieve-manage.el --- Implementation of the managesive protocol in elisp
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Simon Josefsson <[email protected]>
@@ -390,13 +389,14 @@ Optional argument AUTH indicates authenticator to use, see
If nil, chooses the best stream the server is capable of.
Optional argument BUFFER is buffer (buffer, or string naming buffer)
to work in."
- (setq buffer (or buffer (format " *sieve* %s:%s" server (or port sieve-manage-default-port))))
+ (or port (setq port sieve-manage-default-port))
+ (setq buffer (or buffer (format " *sieve* %s:%s" server port)))
(with-current-buffer (get-buffer-create buffer)
(mapc 'make-local-variable sieve-manage-local-variables)
(sieve-manage-disable-multibyte)
(buffer-disable-undo)
(setq sieve-manage-server (or server sieve-manage-server))
- (setq sieve-manage-port (or port sieve-manage-port))
+ (setq sieve-manage-port port)
(setq sieve-manage-stream (or stream sieve-manage-stream))
(message "sieve: Connecting to %s..." sieve-manage-server)
(if (let ((sieve-manage-stream
diff --git a/lisp/gnus/sieve-mode.el b/lisp/gnus/sieve-mode.el
index 78927009fc..efd28affac 100644
--- a/lisp/gnus/sieve-mode.el
+++ b/lisp/gnus/sieve-mode.el
@@ -1,7 +1,6 @@
;;; sieve-mode.el --- Sieve code editing commands for Emacs
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Simon Josefsson <[email protected]>
diff --git a/lisp/gnus/sieve.el b/lisp/gnus/sieve.el
index ca181c2e7b..31b2665a64 100644
--- a/lisp/gnus/sieve.el
+++ b/lisp/gnus/sieve.el
@@ -1,6 +1,6 @@
;;; sieve.el --- Utilities to manage sieve scripts
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Simon Josefsson <[email protected]>
@@ -322,9 +322,10 @@ Server : " server ":" (or port "2000") "
(defun sieve-open-server (server &optional port)
"Open SERVER (on PORT) and authenticate."
(with-current-buffer
- ;; open server
- (set (make-local-variable 'sieve-manage-buffer)
- (sieve-manage-open server))
+ (or ;; open server
+ (set (make-local-variable 'sieve-manage-buffer)
+ (sieve-manage-open server))
+ (error "Error opening server %s" server))
(sieve-manage-authenticate)))
(defun sieve-refresh-scriptlist ()
diff --git a/lisp/gnus/smiley.el b/lisp/gnus/smiley.el
index afffc64f12..2f5c74220e 100644
--- a/lisp/gnus/smiley.el
+++ b/lisp/gnus/smiley.el
@@ -1,7 +1,6 @@
;;; smiley.el --- displaying smiley faces
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Keywords: news mail multimedia
diff --git a/lisp/gnus/smime.el b/lisp/gnus/smime.el
index 27db3e35e2..5a7079883e 100644
--- a/lisp/gnus/smime.el
+++ b/lisp/gnus/smime.el
@@ -1,7 +1,6 @@
;;; smime.el --- S/MIME support library
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Simon Josefsson <[email protected]>
;; Keywords: SMIME X.509 PEM OpenSSL
diff --git a/lisp/gnus/spam-report.el b/lisp/gnus/spam-report.el
index 30e0ae58f0..95b5fb578f 100644
--- a/lisp/gnus/spam-report.el
+++ b/lisp/gnus/spam-report.el
@@ -1,7 +1,6 @@
;;; spam-report.el --- Reporting spam
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Ted Zlatanov <[email protected]>
;; Keywords: network, spam, mail, gmane, report
diff --git a/lisp/gnus/spam-stat.el b/lisp/gnus/spam-stat.el
index d6b20df78b..b56d0c416e 100644
--- a/lisp/gnus/spam-stat.el
+++ b/lisp/gnus/spam-stat.el
@@ -1,7 +1,6 @@
;;; spam-stat.el --- detecting spam based on statistics
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Alex Schroeder <[email protected]>
;; Keywords: network
diff --git a/lisp/gnus/spam-wash.el b/lisp/gnus/spam-wash.el
index d201c9eddf..88e2037f5e 100644
--- a/lisp/gnus/spam-wash.el
+++ b/lisp/gnus/spam-wash.el
@@ -1,6 +1,6 @@
;;; spam-wash.el --- wash spam before analysis
-;; Copyright (C) 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2004, 2007-2011 Free Software Foundation, Inc.
;; Author: Andrew Cohen <[email protected]>
;; Keywords: mail
diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el
index 097299f30c..2ebf0ba1e1 100644
--- a/lisp/gnus/spam.el
+++ b/lisp/gnus/spam.el
@@ -1,7 +1,6 @@
;;; spam.el --- Identifying spam
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Maintainer: Ted Zlatanov <[email protected]>
@@ -45,9 +44,9 @@
(eval-when-compile (require 'cl))
-(require 'message) ;for the message-fetch-field functions
+(require 'message) ;for the message-fetch-field functions
(require 'gnus-sum)
-(require 'gnus-uu) ; because of key prefix issues
+(require 'gnus-uu) ; because of key prefix issues
;;; for the definitions of group content classification and spam processors
(require 'gnus)
@@ -93,12 +92,16 @@ Populated by `spam-install-backend-super'.")
"Exit behavior at the time of summary exit.
Note that setting the `spam-use-move' or `spam-use-copy' backends on
a group through group/topic parameters overrides this mechanism."
- :type '(choice (const 'default :tag
- "Move spam out of all groups. Move ham out of spam groups.")
- (const 'move-all :tag
- "Move spam out of all groups. Move ham out of all groups.")
- (const 'move-none :tag
- "Never move spam or ham out of any groups."))
+ :type '(choice
+ (const
+ 'default
+ :tag "Move spam out of all groups and ham out of spam groups.")
+ (const
+ 'move-all
+ :tag "Move spam out of all groups and ham out of all groups.")
+ (const
+ 'move-none
+ :tag "Never move spam or ham out of any groups."))
:group 'spam)
(defcustom spam-directory (nnheader-concat gnus-directory "spam/")
@@ -296,27 +299,27 @@ them."
:group 'spam)
(defcustom spam-install-hooks (or
- spam-use-dig
- spam-use-gmane-xref
- spam-use-blacklist
- spam-use-whitelist
- spam-use-whitelist-exclusive
- spam-use-blackholes
- spam-use-hashcash
- spam-use-regex-headers
- spam-use-regex-body
- spam-use-bogofilter
- spam-use-bogofilter-headers
- spam-use-spamassassin
- spam-use-spamassassin-headers
- spam-use-bsfilter
- spam-use-bsfilter-headers
- spam-use-BBDB
- spam-use-BBDB-exclusive
- spam-use-ifile
- spam-use-stat
- spam-use-spamoracle
- spam-use-crm114)
+ spam-use-dig
+ spam-use-gmane-xref
+ spam-use-blacklist
+ spam-use-whitelist
+ spam-use-whitelist-exclusive
+ spam-use-blackholes
+ spam-use-hashcash
+ spam-use-regex-headers
+ spam-use-regex-body
+ spam-use-bogofilter
+ spam-use-bogofilter-headers
+ spam-use-spamassassin
+ spam-use-spamassassin-headers
+ spam-use-bsfilter
+ spam-use-bsfilter-headers
+ spam-use-BBDB
+ spam-use-BBDB-exclusive
+ spam-use-ifile
+ spam-use-stat
+ spam-use-spamoracle
+ spam-use-crm114)
"Whether the spam hooks should be installed.
Default to t if one of the spam-use-* variables is set."
:group 'spam
@@ -330,8 +333,8 @@ Default to t if one of the spam-use-* variables is set."
;;; TODO: deprecate this variable, it's confusing since it's a list of strings,
;;; not regular expressions
(defcustom spam-junk-mailgroups (cons
- spam-split-group
- '("mail.junk" "poste.pourriel"))
+ spam-split-group
+ '("mail.junk" "poste.pourriel"))
"Mailgroups with spam contents.
All unmarked article in such group receive the spam mark on group entry."
:type '(repeat (string :tag "Group"))
@@ -345,7 +348,7 @@ Only meaningful if you enable `spam-use-gmane-xref'."
:group 'spam)
(defcustom spam-blackhole-servers '("bl.spamcop.net" "relays.ordb.org"
- "dev.null.dk" "relays.visi.com")
+ "dev.null.dk" "relays.visi.com")
"List of blackhole servers.
Only meaningful if you enable `spam-use-blackholes'."
:type '(repeat (string :tag "Server"))
@@ -405,9 +408,9 @@ Only meaningful if you enable `spam-use-regex-body'."
(defcustom spam-summary-score-preferred-header nil
"Preferred header to use for `spam-summary-score'."
:type '(choice :tag "Header name"
- (symbol :tag "SpamAssassin etc" X-Spam-Status)
- (symbol :tag "Bogofilter" X-Bogosity)
- (const :tag "No preference, take best guess." nil))
+ (symbol :tag "SpamAssassin etc" X-Spam-Status)
+ (symbol :tag "Bogofilter" X-Bogosity)
+ (const :tag "No preference, take best guess." nil))
:group 'spam)
(defgroup spam-ifile nil
@@ -419,7 +422,7 @@ Only meaningful if you enable `spam-use-regex-body'."
(defcustom spam-ifile-program (executable-find "ifile")
"Name of the ifile program."
:type '(choice (file :tag "Location of ifile")
- (const :tag "ifile is not installed"))
+ (const :tag "ifile is not installed"))
:group 'spam-ifile)
(make-obsolete-variable 'spam-ifile-database-path 'spam-ifile-database
@@ -427,7 +430,7 @@ Only meaningful if you enable `spam-use-regex-body'."
(defcustom spam-ifile-database nil
"File name of the ifile database."
:type '(choice (file :tag "Location of the ifile database")
- (const :tag "Use the default"))
+ (const :tag "Use the default"))
:group 'spam-ifile)
(defcustom spam-ifile-spam-category "spam"
@@ -439,7 +442,7 @@ Only meaningful if you enable `spam-use-regex-body'."
"Name of the ham ifile category.
If nil, the current group name will be used."
:type '(choice (string :tag "Use a fixed category")
- (const :tag "Use the current group name"))
+ (const :tag "Use the current group name"))
:group 'spam-ifile)
(defcustom spam-ifile-all-categories nil
@@ -458,7 +461,7 @@ your main source of newsgroup names."
(defcustom spam-bogofilter-program (executable-find "bogofilter")
"Name of the Bogofilter program."
:type '(choice (file :tag "Location of bogofilter")
- (const :tag "Bogofilter is not installed"))
+ (const :tag "Bogofilter is not installed"))
:group 'spam-bogofilter)
(defvar spam-bogofilter-valid 'unknown "Is the bogofilter version valid?")
@@ -497,8 +500,8 @@ your main source of newsgroup names."
"Location of the Bogofilter database.
When nil, use the default location."
:type '(choice (directory
- :tag "Location of the Bogofilter database directory")
- (const :tag "Use the default"))
+ :tag "Location of the Bogofilter database directory")
+ (const :tag "Use the default"))
:group 'spam-bogofilter)
(defgroup spam-bsfilter nil
@@ -510,7 +513,7 @@ When nil, use the default location."
(defcustom spam-bsfilter-program (executable-find "bsfilter")
"Name of the Bsfilter program."
:type '(choice (file :tag "Location of bsfilter")
- (const :tag "Bsfilter is not installed"))
+ (const :tag "Bsfilter is not installed"))
:group 'spam-bsfilter)
(defcustom spam-bsfilter-header "X-Spam-Flag"
@@ -546,8 +549,8 @@ When nil, use the default location."
(defcustom spam-bsfilter-database-directory nil
"Directory path of the Bsfilter databases."
:type '(choice (directory
- :tag "Location of the Bsfilter database directory")
- (const :tag "Use the default"))
+ :tag "Location of the Bsfilter database directory")
+ (const :tag "Use the default"))
:group 'spam-bsfilter)
(defgroup spam-spamoracle nil
@@ -558,13 +561,13 @@ When nil, use the default location."
"Location of spamoracle database file.
When nil, use the default spamoracle database."
:type '(choice (directory :tag "Location of spamoracle database file.")
- (const :tag "Use the default"))
+ (const :tag "Use the default"))
:group 'spam-spamoracle)
(defcustom spam-spamoracle-binary (executable-find "spamoracle")
"Location of the spamoracle binary."
:type '(choice (directory :tag "Location of the spamoracle binary")
- (const :tag "Use the default"))
+ (const :tag "Use the default"))
:group 'spam-spamoracle)
(defgroup spam-spamassassin nil
@@ -578,7 +581,7 @@ When nil, use the default spamoracle database."
Hint: set this to \"spamc\" if you have spamd running. See the spamc and
spamd man pages for more information on these programs."
:type '(choice (file :tag "Location of spamc")
- (const :tag "spamassassin is not installed"))
+ (const :tag "spamassassin is not installed"))
:group 'spam-spamassassin)
(defcustom spam-spamassassin-arguments ()
@@ -608,7 +611,7 @@ identification"
(defcustom spam-sa-learn-program (executable-find "sa-learn")
"Name of the sa-learn program."
:type '(choice (file :tag "Location of spamassassin")
- (const :tag "spamassassin is not installed"))
+ (const :tag "spamassassin is not installed"))
:group 'spam-spamassassin)
(defcustom spam-sa-learn-rebuild t
@@ -642,7 +645,7 @@ order for SpamAssassin to recognize the new registered spam."
(defcustom spam-crm114-program (executable-find "mailfilter.crm")
"File path of the CRM114 Mailfilter executable program."
:type '(choice (file :tag "Location of CRM114 Mailfilter")
- (const :tag "CRM114 Mailfilter is not installed"))
+ (const :tag "CRM114 Mailfilter is not installed"))
:group 'spam-crm114)
(defcustom spam-crm114-header "X-CRM114-Status"
@@ -678,8 +681,8 @@ order for SpamAssassin to recognize the new registered spam."
(defcustom spam-crm114-database-directory nil
"Directory path of the CRM114 Mailfilter databases."
:type '(choice (directory
- :tag "Location of the CRM114 Mailfilter database directory")
- (const :tag "Use the default"))
+ :tag "Location of the CRM114 Mailfilter database directory")
+ (const :tag "Use the default"))
:group 'spam-crm114)
;;; Key bindings for spam control.
@@ -696,8 +699,8 @@ order for SpamAssassin to recognize the new registered spam."
"Whether spam.el will try to cache lookups using `spam-caches'.")
(defvar spam-caches (make-hash-table
- :size 10
- :test 'equal)
+ :size 10
+ :test 'equal)
"Cache of spam detection entries.")
(defvar spam-old-articles nil
@@ -736,11 +739,11 @@ When either list is nil, the other is returned."
(if (and list1 list2)
;; we have two non-nil lists
(progn
- (dolist (item (append list1 list2))
- (when (and (memq item list1) (memq item list2))
- (setq list1 (delq item list1))
- (setq list2 (delq item list2))))
- (append list1 list2))
+ (dolist (item (append list1 list2))
+ (when (and (memq item list1) (memq item list2))
+ (setq list1 (delq item list1))
+ (setq list2 (delq item list2))))
+ (append list1 list2))
;; if either of the lists was nil, return the other one
(if list1 list1 list2)))
@@ -748,9 +751,9 @@ When either list is nil, the other is returned."
"Checks if MARK is considered a ham mark in GROUP."
(when (stringp group)
(let* ((marks (spam-group-ham-marks group spam))
- (marks (if (symbolp mark)
- marks
- (mapcar 'symbol-value marks))))
+ (marks (if (symbolp mark)
+ marks
+ (mapcar 'symbol-value marks))))
(memq mark marks))))
(defun spam-group-spam-mark-p (group mark)
@@ -761,10 +764,10 @@ When either list is nil, the other is returned."
"In GROUP, get all the ham marks."
(when (stringp group)
(let* ((marks (if spam
- (gnus-parameter-spam-marks group)
- (gnus-parameter-ham-marks group)))
- (marks (car marks))
- (marks (if (listp (car marks)) (car marks) marks)))
+ (gnus-parameter-spam-marks group)
+ (gnus-parameter-ham-marks group)))
+ (marks (car marks))
+ (marks (if (listp (car marks)) (car marks) marks)))
marks)))
(defun spam-group-spam-marks (group)
@@ -775,15 +778,15 @@ When either list is nil, the other is returned."
"Is GROUP a spam group?"
(if (and (stringp group) (< 0 (length group)))
(or (member group spam-junk-mailgroups)
- (memq 'gnus-group-spam-classification-spam
- (gnus-parameter-spam-contents group)))
+ (memq 'gnus-group-spam-classification-spam
+ (gnus-parameter-spam-contents group)))
nil))
(defun spam-group-ham-contents-p (group)
"Is GROUP a ham group?"
(if (stringp group)
(memq 'gnus-group-spam-classification-ham
- (gnus-parameter-spam-contents group))
+ (gnus-parameter-spam-contents group))
nil))
(defun spam-classifications ()
@@ -812,20 +815,20 @@ When either list is nil, the other is returned."
(defun spam-list-articles (articles classification)
(let ((mark-check (if (eq classification 'spam)
- 'spam-group-spam-mark-p
- 'spam-group-ham-mark-p))
- alist mark-cache-yes mark-cache-no)
+ 'spam-group-spam-mark-p
+ 'spam-group-ham-mark-p))
+ alist mark-cache-yes mark-cache-no)
(dolist (article articles)
(let ((mark (gnus-summary-article-mark article)))
- (unless (or (memq mark mark-cache-yes)
- (memq mark mark-cache-no))
- (if (funcall mark-check
- gnus-newsgroup-name
- mark)
- (push mark mark-cache-yes)
- (push mark mark-cache-no)))
- (when (memq mark mark-cache-yes)
- (push article alist))))
+ (unless (or (memq mark mark-cache-yes)
+ (memq mark mark-cache-no))
+ (if (funcall mark-check
+ gnus-newsgroup-name
+ mark)
+ (push mark mark-cache-yes)
+ (push mark mark-cache-no)))
+ (when (memq mark mark-cache-yes)
+ (push article alist))))
alist))
;;}}}
@@ -841,13 +844,13 @@ backend is STATISTICAL."
(setq spam-backends (add-to-list 'spam-backends backend))
(while properties
(let ((property (pop properties))
- (value (pop properties)))
+ (value (pop properties)))
(if (spam-backend-property-valid-p property)
- (put backend property value)
- (gnus-error
- 5
- "spam-install-backend-super got an invalid property %s"
- property)))))
+ (put backend property value)
+ (gnus-error
+ 5
+ "spam-install-backend-super got an invalid property %s"
+ property)))))
(defun spam-backend-list (&optional type)
"Return a list of all the backend symbols, constrained by TYPE.
@@ -856,16 +859,16 @@ When TYPE is 'mover, only mover backends are returned."
(let (list)
(dolist (backend spam-backends)
(when (or
- (null type) ;either no type was requested
- ;; or the type is 'mover and the backend is a mover
- (and
- (eq type 'mover)
- (spam-backend-mover-p backend))
- ;; or the type is 'non-mover and the backend is not a mover
- (and
- (eq type 'non-mover)
- (not (spam-backend-mover-p backend))))
- (push backend list)))
+ (null type) ;either no type was requested
+ ;; or the type is 'mover and the backend is a mover
+ (and
+ (eq type 'mover)
+ (spam-backend-mover-p backend))
+ ;; or the type is 'non-mover and the backend is not a mover
+ (and
+ (eq type 'non-mover)
+ (not (spam-backend-mover-p backend))))
+ (push backend list)))
list))
(defun spam-backend-check (backend)
@@ -889,16 +892,16 @@ that the message is definitely a spam."
"Return information about BACKEND."
(if (spam-backend-valid-p backend)
(let (info)
- (setq info (format "Backend %s has the following properties:\n"
- backend))
- (dolist (property (spam-backend-properties))
- (setq info (format "%s%s=%s\n"
- info
- property
- (get backend property))))
- info)
+ (setq info (format "Backend %s has the following properties:\n"
+ backend))
+ (dolist (property (spam-backend-properties))
+ (setq info (format "%s%s=%s\n"
+ info
+ property
+ (get backend property))))
+ info)
(gnus-error 5 "spam-backend-info was asked about an invalid backend %s"
- backend)))
+ backend)))
(defun spam-backend-function (backend classification type)
"Get the BACKEND function for CLASSIFICATION and TYPE.
@@ -908,11 +911,11 @@ CLASSIFICATION is 'ham or 'spam."
(spam-classification-valid-p classification)
(spam-backend-function-type-valid-p type))
(let ((retrieval
- (intern
- (format "spam-backend-%s-%s-function"
- classification
- type))))
- (funcall retrieval backend))
+ (intern
+ (format "spam-backend-%s-%s-function"
+ classification
+ type))))
+ (funcall retrieval backend))
(gnus-error
5
"%s was passed invalid backend %s, classification %s, or type %s"
@@ -922,15 +925,15 @@ CLASSIFICATION is 'ham or 'spam."
type)))
(defun spam-backend-article-list-property (classification
- &optional unregister)
+ &optional unregister)
"Property name of article list with CLASSIFICATION and UNREGISTER."
(let* ((r (if unregister "unregister" "register"))
- (prop (format "%s-%s" classification r)))
+ (prop (format "%s-%s" classification r)))
prop))
(defun spam-backend-get-article-todo-list (backend
- classification
- &optional unregister)
+ classification
+ &optional unregister)
"Get the articles to be processed for BACKEND and CLASSIFICATION.
With UNREGISTER, get articles to be unregistered.
This is a temporary storage function - nothing here persists."
@@ -938,7 +941,8 @@ This is a temporary storage function - nothing here persists."
backend
(intern (spam-backend-article-list-property classification unregister))))
-(defun spam-backend-put-article-todo-list (backend classification list &optional unregister)
+(defun spam-backend-put-article-todo-list (backend classification list
+ &optional unregister)
"Set the LIST of articles to be processed for BACKEND and CLASSIFICATION.
With UNREGISTER, set articles to be unregistered.
This is a temporary storage function - nothing here persists."
@@ -1036,125 +1040,125 @@ backends)."
;;{{{ backend installations
(spam-install-checkonly-backend 'spam-use-blackholes
- 'spam-check-blackholes)
+ 'spam-check-blackholes)
(spam-install-checkonly-backend 'spam-use-hashcash
- 'spam-check-hashcash)
+ 'spam-check-hashcash)
(spam-install-checkonly-backend 'spam-use-spamassassin-headers
- 'spam-check-spamassassin-headers)
+ 'spam-check-spamassassin-headers)
(spam-install-checkonly-backend 'spam-use-bogofilter-headers
- 'spam-check-bogofilter-headers)
+ 'spam-check-bogofilter-headers)
(spam-install-checkonly-backend 'spam-use-bsfilter-headers
- 'spam-check-bsfilter-headers)
+ 'spam-check-bsfilter-headers)
(spam-install-checkonly-backend 'spam-use-gmane-xref
- 'spam-check-gmane-xref)
+ 'spam-check-gmane-xref)
(spam-install-checkonly-backend 'spam-use-regex-headers
- 'spam-check-regex-headers)
+ 'spam-check-regex-headers)
(spam-install-statistical-checkonly-backend 'spam-use-regex-body
- 'spam-check-regex-body)
+ 'spam-check-regex-body)
-;; TODO: NOTE: spam-use-ham-copy is now obsolete, use (ham spam-use-copy) instead
+;; TODO: NOTE: spam-use-ham-copy is now obsolete, use (ham spam-use-copy)
(spam-install-mover-backend 'spam-use-move
- 'spam-move-ham-routine
- 'spam-move-spam-routine
- nil
- nil)
+ 'spam-move-ham-routine
+ 'spam-move-spam-routine
+ nil
+ nil)
(spam-install-nocheck-backend 'spam-use-copy
- 'spam-copy-ham-routine
- 'spam-copy-spam-routine
- nil
- nil)
+ 'spam-copy-ham-routine
+ 'spam-copy-spam-routine
+ nil
+ nil)
(spam-install-nocheck-backend 'spam-use-gmane
- 'spam-report-gmane-unregister-routine
- 'spam-report-gmane-register-routine
- 'spam-report-gmane-register-routine
- 'spam-report-gmane-unregister-routine)
+ 'spam-report-gmane-unregister-routine
+ 'spam-report-gmane-register-routine
+ 'spam-report-gmane-register-routine
+ 'spam-report-gmane-unregister-routine)
(spam-install-nocheck-backend 'spam-use-resend
- 'spam-report-resend-register-ham-routine
- 'spam-report-resend-register-routine
- nil
- nil)
+ 'spam-report-resend-register-ham-routine
+ 'spam-report-resend-register-routine
+ nil
+ nil)
(spam-install-backend 'spam-use-BBDB
- 'spam-check-BBDB
- 'spam-BBDB-register-routine
- nil
- 'spam-BBDB-unregister-routine
- nil)
+ 'spam-check-BBDB
+ 'spam-BBDB-register-routine
+ nil
+ 'spam-BBDB-unregister-routine
+ nil)
(spam-install-backend-alias 'spam-use-BBDB 'spam-use-BBDB-exclusive)
(spam-install-backend 'spam-use-blacklist
- 'spam-check-blacklist
- nil
- 'spam-blacklist-register-routine
- nil
- 'spam-blacklist-unregister-routine)
+ 'spam-check-blacklist
+ nil
+ 'spam-blacklist-register-routine
+ nil
+ 'spam-blacklist-unregister-routine)
(spam-install-backend 'spam-use-whitelist
- 'spam-check-whitelist
- 'spam-whitelist-register-routine
- nil
- 'spam-whitelist-unregister-routine
- nil)
+ 'spam-check-whitelist
+ 'spam-whitelist-register-routine
+ nil
+ 'spam-whitelist-unregister-routine
+ nil)
(spam-install-statistical-backend 'spam-use-ifile
- 'spam-check-ifile
- 'spam-ifile-register-ham-routine
- 'spam-ifile-register-spam-routine
- 'spam-ifile-unregister-ham-routine
- 'spam-ifile-unregister-spam-routine)
+ 'spam-check-ifile
+ 'spam-ifile-register-ham-routine
+ 'spam-ifile-register-spam-routine
+ 'spam-ifile-unregister-ham-routine
+ 'spam-ifile-unregister-spam-routine)
(spam-install-statistical-backend 'spam-use-spamoracle
- 'spam-check-spamoracle
- 'spam-spamoracle-learn-ham
- 'spam-spamoracle-learn-spam
- 'spam-spamoracle-unlearn-ham
- 'spam-spamoracle-unlearn-spam)
+ 'spam-check-spamoracle
+ 'spam-spamoracle-learn-ham
+ 'spam-spamoracle-learn-spam
+ 'spam-spamoracle-unlearn-ham
+ 'spam-spamoracle-unlearn-spam)
(spam-install-statistical-backend 'spam-use-stat
- 'spam-check-stat
- 'spam-stat-register-ham-routine
- 'spam-stat-register-spam-routine
- 'spam-stat-unregister-ham-routine
- 'spam-stat-unregister-spam-routine)
+ 'spam-check-stat
+ 'spam-stat-register-ham-routine
+ 'spam-stat-register-spam-routine
+ 'spam-stat-unregister-ham-routine
+ 'spam-stat-unregister-spam-routine)
(spam-install-statistical-backend 'spam-use-spamassassin
- 'spam-check-spamassassin
- 'spam-spamassassin-register-ham-routine
- 'spam-spamassassin-register-spam-routine
- 'spam-spamassassin-unregister-ham-routine
- 'spam-spamassassin-unregister-spam-routine)
+ 'spam-check-spamassassin
+ 'spam-spamassassin-register-ham-routine
+ 'spam-spamassassin-register-spam-routine
+ 'spam-spamassassin-unregister-ham-routine
+ 'spam-spamassassin-unregister-spam-routine)
(spam-install-statistical-backend 'spam-use-bogofilter
- 'spam-check-bogofilter
- 'spam-bogofilter-register-ham-routine
- 'spam-bogofilter-register-spam-routine
- 'spam-bogofilter-unregister-ham-routine
- 'spam-bogofilter-unregister-spam-routine)
+ 'spam-check-bogofilter
+ 'spam-bogofilter-register-ham-routine
+ 'spam-bogofilter-register-spam-routine
+ 'spam-bogofilter-unregister-ham-routine
+ 'spam-bogofilter-unregister-spam-routine)
(spam-install-statistical-backend 'spam-use-bsfilter
- 'spam-check-bsfilter
- 'spam-bsfilter-register-ham-routine
- 'spam-bsfilter-register-spam-routine
- 'spam-bsfilter-unregister-ham-routine
- 'spam-bsfilter-unregister-spam-routine)
+ 'spam-check-bsfilter
+ 'spam-bsfilter-register-ham-routine
+ 'spam-bsfilter-register-spam-routine
+ 'spam-bsfilter-unregister-ham-routine
+ 'spam-bsfilter-unregister-spam-routine)
(spam-install-statistical-backend 'spam-use-crm114
- 'spam-check-crm114
- 'spam-crm114-register-ham-routine
- 'spam-crm114-register-spam-routine
- 'spam-crm114-unregister-ham-routine
- 'spam-crm114-unregister-spam-routine)
+ 'spam-check-crm114
+ 'spam-crm114-register-ham-routine
+ 'spam-crm114-register-spam-routine
+ 'spam-crm114-unregister-ham-routine
+ 'spam-crm114-unregister-spam-routine)
;;}}}
;;{{{ scoring and summary formatting
@@ -1162,31 +1166,31 @@ backends)."
"Return the extra headers spam.el thinks are necessary."
(let (list)
(when (or spam-use-spamassassin
- spam-use-spamassassin-headers
- spam-use-regex-headers)
+ spam-use-spamassassin-headers
+ spam-use-regex-headers)
(push 'X-Spam-Status list))
(when (or spam-use-bogofilter
- spam-use-regex-headers)
+ spam-use-regex-headers)
(push 'X-Bogosity list))
(when (or spam-use-crm114
- spam-use-regex-headers)
+ spam-use-regex-headers)
(push 'X-CRM114-Status list))
list))
(defun spam-user-format-function-S (headers)
(when headers
(format "%3.2f"
- (spam-summary-score headers spam-summary-score-preferred-header))))
+ (spam-summary-score headers spam-summary-score-preferred-header))))
(defun spam-article-sort-by-spam-status (h1 h2)
"Sort articles by score."
(let (result)
(dolist (header (spam-necessary-extra-headers))
(let ((s1 (spam-summary-score h1 header))
- (s2 (spam-summary-score h2 header)))
+ (s2 (spam-summary-score h2 header)))
(unless (= s1 s2)
- (setq result (< s1 s2))
- (return))))
+ (setq result (< s1 s2))
+ (return))))
result))
(defvar spam-spamassassin-score-regexp
@@ -1223,13 +1227,13 @@ With SPECIFIC-HEADER, returns only that header's score.
Will not return a nil score."
(let (score)
(dolist (header
- (if specific-header
- (list specific-header)
- (spam-necessary-extra-headers)))
+ (if specific-header
+ (list specific-header)
+ (spam-necessary-extra-headers)))
(setq score
- (spam-extra-header-to-number header headers))
+ (spam-extra-header-to-number header headers))
(when score
- (return)))
+ (return)))
(or score 0)))
(defun spam-generic-score (&optional recheck)
@@ -1256,15 +1260,15 @@ Will not return a nil score."
(let (found)
(dolist (backend (spam-backend-list))
(when (and (spam-backend-statistical-p backend)
- (or (symbol-value backend)
- (memq backend force-symbols)))
- (setq found backend)))
+ (or (symbol-value backend)
+ (memq backend force-symbols)))
+ (setq found backend)))
found))
(defvar spam-list-of-processors
;; note the nil processors are not defined in gnus.el
'((gnus-group-spam-exit-processor-bogofilter spam spam-use-bogofilter)
- (gnus-group-spam-exit-processor-bsfilter spam spam-use-bsfilter)
+ (gnus-group-spam-exit-processor-bsfilter spam spam-use-bsfilter)
(gnus-group-spam-exit-processor-blacklist spam spam-use-blacklist)
(gnus-group-spam-exit-processor-ifile spam spam-use-ifile)
(gnus-group-spam-exit-processor-stat spam spam-use-stat)
@@ -1296,38 +1300,38 @@ gnus.el and in spam-list-of-processors. In the case of mover
backends, checks the setting of `spam-summary-exit-behavior' in
addition to the set values for the group."
(if (and (stringp group)
- (symbolp backend))
+ (symbolp backend))
(let ((old-style (assq backend spam-list-of-processors))
- (parameters (nth 0 (gnus-parameter-spam-process group)))
- found)
- (if old-style ; old-style processor
- (spam-group-processor-p group (nth 2 old-style) (nth 1 old-style))
- ;; now search for the parameter
- (dolist (parameter parameters)
- (when (and (null found)
- (listp parameter)
- (eq classification (nth 0 parameter))
- (eq backend (nth 1 parameter)))
- (setq found t)))
-
- ;; now, if the parameter was not found, do the
- ;; spam-summary-exit-behavior-logic for mover backends
- (unless found
- (when (spam-backend-mover-p backend)
- (setq
- found
- (cond
- ((eq spam-summary-exit-behavior 'move-all) t)
- ((eq spam-summary-exit-behavior 'move-none) nil)
- ((eq spam-summary-exit-behavior 'default)
- (or (eq classification 'spam) ;move spam out of all groups
- ;; move ham out of spam groups
- (and (eq classification 'ham)
- (spam-group-spam-contents-p group))))
- (t (gnus-error 5 "Unknown spam-summary-exit-behavior: %s"
- spam-summary-exit-behavior))))))
-
- found))
+ (parameters (nth 0 (gnus-parameter-spam-process group)))
+ found)
+ (if old-style ; old-style processor
+ (spam-group-processor-p group (nth 2 old-style) (nth 1 old-style))
+ ;; now search for the parameter
+ (dolist (parameter parameters)
+ (when (and (null found)
+ (listp parameter)
+ (eq classification (nth 0 parameter))
+ (eq backend (nth 1 parameter)))
+ (setq found t)))
+
+ ;; now, if the parameter was not found, do the
+ ;; spam-summary-exit-behavior-logic for mover backends
+ (unless found
+ (when (spam-backend-mover-p backend)
+ (setq
+ found
+ (cond
+ ((eq spam-summary-exit-behavior 'move-all) t)
+ ((eq spam-summary-exit-behavior 'move-none) nil)
+ ((eq spam-summary-exit-behavior 'default)
+ (or (eq classification 'spam) ;move spam out of all groups
+ ;; move ham out of spam groups
+ (and (eq classification 'ham)
+ (spam-group-spam-contents-p group))))
+ (t (gnus-error 5 "Unknown spam-summary-exit-behavior: %s"
+ spam-summary-exit-behavior))))))
+
+ found))
nil))
;;}}}
@@ -1339,21 +1343,21 @@ addition to the set values for the group."
;; group parameters
(when (spam-group-spam-contents-p gnus-newsgroup-name)
(gnus-message 6 "Marking %s articles as spam"
- (if spam-mark-only-unseen-as-spam
- "unseen"
- "unread"))
+ (if spam-mark-only-unseen-as-spam
+ "unseen"
+ "unread"))
(let ((articles (if spam-mark-only-unseen-as-spam
- gnus-newsgroup-unseen
- gnus-newsgroup-unreads)))
+ gnus-newsgroup-unseen
+ gnus-newsgroup-unreads)))
(if spam-mark-new-messages-in-spam-group-as-spam
- (dolist (article articles)
- (gnus-summary-mark-article article gnus-spam-mark))
- (gnus-message 9 "Did not mark new messages as spam.")))))
+ (dolist (article articles)
+ (gnus-summary-mark-article article gnus-spam-mark))
+ (gnus-message 9 "Did not mark new messages as spam.")))))
(defun spam-summary-prepare ()
(setq spam-old-articles
- (list (cons 'ham (spam-list-articles gnus-newsgroup-articles 'ham))
- (cons 'spam (spam-list-articles gnus-newsgroup-articles 'spam))))
+ (list (cons 'ham (spam-list-articles gnus-newsgroup-articles 'ham))
+ (cons 'spam (spam-list-articles gnus-newsgroup-articles 'spam))))
(spam-mark-junk-as-spam-routine))
;; The spam processors are invoked for any group, spam or ham or neither
@@ -1369,46 +1373,46 @@ addition to the set values for the group."
;; we have to iterate over the processors, or else we'll be too slow
(dolist (classification (spam-classifications))
(let* ((old-articles (cdr-safe (assq classification spam-old-articles)))
- (new-articles (spam-list-articles
- gnus-newsgroup-articles
- classification))
- (changed-articles (spam-set-difference new-articles old-articles)))
- ;; now that we have the changed articles, we go through the processors
- (dolist (backend (spam-backend-list))
- (let (unregister-list)
- (dolist (article changed-articles)
- (let ((id (spam-fetch-field-message-id-fast article)))
- (when (spam-log-unregistration-needed-p
- id 'process classification backend)
- (push article unregister-list))))
- ;; call spam-register-routine with specific articles to unregister,
- ;; when there are articles to unregister and the check is enabled
- (when (and unregister-list (symbol-value backend))
- (spam-backend-put-article-todo-list backend
- classification
- unregister-list
- t))))))
+ (new-articles (spam-list-articles
+ gnus-newsgroup-articles
+ classification))
+ (changed-articles (spam-set-difference new-articles old-articles)))
+ ;; now that we have the changed articles, we go through the processors
+ (dolist (backend (spam-backend-list))
+ (let (unregister-list)
+ (dolist (article changed-articles)
+ (let ((id (spam-fetch-field-message-id-fast article)))
+ (when (spam-log-unregistration-needed-p
+ id 'process classification backend)
+ (push article unregister-list))))
+ ;; call spam-register-routine with specific articles to unregister,
+ ;; when there are articles to unregister and the check is enabled
+ (when (and unregister-list (symbol-value backend))
+ (spam-backend-put-article-todo-list backend
+ classification
+ unregister-list
+ t))))))
;; do the non-moving backends first, then the moving ones
(dolist (backend-type '(non-mover mover))
(dolist (classification (spam-classifications))
- (dolist (backend (spam-backend-list backend-type))
- (when (spam-group-processor-p
- gnus-newsgroup-name
- backend
- classification)
- (spam-backend-put-article-todo-list backend
- classification
- (spam-list-articles
- gnus-newsgroup-articles
- classification))))))
+ (dolist (backend (spam-backend-list backend-type))
+ (when (spam-group-processor-p
+ gnus-newsgroup-name
+ backend
+ classification)
+ (spam-backend-put-article-todo-list backend
+ classification
+ (spam-list-articles
+ gnus-newsgroup-articles
+ classification))))))
(spam-resolve-registrations-routine) ; do the registrations now
;; we mark all the leftover spam articles as expired at the end
(dolist (article (spam-list-articles
- gnus-newsgroup-articles
- 'spam))
+ gnus-newsgroup-articles
+ 'spam))
(gnus-summary-mark-article article gnus-expirable-mark)))
(setq spam-old-articles nil))
@@ -1429,67 +1433,94 @@ addition to the set values for the group."
(gnus-summary-kill-process-mark)
(let ((backend-supports-deletions
- (gnus-check-backend-function
- 'request-move-article gnus-newsgroup-name))
- (respool-method (gnus-find-method-for-group gnus-newsgroup-name))
- article mark deletep respool)
+ (gnus-check-backend-function
+ 'request-move-article gnus-newsgroup-name))
+ (respool-method (gnus-find-method-for-group gnus-newsgroup-name))
+ article mark deletep respool valid-move-destinations)
(when (member 'respool groups)
- (setq respool t) ; boolean for later
+ (setq respool t) ; boolean for later
(setq groups '("fake"))) ; when respooling, groups are dynamic so fake it
+ ;; exclude invalid move destinations
+ (dolist (group groups)
+ (unless
+ (or
+ (and
+ (eq classification 'spam)
+ (spam-group-spam-contents-p gnus-newsgroup-name)
+ (spam-group-spam-contents-p group)
+ (gnus-message
+ 3
+ "Sorry, can't move spam from spam group %s to spam group %s"
+ gnus-newsgroup-name
+ group))
+ (and
+ (eq classification 'ham)
+ (spam-group-ham-contents-p gnus-newsgroup-name)
+ (spam-group-ham-contents-p group)
+ (gnus-message
+ 3
+ "Sorry, can't move ham from ham group %s to ham group %s"
+ gnus-newsgroup-name
+ group)))
+ (push group valid-move-destinations)))
+
+ (setq groups (nreverse valid-move-destinations))
+
;; now do the actual move
(dolist (group groups)
+
(when (and articles (stringp group))
- ;; first, mark the article with the process mark and, if needed,
- ;; the unread or expired mark (for ham and spam respectively)
+ ;; first, mark the article with the process mark and, if needed,
+ ;; the unread or expired mark (for ham and spam respectively)
+ (dolist (article articles)
+ (when (and (eq classification 'ham)
+ spam-mark-ham-unread-before-move-from-spam-group)
+ (gnus-message 9 "Marking ham article %d unread before move"
+ article)
+ (gnus-summary-mark-article article gnus-unread-mark))
+ (when (and (eq classification 'spam)
+ (not copy))
+ (gnus-message 9 "Marking spam article %d expirable before move"
+ article)
+ (gnus-summary-mark-article article gnus-expirable-mark))
+ (gnus-summary-set-process-mark article)
+
+ (if respool ; respooling is with a "fake" group
+ (let ((spam-split-disabled
+ (or spam-split-disabled
+ (and (eq classification 'ham)
+ spam-disable-spam-split-during-ham-respool))))
+ (gnus-message 9 "Respooling article %d with method %s"
+ article respool-method)
+ (gnus-summary-respool-article nil respool-method))
+ ;; else, we are not respooling
+ (if (or (not backend-supports-deletions)
+ (> (length groups) 1))
+ (progn ; if copying, copy and set deletep
+ (gnus-message 9 "Copying article %d to group %s"
+ article group)
+ (gnus-summary-copy-article nil group)
+ (setq deletep t))
+ (gnus-message 9 "Moving article %d to group %s"
+ article group)
+ (gnus-summary-move-article nil group)))))) ; else move articles
+
+ ;; now delete the articles, unless a) copy is t, and there was a copy done
+ ;; b) a move was done to a single group
+ ;; c) backend-supports-deletions is nil
+ (unless copy
+ (when (and deletep backend-supports-deletions)
(dolist (article articles)
- (when (and (eq classification 'ham)
- spam-mark-ham-unread-before-move-from-spam-group)
- (gnus-message 9 "Marking ham article %d unread before move"
- article)
- (gnus-summary-mark-article article gnus-unread-mark))
- (when (and (eq classification 'spam)
- (not copy))
- (gnus-message 9 "Marking spam article %d expirable before move"
- article)
- (gnus-summary-mark-article article gnus-expirable-mark))
(gnus-summary-set-process-mark article)
-
- (if respool ; respooling is with a "fake" group
- (let ((spam-split-disabled
- (or spam-split-disabled
- (and (eq classification 'ham)
- spam-disable-spam-split-during-ham-respool))))
- (gnus-message 9 "Respooling article %d with method %s"
- article respool-method)
- (gnus-summary-respool-article nil respool-method))
- (if (or (not backend-supports-deletions) ; else, we are not respooling
- (> (length groups) 1))
- (progn ; if copying, copy and set deletep
- (gnus-message 9 "Copying article %d to group %s"
- article group)
- (gnus-summary-copy-article nil group)
- (setq deletep t))
- (gnus-message 9 "Moving article %d to group %s"
- article group)
- (gnus-summary-move-article nil group))))) ; else move articles
-
- ;; now delete the articles, unless a) copy is t, and there was a copy done
- ;; b) a move was done to a single group
- ;; c) backend-supports-deletions is nil
- (unless copy
- (when (and deletep backend-supports-deletions)
- (dolist (article articles)
- (gnus-summary-set-process-mark article)
- (gnus-message 9 "Deleting article %d" article))
- (when articles
- (let ((gnus-novice-user nil)) ; don't ask me if I'm sure
- (gnus-summary-delete-article nil)))))
-
- (gnus-summary-yank-process-mark)
- (length articles))))
+ (gnus-message 9 "Deleting article %d" article))
+ (when articles
+ (let ((gnus-novice-user nil)) ; don't ask me if I'm sure
+ (gnus-summary-delete-article nil)))))
+ (gnus-summary-yank-process-mark)
+ (length articles)))
(defun spam-copy-spam-routine (articles)
(spam-copy-or-move-routine
@@ -1537,44 +1568,44 @@ addition to the set values for the group."
;; (nnml-possibly-change-directory
;; (gnus-group-real-name gnus-newsgroup-name))
;; (setq article-filename (expand-file-name
-;; (int-to-string article) nnml-current-directory)))
+;; (int-to-string article) nnml-current-directory)))
;; (if (file-exists-p article-filename)
-;; article-filename
+;; article-filename
;; nil)))
(defun spam-fetch-field-fast (article field &optional prepared-data-header)
- "Fetch a FIELD for ARTICLE quickly, using the internal gnus-data-list function.
+ "Fetch a FIELD for ARTICLE with the internal `gnus-data-list' function.
When PREPARED-DATA-HEADER is given, don't look in the Gnus data.
When FIELD is 'number, ARTICLE can be any number (since we want
to find it out)."
(when (numberp article)
(let* ((data-header (or prepared-data-header
- (spam-fetch-article-header article))))
+ (spam-fetch-article-header article))))
(if (arrayp data-header)
- (cond
- ((equal field 'number)
- (mail-header-number data-header))
- ((equal field 'from)
- (mail-header-from data-header))
- ((equal field 'message-id)
- (mail-header-message-id data-header))
- ((equal field 'subject)
- (mail-header-subject data-header))
- ((equal field 'references)
- (mail-header-references data-header))
- ((equal field 'date)
- (mail-header-date data-header))
- ((equal field 'xref)
- (mail-header-xref data-header))
- ((equal field 'extra)
- (mail-header-extra data-header))
- (t
- (gnus-error
- 5
- "spam-fetch-field-fast: unknown field %s requested"
- field)
- nil))
- (gnus-message 6 "Article %d has a nil data header" article)))))
+ (cond
+ ((equal field 'number)
+ (mail-header-number data-header))
+ ((equal field 'from)
+ (mail-header-from data-header))
+ ((equal field 'message-id)
+ (mail-header-message-id data-header))
+ ((equal field 'subject)
+ (mail-header-subject data-header))
+ ((equal field 'references)
+ (mail-header-references data-header))
+ ((equal field 'date)
+ (mail-header-date data-header))
+ ((equal field 'xref)
+ (mail-header-xref data-header))
+ ((equal field 'extra)
+ (mail-header-extra data-header))
+ (t
+ (gnus-error
+ 5
+ "spam-fetch-field-fast: unknown field %s requested"
+ field)
+ nil))
+ (gnus-message 6 "Article %d has a nil data header" article)))))
(defun spam-fetch-field-from-fast (article &optional prepared-data-header)
(spam-fetch-field-fast article 'from prepared-data-header))
@@ -1588,19 +1619,19 @@ to find it out)."
(defun spam-generate-fake-headers (article)
(let ((dh (spam-fetch-article-header article)))
(if dh
- (concat
- (format
- ;; 80-character limit makes for strange constructs
- (concat "From: %s\nSubject: %s\nMessage-ID: %s\n"
- "Date: %s\nReferences: %s\nXref: %s\n")
- (spam-fetch-field-fast article 'from dh)
- (spam-fetch-field-fast article 'subject dh)
- (spam-fetch-field-fast article 'message-id dh)
- (spam-fetch-field-fast article 'date dh)
- (spam-fetch-field-fast article 'references dh)
- (spam-fetch-field-fast article 'xref dh))
- (when (spam-fetch-field-fast article 'extra dh)
- (format "%s\n" (spam-fetch-field-fast article 'extra dh))))
+ (concat
+ (format
+ ;; 80-character limit makes for strange constructs
+ (concat "From: %s\nSubject: %s\nMessage-ID: %s\n"
+ "Date: %s\nReferences: %s\nXref: %s\n")
+ (spam-fetch-field-fast article 'from dh)
+ (spam-fetch-field-fast article 'subject dh)
+ (spam-fetch-field-fast article 'message-id dh)
+ (spam-fetch-field-fast article 'date dh)
+ (spam-fetch-field-fast article 'references dh)
+ (spam-fetch-field-fast article 'xref dh))
+ (when (spam-fetch-field-fast article 'extra dh)
+ (format "%s\n" (spam-fetch-field-fast article 'extra dh))))
(gnus-message
5
"spam-generate-fake-headers: article %d didn't have a valid header"
@@ -1627,122 +1658,122 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
(unless spam-split-disabled
(let ((spam-split-group-choice spam-split-group))
(dolist (check specific-checks)
- (when (stringp check)
- (setq spam-split-group-choice check)
- (setq specific-checks (delq check specific-checks))))
+ (when (stringp check)
+ (setq spam-split-group-choice check)
+ (setq specific-checks (delq check specific-checks))))
(let ((spam-split-group spam-split-group-choice)
- (widening-needed-check (spam-widening-needed-p specific-checks)))
- (save-excursion
- (save-restriction
- (when widening-needed-check
- (widen)
- (gnus-message 8 "spam-split: widening the buffer (%s requires it)"
- widening-needed-check))
- (let ((backends (spam-backend-list))
- decision)
- (while (and backends (not decision))
- (let* ((backend (pop backends))
- (check-function (spam-backend-check backend))
- (spam-split-group (if spam-split-symbolic-return
- 'spam
- spam-split-group)))
- (when (or
- ;; either, given specific checks, this is one of them
- (memq backend specific-checks)
- ;; or, given no specific checks, spam-use-CHECK is set
- (and (null specific-checks) (symbol-value backend)))
- (gnus-message 6 "spam-split: calling the %s function"
- check-function)
- (setq decision (funcall check-function))
- ;; if we got a decision at all, save the current check
- (when decision
- (setq spam-split-last-successful-check backend))
-
- (when (eq decision 'spam)
- (unless spam-split-symbolic-return
- (gnus-error
- 5
- (format "spam-split got %s but %s is nil"
- decision
- spam-split-symbolic-return)))))))
- (if (eq decision t)
- (if spam-split-symbolic-return-positive 'ham nil)
- decision))))))))
+ (widening-needed-check (spam-widening-needed-p specific-checks)))
+ (save-excursion
+ (save-restriction
+ (when widening-needed-check
+ (widen)
+ (gnus-message 8 "spam-split: widening the buffer (%s requires it)"
+ widening-needed-check))
+ (let ((backends (spam-backend-list))
+ decision)
+ (while (and backends (not decision))
+ (let* ((backend (pop backends))
+ (check-function (spam-backend-check backend))
+ (spam-split-group (if spam-split-symbolic-return
+ 'spam
+ spam-split-group)))
+ (when (or
+ ;; either, given specific checks, this is one of them
+ (memq backend specific-checks)
+ ;; or, given no specific checks, spam-use-CHECK is set
+ (and (null specific-checks) (symbol-value backend)))
+ (gnus-message 6 "spam-split: calling the %s function"
+ check-function)
+ (setq decision (funcall check-function))
+ ;; if we got a decision at all, save the current check
+ (when decision
+ (setq spam-split-last-successful-check backend))
+
+ (when (eq decision 'spam)
+ (unless spam-split-symbolic-return
+ (gnus-error
+ 5
+ (format "spam-split got %s but %s is nil"
+ decision
+ spam-split-symbolic-return)))))))
+ (if (eq decision t)
+ (if spam-split-symbolic-return-positive 'ham nil)
+ decision))))))))
(defun spam-find-spam ()
"Detect spam in the current newsgroup using `spam-split'."
(interactive)
(let* ((group gnus-newsgroup-name)
- (autodetect (gnus-parameter-spam-autodetect group))
- (methods (gnus-parameter-spam-autodetect-methods group))
- (first-method (nth 0 methods))
- (articles (if spam-autodetect-recheck-messages
- gnus-newsgroup-articles
- gnus-newsgroup-unseen))
- article-cannot-be-faked)
+ (autodetect (gnus-parameter-spam-autodetect group))
+ (methods (gnus-parameter-spam-autodetect-methods group))
+ (first-method (nth 0 methods))
+ (articles (if spam-autodetect-recheck-messages
+ gnus-newsgroup-articles
+ gnus-newsgroup-unseen))
+ article-cannot-be-faked)
(dolist (backend methods)
(when (spam-backend-statistical-p backend)
- (setq article-cannot-be-faked t)
- (return)))
+ (setq article-cannot-be-faked t)
+ (return)))
(when (memq 'default methods)
(setq article-cannot-be-faked t))
(when (and autodetect
- (not (equal first-method 'none)))
+ (not (equal first-method 'none)))
(mapcar
(lambda (article)
- (let ((id (spam-fetch-field-message-id-fast article))
- (subject (spam-fetch-field-subject-fast article))
- (sender (spam-fetch-field-from-fast article))
- registry-lookup)
-
- (unless id
- (gnus-message 6 "Article %d has no message ID!" article))
-
- (when (and id spam-log-to-registry)
- (setq registry-lookup (spam-log-registration-type id 'incoming))
- (when registry-lookup
- (gnus-message
- 9
- "spam-find-spam: message %s was already registered incoming"
- id)))
-
- (let* ((spam-split-symbolic-return t)
- (spam-split-symbolic-return-positive t)
- (fake-headers (spam-generate-fake-headers article))
- (split-return
- (or registry-lookup
- (with-temp-buffer
- (if article-cannot-be-faked
- (gnus-request-article-this-buffer
- article
- group)
- ;; else, we fake the article
- (when fake-headers (insert fake-headers)))
- (if (or (null first-method)
- (equal first-method 'default))
- (spam-split)
- (apply 'spam-split methods))))))
- (if (equal split-return 'spam)
- (gnus-summary-mark-article article gnus-spam-mark))
-
- (when (and id split-return spam-log-to-registry)
- (when (zerop (gnus-registry-group-count id))
- (gnus-registry-add-group
- id group subject sender))
-
- (unless registry-lookup
- (spam-log-processing-to-registry
- id
- 'incoming
- split-return
- spam-split-last-successful-check
- group))))))
+ (let ((id (spam-fetch-field-message-id-fast article))
+ (subject (spam-fetch-field-subject-fast article))
+ (sender (spam-fetch-field-from-fast article))
+ registry-lookup)
+
+ (unless id
+ (gnus-message 6 "Article %d has no message ID!" article))
+
+ (when (and id spam-log-to-registry)
+ (setq registry-lookup (spam-log-registration-type id 'incoming))
+ (when registry-lookup
+ (gnus-message
+ 9
+ "spam-find-spam: message %s was already registered incoming"
+ id)))
+
+ (let* ((spam-split-symbolic-return t)
+ (spam-split-symbolic-return-positive t)
+ (fake-headers (spam-generate-fake-headers article))
+ (split-return
+ (or registry-lookup
+ (with-temp-buffer
+ (if article-cannot-be-faked
+ (gnus-request-article-this-buffer
+ article
+ group)
+ ;; else, we fake the article
+ (when fake-headers (insert fake-headers)))
+ (if (or (null first-method)
+ (equal first-method 'default))
+ (spam-split)
+ (apply 'spam-split methods))))))
+ (if (equal split-return 'spam)
+ (gnus-summary-mark-article article gnus-spam-mark))
+
+ (when (and id split-return spam-log-to-registry)
+ (when (zerop (gnus-registry-group-count id))
+ (gnus-registry-add-group
+ id group subject sender))
+
+ (unless registry-lookup
+ (spam-log-processing-to-registry
+ id
+ 'incoming
+ split-return
+ spam-split-last-successful-check
+ group))))))
articles))))
;;}}}
@@ -1754,104 +1785,104 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
(dolist (backend-type '(non-mover mover))
(dolist (classification (spam-classifications))
(dolist (backend (spam-backend-list backend-type))
- (let ((rlist (spam-backend-get-article-todo-list
- backend classification))
- (ulist (spam-backend-get-article-todo-list
- backend classification t))
- (delcount 0))
-
- ;; clear the old lists right away
- (spam-backend-put-article-todo-list backend
- classification
- nil
- nil)
- (spam-backend-put-article-todo-list backend
- classification
- nil
- t)
-
- ;; eliminate duplicates
- (dolist (article (copy-sequence ulist))
- (when (memq article rlist)
- (incf delcount)
- (setq rlist (delq article rlist))
- (setq ulist (delq article ulist))))
-
- (unless (zerop delcount)
- (gnus-message
- 9
- "%d messages were saved the trouble of unregistering and then registering"
- delcount))
-
- ;; unregister articles
- (unless (zerop (length ulist))
- (let ((num (spam-unregister-routine classification backend ulist)))
- (when (> num 0)
- (gnus-message
- 6
- "%d %s messages were unregistered by backend %s."
- num
- classification
- backend))))
-
- ;; register articles
- (unless (zerop (length rlist))
- (let ((num (spam-register-routine classification backend rlist)))
- (when (> num 0)
- (gnus-message
- 6
- "%d %s messages were registered by backend %s."
- num
- classification
- backend)))))))))
+ (let ((rlist (spam-backend-get-article-todo-list
+ backend classification))
+ (ulist (spam-backend-get-article-todo-list
+ backend classification t))
+ (delcount 0))
+
+ ;; clear the old lists right away
+ (spam-backend-put-article-todo-list backend
+ classification
+ nil
+ nil)
+ (spam-backend-put-article-todo-list backend
+ classification
+ nil
+ t)
+
+ ;; eliminate duplicates
+ (dolist (article (copy-sequence ulist))
+ (when (memq article rlist)
+ (incf delcount)
+ (setq rlist (delq article rlist))
+ (setq ulist (delq article ulist))))
+
+ (unless (zerop delcount)
+ (gnus-message
+ 9
+ "%d messages did not have to unregister and then register"
+ delcount))
+
+ ;; unregister articles
+ (unless (zerop (length ulist))
+ (let ((num (spam-unregister-routine classification backend ulist)))
+ (when (> num 0)
+ (gnus-message
+ 6
+ "%d %s messages were unregistered by backend %s."
+ num
+ classification
+ backend))))
+
+ ;; register articles
+ (unless (zerop (length rlist))
+ (let ((num (spam-register-routine classification backend rlist)))
+ (when (> num 0)
+ (gnus-message
+ 6
+ "%d %s messages were registered by backend %s."
+ num
+ classification
+ backend)))))))))
(defun spam-unregister-routine (classification
- backend
- specific-articles)
+ backend
+ specific-articles)
(spam-register-routine classification backend specific-articles t))
(defun spam-register-routine (classification
- backend
- specific-articles
- &optional unregister)
+ backend
+ specific-articles
+ &optional unregister)
(when (and (spam-classification-valid-p classification)
- (spam-backend-valid-p backend))
+ (spam-backend-valid-p backend))
(let* ((register-function
- (spam-backend-function backend classification 'registration))
- (unregister-function
- (spam-backend-function backend classification 'unregistration))
- (run-function (if unregister
- unregister-function
- register-function))
- (log-function (if unregister
- 'spam-log-undo-registration
- 'spam-log-processing-to-registry))
- article articles)
+ (spam-backend-function backend classification 'registration))
+ (unregister-function
+ (spam-backend-function backend classification 'unregistration))
+ (run-function (if unregister
+ unregister-function
+ register-function))
+ (log-function (if unregister
+ 'spam-log-undo-registration
+ 'spam-log-processing-to-registry))
+ article articles)
(when run-function
- ;; make list of articles, using specific-articles if given
- (setq articles (or specific-articles
- (spam-list-articles
- gnus-newsgroup-articles
- classification)))
- ;; process them
+ ;; make list of articles, using specific-articles if given
+ (setq articles (or specific-articles
+ (spam-list-articles
+ gnus-newsgroup-articles
+ classification)))
+ ;; process them
(when (> (length articles) 0)
- (gnus-message 5 "%s %d %s articles as %s using backend %s"
- (if unregister "Unregistering" "Registering")
- (length articles)
- (if specific-articles "specific" "")
- classification
- backend)
- (funcall run-function articles)
- ;; now log all the registrations (or undo them, depending on
- ;; unregister)
- (dolist (article articles)
- (funcall log-function
- (spam-fetch-field-message-id-fast article)
- 'process
- classification
- backend
- gnus-newsgroup-name))))
+ (gnus-message 5 "%s %d %s articles as %s using backend %s"
+ (if unregister "Unregistering" "Registering")
+ (length articles)
+ (if specific-articles "specific" "")
+ classification
+ backend)
+ (funcall run-function articles)
+ ;; now log all the registrations (or undo them, depending on
+ ;; unregister)
+ (dolist (article articles)
+ (funcall log-function
+ (spam-fetch-field-message-id-fast article)
+ 'process
+ classification
+ backend
+ gnus-newsgroup-name))))
;; return the number of articles processed
(length articles))))
@@ -1859,50 +1890,51 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
(defun spam-log-processing-to-registry (id type classification backend group)
(when spam-log-to-registry
(if (and (stringp id)
- (stringp group)
- (spam-process-type-valid-p type)
- (spam-classification-valid-p classification)
- (spam-backend-valid-p backend))
- (let ((cell-list (cdr-safe (gnus-registry-fetch-extra id type)))
- (cell (list classification backend group)))
- (push cell cell-list)
- (gnus-registry-store-extra-entry
- id
- type
- cell-list))
+ (stringp group)
+ (spam-process-type-valid-p type)
+ (spam-classification-valid-p classification)
+ (spam-backend-valid-p backend))
+ (let ((cell-list (cdr-safe (gnus-registry-fetch-extra id type)))
+ (cell (list classification backend group)))
+ (push cell cell-list)
+ (gnus-registry-store-extra-entry
+ id
+ type
+ cell-list))
(gnus-error
7
- (format "%s call with bad ID, type, classification, spam-backend, or group"
- "spam-log-processing-to-registry")))))
+ (format
+ "%s call with bad ID, type, classification, spam-backend, or group"
+ "spam-log-processing-to-registry")))))
;;; check if a ham- or spam-processor registration has been done
(defun spam-log-registered-p (id type)
(when spam-log-to-registry
(if (and (stringp id)
- (spam-process-type-valid-p type))
- (cdr-safe (gnus-registry-fetch-extra id type))
+ (spam-process-type-valid-p type))
+ (cdr-safe (gnus-registry-fetch-extra id type))
(progn
- (gnus-error
- 7
- (format "%s called with bad ID, type, classification, or spam-backend"
- "spam-log-registered-p"))
- nil))))
+ (gnus-error
+ 7
+ (format "%s called with bad ID, type, classification, or spam-backend"
+ "spam-log-registered-p"))
+ nil))))
;;; check what a ham- or spam-processor registration says
;;; returns nil if conflicting registrations are found
(defun spam-log-registration-type (id type)
(let ((count 0)
- decision)
+ decision)
(dolist (reg (spam-log-registered-p id type))
(let ((classification (nth 0 reg)))
- (when (spam-classification-valid-p classification)
- (when (and decision
- (not (eq classification decision)))
- (setq count (+ 1 count)))
- (setq decision classification))))
+ (when (spam-classification-valid-p classification)
+ (when (and decision
+ (not (eq classification decision)))
+ (setq count (+ 1 count)))
+ (setq decision classification))))
(if (< 0 count)
- nil
+ nil
decision)))
@@ -1910,47 +1942,49 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
(defun spam-log-unregistration-needed-p (id type classification backend)
(when spam-log-to-registry
(if (and (stringp id)
- (spam-process-type-valid-p type)
- (spam-classification-valid-p classification)
- (spam-backend-valid-p backend))
- (let ((cell-list (cdr-safe (gnus-registry-fetch-extra id type)))
- found)
- (dolist (cell cell-list)
- (unless found
- (when (and (eq classification (nth 0 cell))
- (eq backend (nth 1 cell)))
- (setq found t))))
- found)
+ (spam-process-type-valid-p type)
+ (spam-classification-valid-p classification)
+ (spam-backend-valid-p backend))
+ (let ((cell-list (cdr-safe (gnus-registry-fetch-extra id type)))
+ found)
+ (dolist (cell cell-list)
+ (unless found
+ (when (and (eq classification (nth 0 cell))
+ (eq backend (nth 1 cell)))
+ (setq found t))))
+ found)
(progn
- (gnus-error
- 7
- (format "%s called with bad ID, type, classification, or spam-backend"
- "spam-log-unregistration-needed-p"))
- nil))))
+ (gnus-error
+ 7
+ (format "%s called with bad ID, type, classification, or spam-backend"
+ "spam-log-unregistration-needed-p"))
+ nil))))
;;; undo a ham- or spam-processor registration (the group is not used)
-(defun spam-log-undo-registration (id type classification backend &optional group)
+(defun spam-log-undo-registration (id type classification backend
+ &optional group)
(when (and spam-log-to-registry
- (spam-log-unregistration-needed-p id type classification backend))
+ (spam-log-unregistration-needed-p id type classification backend))
(if (and (stringp id)
- (spam-process-type-valid-p type)
- (spam-classification-valid-p classification)
- (spam-backend-valid-p backend))
- (let ((cell-list (cdr-safe (gnus-registry-fetch-extra id type)))
- new-cell-list found)
- (dolist (cell cell-list)
- (unless (and (eq classification (nth 0 cell))
- (eq backend (nth 1 cell)))
- (push cell new-cell-list)))
- (gnus-registry-store-extra-entry
- id
- type
- new-cell-list))
+ (spam-process-type-valid-p type)
+ (spam-classification-valid-p classification)
+ (spam-backend-valid-p backend))
+ (let ((cell-list (cdr-safe (gnus-registry-fetch-extra id type)))
+ new-cell-list found)
+ (dolist (cell cell-list)
+ (unless (and (eq classification (nth 0 cell))
+ (eq backend (nth 1 cell)))
+ (push cell new-cell-list)))
+ (gnus-registry-store-extra-entry
+ id
+ type
+ new-cell-list))
(progn
- (gnus-error 7 (format "%s call with bad ID, type, spam-backend, or group"
- "spam-log-undo-registration"))
- nil))))
+ (gnus-error 7 (format
+ "%s call with bad ID, type, spam-backend, or group"
+ "spam-log-undo-registration"))
+ nil))))
;;}}}
@@ -1959,12 +1993,12 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
;;{{{ Gmane xrefs
(defun spam-check-gmane-xref ()
(let ((header (or
- (message-fetch-field "Xref")
- (message-fetch-field "Newsgroups"))))
- (when header ; return nil when no header
+ (message-fetch-field "Xref")
+ (message-fetch-field "Newsgroups"))))
+ (when header ; return nil when no header
(when (string-match spam-gmane-xref-spam-group
- header)
- spam-split-group))))
+ header)
+ spam-split-group))))
;;}}}
@@ -1972,7 +2006,7 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
(defun spam-check-regex-body ()
(let ((spam-regex-headers-ham spam-regex-body-ham)
- (spam-regex-headers-spam spam-regex-body-spam))
+ (spam-regex-headers-spam spam-regex-body-spam))
(spam-check-regex-headers t)))
;;}}}
@@ -1981,20 +2015,20 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
(defun spam-check-regex-headers (&optional body)
(let ((type (if body "body" "header"))
- ret found)
+ ret found)
(dolist (h-regex spam-regex-headers-ham)
(unless found
- (goto-char (point-min))
- (when (re-search-forward h-regex nil t)
- (message "Ham regex %s search positive." type)
- (setq found t))))
+ (goto-char (point-min))
+ (when (re-search-forward h-regex nil t)
+ (message "Ham regex %s search positive." type)
+ (setq found t))))
(dolist (s-regex spam-regex-headers-spam)
(unless found
- (goto-char (point-min))
- (when (re-search-forward s-regex nil t)
- (message "Spam regex %s search positive." type)
- (setq found t)
- (setq ret spam-split-group))))
+ (goto-char (point-min))
+ (when (re-search-forward s-regex nil t)
+ (message "Spam regex %s search positive." type)
+ (setq found t)
+ (setq ret spam-split-group))))
ret))
;;}}}
@@ -2004,44 +2038,44 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
(defun spam-reverse-ip-string (ip)
(when (stringp ip)
(mapconcat 'identity
- (nreverse (split-string ip "\\."))
- ".")))
+ (nreverse (split-string ip "\\."))
+ ".")))
(defun spam-check-blackholes ()
"Check the Received headers for blackholed relays."
(let ((headers (message-fetch-field "received"))
- ips matches)
+ ips matches)
(when headers
(with-temp-buffer
- (insert headers)
- (goto-char (point-min))
- (gnus-message 6 "Checking headers for relay addresses")
- (while (re-search-forward
- "\\([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+\\)" nil t)
- (gnus-message 9 "Blackhole search found host IP %s." (match-string 1))
- (push (spam-reverse-ip-string (match-string 1))
- ips)))
+ (insert headers)
+ (goto-char (point-min))
+ (gnus-message 6 "Checking headers for relay addresses")
+ (while (re-search-forward
+ "\\([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+\\)" nil t)
+ (gnus-message 9 "Blackhole search found host IP %s." (match-string 1))
+ (push (spam-reverse-ip-string (match-string 1))
+ ips)))
(dolist (server spam-blackhole-servers)
- (dolist (ip ips)
- (unless (and spam-blackhole-good-server-regex
- ;; match the good-server-regex against the reversed (again) IP string
- (string-match
- spam-blackhole-good-server-regex
- (spam-reverse-ip-string ip)))
- (unless matches
- (let ((query-string (concat ip "." server)))
- (if spam-use-dig
- (let ((query-result (query-dig query-string)))
- (when query-result
- (gnus-message 6 "(DIG): positive blackhole check '%s'"
- query-result)
- (push (list ip server query-result)
- matches)))
- ;; else, if not using dig.el
- (when (dns-query query-string)
- (gnus-message 6 "positive blackhole check")
- (push (list ip server (dns-query query-string 'TXT))
- matches)))))))))
+ (dolist (ip ips)
+ (unless (and spam-blackhole-good-server-regex
+ ;; match against the reversed (again) IP string
+ (string-match
+ spam-blackhole-good-server-regex
+ (spam-reverse-ip-string ip)))
+ (unless matches
+ (let ((query-string (concat ip "." server)))
+ (if spam-use-dig
+ (let ((query-result (query-dig query-string)))
+ (when query-result
+ (gnus-message 6 "(DIG): positive blackhole check '%s'"
+ query-result)
+ (push (list ip server query-result)
+ matches)))
+ ;; else, if not using dig.el
+ (when (dns-query query-string)
+ (gnus-message 6 "positive blackhole check")
+ (push (list ip server (dns-query query-string 'TXT))
+ matches)))))))))
(when matches
spam-split-group)))
;;}}}
@@ -2050,7 +2084,7 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
(defun spam-check-hashcash ()
"Check the headers for hashcash payments."
- (ignore-errors (mail-check-payment))) ;mail-check-payment returns a boolean
+ (ignore-errors (mail-check-payment))) ;mail-check-payment returns a boolean
;;}}}
@@ -2071,16 +2105,16 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
(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-records 'ignore)
- (defalias 'spam-BBDB-register-routine 'ignore)
- (defalias 'spam-enter-ham-BBDB 'ignore)
- 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-records 'ignore)
+ (defalias 'spam-BBDB-register-routine 'ignore)
+ (defalias 'spam-enter-ham-BBDB 'ignore)
+ nil))
;; when the BBDB changes, we want to clear out our cache
(defun spam-clear-cache-BBDB (&rest immaterial)
@@ -2091,32 +2125,32 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
(defun spam-enter-ham-BBDB (addresses &optional remove)
"Enter an address into the BBDB; implies ham (non-spam) sender"
(dolist (from addresses)
- (when (stringp from)
- (let* ((parsed-address (gnus-extract-address-components from))
- (name (or (nth 0 parsed-address) "Ham Sender"))
- (remove-function (if remove
- 'bbdb-delete-record-internal
- 'ignore))
- (net-address (nth 1 parsed-address))
- (record (and net-address
- (bbdb-search-simple nil net-address))))
- (when net-address
- (gnus-message 6 "%s address %s %s BBDB"
- (if remove "Deleting" "Adding")
- from
- (if remove "from" "to"))
- (if record
- (funcall remove-function record)
- (bbdb-create-internal name nil net-address nil nil
- "ham sender added by spam.el")))))))
+ (when (stringp from)
+ (let* ((parsed-address (gnus-extract-address-components from))
+ (name (or (nth 0 parsed-address) "Ham Sender"))
+ (remove-function (if remove
+ 'bbdb-delete-record-internal
+ 'ignore))
+ (net-address (nth 1 parsed-address))
+ (record (and net-address
+ (bbdb-search-simple nil net-address))))
+ (when net-address
+ (gnus-message 6 "%s address %s %s BBDB"
+ (if remove "Deleting" "Adding")
+ from
+ (if remove "from" "to"))
+ (if record
+ (funcall remove-function record)
+ (bbdb-create-internal name nil net-address nil nil
+ "ham sender added by spam.el")))))))
(defun spam-BBDB-register-routine (articles &optional unregister)
(let (addresses)
- (dolist (article articles)
- (when (stringp (spam-fetch-field-from-fast article))
- (push (spam-fetch-field-from-fast article) addresses)))
- ;; now do the register/unregister action
- (spam-enter-ham-BBDB addresses unregister)))
+ (dolist (article articles)
+ (when (stringp (spam-fetch-field-from-fast article))
+ (push (spam-fetch-field-from-fast article) addresses)))
+ ;; now do the register/unregister action
+ (spam-enter-ham-BBDB addresses unregister)))
(defun spam-BBDB-unregister-routine (articles)
(spam-BBDB-register-routine articles t))
@@ -2124,32 +2158,32 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
(defun spam-check-BBDB ()
"Mail from people in the BBDB is classified as ham or non-spam"
(let ((who (message-fetch-field "from"))
- bbdb-cache bbdb-hashtable)
- (when spam-cache-lookups
- (setq bbdb-cache (gethash 'spam-use-BBDB spam-caches))
- (unless bbdb-cache
- (setq bbdb-cache (make-vector 17 0)) ; a good starting hash value
- ;; this is based on the expanded (bbdb-hashtable) macro
- ;; without the debugging support
- (with-current-buffer (bbdb-buffer)
- (save-excursion
- (save-window-excursion
- (bbdb-records nil t)
- (mapatoms
- (lambda (symbol)
- (intern (downcase (symbol-name symbol)) bbdb-cache))
- bbdb-hashtable))))
- (puthash 'spam-use-BBDB bbdb-cache spam-caches)))
- (when who
- (setq who (nth 1 (gnus-extract-address-components who)))
- (if
- (if spam-cache-lookups
- (intern-soft (downcase who) bbdb-cache)
- (bbdb-search-simple nil who))
- t
- (if spam-use-BBDB-exclusive
- spam-split-group
- nil)))))))
+ bbdb-cache bbdb-hashtable)
+ (when spam-cache-lookups
+ (setq bbdb-cache (gethash 'spam-use-BBDB spam-caches))
+ (unless bbdb-cache
+ (setq bbdb-cache (make-vector 17 0)) ; a good starting hash value
+ ;; this is based on the expanded (bbdb-hashtable) macro
+ ;; without the debugging support
+ (with-current-buffer (bbdb-buffer)
+ (save-excursion
+ (save-window-excursion
+ (bbdb-records nil t)
+ (mapatoms
+ (lambda (symbol)
+ (intern (downcase (symbol-name symbol)) bbdb-cache))
+ bbdb-hashtable))))
+ (puthash 'spam-use-BBDB bbdb-cache spam-caches)))
+ (when who
+ (setq who (nth 1 (gnus-extract-address-components who)))
+ (if
+ (if spam-cache-lookups
+ (intern-soft (downcase who) bbdb-cache)
+ (bbdb-search-simple nil who))
+ t
+ (if spam-use-BBDB-exclusive
+ spam-split-group
+ nil)))))))
;;}}}
@@ -2169,44 +2203,44 @@ See `spam-ifile-database'."
(defun spam-check-ifile ()
"Check the ifile backend for the classification of this message."
(let ((article-buffer-name (buffer-name))
- category return)
+ category return)
(with-temp-buffer
(let ((temp-buffer-name (buffer-name))
- (db-param (spam-get-ifile-database-parameter)))
- (with-current-buffer article-buffer-name
- (apply 'call-process-region
- (point-min) (point-max) spam-ifile-program
- nil temp-buffer-name nil "-c"
- (if db-param `(,db-param "-q") `("-q"))))
- ;; check the return now (we're back in the temp buffer)
- (goto-char (point-min))
- (if (not (eobp))
- (setq category (buffer-substring (point) (point-at-eol))))
- (when (not (zerop (length category))) ; we need a category here
- (if spam-ifile-all-categories
- (setq return category)
- ;; else, if spam-ifile-all-categories is not set...
- (when (string-equal spam-ifile-spam-category category)
- (setq return spam-split-group)))))) ; note return is nil otherwise
+ (db-param (spam-get-ifile-database-parameter)))
+ (with-current-buffer article-buffer-name
+ (apply 'call-process-region
+ (point-min) (point-max) spam-ifile-program
+ nil temp-buffer-name nil "-c"
+ (if db-param `(,db-param "-q") `("-q"))))
+ ;; check the return now (we're back in the temp buffer)
+ (goto-char (point-min))
+ (if (not (eobp))
+ (setq category (buffer-substring (point) (point-at-eol))))
+ (when (not (zerop (length category))) ; we need a category here
+ (if spam-ifile-all-categories
+ (setq return category)
+ ;; else, if spam-ifile-all-categories is not set...
+ (when (string-equal spam-ifile-spam-category category)
+ (setq return spam-split-group)))))) ; note return is nil otherwise
return))
(defun spam-ifile-register-with-ifile (articles category &optional unregister)
"Register an article, given as a string, with a category.
Uses `gnus-newsgroup-name' if category is nil (for ham registration)."
(let ((category (or category gnus-newsgroup-name))
- (add-or-delete-option (if unregister "-d" "-i"))
- (db (spam-get-ifile-database-parameter))
- parameters)
+ (add-or-delete-option (if unregister "-d" "-i"))
+ (db (spam-get-ifile-database-parameter))
+ parameters)
(with-temp-buffer
(dolist (article articles)
- (let ((article-string (spam-get-article-as-string article)))
- (when (stringp article-string)
- (insert article-string))))
+ (let ((article-string (spam-get-article-as-string article)))
+ (when (stringp article-string)
+ (insert article-string))))
(apply 'call-process-region
- (point-min) (point-max) spam-ifile-program
- nil nil nil
- add-or-delete-option category
- (if db `(,db "-h") `("-h"))))))
+ (point-min) (point-max) spam-ifile-program
+ nil nil nil
+ add-or-delete-option category
+ (if db `(,db "-h") `("-h"))))))
(defun spam-ifile-register-spam-routine (articles &optional unregister)
(spam-ifile-register-with-ifile articles spam-ifile-spam-category unregister))
@@ -2235,40 +2269,40 @@ Uses `gnus-newsgroup-name' if category is nil (for ham registration)."
(eval-and-compile
(when (condition-case nil
- (let ((spam-stat-install-hooks nil))
- (require 'spam-stat))
- (file-error
- (defalias 'spam-stat-register-ham-routine 'ignore)
- (defalias 'spam-stat-register-spam-routine 'ignore)
- nil))
+ (let ((spam-stat-install-hooks nil))
+ (require 'spam-stat))
+ (file-error
+ (defalias 'spam-stat-register-ham-routine 'ignore)
+ (defalias 'spam-stat-register-spam-routine 'ignore)
+ nil))
(defun spam-check-stat ()
"Check the spam-stat backend for the classification of this message"
(let ((spam-stat-split-fancy-spam-group spam-split-group) ; override
- (spam-stat-buffer (buffer-name)) ; stat the current buffer
- category return)
- (spam-stat-split-fancy)))
+ (spam-stat-buffer (buffer-name)) ; stat the current buffer
+ category return)
+ (spam-stat-split-fancy)))
(defun spam-stat-register-spam-routine (articles &optional unregister)
(dolist (article articles)
- (let ((article-string (spam-get-article-as-string article)))
- (with-temp-buffer
- (insert article-string)
- (if unregister
- (spam-stat-buffer-change-to-non-spam)
- (spam-stat-buffer-is-spam))))))
+ (let ((article-string (spam-get-article-as-string article)))
+ (with-temp-buffer
+ (insert article-string)
+ (if unregister
+ (spam-stat-buffer-change-to-non-spam)
+ (spam-stat-buffer-is-spam))))))
(defun spam-stat-unregister-spam-routine (articles)
(spam-stat-register-spam-routine articles t))
(defun spam-stat-register-ham-routine (articles &optional unregister)
(dolist (article articles)
- (let ((article-string (spam-get-article-as-string article)))
- (with-temp-buffer
- (insert article-string)
- (if unregister
- (spam-stat-buffer-change-to-spam)
- (spam-stat-buffer-is-non-spam))))))
+ (let ((article-string (spam-get-article-as-string article)))
+ (with-temp-buffer
+ (insert article-string)
+ (if unregister
+ (spam-stat-buffer-change-to-spam)
+ (spam-stat-buffer-is-non-spam))))))
(defun spam-stat-unregister-ham-routine (articles)
(spam-stat-register-ham-routine articles t))
@@ -2321,34 +2355,34 @@ With a non-nil REMOVE, remove the ADDRESSES."
(with-current-buffer
(find-file-noselect file)
(dolist (a addresses)
- (when (stringp a)
- (goto-char (point-min))
- (if (re-search-forward (regexp-quote a) nil t)
- ;; found the address
- (when remove
- (spam-kill-whole-line))
- ;; else, the address was not found
- (unless remove
- (goto-char (point-max))
- (unless (bobp)
- (insert "\n"))
- (insert a "\n")))))
+ (when (stringp a)
+ (goto-char (point-min))
+ (if (re-search-forward (regexp-quote a) nil t)
+ ;; found the address
+ (when remove
+ (spam-kill-whole-line))
+ ;; else, the address was not found
+ (unless remove
+ (goto-char (point-max))
+ (unless (bobp)
+ (insert "\n"))
+ (insert a "\n")))))
(save-buffer))))
(defun spam-filelist-build-cache (type)
(let ((cache (if (eq type 'spam-use-blacklist)
- spam-blacklist-cache
- spam-whitelist-cache))
- parsed-cache)
+ spam-blacklist-cache
+ spam-whitelist-cache))
+ parsed-cache)
(unless (gethash type spam-caches)
(while cache
- (let ((address (pop cache)))
- (unless (zerop (length address)) ; 0 for a nil address too
- (setq address (regexp-quote address))
- ;; fix regexp-quote's treatment of user-intended regexes
- (while (string-match "\\\\\\*" address)
- (setq address (replace-match ".*" t t address))))
- (push address parsed-cache)))
+ (let ((address (pop cache)))
+ (unless (zerop (length address)) ; 0 for a nil address too
+ (setq address (regexp-quote address))
+ ;; fix regexp-quote's treatment of user-intended regexes
+ (while (string-match "\\\\\\*" address)
+ (setq address (replace-match ".*" t t address))))
+ (push address parsed-cache)))
(puthash type parsed-cache spam-caches))))
(defun spam-filelist-check-cache (type from)
@@ -2356,9 +2390,9 @@ With a non-nil REMOVE, remove the ADDRESSES."
(spam-filelist-build-cache type)
(let (found)
(dolist (address (gethash type spam-caches))
- (when (and address (string-match address from))
- (setq found t)
- (return)))
+ (when (and address (string-match address from))
+ (setq found t)
+ (return)))
found)))
;;; returns t if the sender is in the whitelist, nil or
@@ -2370,7 +2404,7 @@ With a non-nil REMOVE, remove the ADDRESSES."
(if (spam-from-listed-p 'spam-use-whitelist)
t
(if spam-use-whitelist-exclusive
- spam-split-group
+ spam-split-group
nil)))
(defun spam-check-blacklist ()
@@ -2384,59 +2418,60 @@ With a non-nil REMOVE, remove the ADDRESSES."
(when (file-readable-p file)
(let (contents address)
(with-temp-buffer
- (insert-file-contents file)
- (while (not (eobp))
- (setq address (buffer-substring (point) (point-at-eol)))
- (forward-line 1)
- ;; insert the e-mail address if detected, otherwise the raw data
- (unless (zerop (length address))
- (let ((pure-address (nth 1 (gnus-extract-address-components address))))
- (push (or pure-address address) contents)))))
+ (insert-file-contents file)
+ (while (not (eobp))
+ (setq address (buffer-substring (point) (point-at-eol)))
+ (forward-line 1)
+ ;; insert the e-mail address if detected, otherwise the raw data
+ (unless (zerop (length address))
+ (let ((pure-address
+ (nth 1 (gnus-extract-address-components address))))
+ (push (or pure-address address) contents)))))
(nreverse contents))))
(defun spam-from-listed-p (type)
(let ((from (message-fetch-field "from"))
- found)
+ found)
(spam-filelist-check-cache type from)))
(defun spam-filelist-register-routine (articles blacklist &optional unregister)
(let ((de-symbol (if blacklist 'spam-use-whitelist 'spam-use-blacklist))
- (declassification (if blacklist 'ham 'spam))
- (enter-function
- (if blacklist 'spam-enter-blacklist 'spam-enter-whitelist))
- (remove-function
- (if blacklist 'spam-enter-whitelist 'spam-enter-blacklist))
- from addresses unregister-list article-unregister-list)
+ (declassification (if blacklist 'ham 'spam))
+ (enter-function
+ (if blacklist 'spam-enter-blacklist 'spam-enter-whitelist))
+ (remove-function
+ (if blacklist 'spam-enter-whitelist 'spam-enter-blacklist))
+ from addresses unregister-list article-unregister-list)
(dolist (article articles)
(let ((from (spam-fetch-field-from-fast article))
- (id (spam-fetch-field-message-id-fast article))
- sender-ignored)
- (when (stringp from)
- (dolist (ignore-regex spam-blacklist-ignored-regexes)
- (when (and (not sender-ignored)
- (stringp ignore-regex)
- (string-match ignore-regex from))
- (setq sender-ignored t)))
- ;; remember the messages we need to unregister, unless remove is set
- (when (and
- (null unregister)
- (spam-log-unregistration-needed-p
- id 'process declassification de-symbol))
- (push article article-unregister-list)
- (push from unregister-list))
- (unless sender-ignored
- (push from addresses)))))
+ (id (spam-fetch-field-message-id-fast article))
+ sender-ignored)
+ (when (stringp from)
+ (dolist (ignore-regex spam-blacklist-ignored-regexes)
+ (when (and (not sender-ignored)
+ (stringp ignore-regex)
+ (string-match ignore-regex from))
+ (setq sender-ignored t)))
+ ;; remember the messages we need to unregister, unless remove is set
+ (when (and
+ (null unregister)
+ (spam-log-unregistration-needed-p
+ id 'process declassification de-symbol))
+ (push article article-unregister-list)
+ (push from unregister-list))
+ (unless sender-ignored
+ (push from addresses)))))
(if unregister
- (funcall enter-function addresses t) ; unregister all these addresses
+ (funcall enter-function addresses t) ; unregister all these addresses
;; else, register normally and unregister what we need to
(funcall remove-function unregister-list t)
(dolist (article article-unregister-list)
- (spam-log-undo-registration
- (spam-fetch-field-message-id-fast article)
- 'process
- declassification
- de-symbol))
+ (spam-log-undo-registration
+ (spam-fetch-field-message-id-fast article)
+ 'process
+ declassification
+ de-symbol))
(funcall enter-function addresses nil))))
(defun spam-blacklist-unregister-routine (articles)
@@ -2467,9 +2502,9 @@ With a non-nil REMOVE, remove the ADDRESSES."
(defun spam-report-resend-register-routine (articles &optional ham)
(let* ((resend-to-gp
- (if ham
- (gnus-parameter-ham-resend-to gnus-newsgroup-name)
- (gnus-parameter-spam-resend-to gnus-newsgroup-name)))
+ (if ham
+ (gnus-parameter-ham-resend-to gnus-newsgroup-name)
+ (gnus-parameter-spam-resend-to gnus-newsgroup-name)))
(spam-report-resend-to (or (car-safe resend-to-gp)
spam-report-resend-to)))
(spam-report-resend articles ham)))
@@ -2479,15 +2514,15 @@ With a non-nil REMOVE, remove the ADDRESSES."
;;{{{ Bogofilter
(defun spam-check-bogofilter-headers (&optional score)
(let ((header (message-fetch-field spam-bogofilter-header)))
- (when header ; return nil when no header
- (if score ; scoring mode
- (if (string-match "spamicity=\\([0-9.]+\\)" header)
- (match-string 1 header)
- "0")
- ;; spam detection mode
- (when (string-match spam-bogofilter-bogosity-positive-spam-header
- header)
- spam-split-group)))))
+ (when header ; return nil when no header
+ (if score ; scoring mode
+ (if (string-match "spamicity=\\([0-9.]+\\)" header)
+ (match-string 1 header)
+ "0")
+ ;; spam detection mode
+ (when (string-match spam-bogofilter-bogosity-positive-spam-header
+ header)
+ spam-split-group)))))
;; return something sensible if the score can't be determined
(defun spam-bogofilter-score (&optional recheck)
@@ -2497,8 +2532,8 @@ With a non-nil REMOVE, remove the ADDRESSES."
(gnus-summary-show-article t)
(set-buffer gnus-article-buffer)
(let ((score (or (unless recheck
- (spam-check-bogofilter-headers t))
- (spam-check-bogofilter t))))
+ (spam-check-bogofilter-headers t))
+ (spam-check-bogofilter t))))
(gnus-summary-show-article)
(message "Spamicity score %s" score)
(or score "0"))))
@@ -2507,53 +2542,53 @@ With a non-nil REMOVE, remove the ADDRESSES."
"Verify the Bogofilter version is sufficient."
(when (eq spam-bogofilter-valid 'unknown)
(setq spam-bogofilter-valid
- (not (string-match "^bogofilter version 0\\.\\([0-9]\\|1[01]\\)\\."
- (shell-command-to-string
- (format "%s -V" spam-bogofilter-program))))))
+ (not (string-match "^bogofilter version 0\\.\\([0-9]\\|1[01]\\)\\."
+ (shell-command-to-string
+ (format "%s -V" spam-bogofilter-program))))))
spam-bogofilter-valid)
(defun spam-check-bogofilter (&optional score)
"Check the Bogofilter backend for the classification of this message."
(if (spam-verify-bogofilter)
(let ((article-buffer-name (buffer-name))
- (db spam-bogofilter-database-directory)
- return)
- (with-temp-buffer
- (let ((temp-buffer-name (buffer-name)))
- (with-current-buffer article-buffer-name
- (apply 'call-process-region
- (point-min) (point-max)
- spam-bogofilter-program
- nil temp-buffer-name nil
- (if db `("-d" ,db "-v") `("-v"))))
- (setq return (spam-check-bogofilter-headers score))))
- return)
+ (db spam-bogofilter-database-directory)
+ return)
+ (with-temp-buffer
+ (let ((temp-buffer-name (buffer-name)))
+ (with-current-buffer article-buffer-name
+ (apply 'call-process-region
+ (point-min) (point-max)
+ spam-bogofilter-program
+ nil temp-buffer-name nil
+ (if db `("-d" ,db "-v") `("-v"))))
+ (setq return (spam-check-bogofilter-headers score))))
+ return)
(gnus-error 5 "`spam.el' doesn't support obsolete bogofilter versions")))
(defun spam-bogofilter-register-with-bogofilter (articles
- spam
- &optional unregister)
+ spam
+ &optional unregister)
"Register an article, given as a string, as spam or non-spam."
(if (spam-verify-bogofilter)
(dolist (article articles)
- (let ((article-string (spam-get-article-as-string article))
- (db spam-bogofilter-database-directory)
- (switch (if unregister
- (if spam
- spam-bogofilter-spam-strong-switch
- spam-bogofilter-ham-strong-switch)
- (if spam
- spam-bogofilter-spam-switch
- spam-bogofilter-ham-switch))))
- (when (stringp article-string)
- (with-temp-buffer
- (insert article-string)
-
- (apply 'call-process-region
- (point-min) (point-max)
- spam-bogofilter-program
- nil nil nil switch
- (if db `("-d" ,db "-v") `("-v")))))))
+ (let ((article-string (spam-get-article-as-string article))
+ (db spam-bogofilter-database-directory)
+ (switch (if unregister
+ (if spam
+ spam-bogofilter-spam-strong-switch
+ spam-bogofilter-ham-strong-switch)
+ (if spam
+ spam-bogofilter-spam-switch
+ spam-bogofilter-ham-switch))))
+ (when (stringp article-string)
+ (with-temp-buffer
+ (insert article-string)
+
+ (apply 'call-process-region
+ (point-min) (point-max)
+ spam-bogofilter-program
+ nil nil nil switch
+ (if db `("-d" ,db "-v") `("-v")))))))
(gnus-error 5 "`spam.el' doesn't support obsolete bogofilter versions")))
(defun spam-bogofilter-register-spam-routine (articles &optional unregister)
@@ -2577,45 +2612,45 @@ With a non-nil REMOVE, remove the ADDRESSES."
(let ((article-buffer-name (buffer-name)))
(with-temp-buffer
(let ((temp-buffer-name (buffer-name)))
- (with-current-buffer article-buffer-name
- (let ((status
- (apply 'call-process-region
- (point-min) (point-max)
- spam-spamoracle-binary
- nil temp-buffer-name nil
- (if spam-spamoracle-database
- `("-f" ,spam-spamoracle-database "mark")
- '("mark")))))
- (if (eq 0 status)
- (progn
- (set-buffer temp-buffer-name)
- (goto-char (point-min))
- (when (re-search-forward "^X-Spam: yes;" nil t)
- spam-split-group))
- (error "Error running spamoracle: %s" status))))))))
+ (with-current-buffer article-buffer-name
+ (let ((status
+ (apply 'call-process-region
+ (point-min) (point-max)
+ spam-spamoracle-binary
+ nil temp-buffer-name nil
+ (if spam-spamoracle-database
+ `("-f" ,spam-spamoracle-database "mark")
+ '("mark")))))
+ (if (eq 0 status)
+ (progn
+ (set-buffer temp-buffer-name)
+ (goto-char (point-min))
+ (when (re-search-forward "^X-Spam: yes;" nil t)
+ spam-split-group))
+ (error "Error running spamoracle: %s" status))))))))
(defun spam-spamoracle-learn (articles article-is-spam-p &optional unregister)
"Run spamoracle in training mode."
(with-temp-buffer
(let ((temp-buffer-name (buffer-name)))
(save-excursion
- (goto-char (point-min))
- (dolist (article articles)
- (insert (spam-get-article-as-string article)))
- (let* ((arg (if (spam-xor unregister article-is-spam-p)
- "-spam"
- "-good"))
- (status
- (apply 'call-process-region
- (point-min) (point-max)
- spam-spamoracle-binary
- nil temp-buffer-name nil
- (if spam-spamoracle-database
- `("-f" ,spam-spamoracle-database
- "add" ,arg)
- `("add" ,arg)))))
- (unless (eq 0 status)
- (error "Error running spamoracle: %s" status)))))))
+ (goto-char (point-min))
+ (dolist (article articles)
+ (insert (spam-get-article-as-string article)))
+ (let* ((arg (if (spam-xor unregister article-is-spam-p)
+ "-spam"
+ "-good"))
+ (status
+ (apply 'call-process-region
+ (point-min) (point-max)
+ spam-spamoracle-binary
+ nil temp-buffer-name nil
+ (if spam-spamoracle-database
+ `("-f" ,spam-spamoracle-database
+ "add" ,arg)
+ `("add" ,arg)))))
+ (unless (eq 0 status)
+ (error "Error running spamoracle: %s" status)))))))
(defun spam-spamoracle-learn-ham (articles &optional unregister)
(spam-spamoracle-learn articles nil unregister))
@@ -2635,31 +2670,31 @@ With a non-nil REMOVE, remove the ADDRESSES."
;;; based mostly on the bogofilter code
(defun spam-check-spamassassin-headers (&optional score)
"Check the SpamAssassin headers for the classification of this message."
- (if score ; scoring mode
+ (if score ; scoring mode
(let ((header (message-fetch-field spam-spamassassin-spam-status-header)))
- (when header
- (if (string-match spam-spamassassin-score-regexp header)
- (match-string 1 header)
- "0")))
+ (when header
+ (if (string-match spam-spamassassin-score-regexp header)
+ (match-string 1 header)
+ "0")))
;; spam detection mode
(let ((header (message-fetch-field spam-spamassassin-spam-flag-header)))
- (when header ; return nil when no header
- (when (string-match spam-spamassassin-positive-spam-flag-header
- header)
- spam-split-group)))))
+ (when header ; return nil when no header
+ (when (string-match spam-spamassassin-positive-spam-flag-header
+ header)
+ spam-split-group)))))
(defun spam-check-spamassassin (&optional score)
"Check the SpamAssassin backend for the classification of this message."
(let ((article-buffer-name (buffer-name)))
(with-temp-buffer
(let ((temp-buffer-name (buffer-name)))
- (with-current-buffer article-buffer-name
- (apply 'call-process-region
- (point-min) (point-max) spam-assassin-program
- nil temp-buffer-name nil spam-spamassassin-arguments))
- ;; check the return now (we're back in the temp buffer)
- (goto-char (point-min))
- (spam-check-spamassassin-headers score)))))
+ (with-current-buffer article-buffer-name
+ (apply 'call-process-region
+ (point-min) (point-max) spam-assassin-program
+ nil temp-buffer-name nil spam-spamassassin-arguments))
+ ;; check the return now (we're back in the temp buffer)
+ (goto-char (point-min))
+ (spam-check-spamassassin-headers score)))))
;; return something sensible if the score can't be determined
(defun spam-spamassassin-score (&optional recheck)
@@ -2669,40 +2704,39 @@ With a non-nil REMOVE, remove the ADDRESSES."
(gnus-summary-show-article t)
(set-buffer gnus-article-buffer)
(let ((score (or (unless recheck
- (spam-check-spamassassin-headers t))
- (spam-check-spamassassin t))))
+ (spam-check-spamassassin-headers t))
+ (spam-check-spamassassin t))))
(gnus-summary-show-article)
(message "SpamAssassin score %s" score)
(or score "0"))))
(defun spam-spamassassin-register-with-sa-learn (articles spam
- &optional unregister)
+ &optional unregister)
"Register articles with spamassassin's sa-learn as spam or non-spam."
(if articles
(let ((action (if unregister spam-sa-learn-unregister-switch
- (if spam spam-sa-learn-spam-switch
- spam-sa-learn-ham-switch)))
- (summary-buffer-name (buffer-name)))
- (with-temp-buffer
- ;; group the articles into mbox format
- (dolist (article articles)
- (let (article-string)
- (with-current-buffer summary-buffer-name
- (setq article-string (spam-get-article-as-string article)))
- (when (stringp article-string)
- (insert "From \n") ; mbox separator (sa-learn only checks the
- ; first five chars, so we can get away with
- ; a bogus line))
- (insert article-string)
- (insert "\n"))))
- ;; call sa-learn on all messages at the same time
- (apply 'call-process-region
- (point-min) (point-max)
- spam-sa-learn-program
- nil nil nil "--mbox"
- (if spam-sa-learn-rebuild
- (list action)
- `("--no-rebuild" ,action)))))))
+ (if spam spam-sa-learn-spam-switch
+ spam-sa-learn-ham-switch)))
+ (summary-buffer-name (buffer-name)))
+ (with-temp-buffer
+ ;; group the articles into mbox format
+ (dolist (article articles)
+ (let (article-string)
+ (with-current-buffer summary-buffer-name
+ (setq article-string (spam-get-article-as-string article)))
+ (when (stringp article-string)
+ ;; mbox separator
+ (insert (concat "From nobody " (current-time-string) "\n"))
+ (insert article-string)
+ (insert "\n"))))
+ ;; call sa-learn on all messages at the same time
+ (apply 'call-process-region
+ (point-min) (point-max)
+ spam-sa-learn-program
+ nil nil nil "--mbox"
+ (if spam-sa-learn-rebuild
+ (list action)
+ `("--no-rebuild" ,action)))))))
(defun spam-spamassassin-register-spam-routine (articles &optional unregister)
(spam-spamassassin-register-with-sa-learn articles t unregister))
@@ -2723,11 +2757,11 @@ With a non-nil REMOVE, remove the ADDRESSES."
(defun spam-check-bsfilter-headers (&optional score)
(if score
(or (nnmail-fetch-field spam-bsfilter-probability-header)
- "0")
+ "0")
(let ((header (nnmail-fetch-field spam-bsfilter-header)))
(when header ; return nil when no header
- (when (string-match "YES" header)
- spam-split-group)))))
+ (when (string-match "YES" header)
+ spam-split-group)))))
;; return something sensible if the score can't be determined
(defun spam-bsfilter-score (&optional recheck)
@@ -2737,8 +2771,8 @@ With a non-nil REMOVE, remove the ADDRESSES."
(gnus-summary-show-article t)
(set-buffer gnus-article-buffer)
(let ((score (or (unless recheck
- (spam-check-bsfilter-headers t))
- (spam-check-bsfilter t))))
+ (spam-check-bsfilter-headers t))
+ (spam-check-bsfilter t))))
(gnus-summary-show-article)
(message "Spamicity score %s" score)
(or score "0"))))
@@ -2746,47 +2780,47 @@ With a non-nil REMOVE, remove the ADDRESSES."
(defun spam-check-bsfilter (&optional score)
"Check the Bsfilter backend for the classification of this message."
(let ((article-buffer-name (buffer-name))
- (dir spam-bsfilter-database-directory)
- return)
+ (dir spam-bsfilter-database-directory)
+ return)
(with-temp-buffer
(let ((temp-buffer-name (buffer-name)))
- (with-current-buffer article-buffer-name
- (apply 'call-process-region
- (point-min) (point-max)
- spam-bsfilter-program
- nil temp-buffer-name nil
- "--pipe"
- "--insert-flag"
- "--insert-probability"
- (when dir
- (list "--homedir" dir))))
- (setq return (spam-check-bsfilter-headers score))))
+ (with-current-buffer article-buffer-name
+ (apply 'call-process-region
+ (point-min) (point-max)
+ spam-bsfilter-program
+ nil temp-buffer-name nil
+ "--pipe"
+ "--insert-flag"
+ "--insert-probability"
+ (when dir
+ (list "--homedir" dir))))
+ (setq return (spam-check-bsfilter-headers score))))
return))
(defun spam-bsfilter-register-with-bsfilter (articles
- spam
- &optional unregister)
+ spam
+ &optional unregister)
"Register an article, given as a string, as spam or non-spam."
(dolist (article articles)
(let ((article-string (spam-get-article-as-string article))
- (switch (if unregister
- (if spam
- spam-bsfilter-spam-strong-switch
- spam-bsfilter-ham-strong-switch)
- (if spam
- spam-bsfilter-spam-switch
- spam-bsfilter-ham-switch))))
+ (switch (if unregister
+ (if spam
+ spam-bsfilter-spam-strong-switch
+ spam-bsfilter-ham-strong-switch)
+ (if spam
+ spam-bsfilter-spam-switch
+ spam-bsfilter-ham-switch))))
(when (stringp article-string)
- (with-temp-buffer
- (insert article-string)
- (apply 'call-process-region
- (point-min) (point-max)
- spam-bsfilter-program
- nil nil nil switch
- "--update"
- (when spam-bsfilter-database-directory
- (list "--homedir"
- spam-bsfilter-database-directory))))))))
+ (with-temp-buffer
+ (insert article-string)
+ (apply 'call-process-region
+ (point-min) (point-max)
+ spam-bsfilter-program
+ nil nil nil switch
+ "--update"
+ (when spam-bsfilter-database-directory
+ (list "--homedir"
+ spam-bsfilter-database-directory))))))))
(defun spam-bsfilter-register-spam-routine (articles &optional unregister)
(spam-bsfilter-register-with-bsfilter articles t unregister))
@@ -2805,15 +2839,15 @@ With a non-nil REMOVE, remove the ADDRESSES."
;;{{{ CRM114 Mailfilter
(defun spam-check-crm114-headers (&optional score)
(let ((header (message-fetch-field spam-crm114-header)))
- (when header ; return nil when no header
- (if score ; scoring mode
- (if (string-match "( pR: \\([0-9.-]+\\)" header)
- (match-string 1 header)
- "0")
- ;; spam detection mode
- (when (string-match spam-crm114-positive-spam-header
- header)
- spam-split-group)))))
+ (when header ; return nil when no header
+ (if score ; scoring mode
+ (if (string-match "( pR: \\([0-9.-]+\\)" header)
+ (match-string 1 header)
+ "0")
+ ;; spam detection mode
+ (when (string-match spam-crm114-positive-spam-header
+ header)
+ spam-split-group)))))
;; return something sensible if the score can't be determined
(defun spam-crm114-score ()
@@ -2823,7 +2857,7 @@ With a non-nil REMOVE, remove the ADDRESSES."
(gnus-summary-show-article t)
(set-buffer gnus-article-buffer)
(let ((score (or (spam-check-crm114-headers t)
- (spam-check-crm114 t))))
+ (spam-check-crm114 t))))
(gnus-summary-show-article)
(message "pR: %s" score)
(or score "0"))))
@@ -2831,41 +2865,41 @@ With a non-nil REMOVE, remove the ADDRESSES."
(defun spam-check-crm114 (&optional score)
"Check the CRM114 Mailfilter backend for the classification of this message."
(let ((article-buffer-name (buffer-name))
- (db spam-crm114-database-directory)
- return)
+ (db spam-crm114-database-directory)
+ return)
(with-temp-buffer
(let ((temp-buffer-name (buffer-name)))
- (with-current-buffer article-buffer-name
- (apply 'call-process-region
- (point-min) (point-max)
- spam-crm114-program
- nil temp-buffer-name nil
+ (with-current-buffer article-buffer-name
+ (apply 'call-process-region
+ (point-min) (point-max)
+ spam-crm114-program
+ nil temp-buffer-name nil
(when db (list (concat "--fileprefix=" db)))))
- (setq return (spam-check-crm114-headers score))))
+ (setq return (spam-check-crm114-headers score))))
return))
(defun spam-crm114-register-with-crm114 (articles
- spam
- &optional unregister)
+ spam
+ &optional unregister)
"Register an article, given as a string, as spam or non-spam."
(dolist (article articles)
(let ((article-string (spam-get-article-as-string article))
- (db spam-crm114-database-directory)
- (switch (if unregister
- (if spam
- spam-crm114-spam-strong-switch
- spam-crm114-ham-strong-switch)
- (if spam
- spam-crm114-spam-switch
- spam-crm114-ham-switch))))
+ (db spam-crm114-database-directory)
+ (switch (if unregister
+ (if spam
+ spam-crm114-spam-strong-switch
+ spam-crm114-ham-strong-switch)
+ (if spam
+ spam-crm114-spam-switch
+ spam-crm114-ham-switch))))
(when (stringp article-string)
- (with-temp-buffer
- (insert article-string)
+ (with-temp-buffer
+ (insert article-string)
- (apply 'call-process-region
- (point-min) (point-max)
- spam-crm114-program
- nil nil nil
+ (apply 'call-process-region
+ (point-min) (point-max)
+ spam-crm114-program
+ nil nil nil
(when db (list switch (concat "--fileprefix=" db)))))))))
(defun spam-crm114-register-spam-routine (articles &optional unregister)
@@ -2905,7 +2939,7 @@ installed through `spam-necessary-extra-headers'."
(setq spam-install-hooks t)
;; TODO: How do we redo this every time the `spam' face is customized?
(push '((eq mark gnus-spam-mark) . spam)
- gnus-summary-highlight)
+ gnus-summary-highlight)
;; Add hooks for loading and saving the spam stats
(add-hook 'gnus-save-newsrc-hook 'spam-maybe-spam-stat-save)
(add-hook 'gnus-get-top-new-news-hook 'spam-maybe-spam-stat-load)
diff --git a/lisp/gnus/starttls.el b/lisp/gnus/starttls.el
index a4d33b81bb..4b4839a4df 100644
--- a/lisp/gnus/starttls.el
+++ b/lisp/gnus/starttls.el
@@ -1,7 +1,6 @@
;;; starttls.el --- STARTTLS functions
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Author: Simon Josefsson <[email protected]>
diff --git a/lisp/gnus/utf7.el b/lisp/gnus/utf7.el
index 47c3b0f4c5..f362931dcd 100644
--- a/lisp/gnus/utf7.el
+++ b/lisp/gnus/utf7.el
@@ -1,7 +1,6 @@
;;; utf7.el --- UTF-7 encoding/decoding for Emacs -*-coding: iso-8859-1;-*-
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Jon K Hellan <[email protected]>
;; Maintainer: [email protected]
diff --git a/lisp/gnus/yenc.el b/lisp/gnus/yenc.el
index 9fdf62d43b..c21dfbdb43 100644
--- a/lisp/gnus/yenc.el
+++ b/lisp/gnus/yenc.el
@@ -1,6 +1,6 @@
;;; yenc.el --- elisp native yenc decoder
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Jesper Harder <[email protected]>
;; Keywords: yenc news
diff --git a/lisp/gs.el b/lisp/gs.el
index ab5cfab86e..2eba7af71a 100644
--- a/lisp/gs.el
+++ b/lisp/gs.el
@@ -1,7 +1,6 @@
;;; gs.el --- interface to Ghostscript
-;; Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
@@ -221,5 +220,4 @@ the form \"WINDOW-ID PIXMAP-ID\". Value is non-nil if successful."
(provide 'gs)
-;; arch-tag: 06ab51b8-4932-4cfe-9f60-b924a8edb3f0
;;; gs.el ends here
diff --git a/lisp/help-at-pt.el b/lisp/help-at-pt.el
index 8bac48424f..d9012bdcad 100644
--- a/lisp/help-at-pt.el
+++ b/lisp/help-at-pt.el
@@ -1,6 +1,6 @@
;;; help-at-pt.el --- local help through the keyboard
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Luc Teirlinck <[email protected]>
;; Keywords: help
@@ -350,5 +350,4 @@ different regions. With numeric argument ARG, behaves like
(provide 'help-at-pt)
-;; arch-tag: d0b8b86d-d23f-45d0-a82d-208d6205a583
;;; help-at-pt.el ends here
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 65bcdbcb8f..ed266c71a5 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -1,7 +1,6 @@
;;; help-fns.el --- Complex help functions
-;; Copyright (C) 1985, 1986, 1993, 1994, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1986, 1993-1994, 1998-2011
;; Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -291,13 +290,19 @@ suitable file is found, return nil."
((not (stringp file-name))
;; If we don't have a file-name string by now, we lost.
nil)
+ ;; Now, `file-name' should have become an absolute file name.
+ ;; For files loaded from ~/.emacs.elc, try ~/.emacs.
+ ((let (fn)
+ (and (string-equal file-name
+ (expand-file-name ".emacs.elc" "~"))
+ (file-readable-p (setq fn (expand-file-name ".emacs" "~")))
+ fn)))
+ ;; When the Elisp source file can be found in the install
+ ;; directory, return the name of that file.
((let ((lib-name
(if (string-match "[.]elc\\'" file-name)
(substring-no-properties file-name 0 -1)
file-name)))
- ;; When the Elisp source file can be found in the install
- ;; directory return the name of that file - `file-name' should
- ;; have become an absolute file name ny now.
(or (and (file-readable-p lib-name) lib-name)
;; The library might be compressed.
(and (file-readable-p (concat lib-name ".gz")) lib-name))))
@@ -658,19 +663,16 @@ it is displayed along with the global value."
(if valvoid
(princ " is void as a variable.")
(princ "'s "))))
- (if valvoid
- nil
+ (unless valvoid
(with-current-buffer standard-output
(setq val-start-pos (point))
(princ "value is ")
- (terpri)
(let ((from (point)))
+ (terpri)
(pp val)
- ;; Hyperlinks in variable's value are quite frequently
- ;; inappropriate e.g C-h v <RET> features <RET>
- ;; (help-xref-on-pp from (point))
- (if (< (point) (+ from 20))
- (delete-region (1- from) from))
+ (if (< (point) (+ 68 (line-beginning-position 0)))
+ (delete-region from (1+ from))
+ (delete-region (1- from) from))
(let* ((sv (get variable 'standard-value))
(origval (and (consp sv)
(condition-case nil
@@ -685,7 +687,6 @@ it is displayed along with the global value."
(if (< (point) (+ from 20))
(delete-region (1- from) from)))))))
(terpri)
-
(when locus
(if (bufferp locus)
(princ (format "%socal in buffer %s; "
diff --git a/lisp/help-macro.el b/lisp/help-macro.el
index 2e0f7fad53..8efb99d42d 100644
--- a/lisp/help-macro.el
+++ b/lisp/help-macro.el
@@ -1,7 +1,6 @@
;;; help-macro.el --- makes command line help such as help-for-help
-;; Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Lynn Slater <[email protected]>
;; Maintainer: FSF
@@ -202,5 +201,4 @@ and then returns."
(provide 'help-macro)
-;; arch-tag: 59fee949-1686-485a-8a05-83418073e257
;;; help-macro.el ends here
diff --git a/lisp/help-mode.el b/lisp/help-mode.el
index 9f54ff08c0..826145d7af 100644
--- a/lisp/help-mode.el
+++ b/lisp/help-mode.el
@@ -1,7 +1,7 @@
;;; help-mode.el --- `help-mode' used by *Help* buffers
-;; Copyright (C) 1985, 1986, 1993, 1994, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1986, 1993-1994, 1998-2011
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: help, internal
@@ -325,6 +325,15 @@ Commands:
;; View mode's read-only status of existing *Help* buffer is lost
;; by with-output-to-temp-buffer.
(toggle-read-only 1)
+
+ (save-excursion
+ (goto-char (point-min))
+ (let ((inhibit-read-only t))
+ (when (re-search-forward "^This \\w+ is advised.$" nil t)
+ (put-text-property (match-beginning 0)
+ (match-end 0)
+ 'face 'font-lock-warning-face))))
+
(help-make-xrefs (current-buffer))))
;; Grokking cross-reference information in doc strings and
@@ -829,5 +838,4 @@ help buffer by other means."
(provide 'help-mode)
-;; arch-tag: 850954ae-3725-4cb4-8e91-0bf6d52d6b0b
;;; help-mode.el ends here
diff --git a/lisp/help.el b/lisp/help.el
index 6c6bd76ec4..9fcb06c559 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -1,7 +1,6 @@
;;; help.el --- help commands for Emacs
-;; Copyright (C) 1985, 1986, 1993, 1994, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1986, 1993-1994, 1998-2011
;; Free Software Foundation, Inc.
;; Maintainer: FSF
diff --git a/lisp/hex-util.el b/lisp/hex-util.el
index 932a7fe354..c5ef6ac906 100644
--- a/lisp/hex-util.el
+++ b/lisp/hex-util.el
@@ -1,7 +1,6 @@
;;; hex-util.el --- Functions to encode/decode hexadecimal string.
-;; Copyright (C) 1999, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Shuhei KOBAYASHI <[email protected]>
;; Keywords: data
diff --git a/lisp/hexl.el b/lisp/hexl.el
index 8e000e72ec..dd142f7cda 100644
--- a/lisp/hexl.el
+++ b/lisp/hexl.el
@@ -1,7 +1,6 @@
;;; hexl.el --- edit a file in a hex dump format using the hexl filter
-;; Copyright (C) 1989, 1994, 1998, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1989, 1994, 1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Keith Gabryelski <[email protected]>
;; Maintainer: FSF
@@ -199,20 +198,8 @@ Quoting cannot be used, so the arguments cannot themselves contain spaces."
(defvar hl-line-face)
;; Variables where the original values are stored to.
-(defvar hexl-mode-old-hl-line-mode)
-(defvar hexl-mode-old-hl-line-range-function)
-(defvar hexl-mode-old-hl-line-face)
-(defvar hexl-mode-old-local-map)
-(defvar hexl-mode-old-mode-name)
-(defvar hexl-mode-old-major-mode)
-(defvar hexl-mode-old-ruler-mode)
-(defvar hexl-mode-old-ruler-function)
-(defvar hexl-mode-old-isearch-search-fun-function)
-(defvar hexl-mode-old-require-final-newline)
-(defvar hexl-mode-old-syntax-table)
-(defvar hexl-mode-old-font-lock-keywords)
-(defvar hexl-mode-old-eldoc-documentation-function)
-(defvar hexl-mode-old-revert-buffer-function)
+(defvar hexl-mode--old-var-vals ())
+(make-variable-buffer-local 'hexl-mode--old-var-vals)
(defvar hexl-ascii-overlay nil
"Overlay used to highlight ASCII element corresponding to current point.")
@@ -229,6 +216,25 @@ Quoting cannot be used, so the arguments cannot themselves contain spaces."
(put 'hexl-mode 'mode-class 'special)
+
+(defun hexl-mode--minor-mode-p (var)
+ (memq var '(ruler-mode hl-line-mode)))
+
+(defun hexl-mode--setq-local (var val)
+ ;; `var' can be either a symbol or a pair, in which case the `car'
+ ;; is the getter function and the `cdr' is the corresponding setter.
+ (unless (or (member var hexl-mode--old-var-vals)
+ (assoc var hexl-mode--old-var-vals))
+ (push (if (or (consp var) (boundp var))
+ (cons var
+ (if (consp var) (funcall (car var)) (symbol-value var)))
+ var)
+ hexl-mode--old-var-vals))
+ (cond
+ ((consp var) (funcall (cdr var) val))
+ ((hexl-mode--minor-mode-p var) (funcall var (if val 1 -1)))
+ (t (set (make-local-variable var) val))))
+
;;;###autoload
(defun hexl-mode (&optional arg)
"\\<hexl-mode-map>A mode for editing binary files in hex dump format.
@@ -334,58 +340,31 @@ You can use \\[hexl-find-file] to visit a file in Hexl mode.
;; We do not turn off the old major mode; instead we just
;; override most of it. That way, we can restore it perfectly.
- (make-local-variable 'hexl-mode-old-local-map)
- (setq hexl-mode-old-local-map (current-local-map))
- (use-local-map hexl-mode-map)
-
- (make-local-variable 'hexl-mode-old-mode-name)
- (setq hexl-mode-old-mode-name mode-name)
- (setq mode-name "Hexl")
- (set (make-local-variable 'hexl-mode-old-isearch-search-fun-function)
- isearch-search-fun-function)
- (set (make-local-variable 'isearch-search-fun-function)
- 'hexl-isearch-search-function)
+ (hexl-mode--setq-local '(current-local-map . use-local-map) hexl-mode-map)
- (make-local-variable 'hexl-mode-old-major-mode)
- (setq hexl-mode-old-major-mode major-mode)
- (setq major-mode 'hexl-mode)
+ (hexl-mode--setq-local 'mode-name "Hexl")
+ (hexl-mode--setq-local 'isearch-search-fun-function
+ 'hexl-isearch-search-function)
+ (hexl-mode--setq-local 'major-mode 'hexl-mode)
- (make-local-variable 'hexl-mode-old-ruler-mode)
- (setq hexl-mode-old-ruler-mode
- (and (boundp 'ruler-mode) ruler-mode))
-
- (make-local-variable 'hexl-mode-old-hl-line-mode)
- (setq hexl-mode-old-hl-line-mode
- (and (boundp 'hl-line-mode) hl-line-mode))
-
- (make-local-variable 'hexl-mode-old-syntax-table)
- (setq hexl-mode-old-syntax-table (syntax-table))
- (set-syntax-table (standard-syntax-table))
+ (hexl-mode--setq-local '(syntax-table . set-syntax-table)
+ (standard-syntax-table))
(add-hook 'write-contents-functions 'hexl-save-buffer nil t)
- (make-local-variable 'hexl-mode-old-require-final-newline)
- (setq hexl-mode-old-require-final-newline require-final-newline)
- (make-local-variable 'require-final-newline)
- (setq require-final-newline nil)
+ (hexl-mode--setq-local 'require-final-newline nil)
- (make-local-variable 'hexl-mode-old-font-lock-keywords)
- (setq hexl-mode-old-font-lock-keywords font-lock-defaults)
- (setq font-lock-defaults '(hexl-font-lock-keywords t))
+
+ (hexl-mode--setq-local 'font-lock-defaults '(hexl-font-lock-keywords t))
- (make-local-variable 'hexl-mode-old-revert-buffer-function)
- (setq hexl-mode-old-revert-buffer-function revert-buffer-function)
- (setq revert-buffer-function 'hexl-revert-buffer-function)
+ (hexl-mode--setq-local 'revert-buffer-function
+ #'hexl-revert-buffer-function)
(add-hook 'change-major-mode-hook 'hexl-maybe-dehexlify-buffer nil t)
;; Set a callback function for eldoc.
- (make-local-variable 'hexl-mode-old-eldoc-documentation-function)
- (setq hexl-mode-old-eldoc-documentation-function
- (bound-and-true-p eldoc-documentation-function))
-
- (set (make-local-variable 'eldoc-documentation-function)
- 'hexl-print-current-point-info)
+ (hexl-mode--setq-local 'eldoc-documentation-function
+ #'hexl-print-current-point-info)
(eldoc-add-command-completions "hexl-")
(eldoc-remove-command "hexl-save-buffer"
"hexl-current-address")
@@ -498,30 +477,22 @@ With arg, don't unhexlify buffer."
(remove-hook 'post-command-hook 'hexl-follow-ascii-find t)
(setq hexl-ascii-overlay nil)
- (if (and (boundp 'ruler-mode) ruler-mode (not hexl-mode-old-ruler-mode))
- (ruler-mode 0))
- (when (boundp 'hexl-mode-old-ruler-function)
- (setq ruler-mode-ruler-function hexl-mode-old-ruler-function))
-
- (if (and (boundp 'hl-line-mode) hl-line-mode (not hexl-mode-old-hl-line-mode))
- (hl-line-mode 0))
- (when (boundp 'hexl-mode-old-hl-line-range-function)
- (setq hl-line-range-function hexl-mode-old-hl-line-range-function))
- (when (boundp 'hexl-mode-old-hl-line-face)
- (setq hl-line-face hexl-mode-old-hl-line-face))
-
- (when (boundp 'hexl-mode-old-eldoc-documentation-function)
- (setq eldoc-documentation-function
- hexl-mode-old-eldoc-documentation-function))
-
- (setq require-final-newline hexl-mode-old-require-final-newline)
- (setq mode-name hexl-mode-old-mode-name)
- (setq isearch-search-fun-function hexl-mode-old-isearch-search-fun-function)
- (use-local-map hexl-mode-old-local-map)
- (set-syntax-table hexl-mode-old-syntax-table)
- (setq font-lock-defaults hexl-mode-old-font-lock-keywords)
- (setq major-mode hexl-mode-old-major-mode)
- (setq revert-buffer-function hexl-mode-old-revert-buffer-function)
+ (let ((mms ()))
+ (dolist (varval hexl-mode--old-var-vals)
+ (let* ((bound (consp varval))
+ (var (if bound (car varval) varval))
+ (val (cdr-safe varval)))
+ (cond
+ ((consp var) (funcall (cdr var) val))
+ ((hexl-mode--minor-mode-p var) (push (cons var val) mms))
+ (bound (set (make-local-variable var) val))
+ (t (kill-local-variable var)))))
+ (kill-local-variable 'hexl-mode--old-var-vals)
+ ;; Enable/disable minor modes. Do it after having reset the other vars,
+ ;; since some of them may affect the minor modes.
+ (dolist (mm mms)
+ (funcall (car mm) (if (cdr mm) 1 -1))))
+
(force-mode-line-update))
(defun hexl-maybe-dehexlify-buffer ()
@@ -620,23 +591,21 @@ Signal error if HEX-ADDRESS is out of range."
(progn
(setq arg (- arg))
(while (> arg 0)
- (if (not (equal address (logior address 3)))
- (if (> address hexl-max-address)
- (progn
- (message "End of buffer.")
- (setq address hexl-max-address))
- (setq address (logior address 3)))
- (if (> address hexl-max-address)
- (progn
- (message "End of buffer.")
- (setq address hexl-max-address))
- (setq address (+ address 4))))
+ (setq address
+ (if (> address hexl-max-address)
+ (progn
+ (message "End of buffer.")
+ hexl-max-address)
+ (if (equal address (logior address 3))
+ (+ address 4)
+ (logior address 3))))
(setq arg (1- arg)))
- (if (> address hexl-max-address)
- (progn
- (message "End of buffer.")
- (setq address hexl-max-address))
- (setq address (logior address 3))))
+ (setq address
+ (if (> address hexl-max-address)
+ (progn
+ (message "End of buffer.")
+ hexl-max-address)
+ (logior address 3))))
(while (> arg 0)
(if (not (equal address (logand address -4)))
(setq address (logand address -4))
@@ -659,23 +628,21 @@ Signal error if HEX-ADDRESS is out of range."
(progn
(setq arg (- arg))
(while (> arg 0)
- (if (not (equal address (logior address 7)))
- (if (> address hexl-max-address)
- (progn
- (message "End of buffer.")
- (setq address hexl-max-address))
- (setq address (logior address 7)))
- (if (> address hexl-max-address)
- (progn
- (message "End of buffer.")
- (setq address hexl-max-address))
- (setq address (+ address 8))))
+ (setq address
+ (if (> address hexl-max-address)
+ (progn
+ (message "End of buffer.")
+ hexl-max-address)
+ (if (equal address (logior address 7))
+ (+ address 8)
+ (logior address 7))))
(setq arg (1- arg)))
- (if (> address hexl-max-address)
- (progn
- (message "End of buffer.")
- (setq address hexl-max-address))
- (setq address (logior address 7))))
+ (setq address
+ (if (> address hexl-max-address)
+ (progn
+ (message "End of buffer.")
+ hexl-max-address)
+ (logior address 7))))
(while (> arg 0)
(if (not (equal address (logand address -8)))
(setq address (logand address -8))
@@ -746,18 +713,18 @@ With prefix arg N, puts point N bytes of the way from the true beginning."
(defun hexl-scroll-down (arg)
"Scroll hexl buffer window upward ARG lines; or near full window if no ARG."
(interactive "P")
- (if (null arg)
- (setq arg (1- (window-height)))
- (setq arg (prefix-numeric-value arg)))
+ (setq arg (if (null arg)
+ (1- (window-height))
+ (prefix-numeric-value arg)))
(hexl-scroll-up (- arg)))
(defun hexl-scroll-up (arg)
"Scroll hexl buffer window upward ARG lines; or near full window if no ARG.
If there's no byte at the target address, move to the first or last line."
(interactive "P")
- (if (null arg)
- (setq arg (1- (window-height)))
- (setq arg (prefix-numeric-value arg)))
+ (setq arg (if (null arg)
+ (1- (window-height))
+ (prefix-numeric-value arg)))
(let* ((movement (* arg 16))
(address (hexl-current-address))
(dest (+ address movement)))
@@ -785,10 +752,8 @@ If there's no byte at the target address, move to the first or last line."
(defun hexl-end-of-1k-page ()
"Go to end of 1KB boundary."
(interactive)
- (hexl-goto-address (let ((address (logior (hexl-current-address) 1023)))
- (if (> address hexl-max-address)
- (setq address hexl-max-address))
- address)))
+ (hexl-goto-address
+ (max hexl-max-address (logior (hexl-current-address) 1023))))
(defun hexl-beginning-of-512b-page ()
"Go to beginning of 512 byte boundary."
@@ -798,10 +763,8 @@ If there's no byte at the target address, move to the first or last line."
(defun hexl-end-of-512b-page ()
"Go to end of 512 byte boundary."
(interactive)
- (hexl-goto-address (let ((address (logior (hexl-current-address) 511)))
- (if (> address hexl-max-address)
- (setq address hexl-max-address))
- address)))
+ (hexl-goto-address
+ (max hexl-max-address (logior (hexl-current-address) 511))))
(defun hexl-quoted-insert (arg)
"Read next input character and insert it.
@@ -1056,27 +1019,17 @@ Customize the variable `hexl-follow-ascii' to disable this feature."
(defun hexl-activate-ruler ()
"Activate `ruler-mode'."
(require 'ruler-mode)
- (unless (boundp 'hexl-mode-old-ruler-function)
- (set (make-local-variable 'hexl-mode-old-ruler-function)
- ruler-mode-ruler-function))
- (set (make-local-variable 'ruler-mode-ruler-function)
- 'hexl-mode-ruler)
- (ruler-mode 1))
+ (hexl-mode--setq-local 'ruler-mode-ruler-function
+ #'hexl-mode-ruler)
+ (hexl-mode--setq-local 'ruler-mode t))
(defun hexl-follow-line ()
"Activate `hl-line-mode'."
(require 'hl-line)
- (unless (boundp 'hexl-mode-old-hl-line-range-function)
- (set (make-local-variable 'hexl-mode-old-hl-line-range-function)
- hl-line-range-function))
- (unless (boundp 'hexl-mode-old-hl-line-face)
- (set (make-local-variable 'hexl-mode-old-hl-line-face)
- hl-line-face))
- (set (make-local-variable 'hl-line-range-function)
- 'hexl-highlight-line-range)
- (set (make-local-variable 'hl-line-face)
- 'highlight)
- (hl-line-mode 1))
+ (hexl-mode--setq-local 'hl-line-range-function
+ #'hexl-highlight-line-range)
+ (hexl-mode--setq-local 'hl-line-face 'highlight)
+ (hexl-mode--setq-local 'hl-line-mode t))
(defun hexl-highlight-line-range ()
"Return the range of address region for the point.
@@ -1158,5 +1111,4 @@ This function is assumed to be used as callback function for `hl-line-mode'."
(provide 'hexl)
-;; arch-tag: d5a7aa8a-9bce-480b-bcff-6c4c7ca5ea4a
;;; hexl.el ends here
diff --git a/lisp/hfy-cmap.el b/lisp/hfy-cmap.el
index 7aefc36224..7bf1da2bdd 100644
--- a/lisp/hfy-cmap.el
+++ b/lisp/hfy-cmap.el
@@ -1,6 +1,6 @@
;;; hfy-cmap.el --- Fallback colour name -> rgb mapping for `htmlfontify'
-;; Copyright (C) 2002, 2003, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2003, 2009-2011 Free Software Foundation, Inc.
;; Emacs Lisp Archive Entry
;; Package: htmlfontify
@@ -850,5 +850,4 @@ Loads the variable `hfy-rgb-txt-colour-map', which is used by
;; generated-autoload-file: "htmlfontify.el"
;; End:
-;; arch-tag: dff7feea-add4-48ba-937c-e79ac40cec9b
;;; hfy-cmap.el ends here
diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el
index 0273de14ed..d2c45e1132 100644
--- a/lisp/hi-lock.el
+++ b/lisp/hi-lock.el
@@ -1,7 +1,6 @@
;;; hi-lock.el --- minor mode for interactive automatic highlighting
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: David M. Koppelman <[email protected]>
;; Keywords: faces, minor-mode, matching, display
@@ -665,5 +664,4 @@ A string is considered new if it had not previously been used in a call to
(provide 'hi-lock)
-;; arch-tag: d2e8fd07-4cc9-4c6f-a200-1e729bc54066
;;; hi-lock.el ends here
diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el
index 956cfc1c59..859f1288c8 100644
--- a/lisp/hilit-chg.el
+++ b/lisp/hilit-chg.el
@@ -1,7 +1,6 @@
;;; hilit-chg.el --- minor mode displaying buffer changes with special face
-;; Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Richard Sharman <[email protected]>
;; Keywords: faces
diff --git a/lisp/hippie-exp.el b/lisp/hippie-exp.el
index 2533587bcc..75bc1f9743 100644
--- a/lisp/hippie-exp.el
+++ b/lisp/hippie-exp.el
@@ -1,7 +1,6 @@
;;; hippie-exp.el --- expand text trying various ways to find its expansion
-;; Copyright (C) 1992, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 2001-2011 Free Software Foundation, Inc.
;; Author: Anders Holst <[email protected]>
;; Last change: 3 March 1998
diff --git a/lisp/hl-line.el b/lisp/hl-line.el
index 9a79107600..55704dccb3 100644
--- a/lisp/hl-line.el
+++ b/lisp/hl-line.el
@@ -1,7 +1,6 @@
;;; hl-line.el --- highlight the current line
-;; Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Maintainer: FSF
@@ -219,5 +218,4 @@ the line including the point by OVERLAY."
(provide 'hl-line)
-;; arch-tag: ac806940-0876-4959-8c89-947563ee2833
;;; hl-line.el ends here
diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el
index 0a4bec2248..0b02daf696 100644
--- a/lisp/htmlfontify.el
+++ b/lisp/htmlfontify.el
@@ -1,7 +1,6 @@
;;; htmlfontify.el --- htmlise a buffer/source tree with optional hyperlinks
-;; Copyright (C) 2002, 2003, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2003, 2009-2011 Free Software Foundation, Inc.
;; Emacs Lisp Archive Entry
;; Package: htmlfontify
@@ -109,13 +108,13 @@
`htmlfontify-load-rgb-file'
`htmlfontify-unload-rgb-file'\n
In order to:\n
-fontify a file you have open: M-x htmlfontify-buffer
-prepare the etags map for a directory: M-x htmlfontify-run-etags
-copy a directory, fontifying as you go: M-x htmlfontify-copy-and-link-dir\n
+fontify a file you have open: \\[htmlfontify-buffer]
+prepare the etags map for a directory: \\[htmlfontify-run-etags]
+copy a directory, fontifying as you go: \\[htmlfontify-copy-and-link-dir]\n
The following might be useful when running non-windowed or in batch mode:
\(note that they shouldn't be necessary - we have a built in map)\n
-load an X11 style rgb.txt file: M-x htmlfontify-load-rgb-file
-unload the current rgb.txt file: M-x htmlfontify-unload-rgb-file\n
+load an X11 style rgb.txt file: \\[htmlfontify-load-rgb-file]
+unload the current rgb.txt file: \\[htmlfontify-unload-rgb-file]\n
And here's a programmatic example:\n
\(defun rtfm-build-page-header (file style)
(format \"#define TEMPLATE red+black.html
@@ -151,10 +150,12 @@ main-content <=MAIN_CONTENT;\\n\" rtfm-section file style rtfm-section file))
:prefix "hfy-")
(defcustom hfy-page-header 'hfy-default-header
- "Function called with two arguments (the filename relative to the top
+ "Function called to build the header of the html source.
+This is called with two arguments (the filename relative to the top
level source directory being etag'd and fontified), and a string containing
-the <style>...</style> text to embed in the document- the string returned will
-be used as the header for the htmlfontified version of the source file.\n
+the <style>...</style> text to embed in the document.
+It should return the string returned will be used as the header for the
+htmlfontified version of the source file.\n
See also `hfy-page-footer'."
:group 'htmlfontify
;; FIXME: Why place such a :tag everywhere? Isn't it imposing your
@@ -163,16 +164,17 @@ See also `hfy-page-footer'."
:type '(function))
(defcustom hfy-split-index nil
- "Whether or not to split the index `hfy-index-file' alphabetically
-on the first letter of each tag. Useful when the index would otherwise
+ "Whether or not to split the index `hfy-index-file' alphabetically.
+If non-nil, the index is split on the first letter of each tag.
+Useful when the index would otherwise
be large and take a long time to render or be difficult to navigate."
:group 'htmlfontify
:tag "split-index"
:type '(boolean))
(defcustom hfy-page-footer 'hfy-default-footer
- "As `hfy-page-header', but generates the output footer
-\(and takes only one argument, the filename)."
+ "As `hfy-page-header', but generates the output footer.
+It takes only one argument, the filename."
:group 'htmlfontify
:tag "page-footer"
:type '(function))
@@ -205,7 +207,8 @@ code using this should fall back to `hfy-extn'."
:type '(choice string (const nil)))
(defcustom hfy-link-style-fun 'hfy-link-style-string
- "Set this to a function, which will be called with one argument
+ "Function to customize the appearance of hyperlinks.
+Set this to a function, which will be called with one argument
\(a \"{ foo: bar; ...}\" CSS style-string) - it should return a copy of
its argument, altered so as to make any changes you want made for text which
is a hyperlink, in addition to being in the class to which that style would
@@ -228,7 +231,7 @@ fontification-and-hyperlinking."
:tag "instance-file"
:type '(string))
-(defcustom hfy-html-quote-regex "\\(<\\|\"\\|&\\|>\\)"
+(defcustom hfy-html-quote-regex "\\([<\"&>]\\)"
"Regex to match (with a single back-reference per match) strings in HTML
which should be quoted with `hfy-html-quote' (and `hfy-html-quote-map')
to make them safe."
@@ -556,7 +559,8 @@ therefore no longer care about) will be invalid at any time.\n
(while sa
(setq elt (car sa)
sa (cdr sa))
- (if (memq elt set-b) (setq interq (cons elt interq)))) interq))
+ (if (memq elt set-b) (setq interq (cons elt interq))))
+ interq))
(defun hfy-colour-vals (colour)
"Where COLOUR is a color name or #XXXXXX style triplet, return a
@@ -587,7 +591,8 @@ in a windowing system - try to trick it..."
(setq cperl-syntaxify-by-font-lock t)))
(setq hfy-cperl-mode-kludged-p t))) )
-(defun hfy-opt (symbol) "Is option SYMBOL set." (memq symbol hfy-optimisations))
+(defun hfy-opt (symbol) "Is option SYMBOL set."
+ (memq symbol hfy-optimisations))
(defun hfy-default-header (file style)
"Default value for `hfy-page-header'.
@@ -718,7 +723,8 @@ of the variable `hfy-src-doc-link-style', removing text matching the regex
(concat (replace-match hfy-src-doc-link-style
'fixed-case
'literal
- style-string) " }") style-string))
+ style-string) " }")
+ style-string))
;; utility functions - cast emacs style specification values into their
;; css2 equivalents:
@@ -836,11 +842,11 @@ VAL is ignored here."
"Return a `defface' style alist of possible specifications for FACE.
Entries resulting from customization (`custom-set-faces') will take
precedence."
- (let ((spec nil))
- (setq spec (append (or (get face 'saved-face) (list))
- (or (get face 'face-defface-spec) (list))))
- (if (and hfy-display-class hfy-default-face-def (eq face 'default))
- (setq spec (append hfy-default-face-def spec))) spec))
+ (append
+ (if (and hfy-display-class hfy-default-face-def (eq face 'default))
+ hfy-default-face-def)
+ (get face 'saved-face)
+ (get face 'face-defface-spec)))
(defun hfy-face-attr-for-class (face &optional class)
"Return the face attributes for FACE.
@@ -1046,10 +1052,9 @@ haven't encountered them yet. Returns a `hfy-style-assoc'."
and return a `hfy-style-assoc'.\n
See also `hfy-face-to-style-i', `hfy-flatten-style'."
;;(message "hfy-face-to-style");;DBUG
- (let ((face-def (hfy-face-resolve-face fn))
- (final-style nil))
-
- (setq final-style (hfy-flatten-style (hfy-face-to-style-i face-def)))
+ (let* ((face-def (hfy-face-resolve-face fn))
+ (final-style
+ (hfy-flatten-style (hfy-face-to-style-i face-def))))
;;(message "%S" final-style)
(if (not (assoc "text-decoration" final-style))
(progn (setq final-style
@@ -1091,8 +1096,9 @@ See also `hfy-face-to-style-i', `hfy-flatten-style'."
(string-match "^[Ii]nfo-\\(.*\\)" face-name))
(progn
(setq face-name (match-string 1 face-name))
- (if (string-match "\\(.*\\)-face$" face-name)
- (setq face-name (match-string 1 face-name))) face-name)
+ (if (string-match "\\(.*\\)-face\\'" face-name)
+ (setq face-name (match-string 1 face-name)))
+ face-name)
face-name)) )
;; construct an assoc of (stripped-name . "{ css-stuff-here }") pairs
@@ -1102,91 +1108,45 @@ See also `hfy-face-to-style-i', `hfy-flatten-style'."
and return a CSS style specification.\n
See also `hfy-face-to-style'."
;;(message "hfy-face-to-css");;DBUG
- (let ((css-list nil)
- (css-text nil)
- (seen nil))
- ;;(message "(hfy-face-to-style %S)" fn)
- (setq css-list (hfy-face-to-style fn))
- (setq css-text
+ (let* ((css-list (hfy-face-to-style fn))
+ (seen nil)
+ (css-text
(mapcar
(lambda (E)
(if (car E)
(unless (member (car E) seen)
(push (car E) seen)
(format " %s: %s; " (car E) (cdr E)))))
- css-list))
+ css-list)))
(cons (hfy-css-name fn) (format "{%s}" (apply 'concat css-text)))) )
-;; extract a face from a list of char properties, if there is one:
-(defun hfy-p-to-face (props)
- "Given PROPS, a list of text properties, return the value of the face
-property, or nil."
- (if props
- (if (string= (car props) "face")
- (let ((propval (cadr props)))
- (if (and (listp propval) (not (cdr propval)))
- (car propval)
- propval))
- (hfy-p-to-face (cddr props)))
- nil))
-
-(defun hfy-p-to-face-lennart (props)
- "Given PROPS, a list of text properties, return the value of the face
-property, or nil."
- (when props
- (let ((face (plist-get props 'face))
- (font-lock-face (plist-get props 'font-lock-face))
- (button (plist-get props 'button))
- ;;(face-rec (memq 'face props))
- ;;(button-rec (memq 'button props)))
- )
- (if button
- (let* ((category (plist-get props 'category))
- (face (when category (plist-get (symbol-plist category) 'face))))
- face)
- (or font-lock-face
- face)))))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; (defun hfy-get-face-at (pos)
-;; ;; (let ((face (get-char-property-and-overlay pos 'face)))
-;; ;; (when (and face (listp face)) (setq face (car face)))
-;; ;; (unless (listp face)
-;; ;; face)))
-;; ;;(get-char-property pos 'face)
-;; ;; Overlays are handled later
-;; (if (or (not show-trailing-whitespace)
-;; (not (get-text-property pos 'hfy-show-trailing-whitespace)))
-;; (get-text-property pos 'face)
-;; (list 'trailing-whitespace (get-text-property pos 'face)))
-;; )
-
-(defun hfy-prop-invisible-p (prop)
- "Is text property PROP an active invisibility property?"
- (or (and (eq buffer-invisibility-spec t) prop)
- (or (memq prop buffer-invisibility-spec)
- (assq prop buffer-invisibility-spec))))
+(defalias 'hfy-prop-invisible-p
+ (if (fboundp 'invisible-p) #'invisible-p
+ (lambda (prop)
+ "Is text property PROP an active invisibility property?"
+ (or (and (eq buffer-invisibility-spec t) prop)
+ (or (memq prop buffer-invisibility-spec)
+ (assq prop buffer-invisibility-spec))))))
(defun hfy-find-invisible-ranges ()
"Return a list of (start-point . end-point) cons cells of invisible regions."
- (let (invisible p i e s) ;; return-value pos invisible end start
- (save-excursion
+ (save-excursion
+ (let (invisible p i s) ;; return-value pos invisible end start
(setq p (goto-char (point-min)))
(when (invisible-p p) (setq s p i t))
(while (< p (point-max))
(if i ;; currently invisible
(when (not (invisible-p p)) ;; but became visible
- (setq e p
- i nil
- invisible (cons (cons s e) invisible)))
+ (setq i nil
+ invisible (cons (cons s p) invisible)))
;; currently visible:
(when (invisible-p p) ;; but have become invisible
(setq s p i t)))
(setq p (next-char-property-change p)))
;; still invisible at buffer end?
(when i
- (setq e (point-max)
- invisible (cons (cons s e) invisible))) ) invisible))
+ (setq invisible (cons (cons s (point-max)) invisible)))
+ invisible)))
(defun hfy-invisible-name (point map)
"Generate a CSS style name for an invisible section of the buffer.
@@ -1216,9 +1176,7 @@ return a `defface' style list of face properties instead of a face symbol."
;; not sure why we'd want to remove face-name? -- v
(let ((overlay-data nil)
(base-face nil)
- ;; restored hfy-p-to-face as it handles faces like (bold) as
- ;; well as face like 'bold - hfy-get-face-at doesn't dtrt -- v
- (face-name (hfy-p-to-face (text-properties-at p)))
+ (face-name (get-text-property p 'face))
;; (face-name (hfy-get-face-at p))
(prop-seen nil)
(extra-props nil)
@@ -1334,9 +1292,9 @@ return a `defface' style list of face properties instead of a face symbol."
extra-props (cons p (cons v extra-props))))))))))
;;(message "+ %d: %s; %S" p face-name extra-props)
(if extra-props
- (if (listp face-name)
- (nconc extra-props face-name)
- (nconc extra-props (face-attr-construct face-name)))
+ (nconc extra-props (if (listp face-name)
+ face-name
+ (face-attr-construct face-name)))
face-name)) ))
(defun hfy-overlay-props-at (p)
@@ -1379,7 +1337,8 @@ variable `font-lock-mode' and variable `font-lock-fontified' for truth."
(goto-char pt)
(while (and (< pt (point-max)) (not face-name))
(setq face-name (hfy-face-at pt))
- (setq pt (next-char-property-change pt)))) face-name)
+ (setq pt (next-char-property-change pt))))
+ face-name)
font-lock-mode)))
;; remember, the map is in reverse point order:
@@ -1442,12 +1401,13 @@ Returns a modified copy of FACE-MAP."
;; Fix-me: save table for multi-buffer
"Compile and return a `hfy-facemap-assoc' for the current buffer."
;;(message "hfy-compile-face-map");;DBUG
- (let ((pt (point-min))
- (pt-narrow 1)
- (fn nil)
- (map nil)
- (prev-tag nil)) ;; t if the last tag-point was a span-start
- ;; nil if it was a span-stop
+ (let* ((pt (point-min))
+ (pt-narrow (save-restriction (widen) (point-min)))
+ (offset (- pt pt-narrow))
+ (fn nil)
+ (map nil)
+ (prev-tag nil)) ;; t if the last tag-point was a span-start
+ ;; nil if it was a span-stop
(save-excursion
(goto-char pt)
(while (< pt (point-max))
@@ -1458,7 +1418,7 @@ Returns a modified copy of FACE-MAP."
(if prev-tag (push (cons pt-narrow 'end) map))
(setq prev-tag nil))
(setq pt (next-char-property-change pt))
- (setq pt-narrow (1+ (- pt (point-min)))))
+ (setq pt-narrow (+ offset pt)))
(if (and map (not (eq 'end (cdar map))))
(push (cons (- (point-max) (point-min)) 'end) map)))
(if (hfy-opt 'merge-adjacent-tags) (hfy-merge-adjacent-spans map) map)))
@@ -1475,7 +1435,7 @@ Otherwise a plausible filename is constructed from `default-directory',
(with-current-buffer buf
(setq buffer-file-name
(if src (concat src hfy-extn)
- (expand-file-name (if (string-match "^.*/\\([^/]*\\)$" name)
+ (expand-file-name (if (string-match "^.*/\\([^/]*\\)\\'" name)
(match-string 1 name)
name))))
buf)))
@@ -1493,23 +1453,22 @@ Uses `hfy-link-style-fun' to do this."
(defun hfy-sprintf-stylesheet (css file)
"Return the inline CSS style sheet for FILE as a string."
- (let ((stylesheet nil))
- (setq stylesheet
- (concat
- hfy-meta-tags
- "\n<style type=\"text/css\"><!-- \n"
- ;; Fix-me: Add handling of page breaks here + scan for ^L
- ;; where appropriate.
- (format "body %s\n" (cddr (assq 'default css)))
- (apply 'concat
- (mapcar
- (lambda (style)
- (format
- "span.%s %s\nspan.%s a %s\n"
- (cadr style) (cddr style)
- (cadr style) (hfy-link-style (cddr style))))
- css))
- " --></style>\n"))
+ (let ((stylesheet
+ (concat
+ hfy-meta-tags
+ "\n<style type=\"text/css\"><!-- \n"
+ ;; Fix-me: Add handling of page breaks here + scan for ^L
+ ;; where appropriate.
+ (format "body %s\n" (cddr (assq 'default css)))
+ (apply 'concat
+ (mapcar
+ (lambda (style)
+ (format
+ "span.%s %s\nspan.%s a %s\n"
+ (cadr style) (cddr style)
+ (cadr style) (hfy-link-style (cddr style))))
+ css))
+ " --></style>\n")))
(funcall hfy-page-header file stylesheet)))
;; tag all the dangerous characters we want to escape
@@ -1699,33 +1658,32 @@ FILE, if set, is the file name."
;; (message "checking to see whether we should link...")
(if (and srcdir file)
(let ((lp 'hfy-link)
- (pt nil)
+ (pt (point-min))
(pr nil)
(rr nil))
;; (message " yes we should.")
- ;; translate 'hfy-anchor properties to anchors
- (setq pt (point-min))
- (while (setq pt (next-single-property-change pt 'hfy-anchor))
- (if (setq pr (get-text-property pt 'hfy-anchor))
- (progn (goto-char pt)
- (remove-text-properties pt (1+ pt) '(hfy-anchor nil))
- (insert (concat "<a name=\"" pr "\"></a>")))))
- ;; translate alternate 'hfy-link and 'hfy-endl props to opening
- ;; and closing links. (this should avoid those spurious closes
- ;; we sometimes get by generating only paired tags)
- (setq pt (point-min))
- (while (setq pt (next-single-property-change pt lp))
- (if (not (setq pr (get-text-property pt lp))) nil
- (goto-char pt)
- (remove-text-properties pt (1+ pt) (list lp nil))
- (case lp
- (hfy-link
- (if (setq rr (get-text-property pt 'hfy-inst))
- (insert (format "<a name=\"%s\"></a>" rr)))
- (insert (format "<a href=\"%s\">" pr))
- (setq lp 'hfy-endl))
- (hfy-endl
- (insert "</a>") (setq lp 'hfy-link)) ))) ))
+ ;; translate 'hfy-anchor properties to anchors
+ (while (setq pt (next-single-property-change pt 'hfy-anchor))
+ (if (setq pr (get-text-property pt 'hfy-anchor))
+ (progn (goto-char pt)
+ (remove-text-properties pt (1+ pt) '(hfy-anchor nil))
+ (insert (concat "<a name=\"" pr "\"></a>")))))
+ ;; translate alternate 'hfy-link and 'hfy-endl props to opening
+ ;; and closing links. (this should avoid those spurious closes
+ ;; we sometimes get by generating only paired tags)
+ (setq pt (point-min))
+ (while (setq pt (next-single-property-change pt lp))
+ (if (not (setq pr (get-text-property pt lp))) nil
+ (goto-char pt)
+ (remove-text-properties pt (1+ pt) (list lp nil))
+ (case lp
+ (hfy-link
+ (if (setq rr (get-text-property pt 'hfy-inst))
+ (insert (format "<a name=\"%s\"></a>" rr)))
+ (insert (format "<a href=\"%s\">" pr))
+ (setq lp 'hfy-endl))
+ (hfy-endl
+ (insert "</a>") (setq lp 'hfy-link)) ))) ))
;; #####################################################################
;; transform the dangerous chars. This changes character positions
@@ -1791,7 +1749,7 @@ hyperlinks as appropriate."
;; pick up the file name in case we didn't receive it
(if (not file)
(progn (setq file (or (buffer-file-name) (buffer-name)))
- (if (string-match "/\\([^/]*\\)$" file)
+ (if (string-match "/\\([^/]*\\)\\'" file)
(setq file (match-string 1 file)))) )
(if (not (hfy-opt 'skip-refontification))
@@ -1834,7 +1792,7 @@ Hardly bombproof, but good enough in the context in which it is being used."
"Is SRCDIR/FILE text? Uses `hfy-istext-command' to determine this."
(let* ((cmd (format hfy-istext-command (expand-file-name file srcdir)))
(rsp (shell-command-to-string cmd)))
- (if (string-match "text" rsp) t nil)))
+ (string-match "text" rsp)))
;; open a file, check fontification, if fontified, write a fontified copy
;; to the destination directory, otherwise just copy the file:
@@ -1867,18 +1825,17 @@ adding an extension of `hfy-extn'. Fontification is actually done by
(kill-buffer source)) ))
;; list of tags in file in srcdir
-(defun hfy-tags-for-file (srcdir file)
+(defun hfy-tags-for-file (cache-hash file)
"List of etags tags that have definitions in this FILE.
-Looks up the tags cache in `hfy-tags-cache' using SRCDIR as the key."
+CACHE-HASH is the tags cache."
;;(message "hfy-tags-for-file");;DBUG
- (let ((cache-entry (assoc srcdir hfy-tags-cache))
- (cache-hash nil)
- (tag-list nil))
- (if (setq cache-hash (cadr cache-entry))
+ (let* ((tag-list nil))
+ (if cache-hash
(maphash
(lambda (K V)
(if (assoc file V)
- (setq tag-list (cons K tag-list)))) cache-hash))
+ (setq tag-list (cons K tag-list))))
+ cache-hash))
tag-list))
;; mark the tags native to this file for anchors
@@ -1886,9 +1843,9 @@ Looks up the tags cache in `hfy-tags-cache' using SRCDIR as the key."
"Mark tags in FILE (lookup SRCDIR in `hfy-tags-cache') with the `hfy-anchor'
property, with a value of \"tag.line-number\"."
;;(message "(hfy-mark-tag-names %s %s)" srcdir file);;DBUG
- (let ((cache-entry (assoc srcdir hfy-tags-cache))
- (cache-hash nil))
- (if (setq cache-hash (cadr cache-entry))
+ (let* ((cache-entry (assoc srcdir hfy-tags-cache))
+ (cache-hash (cadr cache-entry)))
+ (if cache-hash
(mapcar
(lambda (TAG)
(mapcar
@@ -1901,7 +1858,7 @@ property, with a value of \"tag.line-number\"."
(+ 2 chr)
'hfy-anchor link))))
(gethash TAG cache-hash)))
- (hfy-tags-for-file srcdir file)))))
+ (hfy-tags-for-file cache-hash file)))))
(defun hfy-relstub (file &optional start)
"Return a \"../\" stub of the appropriate length for the current source
@@ -1910,7 +1867,8 @@ START is the offset at which to start looking for the / character in FILE."
;;(message "hfy-relstub");;DBUG
(let ((c ""))
(while (setq start (string-match "/" file start))
- (setq start (1+ start)) (setq c (concat c "../"))) c))
+ (setq start (1+ start)) (setq c (concat c "../")))
+ c))
(defun hfy-href-stub (this-file def-files tag)
"Return an href stub for a tag href in THIS-FILE.
@@ -2184,7 +2142,9 @@ SRCDIR and DSTDIR are the source and output directories respectively."
dstdir
hfy-index-file
stub)
- index-list)) ))) cache-hash) ) index-list)))
+ index-list)) )))
+ cache-hash) )
+ index-list)))
(defun hfy-prepare-tag-map (srcdir dstdir)
"Prepare the counterpart(s) to the index buffer(s) - a list of buffers
@@ -2216,7 +2176,9 @@ See also `hfy-prepare-index', `hfy-split-index'."
hfy-instance-file
stub
hfy-tags-rmap)
- index-list)) ))) cache-hash) ) index-list)))
+ index-list)) )))
+ cache-hash) )
+ index-list)))
(defun hfy-subtract-maps (srcdir)
"Internal function - strips definitions of tags from the instance map.
@@ -2243,8 +2205,7 @@ See also `hfy-tags-cache', `hfy-tags-rmap'."
"Load the etags cache for SRCDIR.
See also `hfy-load-tags-cache'."
(interactive "D source directory: ")
- (setq srcdir (directory-file-name srcdir))
- (hfy-load-tags-cache srcdir))
+ (hfy-load-tags-cache (directory-file-name srcdir)))
;;(defun hfy-test-read-args (foo bar)
;; (interactive "D source directory: \nD target directory: ")
@@ -2297,7 +2258,7 @@ You may also want to set `hfy-page-header' and `hfy-page-footer'."
;; (defalias 'hfy-set-hooks 'custom-set-variables)
;; (defun hfy-pp-hook (H)
-;; (and (string-match "-hook$" (symbol-name H))
+;; (and (string-match "-hook\\'" (symbol-name H))
;; (boundp H)
;; (symbol-value H)
;; (insert (format "\n '(%S %S)" H (symbol-value H)))
@@ -2350,7 +2311,7 @@ You may also want to set `hfy-page-header' and `hfy-page-footer'."
;;;### (autoloads (hfy-fallback-colour-values htmlfontify-load-rgb-file)
-;;;;;; "hfy-cmap" "hfy-cmap.el" "7e622e4b131ea5efbe9d258f719822d6")
+;;;;;; "hfy-cmap" "hfy-cmap.el" "8dce008297f15826cc6ab82203c46fa6")
;;; Generated autoloads from hfy-cmap.el
(autoload 'htmlfontify-load-rgb-file "hfy-cmap" "\
diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el
index 33cb9a80ba..55375f1e06 100644
--- a/lisp/ibuf-ext.el
+++ b/lisp/ibuf-ext.el
@@ -1,7 +1,6 @@
;;; ibuf-ext.el --- extensions for ibuffer
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Colin Walters <[email protected]>
;; Maintainer: John Paul Wallington <[email protected]>
diff --git a/lisp/ibuf-macs.el b/lisp/ibuf-macs.el
index 684cfe8f51..9965e0ccfb 100644
--- a/lisp/ibuf-macs.el
+++ b/lisp/ibuf-macs.el
@@ -1,7 +1,6 @@
;;; ibuf-macs.el --- macros for ibuffer
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Colin Walters <[email protected]>
;; Maintainer: John Paul Wallington <[email protected]>
@@ -301,5 +300,4 @@ bound to the current value of the filter.
(provide 'ibuf-macs)
-;; arch-tag: 2748edce-82c9-4cd9-9d9d-bd73e43c20c5
;;; ibuf-macs.el ends here
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index 2dab58fb36..3e5b301cbf 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -1,7 +1,6 @@
;;; ibuffer.el --- operate on buffers like dired
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Colin Walters <[email protected]>
;; Maintainer: John Paul Wallington <[email protected]>
@@ -2639,7 +2638,7 @@ will be inserted before the group at point."
;;;;;; ibuffer-backward-filter-group ibuffer-forward-filter-group
;;;;;; ibuffer-toggle-filter-group ibuffer-mouse-toggle-filter-group
;;;;;; ibuffer-interactive-filter-by-mode ibuffer-mouse-filter-by-mode
-;;;;;; ibuffer-auto-mode) "ibuf-ext" "ibuf-ext.el" "3840d79a044995c846fe8bbaa9565a2b")
+;;;;;; ibuffer-auto-mode) "ibuf-ext" "ibuf-ext.el" "f163e17664a89a6f0aa2b15bfaaa65a4")
;;; Generated autoloads from ibuf-ext.el
(autoload 'ibuffer-auto-mode "ibuf-ext" "\
@@ -3015,5 +3014,4 @@ defaults to one.
;; coding: iso-8859-1
;; End:
-;; arch-tag: 72581688-0603-4954-b8cf-837c700f62e8
;;; ibuffer.el ends here
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index 645981539d..490b2b2ebf 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -1,7 +1,7 @@
;;; icomplete.el --- minibuffer completion incremental feedback
-;; Copyright (C) 1992, 1993, 1994, 1997, 1999, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992-1994, 1997, 1999, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Ken Manheimer <[email protected]>
;; Maintainer: Ken Manheimer <[email protected]>
@@ -376,5 +376,4 @@ are exhibited within the square braces.)"
;;allout-layout: (-2 :)
;;End:
-;; arch-tag: 339ec25a-0741-4eb6-be63-997532e89b0f
;;; icomplete.el ends here
diff --git a/lisp/ido.el b/lisp/ido.el
index 2df9b8666a..d1f2cea83f 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -1,7 +1,6 @@
;;; ido.el --- interactively do things with buffers and files.
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Kim F. Storm <[email protected]>
;; Based on: iswitchb by Stephen Eglen <[email protected]>
@@ -1289,8 +1288,6 @@ Only used if `ido-use-virtual-buffers' is non-nil.")
(defun ido-may-cache-directory (&optional dir)
(setq dir (or dir ido-current-directory))
(cond
- ((ido-directory-too-big-p dir)
- nil)
((and (ido-is-root-directory dir)
(or ido-enable-tramp-completion
(memq system-type '(windows-nt ms-dos))))
@@ -1299,6 +1296,8 @@ Only used if `ido-use-virtual-buffers' is non-nil.")
(ido-cache-unc-valid))
((ido-is-ftp-directory dir)
(ido-cache-ftp-valid))
+ ((ido-directory-too-big-p dir)
+ nil)
(t t)))
(defun ido-pp (list &optional sep)
@@ -1467,6 +1466,11 @@ Removes badly formatted data and ignored directories."
;; ido kill emacs hook
(ido-save-history))
+(defun ido-common-initialization ()
+ (ido-init-completion-maps)
+ (add-hook 'minibuffer-setup-hook 'ido-minibuffer-setup)
+ (add-hook 'choose-completion-string-functions 'ido-choose-completion-string))
+
(define-minor-mode ido-everywhere
"Toggle using ido speed-ups everywhere file and directory names are read.
With ARG, turn ido speed-up on if arg is positive, off otherwise."
@@ -1510,12 +1514,9 @@ This function also adds a hook to the minibuffer."
(t nil)))
(ido-everywhere (if ido-everywhere 1 -1))
- (when ido-mode
- (ido-init-completion-maps))
(when ido-mode
- (add-hook 'minibuffer-setup-hook 'ido-minibuffer-setup)
- (add-hook 'choose-completion-string-functions 'ido-choose-completion-string)
+ (ido-common-initialization)
(ido-load-history)
(add-hook 'kill-emacs-hook 'ido-kill-emacs-hook)
@@ -2428,7 +2429,7 @@ If cursor is not at the end of the user input, move to end of input."
(ido-record-command 'write-file filename)
(add-to-history 'file-name-history filename)
(ido-record-work-directory)
- (write-file filename))
+ (write-file filename t))
((eq method 'read-only)
(ido-record-work-file filename)
@@ -3070,8 +3071,8 @@ If repeated, insert text from buffer instead."
(if ido-matches
(let ((next (cadr ido-matches)))
(setq ido-cur-list (ido-chop ido-cur-list next))
- (setq ido-rescan t)
- (setq ido-rotate t))))
+ (setq ido-matches (ido-chop ido-matches next))
+ (setq ido-rescan nil))))
(defun ido-prev-match ()
"Put last element of `ido-matches' at the front of the list."
@@ -3079,8 +3080,8 @@ If repeated, insert text from buffer instead."
(if ido-matches
(let ((prev (car (last ido-matches))))
(setq ido-cur-list (ido-chop ido-cur-list prev))
- (setq ido-rescan t)
- (setq ido-rotate t))))
+ (setq ido-matches (ido-chop ido-matches prev))
+ (setq ido-rescan nil))))
(defun ido-next-match-dir ()
"Find next directory in match list.
@@ -4759,6 +4760,8 @@ DEF, if non-nil, is the default value."
(ido-directory-too-big nil)
(ido-context-switch-command 'ignore)
(ido-choice-list choices))
+ ;; Initialize ido before invoking ido-read-internal
+ (ido-common-initialization)
(ido-read-internal 'list prompt hist def require-match initial-input)))
(defun ido-unload-function ()
@@ -4770,5 +4773,4 @@ DEF, if non-nil, is the default value."
(provide 'ido)
-;; arch-tag: b63a3500-1735-41bd-8a01-05373f0864da
;;; ido.el ends here
diff --git a/lisp/ielm.el b/lisp/ielm.el
index e1f8dc78d3..a105730374 100644
--- a/lisp/ielm.el
+++ b/lisp/ielm.el
@@ -1,7 +1,6 @@
;;; ielm.el --- interaction mode for Emacs Lisp
-;; Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
;; Author: David Smith <[email protected]>
;; Maintainer: FSF
@@ -561,5 +560,4 @@ Switches to the buffer `*ielm*', or creates it if it does not exist."
(provide 'ielm)
-;; arch-tag: ef60e4c0-9c4f-4bdb-8402-271313329790
;;; ielm.el ends here
diff --git a/lisp/iimage.el b/lisp/iimage.el
index ca300bf9fb..61347c5024 100644
--- a/lisp/iimage.el
+++ b/lisp/iimage.el
@@ -1,7 +1,6 @@
;;; iimage.el --- Inline image minor mode.
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: KOSEKI Yoshinori <[email protected]>
;; Maintainer: KOSEKI Yoshinori <[email protected]>
diff --git a/lisp/image-dired.el b/lisp/image-dired.el
index a74ddd312d..8c26b69956 100644
--- a/lisp/image-dired.el
+++ b/lisp/image-dired.el
@@ -1,6 +1,6 @@
;;; image-dired.el --- use dired to browse and manipulate your images
;;
-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2005-2011 Free Software Foundation, Inc.
;;
;; Version: 0.4.11
;; Keywords: multimedia
@@ -187,19 +187,19 @@ that allows sharing of thumbnails across different programs."
:group 'image-dired)
(defcustom image-dired-db-file
- (locate-user-emacs-file "image-dired/.image-dired_db")
+ (expand-file-name ".image-dired_db" image-dired-dir)
"Database file where file names and their associated tags are stored."
:type 'string
:group 'image-dired)
(defcustom image-dired-temp-image-file
- (locate-user-emacs-file "image-dired/.image-dired_temp")
+ (expand-file-name ".image-dired_temp" image-dired-dir)
"Name of temporary image file used by various commands."
:type 'string
:group 'image-dired)
(defcustom image-dired-gallery-dir
- (locate-user-emacs-file "image-dired/.image-dired_gallery")
+ (expand-file-name ".image-dired_gallery" image-dired-dir)
"Directory to store generated gallery html pages.
This path needs to be \"shared\" to the public so that it can access
the index.html page that image-dired creates."
@@ -344,7 +344,7 @@ original image file name and %t which is replaced by
:group 'image-dired)
(defcustom image-dired-temp-rotate-image-file
- (locate-user-emacs-file "image-dired/.image-dired_rotate_temp")
+ (expand-file-name ".image-dired_rotate_temp" image-dired-dir)
"Temporary file for rotate operations."
:type 'string
:group 'image-dired)
@@ -2622,5 +2622,4 @@ tags to their respective image file. Internal function used by
(provide 'image-dired)
-;; arch-tag: 9d11411d-331f-4380-8b44-8adfe3a0343e
;;; image-dired.el ends here
diff --git a/lisp/image-file.el b/lisp/image-file.el
index 04420eb722..bd1c101d52 100644
--- a/lisp/image-file.el
+++ b/lisp/image-file.el
@@ -1,7 +1,6 @@
;;; image-file.el --- support for visiting image files
;;
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;;
;; Author: Miles Bader <[email protected]>
;; Keywords: multimedia
@@ -202,5 +201,4 @@ Image files are those whose name has an extension in
(provide 'image-file)
-;; arch-tag: 04cafe36-f7ba-4c80-9f47-4cb656520ce1
;;; image-file.el ends here
diff --git a/lisp/image-mode.el b/lisp/image-mode.el
index 5f43f390c2..74fd96e8ad 100644
--- a/lisp/image-mode.el
+++ b/lisp/image-mode.el
@@ -1,6 +1,6 @@
;;; image-mode.el --- support for visiting image files
;;
-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2005-2011 Free Software Foundation, Inc.
;;
;; Author: Richard Stallman <[email protected]>
;; Keywords: multimedia
@@ -118,13 +118,16 @@ A winprops object has the shape (WINDOW . ALIST)."
(declare-function image-size "image.c" (spec &optional pixels frame))
(defun image-display-size (spec &optional pixels frame)
- "Wrapper around `image-size', to handle slice display properties.
-If SPEC is an image display property, call `image-size' with the
-given arguments.
-If SPEC is a list of properties containing `image' and `slice'
-properties, calculate the display size from the slice property.
-If SPEC contains `image' but not `slice', call `image-size' with
-the specified image."
+ "Wrapper around `image-size', handling slice display properties.
+Like `image-size', the return value is (WIDTH . HEIGHT).
+WIDTH and HEIGHT are in canonical character units if PIXELS is
+nil, and in pixel units if PIXELS is non-nil.
+
+If SPEC is an image display property, this function is equivalent
+to `image-size'. If SPEC is a list of properties containing
+`image' and `slice' properties, return the display size taking
+the slice property into account. If the list contains `image'
+but not `slice', return the `image-size' of the specified image."
(if (eq (car spec) 'image)
(image-size spec pixels frame)
(let ((image (assoc 'image spec))
@@ -628,5 +631,4 @@ indicates a scaling factor. nil indicates scale to 100%. "
(provide 'image-mode)
-;; arch-tag: b5b2b7e6-26a7-4b79-96e3-1546b5c4c6cb
;;; image-mode.el ends here
diff --git a/lisp/image.el b/lisp/image.el
index f93fd03fba..627d4c69e4 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -1,7 +1,6 @@
;;; image.el --- image API
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: multimedia
@@ -725,5 +724,4 @@ shall be displayed."
(provide 'image)
-;; arch-tag: 8e76a07b-eb48-4f3e-a7a0-1a7ba9f096b3
;;; image.el ends here
diff --git a/lisp/imenu.el b/lisp/imenu.el
index cf055b3855..6be6b85af8 100644
--- a/lisp/imenu.el
+++ b/lisp/imenu.el
@@ -1,7 +1,6 @@
;;; imenu.el --- framework for mode-specific buffer indexes
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Ake Stenhoff <[email protected]>
;; Lars Lindberg <[email protected]>
@@ -1066,5 +1065,4 @@ for more information."
(provide 'imenu)
-;; arch-tag: 98a2f5f5-4b91-4704-b18c-3aacf77d77a7
;;; imenu.el ends here
diff --git a/lisp/indent.el b/lisp/indent.el
index e57d6068ef..b9f008d46a 100644
--- a/lisp/indent.el
+++ b/lisp/indent.el
@@ -1,7 +1,6 @@
;;; indent.el --- indentation commands for Emacs
-;; Copyright (C) 1985, 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1995, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Package: emacs
@@ -595,5 +594,4 @@ Use \\[edit-tab-stops] to edit them interactively."
(define-key ctl-x-map "\t" 'indent-rigidly)
(define-key esc-map "i" 'tab-to-tab-stop)
-;; arch-tag: f402b2a7-e44f-492f-b5b8-38996020b7c3
;;; indent.el ends here
diff --git a/lisp/info-look.el b/lisp/info-look.el
index 5d696954fd..6baed1c422 100644
--- a/lisp/info-look.el
+++ b/lisp/info-look.el
@@ -1,8 +1,7 @@
;;; info-look.el --- major-mode-sensitive Info index lookup facility
;; An older version of this was known as libc.el.
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Ralph Schleicher <[email protected]>
;; (did not show signs of life (Nov 2001) -stef)
@@ -999,5 +998,4 @@ Return nil if there is nothing appropriate in the buffer near point."
(provide 'info-look)
-;; arch-tag: 0f1e3ea3-32a2-4461-bbab-3cff93539a74
;;; info-look.el ends here
diff --git a/lisp/info-xref.el b/lisp/info-xref.el
index 92e7634593..c56db2c94b 100644
--- a/lisp/info-xref.el
+++ b/lisp/info-xref.el
@@ -1,10 +1,10 @@
;;; info-xref.el --- check external references in an Info document
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Kevin Ryde <[email protected]>
;; Keywords: docs
+;; Version: 3
;; This file is part of GNU Emacs.
@@ -23,56 +23,259 @@
;;; Commentary:
-;; This file implements some simple checking of external cross references in
-;; info files, by attempting to visit the nodes specified.
+;; This is some simple checking of external cross references in info files,
+;; docstrings and custom-links by attempting to visit the nodes specified.
;;
-;; "makeinfo" checks references internal to a document, but not external
-;; references, which makes it rather easy for mistakes to creep in or node
-;; name changes to go unnoticed. `Info-validate' doesn't check external
-;; references either.
+;; `M-x info-xref-check' checks a single info file. See the docstring for
+;; details.
;;
-;; `M-x info-xref-check' checks one file. When invoked from an Info-mode or
-;; texinfo-mode buffer, the current info file is the default at the prompt.
+;; `M-x info-xref-check-all' checks all info files in Info-directory-list.
+;; This is a good way to check the consistency of the whole system.
;;
-;; `M-x info-xref-check-all' looks at everything in the normal info path.
-;; This might be a lot of files but it's a good way to check the consistency
-;; of the whole system.
+;; `M-x info-xref-check-all-custom' loads up all defcustom variables and
+;; checks any info references in them.
;;
-;; Results are shown in a buffer. The format is a bit rough, but hopefully
-;; there won't be too many problems normally, and correcting them is a
-;; manual process anyway, a case of finding the right spot in the original
-;; .texi and finding what node it ought to point to.
-;;
-;; When a target info file doesn't exist there's clearly no way to validate
-;; node references within it. A message is given for missing target files
-;; (once per source document), it could be simply that the target hasn't
-;; been installed, or it could be a mistake in the reference.
-;;
-;; Indirect info files are understood, just pass the top-level foo.info to
-;; `info-xref-check' and it traverses all sub-files. Compressed info files
-;; are accepted too, as usual for `Info-mode'.
-;;
-;; `info-xref-check-all' is rather permissive in what it considers an info
-;; file. It has to be since info files don't necessarily have a ".info"
-;; suffix (eg. this is usual for the emacs manuals). One consequence of
-;; this is that if for instance there's a source code directory in
-;; `Info-directory-list' then a lot of extraneous files might be read, which
-;; will be time consuming but should be harmless.
-;;
-;; `M-x info-xref-check-all-custom' is a related command, it goes through
-;; all info document references in customizable variables, checking them
-;; like info file cross references.
+;; `M-x info-xref-docstrings' checks docstring "Info node ..." hyperlinks in
+;; source files (and other files).
+
+;;; History:
+
+;; Version 3 - new M-x info-xref-docstrings, use compilation-mode
;;; Code:
(require 'info)
+(eval-when-compile
+ (require 'cl)) ;; for `incf'
+
+;;-----------------------------------------------------------------------------
+;; vaguely generic
+
+(defun info-xref-lock-file-p (filename)
+ "Return non-nil if FILENAME is an Emacs lock file.
+A lock file is \".#foo.txt\" etc per `lock-buffer'."
+ (string-match "\\(\\`\\|\\/\\)\\.#" filename))
+
+(defun info-xref-subfile-p (filename)
+ "Return t if FILENAME is an info subfile.
+If removing the last \"-<NUM>\" from the filename gives a file
+which exists, then consider FILENAME a subfile. This is an
+imperfect test, probably ought to open up the purported top file
+and see what subfiles it says."
+ (and (string-match "\\`\\(\\([^-]*-\\)*[^-]*\\)-[0-9]+\\(.*\\)\\'" filename)
+ (file-exists-p (concat (match-string 1 filename)
+ (match-string 3 filename)))))
+
+(defmacro info-xref-with-file (filename &rest body)
+ ;; checkdoc-params: (filename body)
+ "Evaluate BODY in a buffer containing the contents of FILENAME.
+If FILENAME is already in a buffer then that's used, otherwise a
+temporary buffer.
+
+The current implementation uses `insert-file-contents' rather
+than `find-file-noselect' so as not to be held up by queries
+about local variables or possible weirdness in a major mode.
+`lm-with-file' does a similar thing, but it sets
+`emacs-lisp-mode' which is not wanted here."
+
+ (declare (debug t) (indent 1))
+ `(let* ((info-xref-with-file--filename ,filename)
+ (info-xref-with-file--body (lambda () ,@body))
+ (info-xref-with-file--existing
+ (find-buffer-visiting info-xref-with-file--filename)))
+ (if info-xref-with-file--existing
+ (with-current-buffer info-xref-with-file--existing
+ (save-excursion
+ (funcall info-xref-with-file--body)))
+ (with-temp-buffer
+ (insert-file-contents ,filename)
+ (funcall info-xref-with-file--body)))))
+
+
+;;-----------------------------------------------------------------------------
+;; output buffer
-(defconst info-xref-results-buffer "*info-xref results*"
+(defconst info-xref-output-buffer "*info-xref results*"
"Name of the buffer for info-xref results.")
+(defvar info-xref-good 0
+ "Count of good cross references, during info-xref processing.")
+(defvar info-xref-bad 0
+ "Count of bad cross references, during info-xref processing.")
+(defvar info-xref-unavail 0
+ "Count of unavailable cross references, during info-xref processing.")
+
+(defvar info-xref-output-heading ""
+ "A heading string, during info-xref processing.
+This is shown if there's an error, but not if successful.")
+
+(defvar info-xref-filename nil
+ "The current buffer's filename, during info-xref processing.
+When looking at file contents in a temp buffer there's no
+`buffer-file-name', hence this variable.")
+
+(defvar info-xref-xfile-alist nil
+ "Info files found or not found, during info-xref processing.
+Key is \"(foo)\" etc and value nil or t according to whether info
+manual \"(foo)\" exists or not. This is used to suppress
+duplicate messages about foo not being available. (Duplicates
+within one top-level file that is.)")
+
+(defvar info-xref-in-progress nil)
+(defmacro info-xref-with-output (&rest body)
+ "Run BODY with an info-xref output buffer.
+This is meant to nest, so you can wrap it around a set of
+different info-xref checks and have them write to the one output
+buffer created by the outermost `info-xref-with-output', with an
+overall good/bad count summary inserted at the very end."
+
+ (declare (debug t))
+ `(save-excursion
+ (unless info-xref-in-progress
+ (display-buffer (get-buffer-create info-xref-output-buffer))
+ (set-buffer info-xref-output-buffer)
+ (setq buffer-read-only nil)
+ (fundamental-mode)
+ (erase-buffer)
+ (insert ";; info-xref output -*- mode: compilation -*-\n\n")
+ (compilation-mode)
+ (setq info-xref-good 0
+ info-xref-bad 0
+ info-xref-unavail 0
+ info-xref-xfile-alist nil))
+
+ (let ((info-xref-in-progress t)
+ (info-xref-output-heading ""))
+ ,@body)
+
+ (unless info-xref-in-progress
+ (info-xref-output "done, %d good, %d bad, %d unavailable"
+ info-xref-good info-xref-bad info-xref-unavail))))
+
+(defun info-xref-output (fmt &rest args)
+ "Emit a `format'-ed message FMT+ARGS to the `info-xref-output-buffer'."
+ (with-current-buffer info-xref-output-buffer
+ (save-excursion
+ (goto-char (point-max))
+ (let ((inhibit-read-only t))
+ (insert info-xref-output-heading
+ (apply 'format fmt args)
+ "\n")))
+ (setq info-xref-output-heading "")
+ ;; all this info-xref can be pretty slow, display now so the user sees
+ ;; some progress
+ (sit-for 0)))
+(put 'info-xref-output 'byte-compile-format-like t)
+
+(defun info-xref-output-error (fmt &rest args)
+ "Emit a `format'-ed error FMT+ARGS to the `info-xref-output-buffer'.
+The error is attributed to `info-xref-filename' and the current
+buffer's line and column of point."
+ (apply 'info-xref-output
+ (concat "%s:%s:%s: " fmt)
+ info-xref-filename
+ (1+ (count-lines (point-min) (line-beginning-position)))
+ (1+ (current-column))
+ args))
+(put 'info-xref-output-error 'byte-compile-format-like t)
+
+
+;;-----------------------------------------------------------------------------
+;; node checking
+
+;; When asking Info-goto-node to fork, *info* needs to be the current
+;; buffer, otherwise it seems to clone the current buffer but then do the
+;; goto-node in plain *info*.
+;;
+;; We only fork if *info* already exists, if it doesn't then can create and
+;; destroy just that instead of a new name.
+;;
+;; If Info-goto-node can't find the file, then no new buffer is created. If
+;; it finds the file but not the node, then a buffer is created. Handle
+;; this difference by checking before killing.
+;;
+(defun info-xref-goto-node-p (node)
+ "Return t if it's possible to go to the given NODE."
+ (let ((oldbuf (current-buffer)))
+ (save-excursion
+ (save-window-excursion
+ (prog1
+ (condition-case err
+ (progn
+ (Info-goto-node node
+ (when (get-buffer "*info*")
+ (set-buffer "*info*")
+ "xref - temporary"))
+ t)
+ (error nil))
+ (unless (equal (current-buffer) oldbuf)
+ (kill-buffer)))))))
+
+(defun info-xref-check-node (node)
+
+ ;; Collapse spaces as per info.el and `help-make-xrefs'.
+ ;; Note defcustom :info-link nodes don't get this whitespace collapsing,
+ ;; they should be the exact node name ready to visit.
+ ;; `info-xref-check-all-custom' uses `info-xref-goto-node-p' and so
+ ;; doesn't come through here.
+ ;;
+ ;; Could use "[\t\n ]+" but try to avoid uselessly replacing " " with " ".
+ (setq node (replace-regexp-in-string "[\t\n][\t\n ]*\\| [\t\n ]+" " "
+ node t t))
+
+ (if (not (string-match "\\`([^)]*)" node))
+ (info-xref-output-error "no `(file)' part at start of node: %s\n" node)
+ (let ((file (match-string 0 node)))
+
+ (if (string-equal "()" file)
+ (info-xref-output-error "empty filename part: %s" node)
+
+ ;; see if the file exists, if haven't looked before
+ (unless (assoc file info-xref-xfile-alist)
+ (let ((found (info-xref-goto-node-p file)))
+ (push (cons file found) info-xref-xfile-alist)
+ (unless found
+ (info-xref-output-error "not available to check: %s\n (this reported once per file)" file))))
+
+ ;; if the file exists, try the node
+ (cond ((not (cdr (assoc file info-xref-xfile-alist)))
+ (incf info-xref-unavail))
+ ((info-xref-goto-node-p node)
+ (incf info-xref-good))
+ (t
+ (incf info-xref-bad)
+ (info-xref-output-error "no such node: %s" node)))))))
+
+
+;;-----------------------------------------------------------------------------
+
;;;###autoload
(defun info-xref-check (filename)
- "Check external references in FILENAME, an info document."
+ "Check external references in FILENAME, an info document.
+Interactively from an `Info-mode' or `texinfo-mode' buffer the
+current info file is the default.
+
+Results are shown in a `compilation-mode' buffer. The format is
+a bit rough, but there shouldn't be many problems normally. The
+file:line:column: is the info document, but of course normally
+any correction should be made in the original .texi file.
+Finding the right place in the .texi is a manual process.
+
+When a target info file doesn't exist there's obviously no way to
+validate node references within it. A message is given for
+missing target files once per source document. It could be
+simply that you don't have the target installed, or it could be a
+mistake in the reference.
+
+Indirect info files are understood, just pass the top-level
+foo.info to `info-xref-check' and it traverses all sub-files.
+Compressed info files are accepted too as usual for `Info-mode'.
+
+\"makeinfo\" checks references internal to an info document, but
+not external references, which makes it rather easy for mistakes
+to creep in or node name changes to go unnoticed.
+`Info-validate' doesn't check external references either."
+
(interactive
(list
(let* ((default-filename
@@ -90,98 +293,80 @@
(format "Info file (%s): " default-filename)
"Info file: ")))
(read-file-name prompt nil default-filename t))))
+
(info-xref-check-list (list filename)))
;;;###autoload
(defun info-xref-check-all ()
- "Check external references in all info documents in the usual path.
-The usual path is `Info-directory-list' and `Info-additional-directory-list'."
+ "Check external references in all info documents in the info path.
+`Info-directory-list' and `Info-additional-directory-list' are
+the info paths. See `info-xref-check' for how each file is
+checked.
+
+The search for \"all\" info files is rather permissive, since
+info files don't necessarily have a \".info\" extension and in
+particular the Emacs manuals normally don't. If you have a
+source code directory in `Info-directory-list' then a lot of
+extraneous files might be read. This will be time consuming but
+should be harmless."
+
(interactive)
(info-xref-check-list (info-xref-all-info-files)))
-;; An alternative to trying to get only top-level files here would be to
-;; simply return all files, and have info-xref-check-list not follow
-;; Indirect:. The current way seems a bit nicer though, because it gets the
-;; proper top-level filename into the error messages, and suppresses
-;; duplicate "not available" messages for all subfiles of a single document.
+;; An alternative for geting only top-level files here would be to simply
+;; return all files and have info-xref-check-list not follow "Indirect:".
+;; The current way seems better because it (potentially) gets the proper
+;; top-level filename into the error messages, and suppresses duplicate "not
+;; available" messages for all subfiles of a single document.
(defun info-xref-all-info-files ()
"Return a list of all available info files.
-Only top-level files are returned, subfiles are excluded.
+Only top level files are returned, subfiles are excluded.
-Since info files don't have to have a .info suffix, all files in the
-relevant directories are considered, which might mean a lot of extraneous
-things are returned if for instance a source code directory is in the path."
+Since info files don't have to have a .info suffix, all files in
+the relevant directories are considered, which might mean a lot
+of extraneous things if for instance a source code directory is
+in the path."
(info-initialize) ;; establish Info-directory-list
(apply 'nconc
(mapcar
(lambda (dir)
(let ((result nil))
- (dolist (name (directory-files dir t))
- (unless (or (file-directory-p name) (info-xref-subfile-p name))
+ (dolist (name (directory-files
+ dir
+ t ;; absolute filenames
+ "\\`[^.]")) ;; not dotfiles, nor .# lockfiles
+ (when (and (file-exists-p name) ;; ignore broken symlinks
+ (not (string-match "\\.te?xi\\'" name)) ;; not .texi
+ (not (backup-file-name-p name))
+ (not (file-directory-p name))
+ (not (info-xref-subfile-p name)))
(push name result)))
(nreverse result)))
(append Info-directory-list Info-additional-directory-list))))
-(defun info-xref-subfile-p (filename)
- "Return t if FILENAME is an info subfile.
-If removing the last \"-<NUM>\" from the filename gives a file that exists,
-then consider FILENAME a subfile. This is an imperfect test, we probably
-should open up the purported top file and see what subfiles it says."
- (and (string-match "\\`\\(\\([^-]*-\\)*[^-]*\\)-[0-9]+\\(.*\\)\\'" filename)
- (file-exists-p (concat (match-string 1 filename)
- (match-string 3 filename)))))
-
-
-;; Some dynamic variables are used to share information with sub-functions
-;; below.
-;;
-;; info-xref-filename-header - a heading message for the current top-level
-;; filename, or "" when it's been printed.
-;;
-(defvar info-xref-xfile-alist)
-;;
-;; info-xref-good - count of good cross references.
-;;
-(defvar info-xref-good)
-;;
-;; info-xref-bad - count of bad cross references.
-;;
-(defvar info-xref-bad)
-;;
-;; info-xref-xfile-alist - indexed by "(foo)" with value nil or t according
-;; to whether "(foo)" exists or not. This is used to suppress duplicate
-;; messages about foo not being available. (Duplicates within one
-;; top-level file that is.)
-;;
-(defvar info-xref-filename-heading)
-
(defun info-xref-check-list (filename-list)
"Check external references in info documents in FILENAME-LIST."
- (pop-to-buffer info-xref-results-buffer t)
- (erase-buffer)
- (let ((info-xref-good 0)
- (info-xref-bad 0))
+ (info-xref-with-output
(dolist (info-xref-filename filename-list)
- (let ((info-xref-filename-heading
- (format "In file %s:\n" info-xref-filename))
- (info-xref-xfile-alist nil))
+ (setq info-xref-xfile-alist nil)
+ (let ((info-xref-output-heading
+ (format "Info file %s\n" info-xref-filename)))
(with-temp-message (format "Looking at %s" info-xref-filename)
(with-temp-buffer
(info-insert-file-contents info-xref-filename)
(goto-char (point-min))
- (if (re-search-forward "\^_\nIndirect:\n" nil t)
+ (if (search-forward "\^_\nIndirect:\n" nil t)
(let ((dir (file-name-directory info-xref-filename)))
(while (looking-at "\\(.*\\): [0-9]+\n")
- (let ((subfile (match-string 1)))
+ (let ((info-xref-filename
+ (expand-file-name (match-string 1) dir)))
(with-temp-buffer
- (info-insert-file-contents
- (expand-file-name subfile dir))
+ (info-insert-file-contents info-xref-filename)
(info-xref-check-buffer)))
(forward-line)))
- (info-xref-check-buffer))))))
- (insert (format "done, %d good, %d bad\n" info-xref-good info-xref-bad))))
+ (info-xref-check-buffer))))))))
(defun info-xref-check-buffer ()
"Check external references in the info file in the current buffer.
@@ -190,129 +375,155 @@ This should be the raw file contents, not `Info-mode'."
(while (re-search-forward
"\\*[Nn]ote[ \n\t]+[^:]*:[ \n\t]+\\(\\(([^)]*)\\)[^.,]+\\)[.,]"
nil t)
- (let* ((file (match-string 2))
- (node ;; Canonicalize spaces: we could use "[\t\n ]+" but
- ;; we try to avoid uselessly replacing " " with " ".
- (replace-regexp-in-string "[\t\n][\t\n ]*\\| [\t\n ]+" " "
- (match-string 1) t t)))
- (if (string-equal "()" file)
- (info-xref-output "Empty filename part: %s\n" node)
- ;; see if the file exists, if we haven't tried it before
- (unless (assoc file info-xref-xfile-alist)
- (let ((found (info-xref-goto-node-p file)))
- (push (cons file found) info-xref-xfile-alist)
- (unless found
- (info-xref-output "Not available to check: %s\n" file))))
- ;; if the file exists, try the node
- (when (cdr (assoc file info-xref-xfile-alist))
- (if (info-xref-goto-node-p node)
- (setq info-xref-good (1+ info-xref-good))
- (setq info-xref-bad (1+ info-xref-bad))
- (info-xref-output "No such node: %s\n" node)))))))
-
-(defun info-xref-output (str &rest args)
- "Emit a `format'-ed message STR+ARGS to the info-xref output buffer."
- (with-current-buffer info-xref-results-buffer
- (insert info-xref-filename-heading
- (apply 'format str args))
- (setq info-xref-filename-heading "")
- ;; all this info-xref can be pretty slow, display now so the user can
- ;; see some progress
- (sit-for 0)))
-
-;; When asking Info-goto-node to fork, *info* needs to be the current
-;; buffer, otherwise it seems to clone the current buffer but then do the
-;; goto-node in plain *info*.
-;;
-;; We only fork if *info* already exists, if it doesn't then we can create
-;; and destroy just that instead of a new name.
-;;
-;; If Info-goto-node can't find the file, then no new buffer is created. If
-;; it finds the file but not the node, then a buffer is created. Handle
-;; this difference by checking before killing.
-;;
-(defun info-xref-goto-node-p (node)
- "Return t if it's possible to go to the given NODE."
- (let ((oldbuf (current-buffer)))
(save-excursion
- (save-window-excursion
- (prog1
- (condition-case err
- (progn
- (Info-goto-node node
- (when (get-buffer "*info*")
- (set-buffer "*info*")
- "xref - temporary"))
- t)
- (error nil))
- (unless (equal (current-buffer) oldbuf)
- (kill-buffer (current-buffer))))))))
+ (goto-char (match-beginning 1)) ;; start of nodename as error position
+ (info-xref-check-node (match-string 1)))))
+
+(defvar viper-mode) ;; quieten the byte compiler
+(defvar gnus-registry-install)
;;;###autoload
(defun info-xref-check-all-custom ()
"Check info references in all customize groups and variables.
-`custom-manual' and `info-link' entries in the `custom-links' list are checked.
+Info references can be in `custom-manual' or `info-link' entries
+of the `custom-links' for a variable.
-`custom-load' autoloads for all symbols are loaded in order to get all the
-link information. This will be a lot of lisp packages loaded, and can take
-quite a while."
+Any `custom-load' autoloads in variables are loaded in order to
+get full link information. This will be a lot of Lisp packages
+and can take a long time."
(interactive)
- (pop-to-buffer info-xref-results-buffer t)
- (erase-buffer)
- (let ((info-xref-filename-heading ""))
-
- ;; `custom-load-symbol' is not used, since it quietly ignores errors,
- ;; but we want to show them (since they may mean incomplete checking).
- ;;
- ;; Just one pass through mapatoms is made. There shouldn't be any new
- ;; custom-loads setup by packages loaded.
- ;;
- (info-xref-output "Loading custom-load autoloads ...\n")
- (require 'cus-start)
- (require 'cus-load)
- (let ((viper-mode nil)) ;; tell viper.el not to ask about viperizing
- (mapatoms
- (lambda (symbol)
- (dolist (load (get symbol 'custom-loads))
- (cond ((symbolp load)
- (condition-case cause (require load)
- (error
- (info-xref-output "Symbol `%s': cannot require '%s: %s\n"
- symbol load cause))))
- ;; skip if previously loaded
- ((assoc load load-history))
- ((assoc (locate-library load) load-history))
- (t
- (condition-case cause (load load)
- (error
- (info-xref-output "Symbol `%s': cannot load \"%s\": %s\n"
- symbol load cause)))))))))
-
- ;; Don't bother to check whether the info file exists as opposed to just
- ;; a missing node. If you have the lisp then you should have the
- ;; documentation, so missing node name will be the usual fault.
- ;;
- (info-xref-output "\nChecking custom-links references ...\n")
- (let ((good 0)
- (bad 0))
- (mapatoms
- (lambda (symbol)
- (dolist (link (get symbol 'custom-links))
- (when (memq (car link) '(custom-manual info-link))
- ;; skip :tag part of (custom-manual :tag "Foo" "(foo)Node")
- (if (eq :tag (cadr link))
- (setq link (cddr link)))
- (if (info-xref-goto-node-p (cadr link))
- (setq good (1+ good))
- (setq bad (1+ bad))
- ;; symbol-file gives nil for preloaded variables, would need
- ;; to copy what describe-variable does to show the right place
- (info-xref-output "Symbol `%s' (in %s): cannot goto node: %s\n"
- symbol (symbol-file symbol) (cadr link)))))))
- (info-xref-output "%d good, %d bad\n" good bad))))
+ (info-xref-with-output
+
+ ;; `custom-load-symbol' is not used, since it quietly ignores errors, but
+ ;; we want to show them since they mean incomplete checking.
+ ;;
+ ;; Just one pass through mapatoms is made. There shouldn't be any new
+ ;; custom-loads setup by packages loaded.
+ ;;
+ (info-xref-output "Loading custom-load autoloads ...")
+ (require 'cus-start)
+ (require 'cus-load)
+
+ ;; These are `setq' rather than `let' since a let would unbind the
+ ;; variables after viper.el/gnus-registry.el have loaded, defeating the
+ ;; defvars in those files. Of course it'd be better if those files
+ ;; didn't make interactive queries on loading at all, to allow for
+ ;; programmatic loading like here.
+ (unless (boundp 'viper-mode)
+ (setq viper-mode nil)) ;; avoid viper.el ask about viperizing
+ (unless (boundp 'gnus-registry-install)
+ (setq gnus-registry-install nil)) ;; avoid gnus-registery.el querying
+
+ (mapatoms
+ (lambda (symbol)
+ (dolist (load (get symbol 'custom-loads))
+ (cond ((symbolp load)
+ (condition-case cause (require load)
+ (error
+ (info-xref-output "Symbol `%s': cannot require '%s: %s"
+ symbol load cause))))
+ ;; skip if previously loaded
+ ((assoc load load-history))
+ ((assoc (locate-library load) load-history))
+ (t
+ (condition-case err
+ (load load)
+ (error
+ (info-xref-output "Symbol `%s': cannot load \"%s\": %s"
+ symbol load
+ (error-message-string err)))))))))
+
+ ;; Don't bother to check whether the info file exists as opposed to just
+ ;; a missing node. If you have the code then you should have the
+ ;; documentation, so a wrong node name will be the usual fault.
+ ;;
+ (info-xref-output "\nChecking custom-links references ...")
+ (mapatoms
+ (lambda (symbol)
+ (dolist (link (get symbol 'custom-links))
+ (when (memq (car link) '(custom-manual info-link))
+ ;; skip :tag part of (custom-manual :tag "Foo" "(foo)Node")
+ (if (eq :tag (cadr link))
+ (setq link (cddr link)))
+ (if (info-xref-goto-node-p (cadr link))
+ (incf info-xref-good)
+ (incf info-xref-bad)
+ ;; symbol-file gives nil for preloaded variables, would need
+ ;; to copy what describe-variable does to show the right place
+ (info-xref-output "Symbol `%s' (file %s): cannot goto node: %s"
+ symbol
+ (symbol-file symbol 'defvar)
+ (cadr link)))))))))
+
+;;;###autoload
+(defun info-xref-docstrings (filename-list)
+ ;; checkdoc-params: (filename-list)
+ "Check docstring info node references in source files.
+The given files are searched for docstring hyperlinks like
+
+ Info node `(elisp)Documentation Tips'
+
+and those links checked by attempting to visit the target nodes
+as per `info-xref-check' does.
+
+Interactively filenames are read as a wildcard pattern like
+\"foo*.el\", with the current file as a default. Usually this
+will be lisp sources, but anything with such hyperlinks can be
+checked, including the Emacs .c sources (or the etc/DOC file of
+all builtins).
+
+Because info node hyperlinks are found by a simple regexp search
+in the files, the Lisp code checked doesn't have to be loaded,
+and links can be in the file commentary or elsewhere too. Even
+.elc files can usually be checked successfully if you don't have
+the sources handy."
+ (interactive
+ (let* ((default (and buffer-file-name
+ (file-relative-name buffer-file-name)))
+ (prompt (if default
+ (format "Filename with wildcards (%s): "
+ default)
+ "Filename with wildcards: "))
+ (pattern (read-file-name prompt nil default))
+ ;; absolute filenames
+ (filename-list (file-expand-wildcards pattern t))
+ newlist)
+ (setq filename-list
+ (dolist (file filename-list (nreverse newlist))
+ (or (info-xref-lock-file-p file)
+ (file-directory-p file)
+ (push file newlist))))
+ (unless filename-list
+ (error "No files: %S" pattern))
+ (list filename-list)))
+
+ (eval-and-compile
+ (require 'help-mode)) ;; for `help-xref-info-regexp'
+
+ (info-xref-with-output
+ (dolist (info-xref-filename filename-list)
+ (setq info-xref-xfile-alist nil) ;; "not found"s once per file
+
+ (info-xref-with-file info-xref-filename
+ (goto-char (point-min))
+ (while (re-search-forward help-xref-info-regexp nil t)
+ (let ((node (match-string 2)))
+ (save-excursion
+ (goto-char (match-beginning 2)) ;; start of node as error position
+
+ ;; skip nodes with "%" as probably `format' strings such as in
+ ;; info-look.el
+ (unless (string-match "%" node)
+
+ ;; "(emacs)" is the default manual for docstring hyperlinks,
+ ;; per `help-make-xrefs'
+ (unless (string-match "\\`(" node)
+ (setq node (concat "(emacs)" node)))
+
+ (info-xref-check-node node)))))))))
+
(provide 'info-xref)
-;; arch-tag: 69d4d528-69ed-4cc2-8eb4-c666a0c1d5ac
;;; info-xref.el ends here
diff --git a/lisp/info.el b/lisp/info.el
index 7c0333f6b8..bc2062e72b 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -1,8 +1,6 @@
;; info.el --- info package for Emacs
-;; Copyright (C) 1985, 1986, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1986, 1992-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: help
@@ -3769,18 +3767,24 @@ If FORK is non-nil, it is passed to `Info-goto-node'."
:rtl "left-arrow"
:label "Forward"
:vert-only t)
+ (define-key-after map [separator-1] menu-bar-separator)
(tool-bar-local-item-from-menu 'Info-prev "prev-node" map Info-mode-map
:rtl "next-node")
(tool-bar-local-item-from-menu 'Info-next "next-node" map Info-mode-map
:rtl "prev-node")
(tool-bar-local-item-from-menu 'Info-up "up-node" map Info-mode-map
:vert-only t)
- (tool-bar-local-item-from-menu 'Info-top-node "home" map Info-mode-map)
+ (define-key-after map [separator-2] menu-bar-separator)
+ (tool-bar-local-item-from-menu 'Info-top-node "home" map Info-mode-map
+ :vert-only t)
(tool-bar-local-item-from-menu 'Info-goto-node "jump-to" map Info-mode-map)
+ (define-key-after map [separator-3] menu-bar-separator)
(tool-bar-local-item-from-menu 'Info-index "index" map Info-mode-map
- :label "Index Search")
- (tool-bar-local-item-from-menu 'Info-search "search" map Info-mode-map)
- (tool-bar-local-item-from-menu 'Info-exit "exit" map Info-mode-map)
+ :label "Index")
+ (tool-bar-local-item-from-menu 'Info-search "search" map Info-mode-map
+ :vert-only t)
+ (tool-bar-local-item-from-menu 'Info-exit "exit" map Info-mode-map
+ :vert-only t)
map))
(defvar Info-menu-last-node nil)
diff --git a/lisp/informat.el b/lisp/informat.el
index 7c8ea3b337..77ead94123 100644
--- a/lisp/informat.el
+++ b/lisp/informat.el
@@ -1,7 +1,6 @@
;;; informat.el --- info support functions package for Emacs
-;; Copyright (C) 1986, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: help
@@ -511,5 +510,4 @@ For example, invoke \"emacs -batch -f batch-info-validate $info/ ~/*.info\""
(provide 'informat)
-;; arch-tag: 581c440e-5be1-4f31-b005-2d5824bbf569
;;; informat.el ends here
diff --git a/lisp/international/ccl.el b/lisp/international/ccl.el
index 4dc54859ec..2cae126252 100644
--- a/lisp/international/ccl.el
+++ b/lisp/international/ccl.el
@@ -1,9 +1,8 @@
;;; ccl.el --- CCL (Code Conversion Language) compiler
-;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -1559,5 +1558,4 @@ See the documentation of `define-ccl-program' for the detail of CCL program."
(provide 'ccl)
-;; arch-tag: 836bcd27-63a1-4a56-b232-1145ecf823fb
;;; ccl.el ends here
diff --git a/lisp/international/characters.el b/lisp/international/characters.el
index db5fe7e86b..455cbe697d 100644
--- a/lisp/international/characters.el
+++ b/lisp/international/characters.el
@@ -1,9 +1,8 @@
;;; characters.el --- set syntax and category for multibyte characters
-;; Copyright (C) 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2000-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -1414,5 +1413,4 @@ METHOD must be one of these symbols:
;; coding: utf-8
;; End:
-;; arch-tag: 85889c35-9f4d-4912-9bf5-82de31b0d42d
;;; characters.el ends here
diff --git a/lisp/international/cp51932.el b/lisp/international/cp51932.el
index a648bfcefc..d4a347d43a 100644
--- a/lisp/international/cp51932.el
+++ b/lisp/international/cp51932.el
@@ -469,4 +469,3 @@
map)
(define-translation-table 'cp51932-encode map))
-;; arch-tag: d21c06e5-a548-4dda-8802-c2922ff19da3
diff --git a/lisp/international/eucjp-ms.el b/lisp/international/eucjp-ms.el
index 060692f31a..a16848a0c7 100644
--- a/lisp/international/eucjp-ms.el
+++ b/lisp/international/eucjp-ms.el
@@ -2086,4 +2086,3 @@
map)
(define-translation-table 'eucjp-ms-encode map))
-;; arch-tag: c4191096-288a-4f13-9b2a-ee7a1f11eb4a
diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el
index 07557aacc8..777779e5ec 100644
--- a/lisp/international/fontset.el
+++ b/lisp/international/fontset.el
@@ -1,9 +1,8 @@
;;; fontset.el --- commands for handling fontset
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003, 2006
@@ -1152,5 +1151,4 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.")
;;
(provide 'fontset)
-;; arch-tag: bb53e629-0234-403c-950e-551e61554849
;;; fontset.el ends here
diff --git a/lisp/international/isearch-x.el b/lisp/international/isearch-x.el
index 27912c1044..cb6856964c 100644
--- a/lisp/international/isearch-x.el
+++ b/lisp/international/isearch-x.el
@@ -1,9 +1,8 @@
;;; isearch-x.el --- extended isearch handling commands
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -141,5 +140,4 @@
(isearch-update)))
(isearch-process-search-char last-char)))
-;; arch-tag: 1a90a6cf-2cb2-477a-814a-9ff895852822
;;; isearch-x.el ends here
diff --git a/lisp/international/iso-ascii.el b/lisp/international/iso-ascii.el
index fab96f9a68..491a7c02ba 100644
--- a/lisp/international/iso-ascii.el
+++ b/lisp/international/iso-ascii.el
@@ -1,7 +1,6 @@
;;; iso-ascii.el --- set up char tables for ISO 8859/1 on ASCII terminals
-;; Copyright (C) 1987, 1995, 1998, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1987, 1995, 1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Howard Gayle
;; Maintainer: FSF
@@ -171,5 +170,4 @@
(provide 'iso-ascii)
-;; arch-tag: 687edf0d-f792-471e-b50e-be805938359a
;;; iso-ascii.el ends here
diff --git a/lisp/international/iso-cvt.el b/lisp/international/iso-cvt.el
index 8798a4894f..6ccd1c2173 100644
--- a/lisp/international/iso-cvt.el
+++ b/lisp/international/iso-cvt.el
@@ -1,8 +1,7 @@
;;; iso-cvt.el --- translate ISO 8859-1 from/to various encodings -*- coding: iso-latin-1 -*-
;; This file was formerly called gm-lingo.el.
-;; Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001,
-;; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Michael Gschwind <[email protected]>
;; Keywords: tex, iso, latin, i18n
@@ -904,5 +903,4 @@ Optional arg BUFFER is ignored (for use in `format-alist')."
(provide 'iso-cvt)
-;; arch-tag: 64ae843f-ed0e-43e1-ba50-ffd581b90840
;;; iso-cvt.el ends here
diff --git a/lisp/international/iso-transl.el b/lisp/international/iso-transl.el
index b11a7a2930..49b1f6ef23 100644
--- a/lisp/international/iso-transl.el
+++ b/lisp/international/iso-transl.el
@@ -1,7 +1,6 @@
;;; iso-transl.el --- keyboard input definitions for ISO 8859-1 -*- coding: iso-8859-1 -*-
-;; Copyright (C) 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001
-;; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1987, 1993-1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Howard Gayle
;; Maintainer: FSF
@@ -291,5 +290,4 @@ sequence VECTOR. (VECTOR is normally one character long.)")
(provide 'iso-transl)
-;; arch-tag: 034cfedf-7ebd-461d-bcd0-5c79e6dc0b61
;;; iso-transl.el ends here
diff --git a/lisp/international/ja-dic-cnv.el b/lisp/international/ja-dic-cnv.el
index e3a5f6721d..7e317ea09c 100644
--- a/lisp/international/ja-dic-cnv.el
+++ b/lisp/international/ja-dic-cnv.el
@@ -1,7 +1,7 @@
;;; ja-dic-cnv.el --- convert a Japanese dictionary (SKK-JISYO.L) to Emacs Lisp
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -545,5 +545,4 @@ To get complete usage, invoke:
;; coding: iso-2022-7bit
;; End:
-;; arch-tag: dec06fb0-8118-45b1-80d7-dc360b6fd3b2
;;; ja-dic-cnv.el ends here
diff --git a/lisp/international/ja-dic-utl.el b/lisp/international/ja-dic-utl.el
index ba92f434b6..8400c473af 100644
--- a/lisp/international/ja-dic-utl.el
+++ b/lisp/international/ja-dic-utl.el
@@ -1,7 +1,7 @@
;;; ja-dic-utl.el --- utilities for handling Japanese dictionary (SKK-JISYO.L)
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -222,5 +222,4 @@ LEIM is available from the same ftp directory as Emacs."))
;; coding: iso-2022-7bit
;; End:
-;; arch-tag: df2218fa-469c-40f6-bace-7f89a053f9c0
;;; ja-dic-utl.el ends here
diff --git a/lisp/international/kinsoku.el b/lisp/international/kinsoku.el
index ef9dbf1535..b0ca522dee 100644
--- a/lisp/international/kinsoku.el
+++ b/lisp/international/kinsoku.el
@@ -1,9 +1,8 @@
;;; kinsoku.el --- `Kinsoku' processing funcs -*- coding: iso-2022-7bit; -*-
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -183,5 +182,4 @@ the context of text formatting."
(aref (char-category-set (preceding-char)) ?<))
(kinsoku-shorter linebeg))))
-;; arch-tag: e6b036bc-9e5b-4e9f-a22c-4ed04e37777e
;;; kinsoku.el ends here
diff --git a/lisp/international/kkc.el b/lisp/international/kkc.el
index 976b0a6d16..03e5202438 100644
--- a/lisp/international/kkc.el
+++ b/lisp/international/kkc.el
@@ -1,9 +1,8 @@
;;; kkc.el --- Kana Kanji converter -*- coding: iso-2022-7bit; -*-
-;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -658,5 +657,4 @@ and change the current conversion to the last one in the group."
;;
(provide 'kkc)
-;; arch-tag: 3cbfd56e-74e6-4f60-bb46-ba7c2d366fbf
;;; kkc.el ends here
diff --git a/lisp/international/latexenc.el b/lisp/international/latexenc.el
index b7b0d38771..d5a7713dbe 100644
--- a/lisp/international/latexenc.el
+++ b/lisp/international/latexenc.el
@@ -1,6 +1,6 @@
;;; latexenc.el --- guess correct coding system in LaTeX files -*-coding: iso-2022-7bit -*-
-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2005-2011 Free Software Foundation, Inc.
;; Author: Arne J,Ax(Brgensen <[email protected]>
;; Keywords: mule, coding system, latex
@@ -186,5 +186,4 @@ coding system names is determined from `latex-inputenc-coding-alist'."
(provide 'latexenc)
-;; arch-tag: f971bc3e-1fec-4609-8f2f-73dd41ab22e1
;;; latexenc.el ends here
diff --git a/lisp/international/latin1-disp.el b/lisp/international/latin1-disp.el
index a32c66d389..1c9b06beab 100644
--- a/lisp/international/latin1-disp.el
+++ b/lisp/international/latin1-disp.el
@@ -1,7 +1,6 @@
;;; latin1-disp.el --- display tables for other ISO 8859 on Latin-1 terminals -*-coding: iso-2022-7bit;-*-
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Keywords: i18n
@@ -3196,5 +3195,4 @@ isn't changed if the display can render Unicode characters."
(provide 'latin1-disp)
-;; arch-tag: 68b2872e-d667-4f48-8e2f-ec2ba2d29406
;;; latin1-disp.el ends here
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index 4701e7e571..d610da0aab 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -1,9 +1,8 @@
;;; mule-cmds.el --- commands for multilingual environment -*-coding: iso-2022-7bit -*-
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -2979,5 +2978,4 @@ properties are sticky."
(define-key ctl-x-map "8\r" 'ucs-insert)
-;; arch-tag: b382c432-4b36-460e-bf4c-05efd0bb18dc
;;; mule-cmds.el ends here
diff --git a/lisp/international/mule-conf.el b/lisp/international/mule-conf.el
index 9ee8d22463..9ba95e4d11 100644
--- a/lisp/international/mule-conf.el
+++ b/lisp/international/mule-conf.el
@@ -1,8 +1,7 @@
;;; mule-conf.el --- configure multilingual environment
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -1555,5 +1554,4 @@ for decoding and encoding files, process I/O, etc."
;; code.
(provide 'code-pages)
-;; arch-tag: 7d5fed55-b6df-42f6-8d3d-0011190551f5
;;; mule-conf.el ends here
diff --git a/lisp/international/mule-diag.el b/lisp/international/mule-diag.el
index ed2f7e33a4..349430f0cd 100644
--- a/lisp/international/mule-diag.el
+++ b/lisp/international/mule-diag.el
@@ -1,9 +1,8 @@
;;; mule-diag.el --- show diagnosis of multilingual environment (Mule)
-;; Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2000-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -1169,5 +1168,4 @@ The default is 20. If LIMIT is negative, do not limit the listing."
(provide 'mule-diag)
-;; arch-tag: cd3b607c-2893-45a0-a4fa-a6535754dbee
;;; mule-diag.el ends here
diff --git a/lisp/international/mule-util.el b/lisp/international/mule-util.el
index 5f4af36be3..59496266ea 100644
--- a/lisp/international/mule-util.el
+++ b/lisp/international/mule-util.el
@@ -1,9 +1,8 @@
;;; mule-util.el --- utility functions for multilingual environment (mule)
-;; Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2000-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -405,5 +404,4 @@ per-character basis, this may not be accurate."
;; coding: iso-2022-7bit
;; End:
-;; arch-tag: 5bdb52b6-a3a5-4529-b7a0-37d01b0e570b
;;; mule-util.el ends here
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index df362d96c0..4a387a233a 100644
--- a/lisp/international/mule.el
+++ b/lisp/international/mule.el
@@ -1,10 +1,8 @@
;;; mule.el --- basic commands for multilingual environment
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -1611,7 +1609,7 @@ in-place."
(set-buffer (generate-new-buffer " *temp"))
(set-buffer-multibyte (multibyte-string-p from))
(insert from)
- (setq from 1 to (point-max)))
+ (setq from (point-min) to (point-max)))
(save-restriction
(narrow-to-region from to)
(goto-char from)
@@ -2444,5 +2442,4 @@ added by processing software."
;;;
(provide 'mule)
-;; arch-tag: 9aebaa6e-0e8a-40a9-b857-cb5d04a39e7c
;;; mule.el ends here
diff --git a/lisp/international/ogonek.el b/lisp/international/ogonek.el
index 750d47629e..0da6cc614f 100644
--- a/lisp/international/ogonek.el
+++ b/lisp/international/ogonek.el
@@ -1,7 +1,6 @@
;;; ogonek.el --- change the encoding of Polish diacritics
-;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2001-2011 Free Software Foundation, Inc.
;; Author: W{\l}odek Bzyl
;; Ryszard Kubiak
@@ -500,5 +499,4 @@ followed by a non-Polish character, that is one not listed in the
(provide 'ogonek)
-;; arch-tag: 672d7744-28ac-412b-965e-06a27e50d1d7
;;; ogonek.el ends here
diff --git a/lisp/international/quail.el b/lisp/international/quail.el
index 621f314bf7..c5842740db 100644
--- a/lisp/international/quail.el
+++ b/lisp/international/quail.el
@@ -1,9 +1,8 @@
;;; quail.el --- provides simple input method for multilingual text
-;; Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2000-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -3077,5 +3076,4 @@ call it with one argument STRING."
;;
(provide 'quail)
-;; arch-tag: 46d7db54-5467-42c4-a2a9-53ca90a1e886
;;; quail.el ends here
diff --git a/lisp/international/robin.el b/lisp/international/robin.el
index 7a9eeb0f62..7e98a507f9 100644
--- a/lisp/international/robin.el
+++ b/lisp/international/robin.el
@@ -1,6 +1,6 @@
;;; robin.el --- yet another input method (smaller than quail)
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number: H15PRO110
@@ -571,5 +571,4 @@ used."
;; coding: utf-8-emacs
;; End:
-;; arch-tag: ba995140-7436-4a57-b875-747fc340f605
;;; robin.el ends here
diff --git a/lisp/international/titdic-cnv.el b/lisp/international/titdic-cnv.el
index 92b4251b49..935d66c613 100644
--- a/lisp/international/titdic-cnv.el
+++ b/lisp/international/titdic-cnv.el
@@ -1,9 +1,8 @@
;;; titdic-cnv.el --- convert cxterm dictionary (TIT format) to Quail package -*- coding:iso-2022-7bit; -*-
-;; Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2000-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -1210,5 +1209,4 @@ to store generated Quail packages."
;; coding: iso-2022-7bit
;; End:
-;; arch-tag: 8ad478b2-a985-4da2-b47f-d8ee5d7c24a3
;;; titdic-cnv.el ends here
diff --git a/lisp/international/ucs-normalize.el b/lisp/international/ucs-normalize.el
index 5985062138..f83e0f7588 100644
--- a/lisp/international/ucs-normalize.el
+++ b/lisp/international/ucs-normalize.el
@@ -1,7 +1,6 @@
;;; ucs-normalize.el --- Unicode normalization NFC/NFD/NFKD/NFKC
-;; Copyright (C) 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Taichi Kawabata <[email protected]>
;; Keywords: unicode, normalization
@@ -628,5 +627,4 @@ be decomposed."
;; coding: utf-8
;; End:
-;; arch-tag: cef65ae7-71ad-4e19-8da8-56ab4d42aaa4
;;; ucs-normalize.el ends here
diff --git a/lisp/international/utf-7.el b/lisp/international/utf-7.el
index c2cd634674..e27bf26e17 100644
--- a/lisp/international/utf-7.el
+++ b/lisp/international/utf-7.el
@@ -1,7 +1,6 @@
;;; utf-7.el --- utf-7 coding system
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Keywords: i18n, mail
@@ -127,5 +126,4 @@ ESC and SKIP-CHARS are adjusted for the normal and IMAP versions."
(provide 'utf-7)
-;; arch-tag: 975ee403-90a4-4286-97d2-4ed1323f4ef9
;;; utf-7.el ends here
diff --git a/lisp/isearch.el b/lisp/isearch.el
index ebe2e8fa00..5aadac4a3b 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -1,8 +1,6 @@
;;; isearch.el --- incremental search minor mode
-;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001,
-;; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1992-1997, 1999-2011 Free Software Foundation, Inc.
;; Author: Daniel LaLiberte <[email protected]>
;; Maintainer: FSF
@@ -1244,9 +1242,9 @@ Use `isearch-exit' to quit without signaling."
(interactive)
;; (ding) signal instead below, if quitting
(discard-input)
- (if isearch-success
- ;; If search is successful, move back to starting point
- ;; and really do quit.
+ (if (and isearch-success (not isearch-error))
+ ;; If search is successful and has no incomplete regexp,
+ ;; move back to starting point and really do quit.
(progn
(setq isearch-success nil)
(isearch-cancel))
@@ -2581,6 +2579,7 @@ since they have special meaning in a regexp."
(defvar isearch-lazy-highlight-regexp nil)
(defvar isearch-lazy-highlight-space-regexp nil)
(defvar isearch-lazy-highlight-forward nil)
+(defvar isearch-lazy-highlight-error nil)
(defun lazy-highlight-cleanup (&optional force)
"Stop lazy highlighting and remove extra highlighting from current buffer.
@@ -2622,9 +2621,13 @@ by other Emacs features."
(not (= (window-end) ; Window may have been split/joined.
isearch-lazy-highlight-window-end))
(not (eq isearch-forward
- isearch-lazy-highlight-forward))))
+ isearch-lazy-highlight-forward))
+ ;; In case we are recovering from an error.
+ (not (equal isearch-error
+ isearch-lazy-highlight-error))))
;; something important did indeed change
(lazy-highlight-cleanup t) ;kill old loop & remove overlays
+ (setq isearch-lazy-highlight-error isearch-error)
(when (not isearch-error)
(setq isearch-lazy-highlight-start-limit beg
isearch-lazy-highlight-end-limit end)
@@ -2762,5 +2765,4 @@ CASE-FOLD non-nil means the search was case-insensitive."
(isearch-search)
(isearch-update))
-;; arch-tag: 74850515-f7d8-43a6-8a2c-ca90a4c1e675
;;; isearch.el ends here
diff --git a/lisp/isearchb.el b/lisp/isearchb.el
index d58b0952fc..721fce8ef9 100644
--- a/lisp/isearchb.el
+++ b/lisp/isearchb.el
@@ -1,7 +1,6 @@
;;; isearchb --- a marriage between iswitchb and isearch
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
;; Maintainer: FSF
@@ -223,5 +222,4 @@ accessed via isearchb."
(provide 'isearchb)
-;; arch-tag: 9277523f-a624-4aa0-ba10-b89eeb7b6e99
;;; isearchb.el ends here
diff --git a/lisp/iswitchb.el b/lisp/iswitchb.el
index 48f0edb49e..fd6cff0faa 100644
--- a/lisp/iswitchb.el
+++ b/lisp/iswitchb.el
@@ -1,7 +1,6 @@
;;; iswitchb.el --- switch between buffers using substrings
-;; Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Stephen Eglen <[email protected]>
;; Maintainer: Stephen Eglen <[email protected]>
@@ -1437,5 +1436,4 @@ This mode enables switching between buffers using substrings. See
(provide 'iswitchb)
-;; arch-tag: d74198ae-753f-44f2-b34f-0c515398d90a
;;; iswitchb.el ends here
diff --git a/lisp/jit-lock.el b/lisp/jit-lock.el
index cc250567ad..b65b186b4e 100644
--- a/lisp/jit-lock.el
+++ b/lisp/jit-lock.el
@@ -1,7 +1,6 @@
;;; jit-lock.el --- just-in-time fontification
-;; Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Gerd Moellmann <[email protected]>
;; Keywords: faces files
@@ -591,5 +590,4 @@ will take place when text is fontified stealthily."
(provide 'jit-lock)
-;; arch-tag: 56b5de6e-f581-453b-bb97-49c39372ff9e
;;; jit-lock.el ends here
diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el
index aba9dac143..fda9804bbb 100644
--- a/lisp/jka-cmpr-hook.el
+++ b/lisp/jka-cmpr-hook.el
@@ -1,7 +1,7 @@
;;; jka-cmpr-hook.el --- preloaded code to enable jka-compr.el
-;; Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1995, 1997, 1999-2000, 2002-2011
+;; Free Software Foundation, Inc.
;; Author: [email protected] (Jay K. Adams)
;; Maintainer: FSF
@@ -365,5 +365,4 @@ Return the new status of auto compression (non-nil means on)."
(provide 'jka-cmpr-hook)
-;; arch-tag: 4bd73429-f400-45fe-a065-270a113e31a8
;;; jka-cmpr-hook.el ends here
diff --git a/lisp/jka-compr.el b/lisp/jka-compr.el
index 3f0ff54221..6fb3ffdd71 100644
--- a/lisp/jka-compr.el
+++ b/lisp/jka-compr.el
@@ -1,7 +1,6 @@
;;; jka-compr.el --- reading/writing/loading compressed files
-;; Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1995, 1997, 1999-2011 Free Software Foundation, Inc.
;; Author: [email protected] (Jay K. Adams)
;; Maintainer: FSF
@@ -166,8 +165,11 @@ to keep: LEN chars starting BEG chars from the beginning."
(unwind-protect
(or (memq (call-process
jka-compr-shell infile t nil "-c"
+ ;; Windows shells need the program file name
+ ;; after the pipe symbol be quoted if they use
+ ;; forward slashes as directory separators.
(format
- "%s %s 2> %s | %s bs=%d skip=%d %s 2> %s"
+ "%s %s 2> %s | \"%s\" bs=%d skip=%d %s 2> %s"
prog
(mapconcat 'identity args " ")
err-file
@@ -701,5 +703,4 @@ by `jka-compr-installed'."
(provide 'jka-compr)
-;; arch-tag: 3f15b630-e9a7-46c4-a22a-94afdde86ebc
;;; jka-compr.el ends here
diff --git a/lisp/json.el b/lisp/json.el
index 6228b99f3e..47448f4702 100644
--- a/lisp/json.el
+++ b/lisp/json.el
@@ -1,6 +1,6 @@
;;; json.el --- JavaScript Object Notation parser / generator
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Edward O'Connor <[email protected]>
;; Version: 1.2
@@ -526,5 +526,4 @@ Advances point just past JSON object."
(provide 'json)
-;; arch-tag: 15f6e4c8-b831-4172-8749-bbc680c50ea1
;;; json.el ends here
diff --git a/lisp/kermit.el b/lisp/kermit.el
index 12f80c1452..b91dbb00cf 100644
--- a/lisp/kermit.el
+++ b/lisp/kermit.el
@@ -1,7 +1,6 @@
;;; kermit.el --- additions to shell mode for use with kermit
-;; Copyright (C) 1988, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 2001-2011 Free Software Foundation, Inc.
;; Author: Jeff Norden <[email protected]>
;; Maintainer: FSF
@@ -148,5 +147,4 @@ command `kermit | tr -d '\\015''."
(provide 'kermit)
-;; arch-tag: 6633215d-6c47-4e66-9f27-16fba02a8dce
;;; kermit.el ends here
diff --git a/lisp/kmacro.el b/lisp/kmacro.el
index 439c738322..689120c0f8 100644
--- a/lisp/kmacro.el
+++ b/lisp/kmacro.el
@@ -1,7 +1,6 @@
;;; kmacro.el --- enhanced keyboard macros
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Kim F. Storm <[email protected]>
;; Keywords: keyboard convenience
@@ -1270,5 +1269,4 @@ To customize possible responses, change the \"bindings\" in `kmacro-step-edit-ma
(provide 'kmacro)
-;; arch-tag: d3fe0b24-ae41-47de-a4d6-41a77d5559f0
;;; kmacro.el ends here
diff --git a/lisp/language/burmese.el b/lisp/language/burmese.el
index a53320b543..9fce058316 100644
--- a/lisp/language/burmese.el
+++ b/lisp/language/burmese.el
@@ -1,6 +1,6 @@
;;; burmese.el --- support for Burmese -*- coding: utf-8; no-byte-compile: t -*-
-;; Copyright (C) 2008, 2009, 2010
+;; Copyright (C) 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H13PRO009
@@ -57,4 +57,3 @@
(set-char-table-range composition-function-table '(#x1000 . #x107F) elt)
(set-char-table-range composition-function-table '(#xAA60 . #xAA7B) elt))
-;; arch-tag: 8ba5f4cd-ef89-4008-b784-397edd0cb32e
diff --git a/lisp/language/cham.el b/lisp/language/cham.el
index ac543bd073..d1ddfb512a 100644
--- a/lisp/language/cham.el
+++ b/lisp/language/cham.el
@@ -1,6 +1,6 @@
;;; cham.el --- support for Cham -*- coding: utf-8; no-byte-compile: t -*-
-;; Copyright (C) 2008, 2009, 2010
+;; Copyright (C) 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H13PRO009
@@ -42,4 +42,3 @@
;; coding: utf-8
;; End:
-;; arch-tag: a393ea52-445b-4e22-a967-c244afc88cf6
diff --git a/lisp/language/china-util.el b/lisp/language/china-util.el
index cbfebc866f..9f79dd087b 100644
--- a/lisp/language/china-util.el
+++ b/lisp/language/china-util.el
@@ -1,9 +1,8 @@
;;; china-util.el --- utilities for Chinese -*- coding: iso-2022-7bit -*-
-;; Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -191,5 +190,4 @@ Return the length of resulting text."
;;
(provide 'china-util)
-;; arch-tag: 5a47b084-b9ac-420e-8191-70c5b3a14836
;;; china-util.el ends here
diff --git a/lisp/language/chinese.el b/lisp/language/chinese.el
index 31960108c2..c44dc44581 100644
--- a/lisp/language/chinese.el
+++ b/lisp/language/chinese.el
@@ -1,9 +1,8 @@
;;; chinese.el --- support for Chinese -*- coding: iso-2022-7bit; -*-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -287,5 +286,4 @@ converted to CNS)."))
(provide 'chinese)
-;; arch-tag: b82fcf7a-84f6-4e0b-b38c-1742dac0e09f
;;; chinese.el ends here
diff --git a/lisp/language/cyril-util.el b/lisp/language/cyril-util.el
index 0968746642..e833bb7ab0 100644
--- a/lisp/language/cyril-util.el
+++ b/lisp/language/cyril-util.el
@@ -1,7 +1,6 @@
;;; cyril-util.el --- utilities for Cyrillic scripts
-;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2001-2011 Free Software Foundation, Inc.
;; Keywords: mule, multilingual, Cyrillic
@@ -192,5 +191,4 @@ If the argument is nil, we return the display table to its standard state."
;; coding: iso-2022-7bit
;; End:
-;; arch-tag: f6d9dd5d-685c-45d6-a5d8-1e2178228b7e
;;; cyril-util.el ends here
diff --git a/lisp/language/cyrillic.el b/lisp/language/cyrillic.el
index b293ad1ff0..8fb7fae720 100644
--- a/lisp/language/cyrillic.el
+++ b/lisp/language/cyrillic.el
@@ -1,9 +1,8 @@
;;; cyrillic.el --- support for Cyrillic -*- coding: iso-2022-7bit; -*-
-;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -272,5 +271,4 @@ Support for Russian using koi8-r and the russian-computer input method.")
(provide 'cyrillic)
-;; arch-tag: bda71ae0-ba41-4cb6-a6e0-1dff542313d3
;;; cyrillic.el ends here
diff --git a/lisp/language/czech.el b/lisp/language/czech.el
index 59833c78ef..2325699e30 100644
--- a/lisp/language/czech.el
+++ b/lisp/language/czech.el
@@ -1,7 +1,6 @@
;;; czech.el --- support for Czech -*- coding: iso-2022-7bit; no-byte-compile: t -*-
-;; Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation.
+;; Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Milan Zamazal <[email protected]>
;; Maintainer: Pavel Jan,Am(Bk <[email protected]>
@@ -45,5 +44,4 @@ and selects the Czech tutorial."))
(provide 'czech)
-;; arch-tag: 45ac0d83-ca13-4b5e-9e82-821e44080c24
;;; czech.el ends here
diff --git a/lisp/language/english.el b/lisp/language/english.el
index 38448702e8..dd96d38a19 100644
--- a/lisp/language/english.el
+++ b/lisp/language/english.el
@@ -1,9 +1,8 @@
;;; english.el --- support for English -*- no-byte-compile: t -*-
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -67,5 +66,4 @@ Nothing special is needed to handle English.")
(set-language-info-alist
"ASCII" (cdr (assoc "English" language-info-alist)))
-;; arch-tag: e440bdb0-91b0-4fb4-ae38-425780f8f745
;;; english.el ends here
diff --git a/lisp/language/ethio-util.el b/lisp/language/ethio-util.el
index ee5073d308..bb242a50ac 100644
--- a/lisp/language/ethio-util.el
+++ b/lisp/language/ethio-util.el
@@ -1,9 +1,8 @@
;;; ethio-util.el --- utilities for Ethiopic -*- coding: utf-8; -*-
-;; Copyright (C) 1997, 1998, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2002-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2005, 2006
@@ -2073,5 +2072,4 @@ mark."
;;; ethio-util.el ends here
-;; arch-tag: c8feb3d6-39bf-4b0a-b6ef-26f03fbc8140
;;; ethio-util.el ends here
diff --git a/lisp/language/ethiopic.el b/lisp/language/ethiopic.el
index 2da833f435..22ccd56dab 100644
--- a/lisp/language/ethiopic.el
+++ b/lisp/language/ethiopic.el
@@ -1,9 +1,8 @@
;;; ethiopic.el --- support for Ethiopic -*- coding: utf-8-emacs; -*-
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -85,5 +84,4 @@
(provide 'ethiopic)
-;; arch-tag: e81329d9-1286-43ba-92fd-54ce5c7b213c
;;; ethiopic.el ends here
diff --git a/lisp/language/european.el b/lisp/language/european.el
index 1a386fb2a6..6dfc03d0f5 100644
--- a/lisp/language/european.el
+++ b/lisp/language/european.el
@@ -1,9 +1,8 @@
;;; european.el --- support for European languages -*- coding: iso-2022-7bit; -*-
-;; Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2000-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -639,5 +638,4 @@ method and applying Turkish case rules for the characters i, I, $(D)E(B, $(D*
(provide 'european)
-;; arch-tag: 9e018b12-fb02-4120-907b-9adeaf84b5c2
;;; european.el ends here
diff --git a/lisp/language/georgian.el b/lisp/language/georgian.el
index e5c1c85efc..be6da8cba1 100644
--- a/lisp/language/georgian.el
+++ b/lisp/language/georgian.el
@@ -1,7 +1,6 @@
;;; georgian.el --- language support for Georgian -*- no-byte-compile: t -*-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Keywords: i18n
@@ -48,5 +47,4 @@
(provide 'georgian)
-;; arch-tag: 15499fbb-26d4-4a13-9d78-135eef7d32f5
;;; georgian.el ends here
diff --git a/lisp/language/greek.el b/lisp/language/greek.el
index 18196a575b..e4d239cdf2 100644
--- a/lisp/language/greek.el
+++ b/lisp/language/greek.el
@@ -2,7 +2,7 @@
;; Copyright (C) 2002 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -83,5 +83,4 @@
(provide 'greek)
-;; arch-tag: 9ba48d79-84bc-45e1-9318-685dc3921410
;;; greek.el ends here
diff --git a/lisp/language/hanja-util.el b/lisp/language/hanja-util.el
index ceca534672..bd66108340 100644
--- a/lisp/language/hanja-util.el
+++ b/lisp/language/hanja-util.el
@@ -1,6 +1,6 @@
;;; hanja-util.el --- Korean Hanja util module -*- coding: utf-8 -*-
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Jihyun Cho <[email protected]>
;; Keywords: multilingual, input method, Korean, Hanja
@@ -6591,5 +6591,4 @@ The value is a hanja character that is selected interactively."
(provide 'hanja-util)
-;; arch-tag: 3358afb4-c63f-472f-989a-5249129924d1
;;; hanja-util.el ends here
diff --git a/lisp/language/hebrew.el b/lisp/language/hebrew.el
index bcc3d625d6..fd3e16b307 100644
--- a/lisp/language/hebrew.el
+++ b/lisp/language/hebrew.el
@@ -1,9 +1,8 @@
;;; hebrew.el --- support for Hebrew -*- coding: utf-8 -*-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -259,5 +258,4 @@ Bidirectional editing is supported.")))
(provide 'hebrew)
-;; arch-tag: 3ca04f32-3f1e-498e-af46-8267498ba5d9
;;; hebrew.el ends here
diff --git a/lisp/language/ind-util.el b/lisp/language/ind-util.el
index 76796e125b..56893af147 100644
--- a/lisp/language/ind-util.el
+++ b/lisp/language/ind-util.el
@@ -1,7 +1,6 @@
;;; ind-util.el --- Transliteration and Misc. Tools for Indian Languages -*- coding: iso-2022-7bit; -*-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Maintainer: KAWABATA, Taichi <[email protected]>
;; Keywords: multilingual, Indian, Devanagari
@@ -1213,5 +1212,4 @@ Returns new end position."
(provide 'ind-util)
-;; arch-tag: 59aacd71-46c2-4cb3-bb26-e12bbad55545
;;; ind-util.el ends here
diff --git a/lisp/language/indian.el b/lisp/language/indian.el
index 84998f9cec..8203213d8e 100644
--- a/lisp/language/indian.el
+++ b/lisp/language/indian.el
@@ -1,8 +1,7 @@
;;; indian.el --- Indian languages support -*- coding: utf-8; -*-
-;; Copyright (C) 1997, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1997, 1999, 2001-2011 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -389,5 +388,4 @@ South Indian language Malayalam is supported in this language environment."))
(provide 'indian)
-;; arch-tag: 83aa8fc7-7ee2-4364-a6e5-498f5e3b8c2f
;;; indian.el ends here
diff --git a/lisp/language/japan-util.el b/lisp/language/japan-util.el
index d8b61fa236..dcf3dc0f90 100644
--- a/lisp/language/japan-util.el
+++ b/lisp/language/japan-util.el
@@ -1,9 +1,8 @@
;;; japan-util.el --- utilities for Japanese -*- coding: iso-2022-7bit; -*-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -325,5 +324,4 @@ If non-nil, second arg INITIAL-INPUT is a string to insert before reading."
;;
(provide 'japan-util)
-;; arch-tag: b579595c-c9ad-4b57-9314-98cd8b214f89
;;; japan-util.el ends here
diff --git a/lisp/language/japanese.el b/lisp/language/japanese.el
index 2a5e451741..bf8a4d8d5c 100644
--- a/lisp/language/japanese.el
+++ b/lisp/language/japanese.el
@@ -1,9 +1,8 @@
;;; japanese.el --- support for Japanese -*- coding: iso-2022-7bit; no-byte-compile: t -*-
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -274,5 +273,4 @@ and the second is a glyph for a variation selector."
(provide 'japanese)
-;; arch-tag: 450f5537-9d53-4d5e-b731-4cf116d8cbc9
;;; japanese.el ends here
diff --git a/lisp/language/khmer.el b/lisp/language/khmer.el
index d6ede9e4b0..d01fa3b33b 100644
--- a/lisp/language/khmer.el
+++ b/lisp/language/khmer.el
@@ -1,6 +1,6 @@
;;; khmer.el --- support for Khmer -*- coding: utf-8; no-byte-compile: t -*-
-;; Copyright (C) 2008, 2009, 2010
+;; Copyright (C) 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H13PRO009
@@ -35,5 +35,4 @@
(set-char-table-range composition-function-table '(#x1780 . #x17FF) val)
(set-char-table-range composition-function-table '(#x19E0 . #x19FF) val))
-;; arch-tag: 032890e4-a936-4584-ad44-79eb5f8bc98e
;; khmer.el ends here
diff --git a/lisp/language/korea-util.el b/lisp/language/korea-util.el
index deea608423..e2367cf0f7 100644
--- a/lisp/language/korea-util.el
+++ b/lisp/language/korea-util.el
@@ -1,9 +1,8 @@
;;; korea-util.el --- utilities for Korean
-;; Copyright (C) 1997, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1999, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010
+;; 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -143,5 +142,4 @@
;;
(provide 'korea-util)
-;; arch-tag: b17d0981-05da-4577-99f8-1db87fff8b44
;;; korea-util.el ends here
diff --git a/lisp/language/korean.el b/lisp/language/korean.el
index cff885a4d4..acb9fea268 100644
--- a/lisp/language/korean.el
+++ b/lisp/language/korean.el
@@ -1,9 +1,8 @@
;;; korean.el --- support for Korean -*- coding: iso-2022-7bit; no-byte-compile: t -*-
-;; Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -87,5 +86,4 @@ and the following key bindings are available within Korean input methods:
(provide 'korean)
-;; arch-tag: ca7c7348-5ca3-4623-887a-7fd33d725d0e
;;; korean.el ends here
diff --git a/lisp/language/lao-util.el b/lisp/language/lao-util.el
index 175338bc99..81c5577fa5 100644
--- a/lisp/language/lao-util.el
+++ b/lisp/language/lao-util.el
@@ -1,9 +1,8 @@
;;; lao-util.el --- utilities for Lao -*- coding: iso-2022-7bit; -*-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010
+;; 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -516,5 +515,4 @@ syllable. In that case, FROM and TO are indexes to STR."
;;
(provide 'lao-util)
-;; arch-tag: 1f828781-3cb8-4695-88af-8f33222338ce
;;; lao-util.el ends here
diff --git a/lisp/language/lao.el b/lisp/language/lao.el
index f7a9ddfa41..c09c6f8a0e 100644
--- a/lisp/language/lao.el
+++ b/lisp/language/lao.el
@@ -1,9 +1,8 @@
;;; lao.el --- support for Lao -*- coding: utf-8; no-byte-compile: t -*-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010
+;; 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -83,5 +82,4 @@
(provide 'lao)
-;; arch-tag: ba540fd9-6352-4449-a9cd-669afd21fa57
;;; lao.el ends here
diff --git a/lisp/language/misc-lang.el b/lisp/language/misc-lang.el
index e2e4f29dd9..6fa54ff5c8 100644
--- a/lisp/language/misc-lang.el
+++ b/lisp/language/misc-lang.el
@@ -1,7 +1,7 @@
;;; misc-lang.el --- support for miscellaneous languages (characters) -*- no-byte-compile: t -*-
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -74,5 +74,4 @@ and Italian.")))
(provide 'misc-lang)
-;; arch-tag: 6953585c-1a1a-4c09-be82-a2518afb6074
;;; misc-lang.el ends here
diff --git a/lisp/language/romanian.el b/lisp/language/romanian.el
index 316293ea82..b9c250fd70 100644
--- a/lisp/language/romanian.el
+++ b/lisp/language/romanian.el
@@ -1,7 +1,6 @@
;;; romanian.el --- support for Romanian -*- coding: iso-latin-2; no-byte-compile: t -*-
-;; Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation.
+;; Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Dan Nicolaescu <[email protected]>
;; Keywords: multilingual, Romanian, i18n
@@ -52,5 +51,4 @@ An environment for generic Latin-10 encoding is also available."))
(provide 'romanian)
-;; arch-tag: a0bf93ee-2f02-4678-a477-c08acc35366b
;;; romanian.el ends here
diff --git a/lisp/language/sinhala.el b/lisp/language/sinhala.el
index 37a7bc6b46..ea8a6a34cd 100644
--- a/lisp/language/sinhala.el
+++ b/lisp/language/sinhala.el
@@ -1,6 +1,6 @@
;;; sinhala.el --- support for Sinhala -*- coding: utf-8; no-byte-compile: t -*-
-;; Copyright (C) 2008, 2009, 2010
+;; Copyright (C) 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H13PRO009
@@ -45,5 +45,4 @@
"[\u0D80-\u0DFF]")
0 'font-shape-gstring)))
-;; arch-tag: 87b9ad3b-5090-422f-b942-eb85b9d52e7c
;; sinhala.el ends here
diff --git a/lisp/language/slovak.el b/lisp/language/slovak.el
index 620fc1af8d..94aa5fdc94 100644
--- a/lisp/language/slovak.el
+++ b/lisp/language/slovak.el
@@ -1,7 +1,6 @@
;;; slovak.el --- support for Slovak -*- coding: iso-2022-7bit; no-byte-compile: t -*-
-;; Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation.
+;; Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
;; Authors: Tibor ,B)(Bimko <[email protected]>,
;; Milan Zamazal <[email protected]>
@@ -46,5 +45,4 @@ and selects the Slovak tutorial."))
(provide 'slovak)
-;; arch-tag: 1bae098a-33b2-4426-8c29-59e44fe05484
;;; slovak.el ends here
diff --git a/lisp/language/tai-viet.el b/lisp/language/tai-viet.el
index 25ac901a64..f6e525b0d2 100644
--- a/lisp/language/tai-viet.el
+++ b/lisp/language/tai-viet.el
@@ -1,9 +1,9 @@
;;; tai-viet.el --- support for Tai Viet -*- coding: utf-8; no-byte-compile: t -*-
-;; Copyright (C) 2007, 2008, 2009, 2010
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
+;; Copyright (C) 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H13PRO009
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Keywords: multilingual, Tai Viet, i18n
@@ -61,5 +61,3 @@ is available at this web page:
;; Local Variables:
;; coding: utf-8
;; End:
-
-;; arch-tag: db4e3377-2ba7-47a0-b173-e44420d540c3
diff --git a/lisp/language/thai-util.el b/lisp/language/thai-util.el
index ddde5b29ba..b7dbcc1a95 100644
--- a/lisp/language/thai-util.el
+++ b/lisp/language/thai-util.el
@@ -1,11 +1,10 @@
;;; thai-util.el --- utilities for Thai -*- coding: utf-8; -*-
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
;; Keywords: mule, multilingual, Thai, i18n
@@ -282,5 +281,4 @@ The commands affected are \\[forward-word], \\[backward-word], \\[kill-word], \\
;;
(provide 'thai-util)
-;; arch-tag: 59425d6a-8cf9-4e06-a6ab-8ab7dc7a7a97
;;; thai-util.el ends here
diff --git a/lisp/language/thai-word.el b/lisp/language/thai-word.el
index 3e382e34fc..5cb13e08fd 100644
--- a/lisp/language/thai-word.el
+++ b/lisp/language/thai-word.el
@@ -1,6 +1,6 @@
;;; thai-word.el -- find Thai word boundaries
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -11077,4 +11077,3 @@ With argument, do this that many times."
;; end of thai-word.el
-;; arch-tag: 29927f02-e177-4224-a270-7e67210b038a
diff --git a/lisp/language/thai.el b/lisp/language/thai.el
index f61e0968ad..dd28ec77ed 100644
--- a/lisp/language/thai.el
+++ b/lisp/language/thai.el
@@ -1,14 +1,13 @@
;;; thai.el --- support for Thai -*- coding: iso-2022-7bit; no-byte-compile: t -*-
+;; Copyright (C) 1997-1998, 2000-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H13PRO009
;; Copyright (C) 2005
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
-;; Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Keywords: multilingual, Thai, i18n
@@ -85,5 +84,4 @@ This is the same as `thai-tis620' with the addition of no-break-space."
(provide 'thai)
-;; arch-tag: c7eb0e91-4db0-4619-81f8-8762e7d51e15
;;; thai.el ends here
diff --git a/lisp/language/tibet-util.el b/lisp/language/tibet-util.el
index 303ea61e1d..8458974e75 100644
--- a/lisp/language/tibet-util.el
+++ b/lisp/language/tibet-util.el
@@ -1,9 +1,8 @@
;;; tibet-util.el --- utilities for Tibetan -*- coding: iso-2022-7bit; -*-
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -421,5 +420,4 @@ before writing buffer in Unicode. See also
(provide 'tibet-util)
-;; arch-tag: 7a7333e8-1584-446c-b39c-a02b9def265d
;;; tibet-util.el ends here
diff --git a/lisp/language/tibetan.el b/lisp/language/tibetan.el
index f7e71eae16..a23645bae1 100644
--- a/lisp/language/tibetan.el
+++ b/lisp/language/tibetan.el
@@ -1,9 +1,8 @@
;;; tibetan.el --- support for Tibetan language -*- coding: iso-2022-7bit; -*-
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010
+;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -611,5 +610,4 @@ This also matches some punctuation characters which need conversion.")
(provide 'tibetan)
-;; arch-tag: 8d37c8d7-f95d-450f-9ec2-819e61fc79a7
;;; tibetan.el ends here
diff --git a/lisp/language/tv-util.el b/lisp/language/tv-util.el
index 67ed632797..400856d1aa 100644
--- a/lisp/language/tv-util.el
+++ b/lisp/language/tv-util.el
@@ -1,6 +1,6 @@
;;; tv-util.el --- support for Tai Viet -*- coding: utf-8 -*-
-;; Copyright (C) 2007, 2008, 2009, 2010
+;; Copyright (C) 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H13PRO009
@@ -139,4 +139,3 @@
;;
(provide 'tai-viet-util)
-;; arch-tag: a45ac3fc-07d0-44d5-8841-2ebea7e11f5b
diff --git a/lisp/language/utf-8-lang.el b/lisp/language/utf-8-lang.el
index 7ecaffcfab..dd84077221 100644
--- a/lisp/language/utf-8-lang.el
+++ b/lisp/language/utf-8-lang.el
@@ -1,7 +1,6 @@
;;; utf-8-lang.el --- generic UTF-8 language environment -*- no-byte-compile: t -*-
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Keywords: i18n
@@ -52,5 +51,4 @@ encoded in UTF-8."))
(provide 'utf-8-lang)
-;; arch-tag: dfa339e1-296f-4b1e-9fe8-2b65279ec813
;;; utf-8-lang.el ends here
diff --git a/lisp/language/viet-util.el b/lisp/language/viet-util.el
index 9a2ccc1437..ea601c041e 100644
--- a/lisp/language/viet-util.el
+++ b/lisp/language/viet-util.el
@@ -1,9 +1,8 @@
;;; viet-util.el --- utilities for Vietnamese -*- coding: iso-2022-7bit; -*-
-;; Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -296,5 +295,4 @@ positions (integers or markers) specifying the stretch of the region."
;;;
(provide 'viet-util)
-;; arch-tag: 082a4d3b-168f-45b4-b3e1-82bfa1b5a194
;;; viet-util.el ends here
diff --git a/lisp/language/vietnamese.el b/lisp/language/vietnamese.el
index 43bb5c5845..97d5037f3c 100644
--- a/lisp/language/vietnamese.el
+++ b/lisp/language/vietnamese.el
@@ -1,9 +1,8 @@
;;; vietnamese.el --- support for Vietnamese -*- coding: iso-2022-7bit; -*-
-;; Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Copyright (C) 2003
@@ -110,5 +109,4 @@ Telex, VIQR is the default setting.")))
(provide 'vietnamese)
-;; arch-tag: 5bd4f1aa-2d4e-4f33-b7d8-0679c6a19ee6
;;; vietnamese.el ends here
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index 7d7e0fdb6b..df19537688 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -1945,7 +1945,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" (19714 43298))
+;;;;;; "bookmark.el" (19717 39999))
;;; Generated autoloads from bookmark.el
(define-key ctl-x-r-map "b" 'bookmark-jump)
(define-key ctl-x-r-map "m" 'bookmark-set)
@@ -2529,24 +2529,6 @@ columns on its right towards the left.
;;;***
-;;;### (autoloads (list-buffers) "buff-menu" "buff-menu.el" (19714
-;;;;;; 43298))
-;;; Generated autoloads from buff-menu.el
-
-(define-key ctl-x-map "" 'list-buffers)
-
-(autoload 'list-buffers "buff-menu" "\
-Display a list of names of existing buffers.
-The list is displayed in a buffer named `*Buffer List*'.
-Note that buffers with names starting with spaces are omitted.
-Non-null optional arg FILES-ONLY means mention only file buffers.
-
-For more information, see the function `buffer-menu'.
-
-\(fn &optional FILES-ONLY)" t nil)
-
-;;;***
-
;;;### (autoloads (bug-reference-prog-mode bug-reference-mode) "bug-reference"
;;;;;; "progmodes/bug-reference.el" (19562 42953))
;;; Generated autoloads from progmodes/bug-reference.el
@@ -2569,7 +2551,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" (19714 43298))
+;;;;;; "bytecomp" "emacs-lisp/bytecomp.el" (19737 17936))
;;; 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)
@@ -2930,7 +2912,7 @@ Obsoletes `c-forward-into-nomenclature'.
;;;***
;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el"
-;;;;;; (19640 47194))
+;;;;;; (19717 39999))
;;; Generated autoloads from progmodes/cc-engine.el
(autoload 'c-guess-basic-syntax "cc-engine" "\
@@ -4204,42 +4186,6 @@ Enable dynamic word-completion.
;;;***
-;;;### (autoloads (global-auto-composition-mode auto-composition-mode
-;;;;;; encode-composition-rule) "composite" "composite.el" (19714
-;;;;;; 43298))
-;;; Generated autoloads from composite.el
-
-(autoload 'encode-composition-rule "composite" "\
-Encode composition rule RULE into an integer value.
-RULE is a cons of global and new reference point symbols
-\(see `reference-point-alist').
-
-\(fn RULE)" nil nil)
-
-(autoload 'auto-composition-mode "composite" "\
-Toggle Auto Composition mode.
-With ARG, turn Auto Composition mode off if and only if ARG is a non-positive
-number; if ARG is nil, toggle Auto Composition mode; anything else turns Auto
-Composition on.
-
-When Auto Composition is enabled, text characters are automatically composed
-by functions registered in `composition-function-table' (which see).
-
-You can use `global-auto-composition-mode' to turn on
-Auto Composition mode in all buffers (this is the default).
-
-\(fn &optional ARG)" t nil)
-
-(autoload 'global-auto-composition-mode "composite" "\
-Toggle Auto-Composition mode in every possible buffer.
-With prefix arg, turn Global-Auto-Composition mode on if and only if arg
-is positive.
-See `auto-composition-mode' for more information on Auto-Composition mode.
-
-\(fn &optional ARG)" t 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"
@@ -7256,7 +7202,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" (19714 43298))
+;;;;;; "emacs-lisp/edebug.el" (19720 57265))
;;; Generated autoloads from emacs-lisp/edebug.el
(defvar edebug-all-defs nil "\
@@ -7571,13 +7517,6 @@ Not documented
;;;***
-;;;### (autoloads nil "ediff-hook" "vc/ediff-hook.el" (19598 13691))
-;;; Generated autoloads from vc/ediff-hook.el
-
-(if (featurep 'xemacs) (progn (defun ediff-xemacs-init-menus nil (when (featurep 'menubar) (add-submenu '("Tools") ediff-menu "OO-Browser...") (add-submenu '("Tools") ediff-merge-menu "OO-Browser...") (add-submenu '("Tools") epatch-menu "OO-Browser...") (add-submenu '("Tools") ediff-misc-menu "OO-Browser...") (add-menu-button '("Tools") "-------" "OO-Browser..."))) (defvar ediff-menu '("Compare" ["Two Files..." ediff-files t] ["Two Buffers..." ediff-buffers t] ["Three Files..." ediff-files3 t] ["Three Buffers..." ediff-buffers3 t] "---" ["Two Directories..." ediff-directories t] ["Three Directories..." ediff-directories3 t] "---" ["File with Revision..." ediff-revision t] ["Directory Revisions..." ediff-directory-revisions t] "---" ["Windows Word-by-word..." ediff-windows-wordwise t] ["Windows Line-by-line..." ediff-windows-linewise t] "---" ["Regions Word-by-word..." ediff-regions-wordwise t] ["Regions Line-by-line..." ediff-regions-linewise t])) (defvar ediff-merge-menu '("Merge" ["Files..." ediff-merge-files t] ["Files with Ancestor..." ediff-merge-files-with-ancestor t] ["Buffers..." ediff-merge-buffers t] ["Buffers with Ancestor..." ediff-merge-buffers-with-ancestor t] "---" ["Directories..." ediff-merge-directories t] ["Directories with Ancestor..." ediff-merge-directories-with-ancestor t] "---" ["Revisions..." ediff-merge-revisions t] ["Revisions with Ancestor..." ediff-merge-revisions-with-ancestor t] ["Directory Revisions..." ediff-merge-directory-revisions t] ["Directory Revisions with Ancestor..." ediff-merge-directory-revisions-with-ancestor t])) (defvar epatch-menu '("Apply Patch" ["To a file..." ediff-patch-file t] ["To a buffer..." ediff-patch-buffer t])) (defvar ediff-misc-menu '("Ediff Miscellanea" ["Ediff Manual" ediff-documentation t] ["Customize Ediff" ediff-customize t] ["List Ediff Sessions" ediff-show-registry t] ["Use separate frame for Ediff control buffer" ediff-toggle-multiframe :style toggle :selected (if (and (featurep 'ediff-util) (boundp 'ediff-window-setup-function)) (eq ediff-window-setup-function 'ediff-setup-windows-multiframe))] ["Use a toolbar with Ediff control buffer" ediff-toggle-use-toolbar :style toggle :selected (if (featurep 'ediff-tbar) (ediff-use-toolbar-p))])) (if (and (featurep 'menubar) (not (featurep 'infodock)) (not (featurep 'ediff-hook))) (ediff-xemacs-init-menus))) (defvar menu-bar-ediff-misc-menu (make-sparse-keymap "Ediff Miscellanea")) (fset 'menu-bar-ediff-misc-menu (symbol-value 'menu-bar-ediff-misc-menu)) (defvar menu-bar-epatch-menu (make-sparse-keymap "Apply Patch")) (fset 'menu-bar-epatch-menu (symbol-value 'menu-bar-epatch-menu)) (defvar menu-bar-ediff-merge-menu (make-sparse-keymap "Merge")) (fset 'menu-bar-ediff-merge-menu (symbol-value 'menu-bar-ediff-merge-menu)) (defvar menu-bar-ediff-menu (make-sparse-keymap "Compare")) (fset 'menu-bar-ediff-menu (symbol-value 'menu-bar-ediff-menu)) (define-key menu-bar-ediff-menu [ediff-misc] `(menu-item ,(purecopy "Ediff Miscellanea") menu-bar-ediff-misc-menu)) (define-key menu-bar-ediff-menu [separator-ediff-misc] menu-bar-separator) (define-key menu-bar-ediff-menu [window] `(menu-item ,(purecopy "This Window and Next Window") compare-windows :help ,(purecopy "Compare the current window and the next window"))) (define-key menu-bar-ediff-menu [ediff-windows-linewise] `(menu-item ,(purecopy "Windows Line-by-line...") ediff-windows-linewise :help ,(purecopy "Compare windows line-wise"))) (define-key menu-bar-ediff-menu [ediff-windows-wordwise] `(menu-item ,(purecopy "Windows Word-by-word...") ediff-windows-wordwise :help ,(purecopy "Compare windows word-wise"))) (define-key menu-bar-ediff-menu [separator-ediff-windows] menu-bar-separator) (define-key menu-bar-ediff-menu [ediff-regions-linewise] `(menu-item ,(purecopy "Regions Line-by-line...") ediff-regions-linewise :help ,(purecopy "Compare regions line-wise"))) (define-key menu-bar-ediff-menu [ediff-regions-wordwise] `(menu-item ,(purecopy "Regions Word-by-word...") ediff-regions-wordwise :help ,(purecopy "Compare regions word-wise"))) (define-key menu-bar-ediff-menu [separator-ediff-regions] menu-bar-separator) (define-key menu-bar-ediff-menu [ediff-dir-revision] `(menu-item ,(purecopy "Directory Revisions...") ediff-directory-revisions :help ,(purecopy "Compare directory files with their older versions"))) (define-key menu-bar-ediff-menu [ediff-revision] `(menu-item ,(purecopy "File with Revision...") ediff-revision :help ,(purecopy "Compare file with its older versions"))) (define-key menu-bar-ediff-menu [separator-ediff-directories] menu-bar-separator) (define-key menu-bar-ediff-menu [ediff-directories3] `(menu-item ,(purecopy "Three Directories...") ediff-directories3 :help ,(purecopy "Compare files common to three directories simultaneously"))) (define-key menu-bar-ediff-menu [ediff-directories] `(menu-item ,(purecopy "Two Directories...") ediff-directories :help ,(purecopy "Compare files common to two directories simultaneously"))) (define-key menu-bar-ediff-menu [separator-ediff-files] menu-bar-separator) (define-key menu-bar-ediff-menu [ediff-buffers3] `(menu-item ,(purecopy "Three Buffers...") ediff-buffers3 :help ,(purecopy "Compare three buffers simultaneously"))) (define-key menu-bar-ediff-menu [ediff-files3] `(menu-item ,(purecopy "Three Files...") ediff-files3 :help ,(purecopy "Compare three files simultaneously"))) (define-key menu-bar-ediff-menu [ediff-buffers] `(menu-item ,(purecopy "Two Buffers...") ediff-buffers :help ,(purecopy "Compare two buffers simultaneously"))) (define-key menu-bar-ediff-menu [ediff-files] `(menu-item ,(purecopy "Two Files...") ediff-files :help ,(purecopy "Compare two files simultaneously"))) (define-key menu-bar-ediff-merge-menu [ediff-merge-dir-revisions-with-ancestor] `(menu-item ,(purecopy "Directory Revisions with Ancestor...") ediff-merge-directory-revisions-with-ancestor :help ,(purecopy "Merge versions of the files in the same directory by comparing the files with common ancestors"))) (define-key menu-bar-ediff-merge-menu [ediff-merge-dir-revisions] `(menu-item ,(purecopy "Directory Revisions...") ediff-merge-directory-revisions :help ,(purecopy "Merge versions of the files in the same directory (without using ancestor information)"))) (define-key menu-bar-ediff-merge-menu [ediff-merge-revisions-with-ancestor] `(menu-item ,(purecopy "Revisions with Ancestor...") ediff-merge-revisions-with-ancestor :help ,(purecopy "Merge versions of the same file by comparing them with a common ancestor"))) (define-key menu-bar-ediff-merge-menu [ediff-merge-revisions] `(menu-item ,(purecopy "Revisions...") ediff-merge-revisions :help ,(purecopy "Merge versions of the same file (without using ancestor information)"))) (define-key menu-bar-ediff-merge-menu [separator-ediff-merge] menu-bar-separator) (define-key menu-bar-ediff-merge-menu [ediff-merge-directories-with-ancestor] `(menu-item ,(purecopy "Directories with Ancestor...") ediff-merge-directories-with-ancestor :help ,(purecopy "Merge files common to a pair of directories by comparing the files with common ancestors"))) (define-key menu-bar-ediff-merge-menu [ediff-merge-directories] `(menu-item ,(purecopy "Directories...") ediff-merge-directories :help ,(purecopy "Merge files common to a pair of directories"))) (define-key menu-bar-ediff-merge-menu [separator-ediff-merge-dirs] menu-bar-separator) (define-key menu-bar-ediff-merge-menu [ediff-merge-buffers-with-ancestor] `(menu-item ,(purecopy "Buffers with Ancestor...") ediff-merge-buffers-with-ancestor :help ,(purecopy "Merge buffers by comparing their contents with a common ancestor"))) (define-key menu-bar-ediff-merge-menu [ediff-merge-buffers] `(menu-item ,(purecopy "Buffers...") ediff-merge-buffers :help ,(purecopy "Merge buffers (without using ancestor information)"))) (define-key menu-bar-ediff-merge-menu [ediff-merge-files-with-ancestor] `(menu-item ,(purecopy "Files with Ancestor...") ediff-merge-files-with-ancestor :help ,(purecopy "Merge files by comparing them with a common ancestor"))) (define-key menu-bar-ediff-merge-menu [ediff-merge-files] `(menu-item ,(purecopy "Files...") ediff-merge-files :help ,(purecopy "Merge files (without using ancestor information)"))) (define-key menu-bar-epatch-menu [ediff-patch-buffer] `(menu-item ,(purecopy "To a Buffer...") ediff-patch-buffer :help ,(purecopy "Apply a patch to the contents of a buffer"))) (define-key menu-bar-epatch-menu [ediff-patch-file] `(menu-item ,(purecopy "To a File...") ediff-patch-file :help ,(purecopy "Apply a patch to a file"))) (define-key menu-bar-ediff-misc-menu [emultiframe] `(menu-item ,(purecopy "Use separate control buffer frame") ediff-toggle-multiframe :help ,(purecopy "Switch between the single-frame presentation mode and the multi-frame mode"))) (define-key menu-bar-ediff-misc-menu [eregistry] `(menu-item ,(purecopy "List Ediff Sessions") ediff-show-registry :help ,(purecopy "List all active Ediff sessions; it is a convenient way to find and resume such a session"))) (define-key menu-bar-ediff-misc-menu [ediff-cust] `(menu-item ,(purecopy "Customize Ediff") ediff-customize :help ,(purecopy "Change some of the parameters that govern the behavior of Ediff"))) (define-key menu-bar-ediff-misc-menu [ediff-doc] `(menu-item ,(purecopy "Ediff Manual") ediff-documentation :help ,(purecopy "Bring up the Ediff manual"))))
-
-;;;***
-
;;;### (autoloads (ediff-show-registry) "ediff-mult" "vc/ediff-mult.el"
;;;;;; (19598 13691))
;;; Generated autoloads from vc/ediff-mult.el
@@ -10658,13 +10597,6 @@ in your `~/.emacs' file, replacing [f7] by your favourite key:
;;;***
-;;;### (autoloads nil "font-core" "font-core.el" (19640 47194))
-;;; Generated autoloads from font-core.el
-
-(put 'font-lock-defaults 'risky-local-variable t)
-
-;;;***
-
;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (19562
;;;;;; 42953))
;;; Generated autoloads from mail/footnote.el
@@ -10679,13 +10611,6 @@ started, play around with the following keys:
;;;***
-;;;### (autoloads nil "format" "format.el" (19598 13691))
-;;; Generated autoloads from format.el
-
-(put 'format-alist 'risky-local-variable t)
-
-;;;***
-
;;;### (autoloads (forms-find-file-other-window forms-find-file forms-mode)
;;;;;; "forms" "forms.el" (19562 42953))
;;; Generated autoloads from forms.el
@@ -11403,7 +11328,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" (19714 43298))
+;;;;;; "gnus-gravatar" "gnus/gnus-gravatar.el" (19717 39999))
;;; Generated autoloads from gnus/gnus-gravatar.el
(autoload 'gnus-treat-from-gravatar "gnus-gravatar" "\
@@ -14035,7 +13960,7 @@ DEF, if non-nil, is the default value.
;;;***
-;;;### (autoloads (ielm) "ielm" "ielm.el" (19591 62571))
+;;;### (autoloads (ielm) "ielm" "ielm.el" (19720 64949))
;;; Generated autoloads from ielm.el
(add-hook 'same-window-buffer-names (purecopy "*ielm*"))
@@ -16850,20 +16775,13 @@ Returns non-nil if the new state is enabled.
;;;***
-;;;### (autoloads nil "menu-bar" "menu-bar.el" (19714 43298))
-;;; Generated autoloads from menu-bar.el
-
-(put 'menu-bar-mode 'standard-value '(t))
-
-;;;***
-
;;;### (autoloads (message-unbold-region message-bold-region message-news-other-frame
;;;;;; message-news-other-window message-mail-other-frame message-mail-other-window
;;;;;; message-bounce message-resend message-insinuate-rmail message-forward-rmail-make-body
;;;;;; 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" (19714 43298))
+;;;;;; "gnus/message.el" (19717 39999))
;;; 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)
@@ -17766,14 +17684,6 @@ different buffer menu using the function `msb'.
;;;***
-;;;### (autoloads nil "mule-cmds" "international/mule-cmds.el" (19714
-;;;;;; 43298))
-;;; Generated autoloads from international/mule-cmds.el
-
-(put 'input-method-alist 'risky-local-variable t)
-
-;;;***
-
;;;### (autoloads (font-show-log mule-diag list-input-methods list-fontsets
;;;;;; describe-fontset describe-font list-coding-categories list-coding-systems
;;;;;; describe-current-coding-system describe-current-coding-system-briefly
@@ -18633,12 +18543,13 @@ the variable `nxml-enabled-unicode-blocks'.
;;;;;; org-babel-next-src-block org-babel-goto-named-result org-babel-goto-named-src-block
;;;;;; org-babel-goto-src-block-head org-babel-hide-result-toggle-maybe
;;;;;; org-babel-sha1-hash org-babel-execute-subtree org-babel-execute-buffer
-;;;;;; org-babel-open-src-block-result org-babel-switch-to-session-with-code
-;;;;;; org-babel-switch-to-session org-babel-initiate-session org-babel-load-in-session
-;;;;;; org-babel-expand-src-block org-babel-execute-src-block org-babel-pop-to-session-maybe
+;;;;;; org-babel-map-src-blocks org-babel-open-src-block-result
+;;;;;; org-babel-switch-to-session-with-code org-babel-switch-to-session
+;;;;;; org-babel-initiate-session org-babel-load-in-session org-babel-expand-src-block
+;;;;;; org-babel-execute-src-block org-babel-pop-to-session-maybe
;;;;;; org-babel-load-in-session-maybe org-babel-expand-src-block-maybe
;;;;;; org-babel-execute-maybe org-babel-execute-safely-maybe) "ob"
-;;;;;; "org/ob.el" (19714 43298))
+;;;;;; "org/ob.el" (19717 39999))
;;; Generated autoloads from org/ob.el
(autoload 'org-babel-execute-safely-maybe "ob" "\
@@ -18735,6 +18646,32 @@ results already exist.
\(fn &optional RE-RUN)" t nil)
+(autoload 'org-babel-map-src-blocks "ob" "\
+Evaluate BODY forms on each source-block in FILE.
+If FILE is nil evaluate BODY forms on source blocks in current
+buffer. During evaluation of BODY the following local variables
+are set relative to the currently matched code block.
+
+full-block ------- string holding the entirety of the code block
+beg-block -------- point at the beginning of the code block
+end-block -------- point at the end of the matched code block
+lang ------------- string holding the language of the code block
+beg-lang --------- point at the beginning of the lang
+end-lang --------- point at the end of the lang
+switches --------- string holding the switches
+beg-switches ----- point at the beginning of the switches
+end-switches ----- point at the end of the switches
+header-args ------ string holding the header-args
+beg-header-args -- point at the beginning of the header-args
+end-header-args -- point at the end of the header-args
+body ------------- string holding the body of the code block
+beg-body --------- point at the beginning of the body
+end-body --------- point at the end of the body
+
+\(fn FILE &rest BODY)" nil (quote macro))
+
+(put 'org-babel-map-src-blocks 'lisp-indent-function '1)
+
(autoload 'org-babel-execute-buffer "ob" "\
Execute source code blocks in a buffer.
Call `org-babel-execute-src-block' on every source block in
@@ -18794,7 +18731,7 @@ Mark current src block
;;;***
;;;### (autoloads (org-babel-describe-bindings) "ob-keys" "org/ob-keys.el"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from org/ob-keys.el
(autoload 'org-babel-describe-bindings "ob-keys" "\
@@ -18805,7 +18742,7 @@ Describe all keybindings behind `org-babel-key-prefix'.
;;;***
;;;### (autoloads (org-babel-lob-get-info org-babel-lob-execute-maybe
-;;;;;; org-babel-lob-ingest) "ob-lob" "org/ob-lob.el" (19714 43298))
+;;;;;; org-babel-lob-ingest) "ob-lob" "org/ob-lob.el" (19717 39999))
;;; Generated autoloads from org/ob-lob.el
(autoload 'org-babel-lob-ingest "ob-lob" "\
@@ -18830,7 +18767,7 @@ Return a Library of Babel function call as a string.
;;;### (autoloads (org-babel-tangle org-babel-tangle-file org-babel-load-file
;;;;;; org-babel-tangle-lang-exts) "ob-tangle" "org/ob-tangle.el"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from org/ob-tangle.el
(defvar org-babel-tangle-lang-exts '(("emacs-lisp" . "el")) "\
@@ -18848,7 +18785,7 @@ This function exports the source code using
`org-babel-tangle' and then loads the resulting file using
`load-file'.
-\(fn FILE)" nil nil)
+\(fn FILE)" t nil)
(autoload 'org-babel-tangle-file "ob-tangle" "\
Extract the bodies of source code blocks in FILE.
@@ -18983,7 +18920,7 @@ including a reproducible test case and send the message.
;;;;;; org-insert-link-global org-store-link org-run-like-in-org-mode
;;;;;; turn-on-orgstruct++ turn-on-orgstruct orgstruct-mode org-global-cycle
;;;;;; org-mode org-babel-do-load-languages) "org" "org/org.el"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from org/org.el
(autoload 'org-babel-do-load-languages "org" "\
@@ -19206,7 +19143,7 @@ Call the customize function with org as argument.
;;;;;; org-diary org-agenda-list-stuck-projects org-tags-view org-todo-list
;;;;;; 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-agenda" "org/org-agenda.el" (19714 43298))
+;;;;;; org-agenda) "org-agenda" "org/org-agenda.el" (19717 39999))
;;; Generated autoloads from org/org-agenda.el
(autoload 'org-agenda "org-agenda" "\
@@ -19313,13 +19250,13 @@ This feature is considered obsolete, please use the TODO list or a block
agenda instead.
With a numeric prefix argument in an interactive call, the agenda will
-span INCLUDE-ALL days. Lisp programs should instead specify NDAYS to change
-the number of days. NDAYS defaults to `org-agenda-ndays'.
+span INCLUDE-ALL days. Lisp programs should instead specify SPAN to change
+the number of days. SPAN defaults to `org-agenda-span'.
START-DAY defaults to TODAY, or to the most recent match for the weekday
given in `org-agenda-start-on-weekday'.
-\(fn &optional INCLUDE-ALL START-DAY NDAYS)" t nil)
+\(fn &optional INCLUDE-ALL START-DAY SPAN)" t nil)
(autoload 'org-search-view "org-agenda" "\
Show all entries that contain a phrase or words or regular expressions.
@@ -19456,7 +19393,7 @@ belonging to the \"Work\" category.
;;;### (autoloads (org-archive-subtree-default-with-confirmation
;;;;;; org-archive-subtree-default) "org-archive" "org/org-archive.el"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from org/org-archive.el
(autoload 'org-archive-subtree-default "org-archive" "\
@@ -19476,8 +19413,8 @@ This command is set with the variable `org-archive-default-command'.
;;;### (autoloads (org-export-as-ascii org-export-region-as-ascii
;;;;;; org-replace-region-by-ascii org-export-as-ascii-to-buffer
;;;;;; org-export-as-utf8-to-buffer org-export-as-utf8 org-export-as-latin1-to-buffer
-;;;;;; org-export-as-latin1) "org-ascii" "org/org-ascii.el" (19714
-;;;;;; 43298))
+;;;;;; org-export-as-latin1) "org-ascii" "org/org-ascii.el" (19717
+;;;;;; 39999))
;;; Generated autoloads from org/org-ascii.el
(autoload 'org-export-as-latin1 "org-ascii" "\
@@ -19550,8 +19487,8 @@ publishing directory.
;;;***
-;;;### (autoloads (org-attach) "org-attach" "org/org-attach.el" (19714
-;;;;;; 43298))
+;;;### (autoloads (org-attach) "org-attach" "org/org-attach.el" (19717
+;;;;;; 39999))
;;; Generated autoloads from org/org-attach.el
(autoload 'org-attach "org-attach" "\
@@ -19563,7 +19500,7 @@ Shows a list of commands and prompts for another key to execute a command.
;;;***
;;;### (autoloads (org-bbdb-anniversaries) "org-bbdb" "org/org-bbdb.el"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from org/org-bbdb.el
(autoload 'org-bbdb-anniversaries "org-bbdb" "\
@@ -19574,7 +19511,7 @@ Extract anniversaries from BBDB for display in the agenda.
;;;***
;;;### (autoloads (org-capture-import-remember-templates org-capture-insert-template-here
-;;;;;; org-capture) "org-capture" "org/org-capture.el" (19714 43298))
+;;;;;; org-capture) "org-capture" "org/org-capture.el" (19717 39999))
;;; Generated autoloads from org/org-capture.el
(autoload 'org-capture "org-capture" "\
@@ -19612,7 +19549,7 @@ Set org-capture-templates to be similar to `org-remember-templates'.
;;;***
;;;### (autoloads (org-clock-persistence-insinuate org-get-clocktable)
-;;;;;; "org-clock" "org/org-clock.el" (19714 43298))
+;;;;;; "org-clock" "org/org-clock.el" (19717 39999))
;;; Generated autoloads from org/org-clock.el
(autoload 'org-get-clocktable "org-clock" "\
@@ -19630,7 +19567,7 @@ Set up hooks for clock persistence.
;;;***
;;;### (autoloads (org-datetree-find-date-create) "org-datetree"
-;;;;;; "org/org-datetree.el" (19714 43298))
+;;;;;; "org/org-datetree.el" (19717 39999))
;;; Generated autoloads from org/org-datetree.el
(autoload 'org-datetree-find-date-create "org-datetree" "\
@@ -19646,7 +19583,7 @@ tree can be found.
;;;### (autoloads (org-export-as-docbook org-export-as-docbook-pdf-and-open
;;;;;; org-export-as-docbook-pdf org-export-region-as-docbook org-replace-region-by-docbook
;;;;;; org-export-as-docbook-to-buffer org-export-as-docbook-batch)
-;;;;;; "org-docbook" "org/org-docbook.el" (19714 43298))
+;;;;;; "org-docbook" "org/org-docbook.el" (19717 39999))
;;; Generated autoloads from org/org-docbook.el
(autoload 'org-export-as-docbook-batch "org-docbook" "\
@@ -19723,7 +19660,7 @@ publishing directory.
;;;### (autoloads (org-insert-export-options-template org-export-as-org
;;;;;; org-export-visible org-export) "org-exp" "org/org-exp.el"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from org/org-exp.el
(autoload 'org-export "org-exp" "\
@@ -19780,8 +19717,8 @@ Insert into the buffer a template with information for exporting.
;;;***
;;;### (autoloads (org-feed-show-raw-feed org-feed-goto-inbox org-feed-update
-;;;;;; org-feed-update-all) "org-feed" "org/org-feed.el" (19714
-;;;;;; 43298))
+;;;;;; org-feed-update-all) "org-feed" "org/org-feed.el" (19717
+;;;;;; 39999))
;;; Generated autoloads from org/org-feed.el
(autoload 'org-feed-update-all "org-feed" "\
@@ -19809,7 +19746,7 @@ Show the raw feed buffer of a feed.
;;;***
;;;### (autoloads (org-footnote-normalize org-footnote-action) "org-footnote"
-;;;;;; "org/org-footnote.el" (19714 43298))
+;;;;;; "org/org-footnote.el" (19717 39999))
;;; Generated autoloads from org/org-footnote.el
(autoload 'org-footnote-action "org-footnote" "\
@@ -19836,7 +19773,7 @@ referenced sequence.
;;;### (autoloads (org-freemind-to-org-mode org-freemind-from-org-sparse-tree
;;;;;; org-freemind-from-org-mode org-freemind-from-org-mode-node
;;;;;; org-freemind-show org-export-as-freemind) "org-freemind"
-;;;;;; "org/org-freemind.el" (19714 43298))
+;;;;;; "org/org-freemind.el" (19717 39999))
;;; Generated autoloads from org/org-freemind.el
(autoload 'org-export-as-freemind "org-freemind" "\
@@ -19897,7 +19834,7 @@ Convert FreeMind file MM-FILE to `org-mode' file ORG-FILE.
;;;### (autoloads (org-export-htmlize-generate-css org-export-as-html
;;;;;; org-export-region-as-html org-replace-region-by-html org-export-as-html-to-buffer
;;;;;; org-export-as-html-batch org-export-as-html-and-open) "org-html"
-;;;;;; "org/org-html.el" (19714 43298))
+;;;;;; "org/org-html.el" (19717 39999))
;;; Generated autoloads from org/org-html.el
(put 'org-export-html-style-include-default 'safe-local-variable 'booleanp)
@@ -19991,7 +19928,7 @@ that uses these same face definitions.
;;;### (autoloads (org-export-icalendar-combine-agenda-files org-export-icalendar-all-agenda-files
;;;;;; org-export-icalendar-this-file) "org-icalendar" "org/org-icalendar.el"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from org/org-icalendar.el
(autoload 'org-export-icalendar-this-file "org-icalendar" "\
@@ -20019,7 +19956,7 @@ The file is stored under the name `org-combined-agenda-icalendar-file'.
;;;### (autoloads (org-id-store-link org-id-find-id-file org-id-find
;;;;;; org-id-goto org-id-get-with-outline-drilling org-id-get-with-outline-path-completion
;;;;;; org-id-get org-id-copy org-id-get-create) "org-id" "org/org-id.el"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from org/org-id.el
(autoload 'org-id-get-create "org-id" "\
@@ -20088,7 +20025,7 @@ Store a link to the current entry, using its ID.
;;;***
;;;### (autoloads (org-indent-mode) "org-indent" "org/org-indent.el"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from org/org-indent.el
(autoload 'org-indent-mode "org-indent" "\
@@ -20103,7 +20040,7 @@ FIXME: How to update when broken?
;;;***
;;;### (autoloads (org-irc-store-link) "org-irc" "org/org-irc.el"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from org/org-irc.el
(autoload 'org-irc-store-link "org-irc" "\
@@ -20116,7 +20053,7 @@ Dispatch to the appropriate function to store a link to an IRC session.
;;;### (autoloads (org-export-as-pdf-and-open org-export-as-pdf org-export-as-latex
;;;;;; org-export-region-as-latex org-replace-region-by-latex org-export-as-latex-to-buffer
;;;;;; org-export-as-latex-batch) "org-latex" "org/org-latex.el"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from org/org-latex.el
(autoload 'org-export-as-latex-batch "org-latex" "\
@@ -20196,8 +20133,8 @@ Export as LaTeX, then process through to PDF, and open.
;;;***
;;;### (autoloads (org-mobile-create-sumo-agenda org-mobile-pull
-;;;;;; org-mobile-push) "org-mobile" "org/org-mobile.el" (19714
-;;;;;; 43298))
+;;;;;; org-mobile-push) "org-mobile" "org/org-mobile.el" (19717
+;;;;;; 39999))
;;; Generated autoloads from org/org-mobile.el
(autoload 'org-mobile-push "org-mobile" "\
@@ -20222,7 +20159,7 @@ Create a file that contains all custom agenda views.
;;;***
;;;### (autoloads (org-plot/gnuplot) "org-plot" "org/org-plot.el"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from org/org-plot.el
(autoload 'org-plot/gnuplot "org-plot" "\
@@ -20236,7 +20173,7 @@ line directly before or after the table.
;;;### (autoloads (org-publish-current-project org-publish-current-file
;;;;;; org-publish-all org-publish) "org-publish" "org/org-publish.el"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from org/org-publish.el
(defalias 'org-publish-project 'org-publish)
@@ -20270,7 +20207,7 @@ the project.
;;;### (autoloads (org-remember-handler org-remember org-remember-apply-template
;;;;;; org-remember-annotation org-remember-insinuate) "org-remember"
-;;;;;; "org/org-remember.el" (19714 43298))
+;;;;;; "org/org-remember.el" (19717 39999))
;;; Generated autoloads from org/org-remember.el
(autoload 'org-remember-insinuate "org-remember" "\
@@ -20346,7 +20283,7 @@ See also the variable `org-reverse-note-order'.
;;;***
;;;### (autoloads (org-table-to-lisp orgtbl-mode turn-on-orgtbl)
-;;;;;; "org-table" "org/org-table.el" (19714 43298))
+;;;;;; "org-table" "org/org-table.el" (19717 39999))
;;; Generated autoloads from org/org-table.el
(autoload 'turn-on-orgtbl "org-table" "\
@@ -20370,7 +20307,7 @@ The table is taken from the parameter TXT, or from the buffer at point.
;;;***
;;;### (autoloads (org-export-as-taskjuggler-and-open org-export-as-taskjuggler)
-;;;;;; "org-taskjuggler" "org/org-taskjuggler.el" (19714 43298))
+;;;;;; "org-taskjuggler" "org/org-taskjuggler.el" (19717 39999))
;;; Generated autoloads from org/org-taskjuggler.el
(autoload 'org-export-as-taskjuggler "org-taskjuggler" "\
@@ -20398,7 +20335,7 @@ with the TaskJuggler GUI.
;;;### (autoloads (org-timer-set-timer org-timer-item org-timer-change-times-in-region
;;;;;; org-timer org-timer-start) "org-timer" "org/org-timer.el"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from org/org-timer.el
(autoload 'org-timer-start "org-timer" "\
@@ -20459,7 +20396,7 @@ replace any running timer.
;;;***
;;;### (autoloads (org-export-as-xoxo) "org-xoxo" "org/org-xoxo.el"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from org/org-xoxo.el
(autoload 'org-export-as-xoxo "org-xoxo" "\
@@ -20787,7 +20724,7 @@ but before calling PC Selection mode):
;;;***
;;;### (autoloads (pcase-let pcase-let* pcase) "pcase" "emacs-lisp/pcase.el"
-;;;;;; (19714 43298))
+;;;;;; (19726 56598))
;;; Generated autoloads from emacs-lisp/pcase.el
(autoload 'pcase "pcase" "\
@@ -20801,6 +20738,7 @@ UPatterns can take the following forms:
(and UPAT...) matches if all the patterns match.
`QPAT matches if the QPattern QPAT matches.
(pred PRED) matches if PRED applied to the object returns non-nil.
+ (let VAR EXP) matches anything and set VAR to the value of EXP.
(guard BOOLEXP) matches if BOOLEXP evaluates to non-nil.
QPatterns can take the following forms:
@@ -22141,7 +22079,7 @@ With prefix argument \\[universal-prefix], prompt for the program to use.
;;;***
;;;### (autoloads (open-protocol-stream) "proto-stream" "gnus/proto-stream.el"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from gnus/proto-stream.el
(autoload 'open-protocol-stream "proto-stream" "\
@@ -22155,10 +22093,11 @@ is a string representing the capabilities of the server (if any).
The PARAMETERS is a keyword list that can have the following
values:
-:type -- either `network', `tls', `shell' or `starttls'. If
-omitted, the default is `network'. `network' will be
-opportunistically upgraded to STARTTLS if both the server and
-Emacs supports it.
+:type -- either `network', `network-only, `tls', `shell' or
+`starttls'. If omitted, the default is `network'. `network'
+will be opportunistically upgraded to STARTTLS if both the server
+and Emacs supports it. If you don't want STARTTLS upgrades, use
+`network-only'.
:end-of-command -- a regexp saying what the end of a command is.
This defaults to \"\\n\".
@@ -24886,7 +24825,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"
-;;;;;; (19714 43298))
+;;;;;; (19717 39999))
;;; Generated autoloads from textmodes/sgml-mode.el
(autoload 'sgml-mode "sgml-mode" "\
@@ -30338,7 +30277,7 @@ mode-specific menu. `vc-annotate-color-map' and
;;;***
-;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (19714 43298))
+;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (19717 39999))
;;; Generated autoloads from vc/vc-bzr.el
(defconst vc-bzr-admin-dirname ".bzr" "\
@@ -30433,13 +30372,6 @@ case, and the process object in the asynchronous case.
;;;***
-;;;### (autoloads nil "vc-hooks" "vc/vc-hooks.el" (19640 47194))
-;;; Generated autoloads from vc/vc-hooks.el
-
-(put 'vc-mode 'risky-local-variable t)
-
-;;;***
-
;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (19714 43298))
;;; Generated autoloads from vc/vc-mtn.el
@@ -32302,13 +32234,6 @@ Default MODIFIER is 'shift.
;;;***
-;;;### (autoloads nil "window" "window.el" (19619 52030))
-;;; Generated autoloads from window.el
-
-(put 'special-display-buffer-names 'risky-local-variable t)
-
-;;;***
-
;;;### (autoloads (winner-mode winner-mode) "winner" "winner.el"
;;;;;; (19591 62571))
;;; Generated autoloads from winner.el
@@ -32636,27 +32561,26 @@ Zone out, completely.
;;;***
-;;;### (autoloads nil nil ("abbrev.el" "bindings.el" "button.el"
-;;;;;; "calc/calc-aent.el" "calc/calc-alg.el" "calc/calc-arith.el"
-;;;;;; "calc/calc-bin.el" "calc/calc-comb.el" "calc/calc-cplx.el"
-;;;;;; "calc/calc-embed.el" "calc/calc-ext.el" "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-undo.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" "case-table.el"
+;;;### (autoloads nil nil ("calc/calc-aent.el" "calc/calc-alg.el"
+;;;;;; "calc/calc-arith.el" "calc/calc-bin.el" "calc/calc-comb.el"
+;;;;;; "calc/calc-cplx.el" "calc/calc-embed.el" "calc/calc-ext.el"
+;;;;;; "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-undo.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"
@@ -32712,41 +32636,36 @@ Zone out, completely.
;;;;;; "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" "cus-face.el" "cus-load.el" "cus-start.el" "custom.el"
-;;;;;; "dframe.el" "dired-aux.el" "dired-x.el" "dos-fns.el" "dos-vars.el"
-;;;;;; "dos-w32.el" "dynamic-setting.el" "emacs-lisp/assoc.el" "emacs-lisp/authors.el"
-;;;;;; "emacs-lisp/avl-tree.el" "emacs-lisp/backquote.el" "emacs-lisp/bindat.el"
-;;;;;; "emacs-lisp/byte-lexbind.el" "emacs-lisp/byte-opt.el" "emacs-lisp/byte-run.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-specs.el"
-;;;;;; "emacs-lisp/cust-print.el" "emacs-lisp/eieio-base.el" "emacs-lisp/eieio-comp.el"
-;;;;;; "emacs-lisp/eieio-custom.el" "emacs-lisp/eieio-datadebug.el"
-;;;;;; "emacs-lisp/eieio-opt.el" "emacs-lisp/eieio-speedbar.el"
-;;;;;; "emacs-lisp/eieio.el" "emacs-lisp/find-gc.el" "emacs-lisp/float-sup.el"
-;;;;;; "emacs-lisp/gulp.el" "emacs-lisp/lisp-mnt.el" "emacs-lisp/lisp-mode.el"
-;;;;;; "emacs-lisp/lisp.el" "emacs-lisp/map-ynp.el" "emacs-lisp/package-x.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/assoc.el"
+;;;;;; "emacs-lisp/authors.el" "emacs-lisp/avl-tree.el" "emacs-lisp/bindat.el"
+;;;;;; "emacs-lisp/byte-lexbind.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-specs.el" "emacs-lisp/cust-print.el"
+;;;;;; "emacs-lisp/eieio-base.el" "emacs-lisp/eieio-comp.el" "emacs-lisp/eieio-custom.el"
+;;;;;; "emacs-lisp/eieio-datadebug.el" "emacs-lisp/eieio-opt.el"
+;;;;;; "emacs-lisp/eieio-speedbar.el" "emacs-lisp/eieio.el" "emacs-lisp/find-gc.el"
+;;;;;; "emacs-lisp/gulp.el" "emacs-lisp/lisp-mnt.el" "emacs-lisp/package-x.el"
;;;;;; "emacs-lisp/regi.el" "emacs-lisp/smie.el" "emacs-lisp/sregex.el"
-;;;;;; "emacs-lisp/syntax.el" "emacs-lisp/tcover-ses.el" "emacs-lisp/tcover-unsafep.el"
-;;;;;; "emacs-lisp/timer.el" "emacs-lock.el" "emulation/cua-gmrk.el"
-;;;;;; "emulation/cua-rect.el" "emulation/edt-lk201.el" "emulation/edt-mapper.el"
-;;;;;; "emulation/edt-pc.el" "emulation/edt-vt100.el" "emulation/tpu-extras.el"
-;;;;;; "emulation/viper-cmd.el" "emulation/viper-ex.el" "emulation/viper-init.el"
-;;;;;; "emulation/viper-keym.el" "emulation/viper-macs.el" "emulation/viper-mous.el"
-;;;;;; "emulation/viper-util.el" "env.el" "epa-hook.el" "erc/erc-backend.el"
-;;;;;; "erc/erc-goodies.el" "erc/erc-ibuffer.el" "erc/erc-lang.el"
-;;;;;; "eshell/em-alias.el" "eshell/em-banner.el" "eshell/em-basic.el"
-;;;;;; "eshell/em-cmpl.el" "eshell/em-dirs.el" "eshell/em-glob.el"
-;;;;;; "eshell/em-hist.el" "eshell/em-ls.el" "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" "facemenu.el"
-;;;;;; "faces.el" "files.el" "finder-inf.el" "foldout.el" "font-lock.el"
-;;;;;; "format-spec.el" "forms-d2.el" "forms-pass.el" "frame.el"
-;;;;;; "fringe.el" "generic-x.el" "gnus/auth-source.el" "gnus/color.el"
-;;;;;; "gnus/compface.el" "gnus/gnus-async.el" "gnus/gnus-bcklg.el"
+;;;;;; "emacs-lisp/tcover-ses.el" "emacs-lisp/tcover-unsafep.el"
+;;;;;; "emacs-lock.el" "emulation/cua-gmrk.el" "emulation/cua-rect.el"
+;;;;;; "emulation/edt-lk201.el" "emulation/edt-mapper.el" "emulation/edt-pc.el"
+;;;;;; "emulation/edt-vt100.el" "emulation/tpu-extras.el" "emulation/viper-cmd.el"
+;;;;;; "emulation/viper-ex.el" "emulation/viper-init.el" "emulation/viper-keym.el"
+;;;;;; "emulation/viper-macs.el" "emulation/viper-mous.el" "emulation/viper-util.el"
+;;;;;; "erc/erc-backend.el" "erc/erc-goodies.el" "erc/erc-ibuffer.el"
+;;;;;; "erc/erc-lang.el" "eshell/em-alias.el" "eshell/em-banner.el"
+;;;;;; "eshell/em-basic.el" "eshell/em-cmpl.el" "eshell/em-dirs.el"
+;;;;;; "eshell/em-glob.el" "eshell/em-hist.el" "eshell/em-ls.el"
+;;;;;; "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" "forms-d2.el"
+;;;;;; "forms-pass.el" "fringe.el" "generic-x.el" "gnus/auth-source.el"
+;;;;;; "gnus/color.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"
@@ -32765,42 +32684,31 @@ Zone out, completely.
;;;;;; "gnus/nnspool.el" "gnus/nntp.el" "gnus/nnvirtual.el" "gnus/nnweb.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" "help.el"
-;;;;;; "hex-util.el" "hfy-cmap.el" "ibuf-ext.el" "indent.el" "international/characters.el"
-;;;;;; "international/charprop.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/mule-conf.el"
-;;;;;; "international/mule.el" "international/ogonek.el" "international/uni-bidi.el"
-;;;;;; "international/uni-category.el" "international/uni-combining.el"
-;;;;;; "international/uni-comment.el" "international/uni-decimal.el"
-;;;;;; "international/uni-decomposition.el" "international/uni-digit.el"
-;;;;;; "international/uni-lowercase.el" "international/uni-mirrored.el"
-;;;;;; "international/uni-name.el" "international/uni-numeric.el"
-;;;;;; "international/uni-old-name.el" "international/uni-titlecase.el"
-;;;;;; "international/uni-uppercase.el" "isearch.el" "jit-lock.el"
-;;;;;; "jka-cmpr-hook.el" "json.el" "kermit.el" "language/burmese.el"
-;;;;;; "language/cham.el" "language/chinese.el" "language/cyrillic.el"
-;;;;;; "language/czech.el" "language/english.el" "language/ethiopic.el"
-;;;;;; "language/european.el" "language/georgian.el" "language/greek.el"
-;;;;;; "language/hanja-util.el" "language/hebrew.el" "language/indian.el"
-;;;;;; "language/japanese.el" "language/khmer.el" "language/korean.el"
-;;;;;; "language/lao.el" "language/misc-lang.el" "language/romanian.el"
-;;;;;; "language/sinhala.el" "language/slovak.el" "language/tai-viet.el"
-;;;;;; "language/thai-word.el" "language/thai.el" "language/tibetan.el"
-;;;;;; "language/utf-8-lang.el" "language/vietnamese.el" "ldefs-boot.el"
-;;;;;; "loadup.el" "mail/blessmail.el" "mail/mailheader.el" "mail/mailpost.el"
-;;;;;; "mail/mspools.el" "mail/rfc2368.el" "mail/rfc822.el" "mail/rmail-spam-filter.el"
-;;;;;; "mail/rmailedit.el" "mail/rmailkwd.el" "mail/rmailmm.el"
-;;;;;; "mail/rmailmsc.el" "mail/rmailsort.el" "mail/rmailsum.el"
-;;;;;; "mail/undigest.el" "md4.el" "mh-e/mh-acros.el" "mh-e/mh-alias.el"
-;;;;;; "mh-e/mh-buffers.el" "mh-e/mh-compat.el" "mh-e/mh-funcs.el"
-;;;;;; "mh-e/mh-gnus.el" "mh-e/mh-identity.el" "mh-e/mh-inc.el"
-;;;;;; "mh-e/mh-junk.el" "mh-e/mh-letter.el" "mh-e/mh-limit.el"
+;;;;;; "gnus/smime.el" "gnus/spam-stat.el" "gnus/spam-wash.el" "hex-util.el"
+;;;;;; "hfy-cmap.el" "ibuf-ext.el" "international/charprop.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" "international/uni-decomposition.el"
+;;;;;; "international/uni-digit.el" "international/uni-lowercase.el"
+;;;;;; "international/uni-mirrored.el" "international/uni-name.el"
+;;;;;; "international/uni-numeric.el" "international/uni-old-name.el"
+;;;;;; "international/uni-titlecase.el" "international/uni-uppercase.el"
+;;;;;; "json.el" "kermit.el" "language/hanja-util.el" "language/thai-word.el"
+;;;;;; "ldefs-boot.el" "mail/blessmail.el" "mail/mailheader.el"
+;;;;;; "mail/mailpost.el" "mail/mspools.el" "mail/rfc2368.el" "mail/rfc822.el"
+;;;;;; "mail/rmail-spam-filter.el" "mail/rmailedit.el" "mail/rmailkwd.el"
+;;;;;; "mail/rmailmm.el" "mail/rmailmsc.el" "mail/rmailsort.el"
+;;;;;; "mail/rmailsum.el" "mail/undigest.el" "md4.el" "mh-e/mh-acros.el"
+;;;;;; "mh-e/mh-alias.el" "mh-e/mh-buffers.el" "mh-e/mh-compat.el"
+;;;;;; "mh-e/mh-funcs.el" "mh-e/mh-gnus.el" "mh-e/mh-identity.el"
+;;;;;; "mh-e/mh-inc.el" "mh-e/mh-junk.el" "mh-e/mh-letter.el" "mh-e/mh-limit.el"
;;;;;; "mh-e/mh-loaddefs.el" "mh-e/mh-mime.el" "mh-e/mh-print.el"
;;;;;; "mh-e/mh-scan.el" "mh-e/mh-search.el" "mh-e/mh-seq.el" "mh-e/mh-show.el"
;;;;;; "mh-e/mh-speed.el" "mh-e/mh-thread.el" "mh-e/mh-tool-bar.el"
-;;;;;; "mh-e/mh-utils.el" "mh-e/mh-xface.el" "minibuffer.el" "mouse-copy.el"
-;;;;;; "mouse.el" "mwheel.el" "net/dns.el" "net/eudc-vars.el" "net/eudcb-bbdb.el"
+;;;;;; "mh-e/mh-utils.el" "mh-e/mh-xface.el" "mouse-copy.el" "mouse.el"
+;;;;;; "mwheel.el" "net/dns.el" "net/eudc-vars.el" "net/eudcb-bbdb.el"
;;;;;; "net/eudcb-ldap.el" "net/eudcb-mab.el" "net/eudcb-ph.el"
;;;;;; "net/gnutls.el" "net/hmac-def.el" "net/hmac-md5.el" "net/imap-hash.el"
;;;;;; "net/imap.el" "net/ldap.el" "net/mairix.el" "net/newsticker.el"
@@ -32824,15 +32732,15 @@ Zone out, completely.
;;;;;; "org/ob-ref.el" "org/ob-ruby.el" "org/ob-sass.el" "org/ob-scheme.el"
;;;;;; "org/ob-screen.el" "org/ob-sh.el" "org/ob-sql.el" "org/ob-sqlite.el"
;;;;;; "org/ob-table.el" "org/org-beamer.el" "org/org-bibtex.el"
-;;;;;; "org/org-colview.el" "org/org-compat.el" "org/org-crypt.el"
-;;;;;; "org/org-ctags.el" "org/org-docview.el" "org/org-entities.el"
-;;;;;; "org/org-exp-blocks.el" "org/org-faces.el" "org/org-gnus.el"
-;;;;;; "org/org-habit.el" "org/org-info.el" "org/org-inlinetask.el"
+;;;;;; "org/org-colview.el" "org/org-compat.el" "org/org-complete.el"
+;;;;;; "org/org-crypt.el" "org/org-ctags.el" "org/org-docview.el"
+;;;;;; "org/org-entities.el" "org/org-exp-blocks.el" "org/org-faces.el"
+;;;;;; "org/org-gnus.el" "org/org-habit.el" "org/org-info.el" "org/org-inlinetask.el"
;;;;;; "org/org-install.el" "org/org-jsinfo.el" "org/org-list.el"
;;;;;; "org/org-mac-message.el" "org/org-macs.el" "org/org-mew.el"
;;;;;; "org/org-mhe.el" "org/org-mks.el" "org/org-mouse.el" "org/org-protocol.el"
;;;;;; "org/org-rmail.el" "org/org-src.el" "org/org-vm.el" "org/org-w3m.el"
-;;;;;; "org/org-wl.el" "patcomp.el" "paths.el" "pgg-def.el" "pgg-parse.el"
+;;;;;; "org/org-wl.el" "patcomp.el" "pgg-def.el" "pgg-parse.el"
;;;;;; "pgg-pgp.el" "pgg-pgp5.el" "play/gamegrid.el" "play/gametree.el"
;;;;;; "play/meese.el" "progmodes/ada-prj.el" "progmodes/cc-align.el"
;;;;;; "progmodes/cc-awk.el" "progmodes/cc-bytecomp.el" "progmodes/cc-cmds.el"
@@ -32842,23 +32750,20 @@ Zone out, completely.
;;;;;; "progmodes/ebnf-otz.el" "progmodes/ebnf-yac.el" "progmodes/idlw-complete-structtag.el"
;;;;;; "progmodes/idlw-help.el" "progmodes/idlw-toolbar.el" "progmodes/mantemp.el"
;;;;;; "progmodes/xscheme.el" "ps-def.el" "ps-mule.el" "ps-samp.el"
-;;;;;; "register.el" "replace.el" "rfn-eshadow.el" "saveplace.el"
-;;;;;; "sb-image.el" "scroll-bar.el" "select.el" "simple.el" "soundex.el"
-;;;;;; "startup.el" "subdirs.el" "subr.el" "tempo.el" "textmodes/bib-mode.el"
-;;;;;; "textmodes/fill.el" "textmodes/makeinfo.el" "textmodes/page-ext.el"
-;;;;;; "textmodes/page.el" "textmodes/paragraphs.el" "textmodes/refbib.el"
+;;;;;; "saveplace.el" "sb-image.el" "scroll-bar.el" "select.el"
+;;;;;; "soundex.el" "subdirs.el" "tempo.el" "textmodes/bib-mode.el"
+;;;;;; "textmodes/makeinfo.el" "textmodes/page-ext.el" "textmodes/refbib.el"
;;;;;; "textmodes/refer.el" "textmodes/reftex-auc.el" "textmodes/reftex-dcr.el"
;;;;;; "textmodes/reftex-ref.el" "textmodes/reftex-sel.el" "textmodes/reftex-toc.el"
-;;;;;; "textmodes/texnfo-upd.el" "textmodes/text-mode.el" "timezone.el"
-;;;;;; "tooltip.el" "tree-widget.el" "uniquify.el" "url/url-about.el"
-;;;;;; "url/url-cookie.el" "url/url-dired.el" "url/url-expand.el"
-;;;;;; "url/url-ftp.el" "url/url-history.el" "url/url-imap.el" "url/url-methods.el"
-;;;;;; "url/url-nfs.el" "url/url-proxy.el" "url/url-vars.el" "vc/ediff-diff.el"
-;;;;;; "vc/ediff-init.el" "vc/ediff-merg.el" "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" "version.el"
-;;;;;; "vt-control.el" "vt100-led.el" "w32-fns.el" "w32-vars.el"
-;;;;;; "widget.el" "x-dnd.el") (19714 43806 445397))
+;;;;;; "textmodes/texnfo-upd.el" "timezone.el" "tooltip.el" "tree-widget.el"
+;;;;;; "uniquify.el" "url/url-about.el" "url/url-cookie.el" "url/url-dired.el"
+;;;;;; "url/url-expand.el" "url/url-ftp.el" "url/url-history.el"
+;;;;;; "url/url-imap.el" "url/url-methods.el" "url/url-nfs.el" "url/url-proxy.el"
+;;;;;; "url/url-vars.el" "vc/ediff-diff.el" "vc/ediff-init.el" "vc/ediff-merg.el"
+;;;;;; "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-fns.el"
+;;;;;; "w32-vars.el" "x-dnd.el") (19737 18184 637096))
;;;***
diff --git a/lisp/ledit.el b/lisp/ledit.el
index 4b7b4988b4..09fe500116 100644
--- a/lisp/ledit.el
+++ b/lisp/ledit.el
@@ -1,7 +1,6 @@
;;; ledit.el --- Emacs side of ledit interface
-;; Copyright (C) 1985, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: languages
@@ -154,5 +153,4 @@ do (setq lisp-mode-hook 'ledit-from-lisp-mode)"
(provide 'ledit)
-;; arch-tag: f0f1ca13-8d31-478c-ae1b-b448c55a8faf
;;; ledit.el ends here
diff --git a/lisp/linum.el b/lisp/linum.el
index 4ab4b10a7c..11e6a7f8b4 100644
--- a/lisp/linum.el
+++ b/lisp/linum.el
@@ -1,6 +1,6 @@
;;; linum.el --- display line numbers in the left margin
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Markus Triska <[email protected]>
;; Maintainer: FSF
@@ -202,5 +202,4 @@ and you have to scroll or press \\[recenter-top-bottom] to update the numbers."
(provide 'linum)
-;; arch-tag: dea45631-ed3c-4867-8b49-1c41c80aec6a
;;; linum.el ends here
diff --git a/lisp/loadhist.el b/lisp/loadhist.el
index b255a5d947..3395c41d2f 100644
--- a/lisp/loadhist.el
+++ b/lisp/loadhist.el
@@ -1,7 +1,6 @@
;;; loadhist.el --- lisp functions for working with feature groups
-;; Copyright (C) 1995, 1998, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Eric S. Raymond <[email protected]>
;; Maintainer: FSF
@@ -267,5 +266,4 @@ something strange, such as redefining an Emacs function."
(provide 'loadhist)
-;; arch-tag: 70bb846a-c413-4f01-bf88-78dba4ac0798
;;; loadhist.el ends here
diff --git a/lisp/loadup.el b/lisp/loadup.el
index d13e38c0b3..b884adb5b1 100644
--- a/lisp/loadup.el
+++ b/lisp/loadup.el
@@ -1,7 +1,7 @@
;;; loadup.el --- load up standardly loaded Lisp files for Emacs
-;; Copyright (C) 1985, 1986, 1992, 1994, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1986, 1992, 1994, 2001-2011
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
@@ -292,46 +292,16 @@
(error nil)))
(message "Finding pointers to doc strings...done")
-;;;Note: You can cause additional libraries to be preloaded
-;;;by writing a site-init.el that loads them.
-;;;See also "site-load" above.
+;; Note: You can cause additional libraries to be preloaded
+;; by writing a site-init.el that loads them.
+;; See also "site-load" above.
(load "site-init" t)
(setq current-load-list nil)
-;; Write the value of load-history into fns-VERSION.el,
-;; then clear out load-history.
-;; (if (or (equal (nth 3 command-line-args) "dump")
-;; (equal (nth 4 command-line-args) "dump"))
-;; (let ((buffer-undo-list t))
-;; (princ "(setq load-history\n" (current-buffer))
-;; (princ " (nconc load-history\n" (current-buffer))
-;; (princ " '(" (current-buffer))
-;; (let ((tem load-history))
-;; (while tem
-;; (prin1 (car tem) (current-buffer))
-;; (terpri (current-buffer))
-;; (if (cdr tem)
-;; (princ " " (current-buffer)))
-;; (setq tem (cdr tem))))
-;; (princ ")))\n" (current-buffer))
-;; (write-region (point-min) (point-max)
-;; (expand-file-name
-;; (cond
-;; ((eq system-type 'ms-dos)
-;; "../lib-src/fns.el")
-;; ((eq system-type 'windows-nt)
-;; (format "../../../lib-src/fns-%s.el" emacs-version))
-;; (t
-;; (format "../lib-src/fns-%s.el" emacs-version)))
-;; invocation-directory))
-;; (erase-buffer)
-;; (setq load-history nil))
-;; (setq symbol-file-load-history-loaded t))
-;; We don't use this fns-*.el file. Instead we keep the data in PURE space.
+;; We keep the load-history data in PURE space.
;; Make sure that the spine of the list is not in pure space because it can
;; be destructively mutated in lread.c:build_load_history.
(setq load-history (mapcar 'purecopy load-history))
-(setq symbol-file-load-history-loaded t)
(set-buffer-modified-p nil)
@@ -372,7 +342,7 @@
(dump-emacs "emacs" "temacs")
(message "%d pure bytes used" pure-bytes-used)
;; Recompute NAME now, so that it isn't set when we dump.
- (if (not (or (memq system-type '(ms-dos windows-nt cygwin))
+ (if (not (or (memq system-type '(ms-dos windows-nt))
;; Don't bother adding another name if we're just
;; building bootstrap-emacs.
(equal (nth 3 command-line-args) "bootstrap")
diff --git a/lisp/locate.el b/lisp/locate.el
index 4c4312b959..c78dd5aa34 100644
--- a/lisp/locate.el
+++ b/lisp/locate.el
@@ -1,7 +1,6 @@
;;; locate.el --- interface to the locate command
-;; Copyright (C) 1996, 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Peter Breton <[email protected]>
;; Keywords: unix files
diff --git a/lisp/longlines.el b/lisp/longlines.el
index 23b126c69e..8843b1663f 100644
--- a/lisp/longlines.el
+++ b/lisp/longlines.el
@@ -1,6 +1,6 @@
;;; longlines.el --- automatically wrap long lines -*- coding:utf-8 -*-
-;; Copyright (C) 2000, 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2001, 2004-2011 Free Software Foundation, Inc.
;; Authors: Kai Grossjohann <[email protected]>
;; Alex Schroeder <[email protected]>
@@ -503,5 +503,4 @@ This is called by `window-configuration-change-hook'."
(provide 'longlines)
-;; arch-tag: 3489d225-5506-47b9-8659-d8807b77c624
;;; longlines.el ends here
diff --git a/lisp/lpr.el b/lisp/lpr.el
index 3b91172a7e..709f992b2b 100644
--- a/lisp/lpr.el
+++ b/lisp/lpr.el
@@ -1,7 +1,7 @@
;;; lpr.el --- print Emacs buffer on line printer
-;; Copyright (C) 1985, 1988, 1992, 1994, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1988, 1992, 1994, 2001-2011
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: unix
@@ -337,5 +337,4 @@ The characters tab, linefeed, space, return and formfeed are not affected."
(provide 'lpr)
-;; arch-tag: 21c3f821-ebec-4ca9-ac67-a81e4b75c62a
;;; lpr.el ends here
diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el
index 58ed6685dc..55ec835831 100644
--- a/lisp/ls-lisp.el
+++ b/lisp/ls-lisp.el
@@ -1,7 +1,6 @@
;;; ls-lisp.el --- emulate insert-directory completely in Emacs Lisp
-;; Copyright (C) 1992, 1994, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1994, 2000-2011 Free Software Foundation, Inc.
;; Author: Sebastian Kremer <[email protected]>
;; Modified by: Francis J. Wright <[email protected]>
diff --git a/lisp/macros.el b/lisp/macros.el
index cbceb96fad..b4f38b7db8 100644
--- a/lisp/macros.el
+++ b/lisp/macros.el
@@ -1,7 +1,7 @@
;;; macros.el --- non-primitive commands for keyboard macros
-;; Copyright (C) 1985, 1986, 1987, 1992, 1994, 1995, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1992, 1994-1995, 2001-2011
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: abbrev
@@ -283,5 +283,4 @@ and then select the region of un-tablified names and use
(provide 'macros)
-;; arch-tag: 346ed1a5-1220-4bc8-b533-961ee704361f
;;; macros.el ends here
diff --git a/lisp/mail/binhex.el b/lisp/mail/binhex.el
index 42d2f35bae..5332c0f14b 100644
--- a/lisp/mail/binhex.el
+++ b/lisp/mail/binhex.el
@@ -1,7 +1,6 @@
-;;; binhex.el --- elisp native binhex decode
+;;; binhex.el --- decode BinHex-encoded text
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Shenghuo Zhu <[email protected]>
;; Keywords: binhex news
@@ -23,6 +22,11 @@
;;; Commentary:
+;; BinHex is a binary-to-text encoding scheme similar to uuencode.
+;; The command `binhex-decode-region' decodes BinHex-encoded text, via
+;; the external program "hexbin" if that is available, or an Emacs
+;; Lisp implementation if not.
+
;;; Code:
(eval-when-compile (require 'cl))
diff --git a/lisp/mail/blessmail.el b/lisp/mail/blessmail.el
index 545350170e..b614fffb69 100644
--- a/lisp/mail/blessmail.el
+++ b/lisp/mail/blessmail.el
@@ -1,7 +1,6 @@
;;; blessmail.el --- decide whether movemail needs special privileges -*- no-byte-compile: t -*-
-;; Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
@@ -66,5 +65,4 @@
(write-region (point-min) (point-max) "blessmail")
(kill-emacs)
-;; arch-tag: c3329fe2-f945-41a9-8b00-b4b038ff182f
;;; blessmail.el ends here
diff --git a/lisp/mail/emacsbug.el b/lisp/mail/emacsbug.el
index e6da474604..a621647bcf 100644
--- a/lisp/mail/emacsbug.el
+++ b/lisp/mail/emacsbug.el
@@ -1,7 +1,6 @@
;;; emacsbug.el --- command to report Emacs bugs to appropriate mailing list
-;; Copyright (C) 1985, 1994, 1997, 1998, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985, 1994, 1997-1998, 2000-2011
;; Free Software Foundation, Inc.
;; Author: K. Shane Hartman
@@ -33,6 +32,8 @@
;;; Code:
+(require 'url-util)
+
(defgroup emacsbug nil
"Sending Emacs bug reports."
:group 'maint
@@ -78,6 +79,12 @@ Used for querying duplicates and linking to existing bugs.")
(declare-function message-sort-headers "message" ())
(defvar message-strip-special-text-properties)
+(defun report-emacs-bug-can-use-osx-open ()
+ "Check if OSX open can be used to insert bug report into mailer"
+ (and (featurep 'ns)
+ (equal (executable-find "open") "/usr/bin/open")
+ (memq system-type '(darwin))))
+
(defun report-emacs-bug-can-use-xdg-email ()
"Check if xdg-email can be used, i.e. we are on Gnome, KDE or xfce4."
(and (getenv "DISPLAY")
@@ -117,10 +124,15 @@ Used for querying duplicates and linking to existing bugs.")
(if (> (point-max) (point))
(buffer-substring-no-properties (point) (point-max))))))
(if (and to subject body)
- (start-process "xdg-email" nil "xdg-email"
- "--subject" subject
- "--body" body
- (concat "mailto:" to))
+ (if (report-emacs-bug-can-use-osx-open)
+ (start-process "/usr/bin/open" nil "open"
+ (concat "mailto:" to
+ "?subject=" (url-hexify-string subject)
+ "&body=" (url-hexify-string body)))
+ (start-process "xdg-email" nil "xdg-email"
+ "--subject" subject
+ "--body" body
+ (concat "mailto:" to)))
(error "Subject, To or body not found")))))
;;;###autoload
@@ -142,7 +154,8 @@ Prompts for bug subject. Leaves you in a mail buffer."
(prompt-properties '(field emacsbug-prompt
intangible but-helpful
rear-nonsticky t))
- (can-xdg-email (report-emacs-bug-can-use-xdg-email))
+ (can-insert-mail (or (report-emacs-bug-can-use-xdg-email)
+ (report-emacs-bug-can-use-osx-open)))
user-point message-end-point)
(setq message-end-point
(with-current-buffer (get-buffer-create "*Messages*")
@@ -276,7 +289,7 @@ usually do not have translators to read other languages for them.\n\n")
;; This is so the user has to type something in order to send easily.
(use-local-map (nconc (make-sparse-keymap) (current-local-map)))
(define-key (current-local-map) "\C-c\C-i" 'report-emacs-bug-info)
- (if can-xdg-email
+ (if can-insert-mail
(define-key (current-local-map) "\C-cm"
'report-emacs-bug-insert-to-mailer))
(setq report-emacs-bug-send-command (get mail-user-agent 'sendfunc)
@@ -293,7 +306,7 @@ usually do not have translators to read other languages for them.\n\n")
report-emacs-bug-send-command))))
(princ (substitute-command-keys
" Type \\[kill-buffer] RET to cancel (don't send it).\n"))
- (if can-xdg-email
+ (if can-insert-mail
(princ (substitute-command-keys
" Type \\[report-emacs-bug-insert-to-mailer] to insert text to you preferred mail program.\n")))
(terpri)
diff --git a/lisp/mail/feedmail.el b/lisp/mail/feedmail.el
index 5c6da623fe..597344fb88 100644
--- a/lisp/mail/feedmail.el
+++ b/lisp/mail/feedmail.el
@@ -2662,5 +2662,4 @@ been weeded out."
(provide 'feedmail)
-;; arch-tag: ec27b380-11c0-4dfd-8436-f636cf2bb992
;;; feedmail.el ends here
diff --git a/lisp/mail/footnote.el b/lisp/mail/footnote.el
index 5855d4496f..4a4ded2288 100644
--- a/lisp/mail/footnote.el
+++ b/lisp/mail/footnote.el
@@ -1,7 +1,6 @@
;;; footnote.el --- footnote support for message mode -*- coding: iso-latin-1;-*-
-;; Copyright (C) 1997, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Steven L Baur <[email protected]>
;; Keywords: mail, news
@@ -797,5 +796,4 @@ started, play around with the following keys:
(provide 'footnote)
-;; arch-tag: 9bcfb6d7-2161-4caf-8793-700f62400398
;;; footnote.el ends here
diff --git a/lisp/mail/hashcash.el b/lisp/mail/hashcash.el
index efa27c3305..8343cd086b 100644
--- a/lisp/mail/hashcash.el
+++ b/lisp/mail/hashcash.el
@@ -1,7 +1,6 @@
;;; hashcash.el --- Add hashcash payments to email
-;; Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2010
-;; Free Software Foundation
+;; Copyright (C) 2003-2005, 2007-2011 Free Software Foundation, Inc.
;; Written by: Paul Foley <[email protected]> (1997-2002)
;; Maintainer: Paul Foley <[email protected]>
diff --git a/lisp/mail/mail-extr.el b/lisp/mail/mail-extr.el
index 9b958e41b0..c3a7da4182 100644
--- a/lisp/mail/mail-extr.el
+++ b/lisp/mail/mail-extr.el
@@ -1,8 +1,6 @@
;;; mail-extr.el --- extract full name and address from RFC 822 mail header -*- coding: utf-8 -*-
-;; Copyright (C) 1991, 1992, 1993, 1994, 1997, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1991-1994, 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Joe Wells <[email protected]>
;; Maintainer: FSF
diff --git a/lisp/mail/mail-hist.el b/lisp/mail/mail-hist.el
index f129f29ea3..d824c28280 100644
--- a/lisp/mail/mail-hist.el
+++ b/lisp/mail/mail-hist.el
@@ -1,7 +1,6 @@
;;; mail-hist.el --- headers and message body history for outgoing mail
-;; Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Karl Fogel <[email protected]>
;; Created: March, 1994
@@ -293,5 +292,4 @@ received mail."
(provide 'mail-hist)
-;; arch-tag: 9ff9a07c-9dca-482d-ba87-54f42778559d
;;; mail-hist.el ends here
diff --git a/lisp/mail/mail-utils.el b/lisp/mail/mail-utils.el
index a8def04100..cb9ee7e031 100644
--- a/lisp/mail/mail-utils.el
+++ b/lisp/mail/mail-utils.el
@@ -1,7 +1,6 @@
;;; mail-utils.el --- utility functions used both by rmail and rnews
-;; Copyright (C) 1985, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: mail, news
@@ -28,10 +27,6 @@
;;; Code:
-;;; We require lisp-mode to make sure that lisp-mode-syntax-table has
-;;; been initialized.
-(require 'lisp-mode)
-
;;;###autoload
(defcustom mail-use-rfc822 nil
"If non-nil, use a full, hairy RFC822 parser on mail addresses.
@@ -186,65 +181,44 @@ Return a modified address list."
(mapconcat 'identity (rfc822-addresses address) ", "))
(let (pos)
- ;; Detect nested comments.
- (if (string-match "[ \t]*(\\([^)\\]\\|\\\\.\\|\\\\\n\\)*(" address)
- ;; Strip nested comments.
- (with-current-buffer (get-buffer-create " *temp*")
- (erase-buffer)
- (insert address)
- (set-syntax-table lisp-mode-syntax-table)
- (goto-char 1)
- (while (search-forward "(" nil t)
- (forward-char -1)
- (skip-chars-backward " \t")
- (delete-region (point)
- (save-excursion
- (condition-case ()
- (forward-sexp 1)
- (error (goto-char (point-max))))
- (point))))
- (setq address (buffer-string))
- (erase-buffer))
- ;; Strip non-nested comments an easier way.
- (while (setq pos (string-match
- ;; This doesn't hack rfc822 nested comments
- ;; `(xyzzy (foo) whinge)' properly. Big deal.
- "[ \t]*(\\([^)\\]\\|\\\\.\\|\\\\\n\\)*)"
- address))
- (setq address (replace-match "" nil nil address 0))))
+ ;; Strip comments.
+ (while (setq pos (string-match
+ "[ \t]*(\\([^()\\]\\|\\\\.\\|\\\\\n\\)*)"
+ address))
+ (setq address (replace-match "" nil nil address 0)))
- ;; strip surrounding whitespace
- (string-match "\\`[ \t\n]*" address)
- (setq address (substring address
- (match-end 0)
- (string-match "[ \t\n]*\\'" address
- (match-end 0))))
+ ;; strip surrounding whitespace
+ (string-match "\\`[ \t\n]*" address)
+ (setq address (substring address
+ (match-end 0)
+ (string-match "[ \t\n]*\\'" address
+ (match-end 0))))
- ;; strip `quoted' names (This is supposed to hack `"Foo Bar" <bar@host>')
- (setq pos 0)
- (while (setq pos (string-match
+ ;; strip `quoted' names (This is supposed to hack `"Foo Bar" <bar@host>')
+ (setq pos 0)
+ (while (setq pos (string-match
"\\([ \t]?\\)\\([ \t]*\"\\([^\"\\]\\|\\\\.\\|\\\\\n\\)*\"[ \t\n]*\\)"
address pos))
- ;; If the next thing is "@", we have "foo bar"@host. Leave it.
- (if (and (> (length address) (match-end 0))
- (= (aref address (match-end 0)) ?@))
- (setq pos (match-end 0))
- ;; Otherwise discard the "..." part.
- (setq address (replace-match "" nil nil address 2))))
- ;; If this address contains <...>, replace it with just
- ;; the part between the <...>.
- (while (setq pos (string-match "\\(,\\s-*\\|\\`\\)\\([^,]*<\\([^>,:]*\\)>[^,]*\\)\\(\\s-*,\\|\\'\\)"
- address))
- (setq address (replace-match (match-string 3 address)
- nil 'literal address 2)))
- address))))
+ ;; If the next thing is "@", we have "foo bar"@host. Leave it.
+ (if (and (> (length address) (match-end 0))
+ (= (aref address (match-end 0)) ?@))
+ (setq pos (match-end 0))
+ ;; Otherwise discard the "..." part.
+ (setq address (replace-match "" nil nil address 2))))
+ ;; If this address contains <...>, replace it with just
+ ;; the part between the <...>.
+ (while (setq pos (string-match "\\(,\\s-*\\|\\`\\)\\([^,]*<\\([^>,:]*\\)>[^,]*\\)\\(\\s-*,\\|\\'\\)"
+ address))
+ (setq address (replace-match (match-string 3 address)
+ nil 'literal address 2)))
+ address))))
-;;; The following piece of ugliness is legacy code. The name was an
-;;; unfortunate choice --- a flagrant violation of the Emacs Lisp
-;;; coding conventions. `mail-dont-reply-to' would have been
-;;; infinitely better. Also, `rmail-dont-reply-to-names' might have
-;;; been better named `mail-dont-reply-to-names' and sourced from this
-;;; file instead of in rmail.el. Yuck. -pmr
+;; The following piece of ugliness is legacy code. The name was an
+;; unfortunate choice --- a flagrant violation of the Emacs Lisp
+;; coding conventions. `mail-dont-reply-to' would have been
+;; infinitely better. Also, `rmail-dont-reply-to-names' might have
+;; been better named `mail-dont-reply-to-names' and sourced from this
+;; file instead of in rmail.el. Yuck. -pmr
(defun rmail-dont-reply-to (destinations)
"Prune addresses from DESTINATIONS, a list of recipient addresses.
All addresses matching `rmail-dont-reply-to-names' are removed from
@@ -398,13 +372,19 @@ matches may be returned from the message body."
(defun mail-mbox-from ()
"Return an mbox \"From \" line for the current message.
The buffer should be narrowed to just the header."
- (let ((from (or (mail-fetch-field "from")
- (mail-fetch-field "really-from")
- (mail-fetch-field "sender")
- (mail-fetch-field "return-path")
- "unknown"))
- (date (mail-fetch-field "date")))
- (format "From %s %s\n" (mail-strip-quoted-names from)
+ (let* ((from (mail-strip-quoted-names (or (mail-fetch-field "from")
+ (mail-fetch-field "really-from")
+ (mail-fetch-field "sender")
+ (mail-fetch-field "return-path")
+ "unknown")))
+ (date (mail-fetch-field "date"))
+ ;; A From: header can contain multiple addresses, a "From "
+ ;; line must contain only one. (Bug#7760)
+ ;; See eg RFC 5322, 3.6.2. Originator Fields.
+ (end (string-match "[ \t]*[,\n]" from)))
+ (format "From %s %s\n" (if end
+ (substring from 0 end)
+ from)
(or (and date
(ignore-errors
(current-time-string (date-to-time date))))
diff --git a/lisp/mail/mailabbrev.el b/lisp/mail/mailabbrev.el
index c1a6c39ad6..b4827cf10b 100644
--- a/lisp/mail/mailabbrev.el
+++ b/lisp/mail/mailabbrev.el
@@ -1,7 +1,6 @@
;;; mailabbrev.el --- abbrev-expansion of mail aliases
-;; Copyright (C) 1985, 1986, 1987, 1992, 1993, 1996, 1997, 2000, 2001,
-;; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1987, 1992-1993, 1996-1997, 2000-2011
;; Free Software Foundation, Inc.
;; Author: Jamie Zawinski <[email protected]; now [email protected]>
@@ -609,5 +608,4 @@ In other respects, this behaves like `end-of-buffer', which see."
(provide 'mailabbrev)
-;; arch-tag: 5aa2d901-73f8-4ad7-b73c-4802282ad2ff
;;; mailabbrev.el ends here
diff --git a/lisp/mail/mailalias.el b/lisp/mail/mailalias.el
index 8bf5305895..fb6ee674b3 100644
--- a/lisp/mail/mailalias.el
+++ b/lisp/mail/mailalias.el
@@ -1,7 +1,7 @@
;;; mailalias.el --- expand and complete mailing address aliases
-;; Copyright (C) 1985, 1987, 1995, 1996, 1997, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1987, 1995-1997, 2001-2011
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: mail
@@ -240,6 +240,11 @@ removed from alias expansions."
(defun build-mail-aliases (&optional file)
"Read mail aliases from personal aliases file and set `mail-aliases'.
By default, this is the file specified by `mail-personal-alias-file'."
+ (interactive
+ (list
+ (read-file-name (format "Read mail alias file (default %s): "
+ mail-personal-alias-file)
+ nil mail-personal-alias-file t)))
(setq file (expand-file-name (or file mail-personal-alias-file)))
;; In case mail-aliases is t, make sure define-mail-alias
;; does not recursively call build-mail-aliases.
@@ -562,5 +567,4 @@ See `mail-directory-stream'."
(provide 'mailalias)
-;; arch-tag: 1d6a0f87-eb34-4d45-8816-60c1b952cf46
;;; mailalias.el ends here
diff --git a/lisp/mail/mailclient.el b/lisp/mail/mailclient.el
index 2a5d77d4f7..ab9f366274 100644
--- a/lisp/mail/mailclient.el
+++ b/lisp/mail/mailclient.el
@@ -1,6 +1,6 @@
;;; mailclient.el --- mail sending via system's mail client. -*- byte-compile-dynamic: t -*-
-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation
+;; Copyright (C) 2005-2011 Free Software Foundation
;; Author: David Reitter <[email protected]>
;; Keywords: mail
@@ -174,5 +174,4 @@ The mail client is taken to be the handler of mailto URLs."
(provide 'mailclient)
-;; arch-tag: 35d10fc8-a1bc-4f29-a4e6-c288e53578ef
;;; mailclient.el ends here
diff --git a/lisp/mail/mailheader.el b/lisp/mail/mailheader.el
index 939e499a02..896400068c 100644
--- a/lisp/mail/mailheader.el
+++ b/lisp/mail/mailheader.el
@@ -1,7 +1,6 @@
;;; mailheader.el --- mail header parsing, merging, formatting
-;; Copyright (C) 1996, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Erik Naggum <[email protected]>
;; Keywords: tools, mail, news
diff --git a/lisp/mail/mailpost.el b/lisp/mail/mailpost.el
index 0790375388..7c4bea830d 100644
--- a/lisp/mail/mailpost.el
+++ b/lisp/mail/mailpost.el
@@ -102,5 +102,4 @@ site-init."
(provide 'mailpost)
-;; arch-tag: 1f8ca085-60a6-4eac-8efb-69ffec2fa124
;;; mailpost.el ends here
diff --git a/lisp/mail/metamail.el b/lisp/mail/metamail.el
index 47326b636a..9269a24c4c 100644
--- a/lisp/mail/metamail.el
+++ b/lisp/mail/metamail.el
@@ -1,7 +1,6 @@
;;; metamail.el --- Metamail interface for GNU Emacs
-;; Copyright (C) 1993, 1996, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Masanobu UMEDA <[email protected]>
;; Keywords: mail, news, mime, multimedia
@@ -200,5 +199,4 @@ redisplayed as output is inserted."
(provide 'metamail)
-;; arch-tag: 52c0cb6f-d800-4776-9789-f0275cb5490e
;;; metamail.el ends here
diff --git a/lisp/mail/mspools.el b/lisp/mail/mspools.el
index 3ca0750aaf..862cb2a1ee 100644
--- a/lisp/mail/mspools.el
+++ b/lisp/mail/mspools.el
@@ -1,7 +1,6 @@
;;; mspools.el --- show mail spools waiting to be read
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Stephen Eglen <[email protected]>
;; Maintainer: Stephen Eglen <[email protected]>
diff --git a/lisp/mail/reporter.el b/lisp/mail/reporter.el
index 877cc5aa39..45700d4d60 100644
--- a/lisp/mail/reporter.el
+++ b/lisp/mail/reporter.el
@@ -1,7 +1,6 @@
;;; reporter.el --- customizable bug reporting of lisp programs
-;; Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1998, 2001-2011 Free Software Foundation, Inc.
;; Author: 1993-1998 Barry A. Warsaw
;; Maintainer: FSF
@@ -407,5 +406,4 @@ mail-sending package is used for editing and sending the message."
(provide 'reporter)
-;; arch-tag: 33612ff4-fbbc-4be2-b183-560ce9e0199b
;;; reporter.el ends here
diff --git a/lisp/mail/rfc2368.el b/lisp/mail/rfc2368.el
index 0c91fcd839..d3f824fe50 100644
--- a/lisp/mail/rfc2368.el
+++ b/lisp/mail/rfc2368.el
@@ -1,7 +1,6 @@
;;; rfc2368.el --- support for rfc2368
-;; Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Sen Nagata <[email protected]>
;; Keywords: mail
diff --git a/lisp/mail/rfc822.el b/lisp/mail/rfc822.el
index 2bdf16eff9..9e4e60e680 100644
--- a/lisp/mail/rfc822.el
+++ b/lisp/mail/rfc822.el
@@ -1,7 +1,6 @@
;;; rfc822.el --- hairy rfc822 parser for mail and news and suchlike
-;; Copyright (C) 1986, 1987, 1990, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986-1987, 1990, 2001-2011 Free Software Foundation, Inc.
;; Author: Richard Mlynarik <[email protected]>
;; Maintainer: FSF
@@ -324,5 +323,4 @@
(provide 'rfc822)
-;; arch-tag: 5d388a24-e173-40fb-9b8e-85269de44b37
;;; rfc822.el ends here
diff --git a/lisp/mail/rmail-spam-filter.el b/lisp/mail/rmail-spam-filter.el
index 33f3be30cc..70226b2696 100644
--- a/lisp/mail/rmail-spam-filter.el
+++ b/lisp/mail/rmail-spam-filter.el
@@ -1,7 +1,6 @@
;;; rmail-spam-filter.el --- spam filter for Rmail, the Emacs mail reader
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Keywords: email, spam, filter, rmail
;; Author: Eli Tziperman <eli AT deas.harvard.edu>
;; Package: rmail
@@ -555,5 +554,4 @@ checks to see if the old format is used, and updates it if necessary."
(provide 'rmail-spam-filter)
-;; arch-tag: 03e1d45d-b72f-4dd7-8f04-e7fd78249746
;;; rmail-spam-fitler ends here
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index ffb52683bd..7e1cbe4ea8 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -1,7 +1,6 @@
;;; rmail.el --- main code of "RMAIL" mail reader for Emacs
-;; Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1988, 1993-1998, 2000-2011
;; Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -2691,75 +2690,72 @@ The current mail message becomes the message displayed."
(message "Showing message %d" msg))
(narrow-to-region beg end)
(goto-char beg)
- (if (and rmail-enable-mime
- (re-search-forward "mime-version: 1.0" nil t))
- (let ((rmail-buffer mbox-buf)
- (rmail-view-buffer view-buf))
- (funcall rmail-show-mime-function))
- (setq body-start (search-forward "\n\n" nil t))
- (narrow-to-region beg (point))
- (goto-char beg)
- (save-excursion
- (if (re-search-forward "^X-Coding-System: *\\(.*\\)$" nil t)
- (setq coding-system (intern (match-string 1)))
- (setq coding-system (rmail-get-coding-system))))
- (setq character-coding (mail-fetch-field "content-transfer-encoding")
- is-text-message (rmail-is-text-p))
- (if character-coding
- (setq character-coding (downcase character-coding)))
- (narrow-to-region beg end)
- ;; Decode the message body into an empty view buffer using a
- ;; unibyte temporary buffer where the character decoding takes
- ;; place.
- (with-current-buffer rmail-view-buffer
- (erase-buffer))
- (if (null character-coding)
- ;; Do it directly since that is fast.
- (rmail-decode-region body-start end coding-system view-buf)
- ;; Can this be done directly, skipping the temp buffer?
- (with-temp-buffer
- (set-buffer-multibyte nil)
- (insert-buffer-substring mbox-buf body-start end)
- (cond
- ((string= character-coding "quoted-printable")
- ;; See bug#5441.
- (or (mail-unquote-printable-region (point-min) (point-max)
- nil t 'unibyte)
- (message "Malformed MIME quoted-printable message")))
- ((and (string= character-coding "base64") is-text-message)
- (condition-case err
- (base64-decode-region (point-min) (point-max))
- (error (message "%s" (cdr err)))))
- ((eq character-coding 'uuencode)
- (error "uuencoded messages are not supported yet"))
- (t))
- (rmail-decode-region (point-min) (point-max)
- coding-system view-buf))))
(with-current-buffer rmail-view-buffer
;; We give the view buffer a buffer-local value of
;; rmail-header-style based on the binding in effect when
;; this function is called; `rmail-toggle-headers' can
;; inspect this value to determine how to toggle.
- (set (make-local-variable 'rmail-header-style) header-style)
- ;; Unquote quoted From lines
- (goto-char (point-min))
- (while (re-search-forward "^>+From " 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)
- ;; Add the separator (blank line) between headers and body;
+ (set (make-local-variable 'rmail-header-style) header-style))
+ (if (and rmail-enable-mime
+ (re-search-forward "mime-version: 1.0" nil t))
+ (let ((rmail-buffer mbox-buf)
+ (rmail-view-buffer view-buf))
+ (funcall rmail-show-mime-function))
+ (setq body-start (search-forward "\n\n" nil t))
+ (narrow-to-region beg (point))
+ (goto-char beg)
+ (save-excursion
+ (if (re-search-forward "^X-Coding-System: *\\(.*\\)$" nil t)
+ (setq coding-system (intern (match-string 1)))
+ (setq coding-system (rmail-get-coding-system))))
+ (setq character-coding (mail-fetch-field "content-transfer-encoding")
+ is-text-message (rmail-is-text-p))
+ (if character-coding
+ (setq character-coding (downcase character-coding)))
+ (narrow-to-region beg end)
+ ;; Decode the message body into an empty view buffer using a
+ ;; unibyte temporary buffer where the character decoding takes
+ ;; place.
+ (with-current-buffer rmail-view-buffer
+ (erase-buffer))
+ (if (null character-coding)
+ ;; Do it directly since that is fast.
+ (rmail-decode-region body-start end coding-system view-buf)
+ ;; Can this be done directly, skipping the temp buffer?
+ (with-temp-buffer
+ (set-buffer-multibyte nil)
+ (insert-buffer-substring mbox-buf body-start end)
+ (cond
+ ((string= character-coding "quoted-printable")
+ ;; See bug#5441.
+ (or (mail-unquote-printable-region (point-min) (point-max)
+ nil t 'unibyte)
+ (message "Malformed MIME quoted-printable message")))
+ ((and (string= character-coding "base64") is-text-message)
+ (condition-case err
+ (base64-decode-region (point-min) (point-max))
+ (error (message "%s" (cdr err)))))
+ ((eq character-coding 'uuencode)
+ (error "uuencoded messages are not supported yet"))
+ (t))
+ (rmail-decode-region (point-min) (point-max)
+ coding-system view-buf)))
+ (with-current-buffer rmail-view-buffer
+ ;; 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))
+ (goto-char (point-min)))
+ ;; Copy the headers to the front of the message view buffer.
+ (rmail-copy-headers beg end))
;; highlight the message, activate any URL like text and add
;; special highlighting for and quoted material.
(with-current-buffer rmail-view-buffer
- (insert "\n")
(goto-char (point-min))
- ;; Decode the headers according to RFC2047.
- (save-excursion
- (search-forward "\n\n" nil 'move)
- (rfc2047-decode-region (point-min) (point)))
(rmail-highlight-headers)
;(rmail-activate-urls)
;(rmail-process-quoted-material)
@@ -3444,30 +3440,62 @@ does not pop any summary buffer."
;;;; *** Rmail Mailing Commands ***
(defun rmail-start-mail (&optional noerase to subject in-reply-to cc
- replybuffer sendactions same-window others)
- (let (yank-action)
+ replybuffer sendactions same-window
+ other-headers)
+ (let ((switch-function
+ (cond (same-window nil)
+ (rmail-mail-new-frame 'switch-to-buffer-other-frame)
+ (t 'switch-to-buffer-other-window)))
+ yank-action)
(if replybuffer
;; The function used here must behave like insert-buffer wrt
;; point and mark (see doc of sc-cite-original).
(setq yank-action (list 'insert-buffer replybuffer)))
- (setq others (cons (cons "cc" cc) others))
- (setq others (cons (cons "in-reply-to" in-reply-to) others))
- (if same-window
- (compose-mail to subject others
- noerase nil
- yank-action sendactions)
- (if rmail-mail-new-frame
- (prog1
- (compose-mail to subject others
- noerase 'switch-to-buffer-other-frame
- yank-action sendactions)
- ;; This is not a standard frame parameter;
- ;; nothing except sendmail.el looks at it.
- (modify-frame-parameters (selected-frame)
- '((mail-dedicated-frame . t))))
- (compose-mail to subject others
- noerase 'switch-to-buffer-other-window
- yank-action sendactions)))))
+ (push (cons "cc" cc) other-headers)
+ (push (cons "in-reply-to" in-reply-to) other-headers)
+ (prog1
+ (compose-mail to subject other-headers noerase
+ switch-function yank-action sendactions
+ '(rmail-mail-return))
+ (if (eq switch-function 'switch-to-buffer-other-frame)
+ ;; This is not a standard frame parameter; nothing except
+ ;; sendmail.el looks at it.
+ (modify-frame-parameters (selected-frame)
+ '((mail-dedicated-frame . t)))))))
+
+(defun rmail-mail-return ()
+ (cond
+ ;; If there is only one visible frame with no special handling,
+ ;; consider deleting the mail window to return to Rmail.
+ ((or (null (delq (selected-frame) (visible-frame-list)))
+ (not (or (window-dedicated-p (frame-selected-window))
+ (and pop-up-frames (one-window-p))
+ (cdr (assq 'mail-dedicated-frame
+ (frame-parameters))))))
+ (let (rmail-flag summary-buffer)
+ (and (not (one-window-p))
+ (with-current-buffer
+ (window-buffer (next-window (selected-window) 'not))
+ (setq rmail-flag (eq major-mode 'rmail-mode))
+ (setq summary-buffer
+ (and (boundp 'mail-bury-selects-summary)
+ mail-bury-selects-summary
+ (boundp 'rmail-summary-buffer)
+ rmail-summary-buffer
+ (buffer-name rmail-summary-buffer)
+ (not (get-buffer-window rmail-summary-buffer))
+ rmail-summary-buffer))))
+ (if rmail-flag
+ ;; If the Rmail buffer has a summary, show that.
+ (if summary-buffer (switch-to-buffer summary-buffer)
+ (delete-window)))))
+ ;; If the frame was probably made for this buffer, the user
+ ;; probably wants to delete it now.
+ ((display-multi-frame-p)
+ (delete-frame (selected-frame)))
+ ;; The previous frame is where normally they have the Rmail buffer
+ ;; displayed.
+ (t (other-frame -1))))
(defun rmail-mail ()
"Send mail in another window.
@@ -4234,7 +4262,7 @@ encoded string (and the same mask) will decode the string."
;;; Start of automatically extracted autoloads.
;;;### (autoloads (rmail-edit-current-message) "rmailedit" "rmailedit.el"
-;;;;;; "4bf8a5cdfc921b9e30680ee71b7f9ca6")
+;;;;;; "090ad9432c3bf9a6098bb9c3d7c71baf")
;;; Generated autoloads from rmailedit.el
(autoload 'rmail-edit-current-message "rmailedit" "\
@@ -4246,7 +4274,7 @@ Edit the contents of this message.
;;;### (autoloads (rmail-next-labeled-message rmail-previous-labeled-message
;;;;;; rmail-read-label rmail-kill-label rmail-add-label) "rmailkwd"
-;;;;;; "rmailkwd.el" "112240cbb53c402294013cc49987771a")
+;;;;;; "rmailkwd.el" "08c288c88cfe7be50830122c064e3884")
;;; Generated autoloads from rmailkwd.el
(autoload 'rmail-add-label "rmailkwd" "\
@@ -4289,23 +4317,33 @@ With prefix argument N moves forward N messages with these labels.
;;;***
-;;;### (autoloads (rmail-mime) "rmailmm" "rmailmm.el" "ec0bed149baed671125f623e5b012f6f")
+;;;### (autoloads (rmail-mime) "rmailmm" "rmailmm.el" "3e235bdf4c2e54da06abcdd72e7f7649")
;;; Generated autoloads from rmailmm.el
(autoload 'rmail-mime "rmailmm" "\
-Process the current Rmail message as a MIME message.
-This creates a temporary \"*RMAIL*\" buffer holding a decoded
-copy of the message. Inline content-types are handled according to
+Toggle displaying of a MIME message.
+
+The actualy behavior depends on the value of `rmail-enable-mime'.
+
+If `rmail-enable-mime' is t (default), this command change the
+displaying of a MIME message between decoded presentation form
+and raw data.
+
+With ARG, toggle the displaying of the current MIME entity only.
+
+If `rmail-enable-mime' is nil, this creates a temporary
+\"*RMAIL*\" buffer holding a decoded copy of the message. Inline
+content-types are handled according to
`rmail-mime-media-type-handlers-alist'. By default, this
displays text and multipart messages, and offers to download
attachments as specfied by `rmail-mime-attachment-dirs-alist'.
-\(fn)" t nil)
+\(fn &optional ARG)" t nil)
;;;***
;;;### (autoloads (set-rmail-inbox-list) "rmailmsc" "rmailmsc.el"
-;;;;;; "c3575020691d5769bcf08ecc932304c3")
+;;;;;; "ca19b2f8a3e8aa01aa75ca7413f8a5ef")
;;; Generated autoloads from rmailmsc.el
(autoload 'set-rmail-inbox-list "rmailmsc" "\
@@ -4321,7 +4359,7 @@ This applies only to the current session.
;;;### (autoloads (rmail-sort-by-labels rmail-sort-by-lines rmail-sort-by-correspondent
;;;;;; rmail-sort-by-recipient rmail-sort-by-author rmail-sort-by-subject
-;;;;;; rmail-sort-by-date) "rmailsort" "rmailsort.el" "b96e85edd736f23f1e9d54a299268d1e")
+;;;;;; rmail-sort-by-date) "rmailsort" "rmailsort.el" "f297fd33c8f7fa74baf16d2da99acb35")
;;; Generated autoloads from rmailsort.el
(autoload 'rmail-sort-by-date "rmailsort" "\
@@ -4380,7 +4418,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" "666a5db1021cdcba6e68a18a553d65f1")
+;;;;;; rmail-summary) "rmailsum" "rmailsum.el" "76a7ae570a4fa96a9233d0276f52f515")
;;; Generated autoloads from rmailsum.el
(autoload 'rmail-summary "rmailsum" "\
@@ -4428,7 +4466,7 @@ SENDERS is a string of regexps separated by commas.
;;;***
;;;### (autoloads (unforward-rmail-message undigestify-rmail-message)
-;;;;;; "undigest" "undigest.el" "8cf8a8ffa48eeddf0bde388fa8de1783")
+;;;;;; "undigest" "undigest.el" "41e6a48ea63224385c447a944528feb6")
;;; Generated autoloads from undigest.el
(autoload 'undigestify-rmail-message "undigest" "\
diff --git a/lisp/mail/rmailedit.el b/lisp/mail/rmailedit.el
index 02f36fd47e..868ca15923 100644
--- a/lisp/mail/rmailedit.el
+++ b/lisp/mail/rmailedit.el
@@ -1,7 +1,6 @@
;;; rmailedit.el --- "RMAIL edit mode" Edit the current message
-;; Copyright (C) 1985, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1994, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: mail
@@ -399,5 +398,4 @@ HEADER-DIFF should be a return value from `rmail-edit-diff-headers'."
;; generated-autoload-file: "rmail.el"
;; End:
-;; arch-tag: 9524f335-12cc-4e95-9e9b-3208dc30550b
;;; rmailedit.el ends here
diff --git a/lisp/mail/rmailkwd.el b/lisp/mail/rmailkwd.el
index 5c44b5cafa..73542578bf 100644
--- a/lisp/mail/rmailkwd.el
+++ b/lisp/mail/rmailkwd.el
@@ -1,7 +1,6 @@
;;; rmailkwd.el --- part of the "RMAIL" mail reader for Emacs
-;; Copyright (C) 1985, 1988, 1994, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1988, 1994, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: mail
@@ -194,5 +193,4 @@ With prefix argument N moves forward N messages with these labels."
;; generated-autoload-file: "rmail.el"
;; End:
-;; arch-tag: 1149979c-8e47-4333-9629-cf3dc887a6a7
;;; rmailkwd.el ends here
diff --git a/lisp/mail/rmailmm.el b/lisp/mail/rmailmm.el
index 918d2dfc36..127fd8ac35 100644
--- a/lisp/mail/rmailmm.el
+++ b/lisp/mail/rmailmm.el
@@ -1,6 +1,6 @@
;;; rmailmm.el --- MIME decoding and display stuff for RMAIL
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Alexander Pohoyda
;; Alex Schroeder
@@ -53,7 +53,7 @@
;;
;; rmail-mime
;; +- rmail-mime-show <----------------------------------+
-;; +- rmail-mime-process |
+;; +- rmail-mime-process |
;; +- rmail-mime-handle |
;; +- rmail-mime-text-handler |
;; +- rmail-mime-bulk-handler |
@@ -97,7 +97,9 @@ The first item is a regular expression matching a content-type.
The remaining elements are handler functions to run, in order of
decreasing preference. These are called until one returns non-nil.
Note that this only applies to items with an inline Content-Disposition,
-all others are handled by `rmail-mime-bulk-handler'."
+all others are handled by `rmail-mime-bulk-handler'.
+Note also that this alist is ignored when the variable
+`rmail-enable-mime' is non-nil."
:type '(alist :key-type regexp :value-type (repeat function))
:version "23.1"
:group 'rmail-mime)
@@ -131,18 +133,36 @@ automatically display the image in the buffer."
;;; End of user options.
+;;; Global variables that always have let-binding when referred.
+
+(defvar rmail-mime-mbox-buffer nil
+ "Buffer containing the mbox data.
+The value is usually nil, and bound to a proper value while
+processing MIME.")
+
+(defvar rmail-mime-view-buffer nil
+ "Buffer showing a message.
+The value is usually nil, and bound to a proper value while
+processing MIME.")
+
+(defvar rmail-mime-coding-system nil
+ "The first coding-system used for decoding a MIME entity.
+The value is usually nil, and bound to non-nil while inserting
+MIME entities.")
+
;;; MIME-entity object
(defun rmail-mime-entity (type disposition transfer-encoding
- header body children)
- "Retrun a newly created MIME-entity object.
+ display header tagline body children handler)
+ "Retrun a newly created MIME-entity object from arguments.
-A MIME-entity is a vector of 6 elements:
+A MIME-entity is a vector of 9 elements:
- [ TYPE DISPOSITION TRANSFER-ENCODING HEADER BODY CHILDREN ]
-
-TYPE and DISPOSITION correspond to MIME headers Content-Type: and
-Cotent-Disposition: respectively, and has this format:
+ [TYPE DISPOSITION TRANSFER-ENCODING DISPLAY HEADER TAGLINE BODY
+ CHILDREN HANDLER]
+
+TYPE and DISPOSITION correspond to MIME headers Content-Type and
+Cotent-Disposition respectively, and has this format:
\(VALUE (ATTRIBUTE . VALUE) (ATTRIBUTE . VALUE) ...)
@@ -161,31 +181,61 @@ The corresponding TYPE argument must be:
TRANSFER-ENCODING corresponds to MIME header
Content-Transfer-Encoding, and is a lowercased string.
-HEADER and BODY are a cons (BEG . END), where BEG and END specify
-the region of the corresponding part in RMAIL's data (mbox)
-buffer. BODY may be nil. In that case, the current buffer is
-narrowed to the body part.
-
-CHILDREN is a list of MIME-entities for a \"multipart\" entity, and
-nil for the other types."
- (vector type disposition transfer-encoding header body children))
+DISPLAY is a vector [CURRENT NEW], where CURRENT indicates how
+the header, tagline, and body of the entity are displayed now,
+and NEW indicates how their displaying should be updated.
+Both elements are vector [HEADER-DISPLAY TAGLINE-DISPLAY BODY-DISPLAY],
+where each element is a symbol for the corresponding item that
+has these values:
+ nil: not displayed
+ t: displayed by the decoded presentation form
+ raw: displayed by the raw MIME data (for the header and body only)
+
+HEADER and BODY are vectors [BEG END DISPLAY-FLAG], where BEG and
+END specify the region of the header or body lines in RMAIL's
+data (mbox) buffer, and DISPLAY-FLAG non-nil means that the
+header or body is, by default, displayed by the decoded
+presentation form.
+
+TAGLINE is a vector [TAG BULK-DATA DISPLAY-FLAG], where TAG is a
+string indicating the depth and index number of the entity,
+BULK-DATA is a cons (SIZE . TYPE) indicating the size and type of
+an attached data, DISPLAY-FLAG non-nil means that the tagline is,
+by default, displayed.
+
+CHILDREN is a list of child MIME-entities. A \"multipart/*\"
+entity have one or more children. A \"message/rfc822\" entity
+has just one child. Any other entity has no child.
+
+HANDLER is a function to insert the entity according to DISPLAY.
+It is called with one argument ENTITY."
+ (vector type disposition transfer-encoding
+ display header tagline body children handler))
;; Accessors for a MIME-entity object.
(defsubst rmail-mime-entity-type (entity) (aref entity 0))
(defsubst rmail-mime-entity-disposition (entity) (aref entity 1))
(defsubst rmail-mime-entity-transfer-encoding (entity) (aref entity 2))
-(defsubst rmail-mime-entity-header (entity) (aref entity 3))
-(defsubst rmail-mime-entity-body (entity) (aref entity 4))
-(defsubst rmail-mime-entity-children (entity) (aref entity 5))
+(defsubst rmail-mime-entity-display (entity) (aref entity 3))
+(defsubst rmail-mime-entity-header (entity) (aref entity 4))
+(defsubst rmail-mime-entity-tagline (entity) (aref entity 5))
+(defsubst rmail-mime-entity-body (entity) (aref entity 6))
+(defsubst rmail-mime-entity-children (entity) (aref entity 7))
+(defsubst rmail-mime-entity-handler (entity) (aref entity 8))
+
+(defsubst rmail-mime-message-p ()
+ "Non-nil if and only if the current message is a MIME."
+ (or (get-text-property (point) 'rmail-mime-entity)
+ (get-text-property (point-min) 'rmail-mime-entity)))
;;; Buttons
(defun rmail-mime-save (button)
"Save the attachment using info in the BUTTON."
- (let* ((filename (button-get button 'filename))
+ (let* ((rmail-mime-mbox-buffer rmail-view-buffer)
+ (filename (button-get button 'filename))
(directory (button-get button 'directory))
(data (button-get button 'data))
- (mbox-buf rmail-view-buffer)
(ofilename filename))
(setq filename (expand-file-name
(read-file-name (format "Save as (default: %s): " filename)
@@ -210,7 +260,8 @@ nil for the other types."
;; DATA is a MIME-entity object.
(let ((transfer-encoding (rmail-mime-entity-transfer-encoding data))
(body (rmail-mime-entity-body data)))
- (insert-buffer-substring mbox-buf (car body) (cdr body))
+ (insert-buffer-substring rmail-mime-mbox-buffer
+ (aref body 0) (aref body 1))
(cond ((string= transfer-encoding "base64")
(ignore-errors (base64-decode-region (point-min) (point-max))))
((string= transfer-encoding "quoted-printable")
@@ -219,34 +270,294 @@ nil for the other types."
(define-button-type 'rmail-mime-save 'action 'rmail-mime-save)
+(defun rmail-mime-entity-segment (pos &optional entity)
+ "Return a vector describing the displayed region of a MIME-entity at POS.
+Optional 2nd argument ENTITY is the MIME-entity at POS.
+The value is a vector [ INDEX HEADER TAGLINE BODY END], where
+ INDEX: index into the returned vector indicating where POS is (1..3).
+ HEADER: the position of the beginning of a header
+ TAGLINE: the position of the beginning of a tagline
+ BODY: the position of the beginning of a body
+ END: the position of the end of the entity."
+ (save-excursion
+ (or entity
+ (setq entity (get-text-property pos 'rmail-mime-entity)))
+ (if (not entity)
+ (vector 1 (point) (point) (point) (point))
+ (let ((current (aref (rmail-mime-entity-display entity) 0))
+ (beg (if (and (> pos (point-min))
+ (eq (get-text-property (1- pos) 'rmail-mime-entity)
+ entity))
+ (previous-single-property-change pos 'rmail-mime-entity
+ nil (point-min))
+ pos))
+ (index 1)
+ tagline-beg body-beg end)
+ (goto-char beg)
+ (if (aref current 0)
+ (search-forward "\n\n" nil t))
+ (setq tagline-beg (point))
+ (if (>= pos tagline-beg)
+ (setq index 2))
+ (if (aref current 1)
+ (forward-line 1))
+ (setq body-beg (point))
+ (if (>= pos body-beg)
+ (setq index 3))
+ (if (aref current 2)
+ (let ((tag (aref (rmail-mime-entity-tagline entity) 0))
+ tag2)
+ (setq end (next-single-property-change beg 'rmail-mime-entity
+ nil (point-max)))
+ (while (and (< end (point-max))
+ (setq entity (get-text-property end 'rmail-mime-entity)
+ tag2 (aref (rmail-mime-entity-tagline entity) 0))
+ (and (> (length tag2) 0)
+ (eq (string-match tag tag2) 0)))
+ (setq end (next-single-property-change end 'rmail-mime-entity
+ nil (point-max)))))
+ (setq end body-beg))
+ (vector index beg tagline-beg body-beg end)))))
+
+(defun rmail-mime-shown-mode (entity)
+ "Make MIME-entity ENTITY displayed by the default way."
+ (let ((new (aref (rmail-mime-entity-display entity) 1)))
+ (aset new 0 (aref (rmail-mime-entity-header entity) 2))
+ (aset new 1 (aref (rmail-mime-entity-tagline entity) 2))
+ (aset new 2 (aref (rmail-mime-entity-body entity) 2)))
+ (dolist (child (rmail-mime-entity-children entity))
+ (rmail-mime-shown-mode child)))
+
+(defun rmail-mime-hidden-mode (entity)
+ "Make MIME-entity ENTITY displayed in the hidden mode."
+ (let ((new (aref (rmail-mime-entity-display entity) 1)))
+ (aset new 0 nil)
+ (aset new 1 t)
+ (aset new 2 nil))
+ (dolist (child (rmail-mime-entity-children entity))
+ (rmail-mime-hidden-mode child)))
+
+(defun rmail-mime-raw-mode (entity)
+ "Make MIME-entity ENTITY displayed in the raw mode."
+ (let ((new (aref (rmail-mime-entity-display entity) 1)))
+ (aset new 0 'raw)
+ (aset new 1 nil)
+ (aset new 2 'raw))
+ (dolist (child (rmail-mime-entity-children entity))
+ (rmail-mime-raw-mode child)))
+
+(defun rmail-mime-toggle-raw (entity)
+ "Toggle on and off the raw display mode of MIME-entity ENTITY."
+ (let* ((pos (if (eobp) (1- (point-max)) (point)))
+ (entity (get-text-property pos 'rmail-mime-entity))
+ (current (aref (rmail-mime-entity-display entity) 0))
+ (segment (rmail-mime-entity-segment pos entity)))
+ (if (not (eq (aref current 0) 'raw))
+ ;; Enter the raw mode.
+ (rmail-mime-raw-mode entity)
+ ;; Enter the shown mode.
+ (rmail-mime-shown-mode entity))
+ (let ((inhibit-read-only t)
+ (modified (buffer-modified-p)))
+ (save-excursion
+ (goto-char (aref segment 1))
+ (rmail-mime-insert entity)
+ (restore-buffer-modified-p modified)))))
+
+(defun rmail-mime-toggle-hidden ()
+ "Hide or show the body of MIME-entity at point."
+ (interactive)
+ (when (rmail-mime-message-p)
+ (let* ((rmail-mime-mbox-buffer rmail-view-buffer)
+ (rmail-mime-view-buffer (current-buffer))
+ (pos (if (eobp) (1- (point-max)) (point)))
+ (entity (get-text-property pos 'rmail-mime-entity))
+ (current (aref (rmail-mime-entity-display entity) 0))
+ (segment (rmail-mime-entity-segment pos entity)))
+ (if (aref current 2)
+ ;; Enter the hidden mode.
+ (progn
+ ;; If point is in the body part, move it to the tagline
+ ;; (or the header if tagline is not displayed).
+ (if (= (aref segment 0) 3)
+ (goto-char (aref segment 2)))
+ (rmail-mime-hidden-mode entity)
+ ;; If the current entity is the topmost one, display the
+ ;; header.
+ (if (and rmail-mime-mbox-buffer (= (aref segment 1) (point-min)))
+ (let ((new (aref (rmail-mime-entity-display entity) 1)))
+ (aset new 0 t))))
+ ;; Enter the shown mode.
+ (rmail-mime-shown-mode entity)
+ ;; Force this body shown.
+ (aset (aref (rmail-mime-entity-display entity) 1) 2 t))
+ (let ((inhibit-read-only t)
+ (modified (buffer-modified-p))
+ (rmail-mime-mbox-buffer rmail-view-buffer)
+ (rmail-mime-view-buffer rmail-buffer))
+ (save-excursion
+ (goto-char (aref segment 1))
+ (rmail-mime-insert entity)
+ (restore-buffer-modified-p modified))))))
+
+(define-key rmail-mode-map "\t" 'forward-button)
+(define-key rmail-mode-map [backtab] 'backward-button)
+(define-key rmail-mode-map "\r" 'rmail-mime-toggle-hidden)
+
;;; Handlers
+(defun rmail-mime-insert-tagline (entity &rest item-list)
+ "Insert a tag line for MIME-entity ENTITY.
+ITEM-LIST is a list of strings or button-elements (list) to be added
+to the tag line."
+ (insert "[")
+ (let ((tag (aref (rmail-mime-entity-tagline entity) 0)))
+ (if (> (length tag) 0) (insert (substring tag 1) ":")))
+ (insert (car (rmail-mime-entity-type entity)) " ")
+ (insert-button (let ((new (aref (rmail-mime-entity-display entity) 1)))
+ (if (aref new 2) "Hide" "Show"))
+ :type 'rmail-mime-toggle
+ 'help-echo "mouse-2, RET: Toggle show/hide")
+ (dolist (item item-list)
+ (when item
+ (if (stringp item)
+ (insert item)
+ (apply 'insert-button item))))
+ (insert "]\n"))
+
+(defun rmail-mime-update-tagline (entity)
+ "Update the current tag line for MIME-entity ENTITY."
+ (let ((inhibit-read-only t)
+ (modified (buffer-modified-p))
+ ;; If we are going to show the body, the new button label is
+ ;; "Hide". Otherwise, it's "Show".
+ (label (if (aref (aref (rmail-mime-entity-display entity) 1) 2) "Hide"
+ "Show"))
+ (button (next-button (point))))
+ ;; Go to the second character of the button "Show" or "Hide".
+ (goto-char (1+ (button-start button)))
+ (setq button (button-at (point)))
+ (save-excursion
+ (insert label)
+ (delete-region (point) (button-end button)))
+ (delete-region (button-start button) (point))
+ (put-text-property (point) (button-end button) 'rmail-mime-entity entity)
+ (restore-buffer-modified-p modified)
+ (forward-line 1)))
+
+(defun rmail-mime-insert-header (header)
+ "Decode and insert a MIME-entity header HEADER in the current buffer.
+HEADER is a vector [BEG END DEFAULT-STATUS].
+See `rmail-mime-entity' for the detail."
+ (let ((pos (point))
+ (last-coding-system-used nil))
+ (save-restriction
+ (narrow-to-region pos pos)
+ (with-current-buffer rmail-mime-mbox-buffer
+ (let ((rmail-buffer rmail-mime-mbox-buffer)
+ (rmail-view-buffer rmail-mime-view-buffer))
+ (save-excursion
+ (goto-char (aref header 0))
+ (rmail-copy-headers (point) (aref header 1)))))
+ (rfc2047-decode-region pos (point))
+ (if (and last-coding-system-used (not rmail-mime-coding-system))
+ (setq rmail-mime-coding-system (cons last-coding-system-used nil)))
+ (goto-char (point-min))
+ (rmail-highlight-headers)
+ (goto-char (point-max))
+ (insert "\n"))))
+
+(defun rmail-mime-find-header-encoding (header)
+ "Retun the last coding system used to decode HEADER.
+HEADER is a header component of a MIME-entity object (see
+`rmail-mime-entity')."
+ (with-temp-buffer
+ (let ((last-coding-system-used nil))
+ (with-current-buffer rmail-mime-mbox-buffer
+ (let ((rmail-buffer rmail-mime-mbox-buffer)
+ (rmail-view-buffer rmail-mime-view-buffer))
+ (save-excursion
+ (goto-char (aref header 0))
+ (rmail-copy-headers (point) (aref header 1)))))
+ (rfc2047-decode-region (point-min) (point-max))
+ last-coding-system-used)))
+
(defun rmail-mime-text-handler (content-type
content-disposition
content-transfer-encoding)
"Handle the current buffer as a plain text MIME part."
- (let* ((charset (cdr (assq 'charset (cdr content-type))))
- (coding-system (when charset
- (intern (downcase charset)))))
- (when (coding-system-p coding-system)
- (decode-coding-region (point-min) (point-max) coding-system))))
-
-(defun rmail-mime-insert-text (entity)
- "Insert MIME-entity ENTITY as a plain text MIME part in the current buffer."
+ (rmail-mime-insert-text
+ (rmail-mime-entity content-type content-disposition
+ content-transfer-encoding
+ (vector (vector nil nil nil) (vector nil nil t))
+ (vector nil nil nil) (vector "" (cons nil nil) t)
+ (vector nil nil nil) nil 'rmail-mime-insert-text))
+ t)
+
+(defun rmail-mime-insert-decoded-text (entity)
+ "Decode and insert the text body of MIME-entity ENTITY."
(let* ((content-type (rmail-mime-entity-type entity))
(charset (cdr (assq 'charset (cdr content-type))))
- (coding-system (if charset (intern (downcase charset))))
- (transfer-encoding (rmail-mime-entity-transfer-encoding entity))
- (body (rmail-mime-entity-body entity)))
- (save-restriction
- (narrow-to-region (point) (point))
- (insert-buffer-substring rmail-buffer (car body) (cdr body))
- (cond ((string= transfer-encoding "base64")
- (ignore-errors (base64-decode-region (point-min) (point-max))))
- ((string= transfer-encoding "quoted-printable")
- (quoted-printable-decode-region (point-min) (point-max))))
- (if (coding-system-p coding-system)
- (decode-coding-region (point-min) (point-max) coding-system)))))
+ (coding-system (if charset
+ (coding-system-from-name charset)))
+ (body (rmail-mime-entity-body entity))
+ (pos (point)))
+ (or (and coding-system (coding-system-p coding-system))
+ (setq coding-system 'undecided))
+ (if (stringp (aref body 0))
+ (insert (aref body 0))
+ (let ((transfer-encoding (rmail-mime-entity-transfer-encoding entity)))
+ (insert-buffer-substring rmail-mime-mbox-buffer
+ (aref body 0) (aref body 1))
+ (cond ((string= transfer-encoding "base64")
+ (ignore-errors (base64-decode-region pos (point))))
+ ((string= transfer-encoding "quoted-printable")
+ (quoted-printable-decode-region pos (point))))))
+ (decode-coding-region pos (point) coding-system)
+ (if (or (not rmail-mime-coding-system) (consp rmail-mime-coding-system))
+ (setq rmail-mime-coding-system coding-system))
+ (or (bolp) (insert "\n"))))
+
+(defun rmail-mime-insert-text (entity)
+ "Presentation handler for a plain text MIME entity."
+ (let ((current (aref (rmail-mime-entity-display entity) 0))
+ (new (aref (rmail-mime-entity-display entity) 1))
+ (header (rmail-mime-entity-header entity))
+ (tagline (rmail-mime-entity-tagline entity))
+ (body (rmail-mime-entity-body entity))
+ (beg (point))
+ (segment (rmail-mime-entity-segment (point) entity)))
+
+ (or (integerp (aref body 0))
+ (let ((data (buffer-string)))
+ (aset body 0 data)
+ (delete-region (point-min) (point-max))))
+
+ ;; header
+ (if (eq (aref current 0) (aref new 0))
+ (goto-char (aref segment 2))
+ (if (aref current 0)
+ (delete-char (- (aref segment 2) (aref segment 1))))
+ (if (aref new 0)
+ (rmail-mime-insert-header header)))
+ ;; tagline
+ (if (eq (aref current 1) (aref new 1))
+ (if (or (not (aref current 1))
+ (eq (aref current 2) (aref new 2)))
+ (forward-char (- (aref segment 3) (aref segment 2)))
+ (rmail-mime-update-tagline entity))
+ (if (aref current 1)
+ (delete-char (- (aref segment 3) (aref segment 2))))
+ (if (aref new 1)
+ (rmail-mime-insert-tagline entity)))
+ ;; body
+ (if (eq (aref current 2) (aref new 2))
+ (forward-char (- (aref segment 4) (aref segment 3)))
+ (if (aref current 2)
+ (delete-char (- (aref segment 4) (aref segment 3))))
+ (if (aref new 2)
+ (rmail-mime-insert-decoded-text entity)))
+ (put-text-property beg (point) 'rmail-mime-entity entity)))
;; FIXME move to the test/ directory?
(defun test-rmail-mime-handler ()
@@ -265,37 +576,37 @@ MIME-Version: 1.0
(set-buffer-multibyte t)))
-(defun rmail-mime-insert-image (type data)
- "Insert an image of type TYPE, where DATA is the image data.
-If DATA is not a string, it is a MIME-entity object."
- (end-of-line)
- (let ((modified (buffer-modified-p)))
- (insert ?\n)
- (unless (stringp data)
- ;; DATA is a MIME-entity.
- (let ((transfer-encoding (rmail-mime-entity-transfer-encoding data))
- (body (rmail-mime-entity-body data))
- (mbox-buffer rmail-view-buffer))
+(defun rmail-mime-insert-image (entity)
+ "Decode and insert the image body of MIME-entity ENTITY."
+ (let* ((content-type (car (rmail-mime-entity-type entity)))
+ (bulk-data (aref (rmail-mime-entity-tagline entity) 1))
+ (body (rmail-mime-entity-body entity))
+ data)
+ (if (stringp (aref body 0))
+ (setq data (aref body 0))
+ (let ((rmail-mime-mbox-buffer rmail-view-buffer)
+ (transfer-encoding (rmail-mime-entity-transfer-encoding entity)))
(with-temp-buffer
(set-buffer-multibyte nil)
(setq buffer-undo-list t)
- (insert-buffer-substring mbox-buffer (car body) (cdr body))
+ (insert-buffer-substring rmail-mime-mbox-buffer
+ (aref body 0) (aref body 1))
(cond ((string= transfer-encoding "base64")
(ignore-errors (base64-decode-region (point-min) (point-max))))
((string= transfer-encoding "quoted-printable")
(quoted-printable-decode-region (point-min) (point-max))))
(setq data
(buffer-substring-no-properties (point-min) (point-max))))))
- (insert-image (create-image data type t))
- (set-buffer-modified-p modified)))
+ (insert-image (create-image data (cdr bulk-data) t))
+ (insert "\n")))
-(defun rmail-mime-image (button)
- "Display the image associated with BUTTON."
- (let ((inhibit-read-only t))
- (rmail-mime-insert-image (button-get button 'image-type)
- (button-get button 'image-data))))
+(defun rmail-mime-toggle-button (button)
+ "Hide or show the body of the MIME-entity associated with BUTTON."
+ (save-excursion
+ (goto-char (button-start button))
+ (rmail-mime-toggle-hidden)))
-(define-button-type 'rmail-mime-image 'action 'rmail-mime-image)
+(define-button-type 'rmail-mime-toggle 'action 'rmail-mime-toggle-button)
(defun rmail-mime-bulk-handler (content-type
@@ -306,16 +617,61 @@ For images that Emacs is capable of displaying, the behavior
depends upon the value of `rmail-mime-show-images'."
(rmail-mime-insert-bulk
(rmail-mime-entity content-type content-disposition content-transfer-encoding
- nil nil nil)))
+ (vector (vector nil nil nil) (vector nil t nil))
+ (vector nil nil nil) (vector "" (cons nil nil) t)
+ (vector nil nil nil) nil 'rmail-mime-insert-bulk)))
+
+(defun rmail-mime-set-bulk-data (entity)
+ "Setup the information about the attachment object for MIME-entity ENTITY.
+The value is non-nil if and only if the attachment object should be shown
+directly."
+ (let ((content-type (car (rmail-mime-entity-type entity)))
+ (size (cdr (assq 'size (cdr (rmail-mime-entity-disposition entity)))))
+ (bulk-data (aref (rmail-mime-entity-tagline entity) 1))
+ (body (rmail-mime-entity-body entity))
+ type to-show)
+ (cond (size
+ (setq size (string-to-number size)))
+ ((stringp (aref body 0))
+ (setq size (length (aref body 0))))
+ (t
+ ;; Rough estimation of the size.
+ (let ((encoding (rmail-mime-entity-transfer-encoding entity)))
+ (setq size (- (aref body 1) (aref body 0)))
+ (cond ((string= encoding "base64")
+ (setq size (/ (* size 3) 4)))
+ ((string= encoding "quoted-printable")
+ (setq size (/ (* size 7) 3)))))))
+
+ (cond
+ ((string-match "text/" content-type)
+ (setq type 'text))
+ ((string-match "image/\\(.*\\)" content-type)
+ (setq type (image-type-from-file-name
+ (concat "." (match-string 1 content-type))))
+ (if (and (memq type image-types)
+ (image-type-available-p type))
+ (if (and rmail-mime-show-images
+ (not (eq rmail-mime-show-images 'button))
+ (or (not (numberp rmail-mime-show-images))
+ (< size rmail-mime-show-images)))
+ (setq to-show t))
+ (setq type nil))))
+ (setcar bulk-data size)
+ (setcdr bulk-data type)
+ to-show))
(defun rmail-mime-insert-bulk (entity)
- "Inesrt a MIME-entity ENTITY as an attachment.
-The optional second arg DATA, if non-nil, is a string containing
-the attachment data that is already decoded."
- ;; Find the default directory for this media type.
+ "Presentation handler for an attachment MIME entity."
(let* ((content-type (rmail-mime-entity-type entity))
(content-disposition (rmail-mime-entity-disposition entity))
+ (current (aref (rmail-mime-entity-display entity) 0))
+ (new (aref (rmail-mime-entity-display entity) 1))
+ (header (rmail-mime-entity-header entity))
+ (tagline (rmail-mime-entity-tagline entity))
+ (bulk-data (aref tagline 1))
(body (rmail-mime-entity-body entity))
+ ;; Find the default directory for this media type.
(directory (catch 'directory
(dolist (entry rmail-mime-attachment-dirs-alist)
(when (string-match (car entry) (car content-type))
@@ -325,47 +681,80 @@ the attachment data that is already decoded."
(filename (or (cdr (assq 'name (cdr content-type)))
(cdr (assq 'filename (cdr content-disposition)))
"noname"))
- (label (format "\nAttached %s file: " (car content-type)))
(units '(B kB MB GB))
- data udata size osize type)
- (if body
+ (segment (rmail-mime-entity-segment (point) entity))
+ beg data size)
+
+ (if (integerp (aref body 0))
(setq data entity
- udata entity
- size (- (cdr body) (car body)))
- (setq data (buffer-string)
- udata (string-as-unibyte data)
- size (length udata))
- (delete-region (point-min) (point-max)))
- (setq osize size)
+ size (car bulk-data))
+ (if (stringp (aref body 0))
+ (setq data (aref body 0))
+ (setq data (string-as-unibyte (buffer-string)))
+ (aset body 0 data)
+ (rmail-mime-set-bulk-data entity)
+ (delete-region (point-min) (point-max)))
+ (setq size (length data)))
(while (and (> size 1024.0) ; cribbed from gnus-agent-expire-done-message
(cdr units))
(setq size (/ size 1024.0)
units (cdr units)))
- (insert label)
- (insert-button filename
- :type 'rmail-mime-save
- 'help-echo "mouse-2, RET: Save attachment"
- 'filename filename
- 'directory (file-name-as-directory directory)
- 'data data)
- (insert (format " (%.0f%s)" size (car units)))
- (when (and rmail-mime-show-images
- (string-match "image/\\(.*\\)" (setq type (car content-type)))
- (setq type (concat "." (match-string 1 type))
- type (image-type-from-file-name type))
- (memq type image-types)
- (image-type-available-p type))
- (insert " ")
- (cond ((or (eq rmail-mime-show-images 'button)
- (and (numberp rmail-mime-show-images)
- (>= osize rmail-mime-show-images)))
- (insert-button "Display"
- :type 'rmail-mime-image
- 'help-echo "mouse-2, RET: Show image"
- 'image-type type
- 'image-data udata))
- (t
- (rmail-mime-insert-image type udata))))))
+
+ (setq beg (point))
+
+ ;; header
+ (if (eq (aref current 0) (aref new 0))
+ (goto-char (aref segment 2))
+ (if (aref current 0)
+ (delete-char (- (aref segment 2) (aref segment 1))))
+ (if (aref new 0)
+ (rmail-mime-insert-header header)))
+
+ ;; tagline
+ (if (eq (aref current 1) (aref new 1))
+ (if (or (not (aref current 1))
+ (eq (aref current 2) (aref new 2)))
+ (forward-char (- (aref segment 3) (aref segment 2)))
+ (rmail-mime-update-tagline entity))
+ (if (aref current 1)
+ (delete-char (- (aref segment 3) (aref segment 2))))
+ (if (aref new 1)
+ (rmail-mime-insert-tagline
+ entity
+ " Save:"
+ (list filename
+ :type 'rmail-mime-save
+ 'help-echo "mouse-2, RET: Save attachment"
+ 'filename filename
+ 'directory (file-name-as-directory directory)
+ 'data data)
+ (format " (%.0f%s)" size (car units))
+ ;; We don't need this button because the "type" string of a
+ ;; tagline is the button to do this.
+ ;; (if (cdr bulk-data)
+ ;; " ")
+ ;; (if (cdr bulk-data)
+ ;; (list "Toggle show/hide"
+ ;; :type 'rmail-mime-image
+ ;; 'help-echo "mouse-2, RET: Toggle show/hide"
+ ;; 'image-type (cdr bulk-data)
+ ;; 'image-data data))
+ )))
+ ;; body
+ (if (eq (aref current 2) (aref new 2))
+ (forward-char (- (aref segment 4) (aref segment 3)))
+ (if (aref current 2)
+ (delete-char (- (aref segment 4) (aref segment 3))))
+ (if (aref new 2)
+ (cond ((eq (cdr bulk-data) 'text)
+ (rmail-mime-insert-decoded-text entity))
+ ((cdr bulk-data)
+ (rmail-mime-insert-image entity))
+ (t
+ ;; As we don't know how to display the body, just
+ ;; insert it as a text.
+ (rmail-mime-insert-decoded-text entity)))))
+ (put-text-property beg (point) 'rmail-mime-entity entity)))
(defun test-rmail-mime-bulk-handler ()
"Test of a mail used as an example in RFC 2183."
@@ -397,19 +786,21 @@ CONTENT-DISPOSITION, and CONTENT-TRANSFER-ENCODING are the values
of the respective parsed headers. See `rmail-mime-handle' for their
format."
(rmail-mime-process-multipart
- content-type content-disposition content-transfer-encoding nil))
+ content-type content-disposition content-transfer-encoding nil)
+ t)
(defun rmail-mime-process-multipart (content-type
content-disposition
content-transfer-encoding
- parse-only)
+ parse-tag)
"Process the current buffer as a multipart MIME body.
-If PARSE-ONLY is nil, modify the current buffer directly for showing
-the MIME body and return nil.
+If PARSE-TAG is nil, modify the current buffer directly for
+showing the MIME body and return nil.
-Otherwise, just parse the current buffer and return a list of
-MIME-entity objects.
+Otherwise, PARSE-TAG is a string indicating the depth and index
+number of the entity. In this case, parse the current buffer and
+return a list of MIME-entity objects.
The other arguments are the same as `rmail-mime-multipart-handler'."
;; Some MUAs start boundaries with "--", while it should start
@@ -420,6 +811,8 @@ The other arguments are the same as `rmail-mime-multipart-handler'."
;; of the preceding part.
;; We currently don't handle that.
(let ((boundary (cdr (assq 'boundary content-type)))
+ (subtype (cadr (split-string (car content-type) "/")))
+ (index 0)
beg end next entities)
(unless boundary
(rmail-mm-get-boundary-error-message
@@ -430,12 +823,22 @@ The other arguments are the same as `rmail-mime-multipart-handler'."
(goto-char (point-min))
(when (and (search-forward boundary nil t)
(looking-at "[ \t]*\n"))
- (if parse-only
+ (if parse-tag
(narrow-to-region (match-end 0) (point-max))
(delete-region (point-min) (match-end 0))))
+
+ ;; Change content-type to the proper default one for the children.
+ (cond ((string-match "mixed" subtype)
+ (setq content-type '("text/plain")))
+ ((string-match "digest" subtype)
+ (setq content-type '("message/rfc822")))
+ (t
+ (setq content-type nil)))
+
;; Loop over all body parts, where beg points at the beginning of
;; the part and end points at the end of the part. next points at
- ;; the beginning of the next part.
+ ;; the beginning of the next part. The current point is just
+ ;; after the boundary tag.
(setq beg (point-min))
(while (search-forward boundary nil t)
(setq end (match-beginning 0))
@@ -450,17 +853,47 @@ The other arguments are the same as `rmail-mime-multipart-handler'."
(rmail-mm-get-boundary-error-message
"Malformed boundary" content-type content-disposition
content-transfer-encoding)))
+
+ (setq index (1+ index))
;; Handle the part.
- (if parse-only
+ (if parse-tag
(save-restriction
(narrow-to-region beg end)
- (setq entities (cons (rmail-mime-process nil t) entities)))
+ (let ((child (rmail-mime-process
+ nil (format "%s/%d" parse-tag index)
+ content-type content-disposition)))
+ ;; Display a tagline.
+ (aset (aref (rmail-mime-entity-display child) 1) 1
+ (aset (rmail-mime-entity-tagline child) 2 t))
+ (push child entities)))
+
(delete-region end next)
(save-restriction
(narrow-to-region beg end)
(rmail-mime-show)))
(goto-char (setq beg next)))
- (nreverse entities)))
+
+ (when parse-tag
+ (setq entities (nreverse entities))
+ (if (string-match "alternative" subtype)
+ ;; Find the best entity to show, and hide all the others.
+ (let (best second)
+ (dolist (child entities)
+ (if (string= (or (car (rmail-mime-entity-disposition child))
+ (car content-disposition))
+ "inline")
+ (if (string-match "text/plain"
+ (car (rmail-mime-entity-type child)))
+ (setq best child)
+ (if (string-match "text/.*"
+ (car (rmail-mime-entity-type child)))
+ (setq second child)))))
+ (or best (not second) (setq best second))
+ (dolist (child entities)
+ (unless (eq best child)
+ (aset (rmail-mime-entity-body child) 2 nil)
+ (rmail-mime-hidden-mode child)))))
+ entities)))
(defun test-rmail-mime-multipart-handler ()
"Test of a mail used as an example in RFC 2046."
@@ -493,6 +926,42 @@ This is the epilogue. It is also to be ignored."))
(insert mail)
(rmail-mime-show t)))
+(defun rmail-mime-insert-multipart (entity)
+ "Presentation handler for a multipart MIME entity."
+ (let ((current (aref (rmail-mime-entity-display entity) 0))
+ (new (aref (rmail-mime-entity-display entity) 1))
+ (header (rmail-mime-entity-header entity))
+ (tagline (rmail-mime-entity-tagline entity))
+ (body (rmail-mime-entity-body entity))
+ (beg (point))
+ (segment (rmail-mime-entity-segment (point) entity)))
+ ;; header
+ (if (eq (aref current 0) (aref new 0))
+ (goto-char (aref segment 2))
+ (if (aref current 0)
+ (delete-char (- (aref segment 2) (aref segment 1))))
+ (if (aref new 0)
+ (rmail-mime-insert-header header)))
+ ;; tagline
+ (if (eq (aref current 1) (aref new 1))
+ (if (or (not (aref current 1))
+ (eq (aref current 2) (aref new 2)))
+ (forward-char (- (aref segment 3) (aref segment 2)))
+ (rmail-mime-update-tagline entity))
+ (if (aref current 1)
+ (delete-char (- (aref segment 3) (aref segment 2))))
+ (if (aref new 1)
+ (rmail-mime-insert-tagline entity)))
+
+ (put-text-property beg (point) 'rmail-mime-entity entity)
+
+ ;; body
+ (if (eq (aref current 2) (aref new 2))
+ (forward-char (- (aref segment 4) (aref segment 3)))
+ (dolist (child (rmail-mime-entity-children entity))
+ (rmail-mime-insert child)))
+ entity))
+
;;; Main code
(defun rmail-mime-handle (content-type
@@ -552,7 +1021,16 @@ The parsed header value:
;; Everything else is an attachment.
(rmail-mime-bulk-handler content-type
content-disposition
- content-transfer-encoding)))
+ content-transfer-encoding))
+ (save-restriction
+ (widen)
+ (let ((entity (get-text-property (1- (point)) 'rmail-mime-entity))
+ current new)
+ (when entity
+ (setq current (aref (rmail-mime-entity-display entity) 0)
+ new (aref (rmail-mime-entity-display entity) 1))
+ (dotimes (i 3)
+ (aset current i (aref new i)))))))
(defun rmail-mime-show (&optional show-headers)
"Handle the current buffer as a MIME message.
@@ -565,7 +1043,9 @@ The current buffer must contain a single message. It will be
modified."
(rmail-mime-process show-headers nil))
-(defun rmail-mime-process (show-headers parse-only)
+(defun rmail-mime-process (show-headers parse-tag &optional
+ default-content-type
+ default-content-disposition)
(let ((end (point-min))
content-type
content-transfer-encoding
@@ -595,46 +1075,78 @@ modified."
(setq content-transfer-encoding (downcase content-transfer-encoding)))
(setq content-type
(if content-type
- (mail-header-parse-content-type content-type)
- ;; FIXME: Default "message/rfc822" in a "multipart/digest"
- ;; according to RFC 2046.
- '("text/plain")))
+ (or (mail-header-parse-content-type content-type)
+ '("text/plain"))
+ (or default-content-type '("text/plain"))))
(setq content-disposition
(if content-disposition
(mail-header-parse-content-disposition content-disposition)
;; If none specified, we are free to choose what we deem
;; suitable according to RFC 2183. We like inline.
- '("inline")))
+ (or default-content-disposition '("inline"))))
;; Unrecognized disposition types are to be treated like
;; attachment according to RFC 2183.
(unless (member (car content-disposition) '("inline" "attachment"))
(setq content-disposition '("attachment")))
- (if parse-only
- (cond ((string-match "multipart/.*" (car content-type))
- (setq end (1- end))
- (save-restriction
- (let ((header (if show-headers (cons (point-min) end))))
+ (if parse-tag
+ (let* ((is-inline (string= (car content-disposition) "inline"))
+ (header (vector (point-min) end nil))
+ (tagline (vector parse-tag (cons nil nil) t))
+ (body (vector end (point-max) is-inline))
+ (new (vector (aref header 2) (aref tagline 2) (aref body 2)))
+ children handler entity)
+ (cond ((string-match "multipart/.*" (car content-type))
+ (save-restriction
+ (narrow-to-region (1- end) (point-max))
+ (setq children (rmail-mime-process-multipart
+ content-type
+ content-disposition
+ content-transfer-encoding
+ parse-tag)
+ handler 'rmail-mime-insert-multipart)))
+ ((string-match "message/rfc822" (car content-type))
+ (save-restriction
(narrow-to-region end (point-max))
- (rmail-mime-entity content-type
- content-disposition
- content-transfer-encoding
- header nil
- (rmail-mime-process-multipart
- content-type content-disposition
- content-transfer-encoding t)))))
- ((string-match "message/rfc822" (car content-type))
- (or show-headers
- (narrow-to-region end (point-max)))
- (rmail-mime-process t t))
- (t
- (rmail-mime-entity content-type
- content-disposition
- content-transfer-encoding
- nil
- (cons end (point-max))
- nil)))
+ (let* ((msg (rmail-mime-process t parse-tag
+ '("text/plain") '("inline")))
+ (msg-new (aref (rmail-mime-entity-display msg) 1)))
+ ;; Show header of the child.
+ (aset msg-new 0 t)
+ (aset (rmail-mime-entity-header msg) 2 t)
+ ;; Hide tagline of the child.
+ (aset msg-new 1 nil)
+ (aset (rmail-mime-entity-tagline msg) 2 nil)
+ (setq children (list msg)
+ handler 'rmail-mime-insert-multipart))))
+ ((and is-inline (string-match "text/" (car content-type)))
+ ;; Don't need a tagline.
+ (aset new 1 (aset tagline 2 nil))
+ (setq handler 'rmail-mime-insert-text))
+ (t
+ ;; Force hidden mode.
+ (aset new 1 (aset tagline 2 t))
+ (aset new 2 (aset body 2 nil))
+ (setq handler 'rmail-mime-insert-bulk)))
+ (setq entity (rmail-mime-entity content-type
+ content-disposition
+ content-transfer-encoding
+ (vector (vector nil nil nil) new)
+ header tagline body children handler))
+ (if (and (eq handler 'rmail-mime-insert-bulk)
+ (rmail-mime-set-bulk-data entity))
+ ;; Show the body.
+ (aset new 2 (aset body 2 t)))
+ entity)
+
;; Hide headers and handle the part.
+ (put-text-property (point-min) (point-max) 'rmail-mime-entity
+ (rmail-mime-entity
+ content-type content-disposition
+ content-transfer-encoding
+ (vector (vector 'raw nil 'raw) (vector 'raw nil 'raw))
+ (vector nil nil 'raw) (vector "" (cons nil nil) nil)
+ (vector nil nil 'raw) nil nil))
(save-restriction
(cond ((string= (car content-type) "message/rfc822")
(narrow-to-region end (point-max)))
@@ -643,100 +1155,125 @@ modified."
(rmail-mime-handle content-type content-disposition
content-transfer-encoding)))))
-(defun rmail-mime-insert-multipart (entity)
- "Insert MIME-entity ENTITY of multipart type in the current buffer."
- (let ((subtype (cadr (split-string (car (rmail-mime-entity-type entity))
- "/")))
- (disposition (rmail-mime-entity-disposition entity))
- (header (rmail-mime-entity-header entity))
- (children (rmail-mime-entity-children entity)))
- (if header
- (let ((pos (point)))
- (or (bolp)
- (insert "\n"))
- (insert-buffer-substring rmail-buffer (car header) (cdr header))
- (rfc2047-decode-region pos (point))
- (insert "\n")))
- (cond
- ((string= subtype "mixed")
- (dolist (child children)
- (rmail-mime-insert child '("text/plain") disposition)))
- ((string= subtype "digest")
- (dolist (child children)
- (rmail-mime-insert child '("message/rfc822") disposition)))
- ((string= subtype "alternative")
- (let (best-plain-text best-text)
- (dolist (child children)
- (if (string= (or (car (rmail-mime-entity-disposition child))
- (car disposition))
- "inline")
- (if (string-match "text/plain"
- (car (rmail-mime-entity-type child)))
- (setq best-plain-text child)
- (if (string-match "text/.*"
- (car (rmail-mime-entity-type child)))
- (setq best-text child)))))
- (if (or best-plain-text best-text)
- (rmail-mime-insert (or best-plain-text best-text))
- ;; No child could be handled. Insert all.
- (dolist (child children)
- (rmail-mime-insert child nil disposition)))))
- (t
- ;; Unsupported subtype. Insert all of them.
- (dolist (child children)
- (rmail-mime-insert child))))))
-
(defun rmail-mime-parse ()
"Parse the current Rmail message as a MIME message.
-The value is a MIME-entiy object (see `rmail-mime-enty-new')."
- (save-excursion
- (goto-char (point-min))
- (rmail-mime-process nil t)))
-
-(defun rmail-mime-insert (entity &optional content-type disposition)
+The value is a MIME-entiy object (see `rmail-mime-entity').
+If an error occurs, return an error message string."
+ (let ((rmail-mime-mbox-buffer (if (rmail-buffers-swapped-p)
+ rmail-view-buffer
+ (current-buffer))))
+ (condition-case err
+ (with-current-buffer rmail-mime-mbox-buffer
+ (save-excursion
+ (goto-char (point-min))
+ (let* ((entity (rmail-mime-process t ""
+ '("text/plain") '("inline")))
+ (new (aref (rmail-mime-entity-display entity) 1)))
+ ;; Show header.
+ (aset new 0 (aset (rmail-mime-entity-header entity) 2 t))
+ ;; Show tagline if and only if body is not shown.
+ (if (aref new 2)
+ (aset new 1 (aset (rmail-mime-entity-tagline entity) 2 nil))
+ (aset new 1 (aset (rmail-mime-entity-tagline entity) 2 t)))
+ entity)))
+ (error (format "%s" err)))))
+
+(defun rmail-mime-insert (entity)
"Insert a MIME-entity ENTITY in the current buffer.
This function will be called recursively if multiple parts are
available."
- (if (rmail-mime-entity-children entity)
- (rmail-mime-insert-multipart entity)
- (setq content-type
- (or (rmail-mime-entity-type entity) content-type))
- (setq disposition
- (or (rmail-mime-entity-disposition entity) disposition))
- (if (and (string= (car disposition) "inline")
- (string-match "text/.*" (car content-type)))
- (rmail-mime-insert-text entity)
- (rmail-mime-insert-bulk entity))))
+ (let ((current (aref (rmail-mime-entity-display entity) 0))
+ (new (aref (rmail-mime-entity-display entity) 1)))
+ (if (not (eq (aref new 0) 'raw))
+ ;; Not a raw-mode. Each handler should handle it.
+ (funcall (rmail-mime-entity-handler entity) entity)
+ (let ((header (rmail-mime-entity-header entity))
+ (tagline (rmail-mime-entity-tagline entity))
+ (body (rmail-mime-entity-body entity))
+ (beg (point))
+ (segment (rmail-mime-entity-segment (point) entity)))
+ ;; header
+ (if (eq (aref current 0) (aref new 0))
+ (goto-char (aref segment 2))
+ (if (aref current 0)
+ (delete-char (- (aref segment 2) (aref segment 1))))
+ (insert-buffer-substring rmail-mime-mbox-buffer
+ (aref header 0) (aref header 1)))
+ ;; tagline
+ (if (aref current 1)
+ (delete-char (- (aref segment 3) (aref segment 2))))
+ ;; body
+ (let ((children (rmail-mime-entity-children entity)))
+ (if children
+ (progn
+ (put-text-property beg (point) 'rmail-mime-entity entity)
+ (dolist (child children)
+ (rmail-mime-insert child)))
+ (if (eq (aref current 2) (aref new 2))
+ (forward-char (- (aref segment 4) (aref segment 3)))
+ (if (aref current 2)
+ (delete-char (- (aref segment 4) (aref segment 3))))
+ (insert-buffer-substring rmail-mime-mbox-buffer
+ (aref body 0) (aref body 1))
+ (or (bolp) (insert "\n")))
+ (put-text-property beg (point) 'rmail-mime-entity entity)))))
+ (dotimes (i 3)
+ (aset current i (aref new i)))))
(define-derived-mode rmail-mime-mode fundamental-mode "RMIME"
"Major mode used in `rmail-mime' buffers."
(setq font-lock-defaults '(rmail-font-lock-keywords t t nil nil)))
;;;###autoload
-(defun rmail-mime ()
- "Process the current Rmail message as a MIME message.
-This creates a temporary \"*RMAIL*\" buffer holding a decoded
-copy of the message. Inline content-types are handled according to
+(defun rmail-mime (&optional arg)
+ "Toggle displaying of a MIME message.
+
+The actualy behavior depends on the value of `rmail-enable-mime'.
+
+If `rmail-enable-mime' is t (default), this command change the
+displaying of a MIME message between decoded presentation form
+and raw data.
+
+With ARG, toggle the displaying of the current MIME entity only.
+
+If `rmail-enable-mime' is nil, this creates a temporary
+\"*RMAIL*\" buffer holding a decoded copy of the message. Inline
+content-types are handled according to
`rmail-mime-media-type-handlers-alist'. By default, this
displays text and multipart messages, and offers to download
attachments as specfied by `rmail-mime-attachment-dirs-alist'."
- (interactive)
- (let ((data (rmail-apply-in-message rmail-current-message 'buffer-string))
- (buf (get-buffer-create "*RMAIL*")))
- (set-buffer buf)
- (setq buffer-undo-list t)
- (let ((inhibit-read-only t))
- ;; Decoding the message in fundamental mode for speed, only
- ;; switching to rmail-mime-mode at the end for display. Eg
- ;; quoted-printable-decode-region gets very slow otherwise (Bug#4993).
- (fundamental-mode)
- (erase-buffer)
- (insert data)
- (rmail-mime-show t)
- (rmail-mime-mode)
- (set-buffer-modified-p nil))
- (view-buffer buf)))
+ (interactive "P")
+ (if rmail-enable-mime
+ (with-current-buffer rmail-buffer
+ (if (rmail-mime-message-p)
+ (let ((rmail-mime-mbox-buffer rmail-view-buffer)
+ (rmail-mime-view-buffer rmail-buffer)
+ (entity (get-text-property (point) 'rmail-mime-entity)))
+ (if arg
+ (if entity
+ (rmail-mime-toggle-raw entity))
+ (goto-char (point-min))
+ (rmail-mime-toggle-raw
+ (get-text-property (point) 'rmail-mime-entity))))
+ (message "Not a MIME message")))
+ (let* ((data (rmail-apply-in-message rmail-current-message 'buffer-string))
+ (buf (get-buffer-create "*RMAIL*"))
+ (rmail-mime-mbox-buffer rmail-view-buffer)
+ (rmail-mime-view-buffer buf))
+ (set-buffer buf)
+ (setq buffer-undo-list t)
+ (let ((inhibit-read-only t))
+ ;; Decoding the message in fundamental mode for speed, only
+ ;; switching to rmail-mime-mode at the end for display. Eg
+ ;; quoted-printable-decode-region gets very slow otherwise (Bug#4993).
+ (fundamental-mode)
+ (erase-buffer)
+ (insert data)
+ (rmail-mime-show t)
+ (rmail-mime-mode)
+ (set-buffer-modified-p nil))
+ (view-buffer buf))))
(defun rmail-mm-get-boundary-error-message (message type disposition encoding)
"Return MESSAGE with more information on the main mime components."
@@ -744,39 +1281,59 @@ attachments as specfied by `rmail-mime-attachment-dirs-alist'."
message type disposition encoding))
(defun rmail-show-mime ()
- (let ((mbox-buf rmail-buffer))
- (condition-case nil
- (let ((entity (rmail-mime-parse)))
- (with-current-buffer rmail-view-buffer
- (let ((inhibit-read-only t)
- (rmail-buffer mbox-buf))
- (erase-buffer)
- (rmail-mime-insert entity))))
- (error
- ;; Decoding failed. Insert the original message body as is.
- (let ((region (with-current-buffer mbox-buf
- (goto-char (point-min))
- (re-search-forward "^$" nil t)
- (forward-line 1)
- (cons (point) (point-max)))))
- (with-current-buffer rmail-view-buffer
- (let ((inhibit-read-only t))
- (erase-buffer)
- (insert-buffer-substring mbox-buf (car region) (cdr region))))
- (message "MIME decoding failed"))))))
+ "Function to set in `rmail-show-mime-function' (which see)."
+ (let ((entity (rmail-mime-parse))
+ (rmail-mime-mbox-buffer rmail-buffer)
+ (rmail-mime-view-buffer rmail-view-buffer)
+ (rmail-mime-coding-system nil))
+ (if (vectorp entity)
+ (with-current-buffer rmail-mime-view-buffer
+ (erase-buffer)
+ (rmail-mime-insert entity)
+ (if (consp rmail-mime-coding-system)
+ ;; Decoding is done by rfc2047-decode-region only for a
+ ;; header. But, as the used coding system may have been
+ ;; overriden by mm-charset-override-alist, we can't
+ ;; trust (car rmail-mime-coding-system). So, here we
+ ;; try the decoding again with mm-charset-override-alist
+ ;; bound to nil.
+ (let ((mm-charset-override-alist nil))
+ (setq rmail-mime-coding-system
+ (rmail-mime-find-header-encoding
+ (rmail-mime-entity-header entity)))))
+ (set-buffer-file-coding-system
+ (coding-system-base rmail-mime-coding-system) t t))
+ ;; Decoding failed. ENTITY is an error message. Insert the
+ ;; original message body as is, and show warning.
+ (let ((region (with-current-buffer rmail-mime-mbox-buffer
+ (goto-char (point-min))
+ (re-search-forward "^$" nil t)
+ (forward-line 1)
+ (vector (point-min) (point) (point-max)))))
+ (with-current-buffer rmail-mime-view-buffer
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ (rmail-mime-insert-header region)
+ (insert-buffer-substring rmail-mime-mbox-buffer
+ (aref region 1) (aref region 2))))
+ (set-buffer-file-coding-system 'no-conversion t t)
+ (message "MIME decoding failed: %s" entity)))))
(setq rmail-show-mime-function 'rmail-show-mime)
(defun rmail-insert-mime-forwarded-message (forward-buffer)
- (let ((mbox-buf (with-current-buffer forward-buffer rmail-view-buffer)))
+ "Function to set in `rmail-insert-mime-forwarded-message-function' (which see)."
+ (let ((rmail-mime-mbox-buffer
+ (with-current-buffer forward-buffer rmail-view-buffer)))
(save-restriction
(narrow-to-region (point) (point))
- (message-forward-make-body-mime mbox-buf))))
+ (message-forward-make-body-mime rmail-mime-mbox-buffer))))
(setq rmail-insert-mime-forwarded-message-function
'rmail-insert-mime-forwarded-message)
(defun rmail-insert-mime-resent-message (forward-buffer)
+ "Function to set in `rmail-insert-mime-resent-message-function' (which see)."
(insert-buffer-substring
(with-current-buffer forward-buffer rmail-view-buffer))
(goto-char (point-min))
@@ -787,11 +1344,45 @@ attachments as specfied by `rmail-mime-attachment-dirs-alist'."
(setq rmail-insert-mime-resent-message-function
'rmail-insert-mime-resent-message)
+(defun rmail-search-mime-message (msg regexp)
+ "Function to set in `rmail-search-mime-message-function' (which see)."
+ (save-restriction
+ (narrow-to-region (rmail-msgbeg msg) (rmail-msgend msg))
+ (let* ((rmail-mime-mbox-buffer (current-buffer))
+ (rmail-mime-view-buffer rmail-view-buffer)
+ (header-end (save-excursion
+ (re-search-forward "^$" nil 'move) (point)))
+ (body-end (point-max))
+ (entity (rmail-mime-parse)))
+ (or
+ ;; At first, just search the headers.
+ (with-temp-buffer
+ (insert-buffer-substring rmail-mime-mbox-buffer nil header-end)
+ (rfc2047-decode-region (point-min) (point))
+ (goto-char (point-min))
+ (re-search-forward regexp nil t))
+ ;; Next, search the body.
+ (if (and entity
+ (let* ((content-type (rmail-mime-entity-type entity))
+ (charset (cdr (assq 'charset (cdr content-type)))))
+ (or (not (string-match "text/.*" (car content-type)))
+ (and charset
+ (not (string= (downcase charset) "us-ascii"))))))
+ ;; Search the decoded MIME message.
+ (with-temp-buffer
+ (rmail-mime-insert entity)
+ (goto-char (point-min))
+ (re-search-forward regexp nil t))
+ ;; Search the body without decoding.
+ (goto-char header-end)
+ (re-search-forward regexp nil t))))))
+
+(setq rmail-search-mime-message-function 'rmail-search-mime-message)
+
(provide 'rmailmm)
;; Local Variables:
;; generated-autoload-file: "rmail.el"
;; End:
-;; arch-tag: 3f2c5e5d-1aef-4512-bc20-fd737c9d5dd9
;;; rmailmm.el ends here
diff --git a/lisp/mail/rmailmsc.el b/lisp/mail/rmailmsc.el
index bbb8233d89..4519ab1505 100644
--- a/lisp/mail/rmailmsc.el
+++ b/lisp/mail/rmailmsc.el
@@ -1,7 +1,6 @@
;;; rmailmsc.el --- miscellaneous support functions for the RMAIL mail reader
-;; Copyright (C) 1985, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: mail
@@ -59,5 +58,4 @@ This applies only to the current session."
;; generated-autoload-file: "rmail.el"
;; End:
-;; arch-tag: 94614a62-2a0a-4e25-bac9-06f461ed4c60
;;; rmailmsc.el ends here
diff --git a/lisp/mail/rmailout.el b/lisp/mail/rmailout.el
index 93d512336d..3926b426a6 100644
--- a/lisp/mail/rmailout.el
+++ b/lisp/mail/rmailout.el
@@ -1,7 +1,7 @@
;;; rmailout.el --- "RMAIL" mail reader for Emacs: output message to a file
-;; Copyright (C) 1985, 1987, 1993, 1994, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1987, 1993-1994, 2001-2011
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: mail
@@ -603,5 +603,4 @@ than appending to it. Deletes the message after writing if
(if rmail-delete-after-output
(rmail-delete-forward)))
-;; arch-tag: 4059abf0-f249-4be4-8e0d-602d370d01d1
;;; rmailout.el ends here
diff --git a/lisp/mail/rmailsort.el b/lisp/mail/rmailsort.el
index f4fd52c10c..c9942f9c2f 100644
--- a/lisp/mail/rmailsort.el
+++ b/lisp/mail/rmailsort.el
@@ -1,7 +1,6 @@
;;; rmailsort.el --- Rmail: sort messages
-;; Copyright (C) 1990, 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990, 1993-1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Masanobu UMEDA <[email protected]>
;; Maintainer: FSF
@@ -255,5 +254,4 @@ Numeric keys are sorted numerically, all others as strings."
;; generated-autoload-file: "rmail.el"
;; End:
-;; arch-tag: 665da245-f6a7-4115-ad8c-ba19216988d5
;;; rmailsort.el ends here
diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el
index f1efb33e6c..e0f40afc0d 100644
--- a/lisp/mail/rmailsum.el
+++ b/lisp/mail/rmailsum.el
@@ -1,7 +1,6 @@
;;; rmailsum.el --- make summary buffers for the mail reader
-;; Copyright (C) 1985, 1993, 1994, 1995, 1996, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1993-1996, 2000-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: mail
@@ -1847,5 +1846,4 @@ the summary is only showing a subset of messages."
;; generated-autoload-file: "rmail.el"
;; End:
-;; arch-tag: 80b0a27a-a50d-4f37-9466-83d32d1e0ca8
;;; rmailsum.el ends here
diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el
index 7a9ab601bc..77ae87b544 100644
--- a/lisp/mail/sendmail.el
+++ b/lisp/mail/sendmail.el
@@ -1,7 +1,6 @@
;;; sendmail.el --- mail sending commands for Emacs. -*- byte-compile-dynamic: t -*-
-;; Copyright (C) 1985, 1986, 1992, 1993, 1994, 1995, 1996, 1998, 2000,
-;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1986, 1992-1996, 1998, 2000-2011
;; Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -28,11 +27,7 @@
;; documented in the Emacs user's manual.
;;; Code:
-(eval-when-compile
- ;; Necessary to avoid recursive `require's.
- (provide 'sendmail)
- (require 'rmail)
- (require 'mailalias))
+(require 'mail-utils)
(autoload 'rfc2047-encode-string "rfc2047")
@@ -203,13 +198,14 @@ when you first send mail."
:type '(choice (const nil) string)
:group 'sendmail)
-;;;###autoload
(defcustom mail-alias-file nil
- "If non-nil, the name of a file to use instead of `/usr/lib/aliases'.
+ "If non-nil, the name of a file to use instead of the sendmail default.
This file defines aliases to be expanded by the mailer; this is a different
feature from that of defining aliases in `.mailrc' to be expanded in Emacs.
-This variable has no effect unless your system uses sendmail as its mailer."
- :type '(choice (const nil) file)
+This variable has no effect unless your system uses sendmail as its mailer.
+The default file is defined in sendmail's configuration file, e.g.
+`/etc/aliases'."
+ :type '(choice (const :tag "Sendmail default" nil) file)
:group 'sendmail)
;;;###autoload
@@ -384,7 +380,7 @@ The default value matches citations like `foo-bar>' plus whitespace."
(autoload 'build-mail-aliases "mailalias"
"Read mail aliases from personal aliases file and set `mail-aliases'.
-By default, this is the file specified by `mail-personal-alias-file'.")
+By default, this is the file specified by `mail-personal-alias-file'." t)
;;;###autoload
(defcustom mail-signature t
@@ -422,8 +418,7 @@ in `message-auto-save-directory'."
(defvar mail-reply-action nil)
(defvar mail-send-actions nil
"A list of actions to be performed upon successful sending of a message.")
-(put 'mail-reply-action 'permanent-local t)
-(put 'mail-send-actions 'permanent-local t)
+(defvar mail-return-action nil)
;;;###autoload
(defcustom mail-default-headers nil
@@ -433,8 +428,6 @@ before you edit the message, so you can edit or delete the lines."
:type '(choice (const nil) string)
:group 'sendmail)
-;; FIXME no need for autoload
-;;;###autoload
(defcustom mail-bury-selects-summary t
"If non-nil, try to show Rmail summary buffer after returning from mail.
The functions \\[mail-send-on-exit] or \\[mail-dont-send] select
@@ -443,8 +436,6 @@ is non-nil."
:type 'boolean
:group 'sendmail)
-;; FIXME no need for autoload
-;;;###autoload
(defcustom mail-send-nonascii 'mime
"Specify whether to allow sending non-ASCII characters in mail.
If t, that means do allow it. nil means don't allow it.
@@ -468,23 +459,16 @@ support Delivery Status Notification."
;; Note: could use /usr/ucb/mail instead of sendmail;
;; options -t, and -v if not interactive.
-(defvar mail-mailer-swallows-blank-line
- (if (and (string-match "sparc-sun-sunos\\(\\'\\|[^5]\\)" system-configuration)
- (file-readable-p "/etc/sendmail.cf")
- (with-temp-buffer
- (insert-file-contents "/etc/sendmail.cf")
- (goto-char (point-min))
- (let ((case-fold-search nil))
- (re-search-forward "^OR\\>" nil t))))
- ;; According to RFC822, "The field-name must be composed of printable
- ;; ASCII characters (i.e. characters that have decimal values between
- ;; 33 and 126, except colon)", i.e. any chars except ctl chars,
- ;; space, or colon.
- '(looking-at "[ \t]\\|[][!\"#$%&'()*+,-./0-9;<=>?@A-Z\\\\^_`a-z{|}~]+:"))
+(defvar mail-mailer-swallows-blank-line nil
"Set this non-nil if the system's mailer runs the header and body together.
-\(This problem exists on Sunos 4 when sendmail is run in remote mode.)
-The value should be an expression to test whether the problem will
-actually occur.")
+The actual value should be an expression to evaluate that returns
+non-nil if the problem will actually occur.
+\(As far as we know, this is not an issue on any system still supported
+by Emacs.)")
+
+(put 'mail-mailer-swallows-blank-line 'risky-local-variable t) ; gets evalled
+(make-obsolete-variable 'mail-mailer-swallows-blank-line
+ "no need to set this on any modern system." "24.1")
(defvar mail-mode-syntax-table
;; define-derived-mode will make it inherit from text-mode-syntax-table.
@@ -535,16 +519,54 @@ actually occur.")
(setq mail-alias-modtime modtime
mail-aliases t)))))
-(defun mail-setup (to subject in-reply-to cc replybuffer actions)
+
+;;;###autoload
+(define-mail-user-agent 'sendmail-user-agent
+ 'sendmail-user-agent-compose
+ 'mail-send-and-exit)
+
+;;;###autoload
+(defun sendmail-user-agent-compose (&optional to subject other-headers
+ continue switch-function yank-action
+ send-actions return-action
+ &rest ignored)
+ (if switch-function
+ (let ((special-display-buffer-names nil)
+ (special-display-regexps nil)
+ (same-window-buffer-names nil)
+ (same-window-regexps nil))
+ (funcall switch-function "*mail*")))
+ (let ((cc (cdr (assoc-string "cc" other-headers t)))
+ (in-reply-to (cdr (assoc-string "in-reply-to" other-headers t)))
+ (body (cdr (assoc-string "body" other-headers t))))
+ (or (mail continue to subject in-reply-to cc yank-action
+ send-actions return-action)
+ continue
+ (error "Message aborted"))
+ (save-excursion
+ (rfc822-goto-eoh)
+ (while other-headers
+ (unless (member-ignore-case (car (car other-headers))
+ '("in-reply-to" "cc" "body"))
+ (insert (car (car other-headers)) ": "
+ (cdr (car other-headers))
+ (if use-hard-newlines hard-newline "\n")))
+ (setq other-headers (cdr other-headers)))
+ (when body
+ (forward-line 1)
+ (insert body))
+ t)))
+
+(defun mail-setup (to subject in-reply-to cc replybuffer
+ actions return-action)
(or mail-default-reply-to
(setq mail-default-reply-to (getenv "REPLYTO")))
(sendmail-sync-aliases)
- (if (eq mail-aliases t)
- (progn
- (setq mail-aliases nil)
- (when mail-personal-alias-file
- (if (file-exists-p mail-personal-alias-file)
- (build-mail-aliases)))))
+ (when (eq mail-aliases t)
+ (setq mail-aliases nil)
+ (and mail-personal-alias-file
+ (file-exists-p mail-personal-alias-file)
+ (build-mail-aliases)))
;; Don't leave this around from a previous message.
(kill-local-variable 'buffer-file-coding-system)
;; This doesn't work for enable-multibyte-characters.
@@ -552,8 +574,12 @@ actually occur.")
(set-buffer-multibyte (default-value 'enable-multibyte-characters))
(if current-input-method
(inactivate-input-method))
+
+ ;; Local variables for Mail mode.
(setq mail-send-actions actions)
(setq mail-reply-action replybuffer)
+ (setq mail-return-action return-action)
+
(goto-char (point-min))
(if mail-setup-with-from
(mail-insert-from-field))
@@ -644,6 +670,7 @@ Turning on Mail mode runs the normal hooks `text-mode-hook' and
`mail-mode-hook' (in that order)."
(make-local-variable 'mail-reply-action)
(make-local-variable 'mail-send-actions)
+ (make-local-variable 'mail-return-action)
(setq buffer-offer-save t)
(make-local-variable 'font-lock-defaults)
(setq font-lock-defaults '(mail-font-lock-keywords t t))
@@ -777,39 +804,9 @@ Prefix arg means don't delete this window."
"Bury this mail buffer."
(let ((newbuf (other-buffer (current-buffer))))
(bury-buffer (current-buffer))
- (if (and (or nil
- ;; In this case, we need to go to a different frame.
- (window-dedicated-p (frame-selected-window))
- ;; In this mode of operation, the frame was probably
- ;; made for this buffer, so the user probably wants
- ;; to delete it now.
- (and pop-up-frames (one-window-p))
- (cdr (assq 'mail-dedicated-frame (frame-parameters))))
- (not (null (delq (selected-frame) (visible-frame-list)))))
- (progn
- (if (display-multi-frame-p)
- (delete-frame (selected-frame))
- ;; The previous frame is where normally they have the
- ;; Rmail buffer displayed.
- (other-frame -1)))
- (let (rmail-flag summary-buffer)
- (and (not arg)
- (not (one-window-p))
- (with-current-buffer
- (window-buffer (next-window (selected-window) 'not))
- (setq rmail-flag (eq major-mode 'rmail-mode))
- (setq summary-buffer
- (and mail-bury-selects-summary
- (boundp 'rmail-summary-buffer)
- rmail-summary-buffer
- (buffer-name rmail-summary-buffer)
- (not (get-buffer-window rmail-summary-buffer))
- rmail-summary-buffer))))
- (if rmail-flag
- ;; If the Rmail buffer has a summary, show that.
- (if summary-buffer (switch-to-buffer summary-buffer)
- (delete-window))
- (switch-to-buffer newbuf))))))
+ (if (and (null arg) mail-return-action)
+ (apply (car mail-return-action) (cdr mail-return-action))
+ (switch-to-buffer newbuf))))
(defcustom mail-send-hook nil
"Hook run just before sending a message."
@@ -1658,7 +1655,8 @@ If the current line has `mail-yank-prefix', insert it on the new line."
;;;###autoload (add-hook 'same-window-buffer-names (purecopy "*unsent mail*"))
;;;###autoload
-(defun mail (&optional noerase to subject in-reply-to cc replybuffer actions)
+(defun mail (&optional noerase to subject in-reply-to cc replybuffer
+ actions return-action)
"Edit a message to be sent. Prefix arg means resume editing (don't erase).
When this function returns, the buffer `*mail*' is selected.
The value is t if the message was newly initialized; otherwise, nil.
@@ -1706,49 +1704,6 @@ The seventh argument ACTIONS is a list of actions to take
when the message is sent, we apply FUNCTION to ARGS.
This is how Rmail arranges to mark messages `answered'."
(interactive "P")
- ;; This is commented out because I found it was confusing in practice.
- ;; It is easy enough to rename *mail* by hand with rename-buffer
- ;; if you want to have multiple mail buffers.
- ;; And then you can control which messages to save. --rms.
- ;; (let ((index 1)
- ;; buffer)
- ;; ;; If requested, look for a mail buffer that is modified and go to it.
- ;; (if noerase
- ;; (progn
- ;; (while (and (setq buffer
- ;; (get-buffer (if (= 1 index) "*mail*"
- ;; (format "*mail*<%d>" index))))
- ;; (not (buffer-modified-p buffer)))
- ;; (setq index (1+ index)))
- ;; (if buffer (switch-to-buffer buffer)
- ;; ;; If none exists, start a new message.
- ;; ;; This will never re-use an existing unmodified mail buffer
- ;; ;; (since index is not 1 anymore). Perhaps it should.
- ;; (setq noerase nil))))
- ;; ;; Unless we found a modified message and are happy, start a new message.
- ;; (if (not noerase)
- ;; (progn
- ;; ;; Look for existing unmodified mail buffer.
- ;; (while (and (setq buffer
- ;; (get-buffer (if (= 1 index) "*mail*"
- ;; (format "*mail*<%d>" index))))
- ;; (buffer-modified-p buffer))
- ;; (setq index (1+ index)))
- ;; ;; If none, make a new one.
- ;; (or buffer
- ;; (setq buffer (generate-new-buffer "*mail*")))
- ;; ;; Go there and initialize it.
- ;; (switch-to-buffer buffer)
- ;; (erase-buffer)
- ;; (setq default-directory (expand-file-name "~/"))
- ;; (auto-save-mode auto-save-default)
- ;; (mail-mode)
- ;; (mail-setup to subject in-reply-to cc replybuffer actions)
- ;; (if (and buffer-auto-save-file-name
- ;; (file-exists-p buffer-auto-save-file-name))
- ;; (message "Auto save file for draft message exists; consider M-x mail-recover"))
- ;; t))
-
(if (eq noerase 'new)
(pop-to-buffer (generate-new-buffer "*mail*"))
(and noerase
@@ -1787,7 +1742,8 @@ The seventh argument ACTIONS is a list of actions to take
t))
(let ((inhibit-read-only t))
(erase-buffer)
- (mail-setup to subject in-reply-to cc replybuffer actions)
+ (mail-setup to subject in-reply-to cc replybuffer actions
+ return-action)
(setq initialized t)))
(if (and buffer-auto-save-file-name
(file-exists-p buffer-auto-save-file-name))
@@ -1817,6 +1773,9 @@ The seventh argument ACTIONS is a list of actions to take
;; names are normally ``trivial'', so Dired will set point after
;; all the files, at buffer bottom. We want it on the first
;; file instead.
+ ;; Require dired so that dired-trivial-filenames does not get
+ ;; unbound on exit from the let.
+ (require 'dired)
(let ((dired-trivial-filenames t))
(dired-other-window wildcard (concat dired-listing-switches "t")))
(rename-buffer "*Auto-saved Drafts*" t)
diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el
index 4e76de6018..f726304704 100644
--- a/lisp/mail/smtpmail.el
+++ b/lisp/mail/smtpmail.el
@@ -1,7 +1,6 @@
;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
-;; Copyright (C) 1995, 1996, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Tomoji Kagatani <[email protected]>
;; Maintainer: Simon Josefsson <[email protected]>
@@ -392,7 +391,14 @@ The list is in preference order.")
(make-directory smtpmail-queue-dir t))
(with-current-buffer buffer-data
(erase-buffer)
- (set-buffer-file-coding-system smtpmail-code-conv-from nil t)
+ (set-buffer-file-coding-system
+ ;; We will be reading the file with no-conversion in
+ ;; smtpmail-send-queued-mail below, so write it out
+ ;; with Unix EOLs.
+ (coding-system-change-eol-conversion
+ (or smtpmail-code-conv-from 'undecided)
+ 'unix)
+ nil t)
(insert-buffer-substring tembuf)
(write-file file-data)
(set-buffer buffer-elisp)
@@ -1007,5 +1013,4 @@ many continuation lines."
(provide 'smtpmail)
-;; arch-tag: a76992df-6d71-43b7-9e72-4bacc6c05466
;;; smtpmail.el ends here
diff --git a/lisp/mail/supercite.el b/lisp/mail/supercite.el
index 1660721fe2..084b623080 100644
--- a/lisp/mail/supercite.el
+++ b/lisp/mail/supercite.el
@@ -1,7 +1,6 @@
;;; supercite.el --- minor mode for citing mail and news replies
-;; Copyright (C) 1993, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: 1993 Barry A. Warsaw <[email protected]>
;; Maintainer: Glenn Morris <[email protected]>
@@ -1997,5 +1996,4 @@ version at point."
(provide 'supercite)
(run-hooks 'sc-load-hook)
-;; arch-tag: a5d5bfa6-3bd5-4414-8c65-0afc83e45cd3
;;; supercite.el ends here
diff --git a/lisp/mail/uce.el b/lisp/mail/uce.el
index 2a3ec8dee8..f1bd98af29 100644
--- a/lisp/mail/uce.el
+++ b/lisp/mail/uce.el
@@ -1,7 +1,6 @@
;;; uce.el --- facilitate reply to unsolicited commercial email
-;; Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1998, 2000-2011 Free Software Foundation, Inc.
;; Author: stanislav shalunov <[email protected]>
;; Created: 10 Dec 1996
@@ -375,5 +374,4 @@ You might need to set `uce-mail-reader' before using this."
(provide 'uce)
-;; arch-tag: 44b68c87-9b29-47bd-822c-3feee3883221
;;; uce.el ends here
diff --git a/lisp/mail/undigest.el b/lisp/mail/undigest.el
index 01daf1f050..04bb320a2a 100644
--- a/lisp/mail/undigest.el
+++ b/lisp/mail/undigest.el
@@ -1,7 +1,7 @@
;;; undigest.el --- digest-cracking support for the RMAIL mail reader
-;; Copyright (C) 1985, 1986, 1994, 1996, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1986, 1994, 1996, 2001-2011
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: mail
@@ -329,5 +329,4 @@ following the containing message."
;; generated-autoload-file: "rmail.el"
;; End:
-;; arch-tag: 3a28b9fb-c1f5-43ef-9278-285f3e4b874d
;;; undigest.el ends here
diff --git a/lisp/mail/unrmail.el b/lisp/mail/unrmail.el
index 4cb380784e..9ed2e90b45 100644
--- a/lisp/mail/unrmail.el
+++ b/lisp/mail/unrmail.el
@@ -1,7 +1,6 @@
;;; unrmail.el --- convert Rmail Babyl files to mailbox files
-;; Copyright (C) 1992, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: mail
@@ -245,5 +244,4 @@ For example, invoke `emacs -batch -f batch-unrmail RMAIL'."
(provide 'unrmail)
-;; arch-tag: 14c6290d-60b2-456f-8909-5c2387de6acb
;;; unrmail.el ends here
diff --git a/lisp/mail/uudecode.el b/lisp/mail/uudecode.el
index 7ab2fcd1c6..8652e67d3e 100644
--- a/lisp/mail/uudecode.el
+++ b/lisp/mail/uudecode.el
@@ -1,7 +1,6 @@
;;; uudecode.el -- elisp native uudecode
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Shenghuo Zhu <[email protected]>
;; Keywords: uudecode news
diff --git a/lisp/makefile.w32-in b/lisp/makefile.w32-in
index cd76ffa290..eb65bb7a60 100644
--- a/lisp/makefile.w32-in
+++ b/lisp/makefile.w32-in
@@ -1,6 +1,5 @@
# -*- Makefile -*- for GNU Emacs on the Microsoft W32 API.
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-# 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2000-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -34,7 +33,7 @@ EMACS = $(THISDIR)/../bin/emacs.exe
# Command line flags for Emacs.
-EMACSOPT = -batch --no-init-file --no-site-file
+EMACSOPT = -batch --no-site-file --no-site-lisp
# Extra flags to pass to the byte compiler
BYTE_COMPILE_EXTRA_FLAGS =
diff --git a/lisp/makesum.el b/lisp/makesum.el
index 4b5cd036f9..c392f19016 100644
--- a/lisp/makesum.el
+++ b/lisp/makesum.el
@@ -1,7 +1,6 @@
;;; makesum.el --- generate key binding summary for Emacs
-;; Copyright (C) 1985, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: help
diff --git a/lisp/man.el b/lisp/man.el
index b1c5f37bc7..0b3ac537c5 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -1,7 +1,7 @@
;;; man.el --- browse UNIX manual pages -*- coding: iso-8859-1 -*-
-;; Copyright (C) 1993, 1994, 1996, 1997, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 1996-1997, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Barry A. Warsaw <[email protected]>
;; Maintainer: FSF
@@ -1154,7 +1154,9 @@ default type, `Man-xref-man-page' is used for the buttons."
(goto-char (point-min))
nil)))
(while (re-search-forward regexp end t)
- (make-text-button
+ ;; An overlay button is preferable because the underlying text
+ ;; may have text property highlights (Bug#7881).
+ (make-button
(match-beginning button-pos)
(match-end button-pos)
'type type
@@ -1721,5 +1723,4 @@ Uses `Man-name-local-regexp'."
(provide 'man)
-;; arch-tag: 587cda76-8e23-4594-b1f3-89b6b09a0d47
;;; man.el ends here
diff --git a/lisp/master.el b/lisp/master.el
index 5c1bd2f68c..1ea0a24ca9 100644
--- a/lisp/master.el
+++ b/lisp/master.el
@@ -1,7 +1,6 @@
;;; master.el --- make a buffer the master over another buffer
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Alex Schroeder <[email protected]>
;; Maintainer: Alex Schroeder <[email protected]>
@@ -159,5 +158,4 @@ See `recenter'."
(provide 'master)
-;; arch-tag: dca08daa-8127-45ae-b77e-b135160dce98
;;; master.el ends here
diff --git a/lisp/mb-depth.el b/lisp/mb-depth.el
index 6ae8eff99b..2ed692c1b8 100644
--- a/lisp/mb-depth.el
+++ b/lisp/mb-depth.el
@@ -1,6 +1,6 @@
;;; mb-depth.el --- Indicate minibuffer-depth in prompt
;;
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;;
;; Author: Miles Bader <[email protected]>
;; Keywords: convenience
@@ -72,5 +72,4 @@ Returns non-nil if the new state is enabled."
(provide 'mb-depth)
-;; arch-tag: 50224089-5bf5-46f8-803d-18f018c5eacf
;;; mb-depth.el ends here
diff --git a/lisp/md4.el b/lisp/md4.el
index 6b28f757db..8d89004de2 100644
--- a/lisp/md4.el
+++ b/lisp/md4.el
@@ -1,6 +1,6 @@
;;; md4.el --- MD4 Message Digest Algorithm.
-;; Copyright (C) 2001, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2004, 2007-2011 Free Software Foundation, Inc.
;; Author: Taro Kawagishi <[email protected]>
;; Keywords: MD4
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index 4708c52e12..42caeee447 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -1,7 +1,6 @@
;;; menu-bar.el --- define a default menu bar
-;; Copyright (C) 1993, 1994, 1995, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1995, 2000-2011 Free Software Foundation, Inc.
;; Author: RMS
;; Maintainer: FSF
@@ -479,8 +478,7 @@
(define-key menu-bar-edit-menu [clear]
`(menu-item ,(purecopy "Clear") delete-region
:enable (and mark-active
- (not buffer-read-only)
- (not (mouse-region-match)))
+ (not buffer-read-only))
:help
,(purecopy "Delete the text in region between mark and current position")))
(defvar yank-menu (cons (purecopy "Select Yank") nil))
@@ -510,7 +508,7 @@
;; under X (for GNUstep).
`(menu-item ,(purecopy "Copy") ,(if (featurep 'ns)
'ns-copy-including-secondary
- 'menu-bar-kill-ring-save)
+ 'kill-ring-save)
:enable mark-active
:help ,(purecopy "Copy text in region between mark and current position")
:keys ,(purecopy (if (featurep 'ns)
@@ -523,7 +521,8 @@
,(purecopy "Cut (kill) text in region between mark and current position")))
;; ns-win.el said: Separate undo from cut/paste section.
(if (featurep 'ns)
- (define-key menu-bar-edit-menu [separator-undo] `(,(purecopy "--"))))
+ (define-key menu-bar-edit-menu [separator-undo] menu-bar-separator))
+
(define-key menu-bar-edit-menu [undo]
`(menu-item ,(purecopy "Undo") undo
:enable (and (not buffer-read-only)
@@ -533,11 +532,8 @@
(consp buffer-undo-list)))
:help ,(purecopy "Undo last operation")))
-(defun menu-bar-kill-ring-save (beg end)
- (interactive "r")
- (if (mouse-region-match)
- (message "Selecting a region with the mouse does `copy' automatically")
- (kill-ring-save beg end)))
+(define-obsolete-function-alias
+ 'menu-bar-kill-ring-save 'kill-ring-save "24.1")
;; These are alternative definitions for the cut, paste and copy
;; menu items. Use them if your system expects these to use the clipboard.
@@ -587,18 +583,15 @@ Do the same for the keys of the same name."
(defvar menu-bar-custom-menu (make-sparse-keymap "Customize"))
-(define-key menu-bar-custom-menu [customize-apropos-groups]
- `(menu-item ,(purecopy "Groups Matching Regexp...") customize-apropos-groups
- :help ,(purecopy "Browse groups whose names match regexp")))
(define-key menu-bar-custom-menu [customize-apropos-faces]
- `(menu-item ,(purecopy "Faces Matching Regexp...") customize-apropos-faces
- :help ,(purecopy "Browse faces whose names match regexp")))
+ `(menu-item ,(purecopy "Faces Matching...") customize-apropos-faces
+ :help ,(purecopy "Browse faces matching a regexp or word list")))
(define-key menu-bar-custom-menu [customize-apropos-options]
- `(menu-item ,(purecopy "Options Matching Regexp...") customize-apropos-options
- :help ,(purecopy "Browse options whose names match regexp")))
+ `(menu-item ,(purecopy "Options Matching...") customize-apropos-options
+ :help ,(purecopy "Browse options matching a regexp or word list")))
(define-key menu-bar-custom-menu [customize-apropos]
- `(menu-item ,(purecopy "Settings Matching Regexp...") customize-apropos
- :help ,(purecopy "Browse customizable settings whose names match regexp")))
+ `(menu-item ,(purecopy "All Settings Matching...") customize-apropos
+ :help ,(purecopy "Browse customizable settings matching a regexp or word list")))
(define-key menu-bar-custom-menu [separator-1]
menu-bar-separator)
(define-key menu-bar-custom-menu [customize-group]
@@ -626,6 +619,9 @@ Do the same for the keys of the same name."
(define-key menu-bar-custom-menu [customize]
`(menu-item ,(purecopy "Top-level Customization Group") customize
:help ,(purecopy "The master group called `Emacs'")))
+(define-key menu-bar-custom-menu [customize-themes]
+ `(menu-item ,(purecopy "Custom Themes") customize-themes
+ :help ,(purecopy "Choose a pre-defined customization theme")))
;(defvar menu-bar-preferences-menu (make-sparse-keymap "Preferences"))
@@ -1147,7 +1143,7 @@ mail status in mode line"))
;; It is better not to use backquote here,
;; because that makes a bootstrapping problem
;; if you need to recompile all the Lisp files using interpreted code.
- `(menu-item ,(purecopy "Mule (Multilingual Environment)") ,mule-menu-keymap
+ `(menu-item ,(purecopy "Multilingual Environment") ,mule-menu-keymap
;; Most of the MULE menu actually does make sense in unibyte mode,
;; e.g. language selection.
;;; :visible '(default-value 'enable-multibyte-characters)
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index 336fd0100c..f3d1682127 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-13 Chong Yidong <[email protected]>
+
+ * mh-comp.el (mh-user-agent-compose): New arg RETURN-ACTION.
+
2010-11-07 Glenn Morris <[email protected]>
* mh-seq.el (mh-read-msg-list): Use point-at-eol.
@@ -3270,7 +3274,7 @@
* ChangeLog.1: New file. Contains old ChangeLog.
- Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2005-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -3293,4 +3297,3 @@
;; add-log-time-zone-rule: t
;; End:
-;;; arch-tag: 87324964-69b6-4925-a3c2-9c1df53d7d51
diff --git a/lisp/mh-e/ChangeLog.1 b/lisp/mh-e/ChangeLog.1
index 7492f9600b..2abfea9ac6 100644
--- a/lisp/mh-e/ChangeLog.1
+++ b/lisp/mh-e/ChangeLog.1
@@ -11400,8 +11400,7 @@
(dist): Leave release in current directory.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2003-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -11417,4 +11416,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
diff --git a/lisp/mh-e/mh-acros.el b/lisp/mh-e/mh-acros.el
index e90f5e7b6a..c1964d5a4e 100644
--- a/lisp/mh-e/mh-acros.el
+++ b/lisp/mh-e/mh-acros.el
@@ -1,7 +1,6 @@
;;; mh-acros.el --- macros used in MH-E
-;; Copyright (C) 2004, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Satyaki Das <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -327,5 +326,4 @@ MH-E functions."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: b383b49a-494f-4ed0-a30a-cb6d5d2da4ff
;;; mh-acros.el ends here
diff --git a/lisp/mh-e/mh-alias.el b/lisp/mh-e/mh-alias.el
index 2856c630fd..061a5b3dc9 100644
--- a/lisp/mh-e/mh-alias.el
+++ b/lisp/mh-e/mh-alias.el
@@ -1,8 +1,6 @@
;;; mh-alias.el --- MH-E mail alias completion and expansion
-;; Copyright (C) 1994, 1995, 1996, 1997,
-;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1994-1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Peter S. Galbraith <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -670,5 +668,4 @@ show buffer, the message in the show buffer doesn't match."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: 49879e46-5aa3-4569-bece-e5a58731d690
;;; mh-alias.el ends here
diff --git a/lisp/mh-e/mh-buffers.el b/lisp/mh-e/mh-buffers.el
index 17c3b5dd23..48154cbf4e 100644
--- a/lisp/mh-e/mh-buffers.el
+++ b/lisp/mh-e/mh-buffers.el
@@ -1,8 +1,6 @@
;;; mh-buffers.el --- MH-E buffer constants and utilities
-;; Copyright (C) 1993, 1995, 1997,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1995, 1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Bill Wohler <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -83,5 +81,4 @@ The function returns the size of the final size of the log buffer."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: 812e9f29-78b8-4e73-ada9-aa61dc1ceecb
;;; mh-buffers.el ends here
diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el
index 762aad8608..169679e88a 100644
--- a/lisp/mh-e/mh-comp.el
+++ b/lisp/mh-e/mh-comp.el
@@ -1,8 +1,6 @@
;;; mh-comp.el --- MH-E functions for composing and sending messages
-;; Copyright (C) 1993, 1995, 1997,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1995, 1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Bill Wohler <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -199,7 +197,8 @@ applications should use `mh-user-agent-compose'."
;;;###autoload
(defun mh-user-agent-compose (&optional to subject other-headers continue
switch-function yank-action
- send-actions)
+ send-actions return-action
+ &rest ignored)
"Set up mail composition draft with the MH mail system.
This is the `mail-user-agent' entry point to MH-E. This function
conforms to the contract specified by `define-mail-user-agent'
@@ -213,8 +212,8 @@ OTHER-HEADERS is an alist specifying additional header fields.
Elements look like (HEADER . VALUE) where both HEADER and VALUE
are strings.
-CONTINUE, SWITCH-FUNCTION, YANK-ACTION and SEND-ACTIONS are
-ignored."
+CONTINUE, SWITCH-FUNCTION, YANK-ACTION, SEND-ACTIONS, and
+RETURN-ACTION are ignored."
(mh-find-path)
(let ((mh-error-if-no-draft t))
(mh-send to "" subject)
@@ -1112,5 +1111,4 @@ doesn't exist there."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: 62865511-e610-4923-b0b5-f45a8ab70a34
;;; mh-comp.el ends here
diff --git a/lisp/mh-e/mh-compat.el b/lisp/mh-e/mh-compat.el
index 3d2922ac0d..01a0f26b9e 100644
--- a/lisp/mh-e/mh-compat.el
+++ b/lisp/mh-e/mh-compat.el
@@ -1,7 +1,6 @@
;;; mh-compat.el --- make MH-E compatibile with various versions of Emacs
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Bill Wohler <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -315,5 +314,4 @@ XEmacs."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: 577b0eab-a5cd-45e1-8d9f-c1a426f4d73c
;;; mh-compat.el ends here
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index 9a2bccbc96..e9896eb4b8 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -1,8 +1,6 @@
;;; mh-e.el --- GNU Emacs interface to the MH mail system
-;; Copyright (C) 1985, 1986, 1987, 1988,
-;; 1990, 1992, 1993, 1994, 1995, 1997, 1999,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1988, 1990, 1992-1995, 1997, 1999-2011
;; Free Software Foundation, Inc.
;; Author: Bill Wohler <[email protected]>
@@ -3727,5 +3725,4 @@ The background and foreground are used in the image."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: cce884de-bd37-4104-9963-e4439d5ed22b
;;; mh-e.el ends here
diff --git a/lisp/mh-e/mh-folder.el b/lisp/mh-e/mh-folder.el
index 583b3719dd..aab40c7be1 100644
--- a/lisp/mh-e/mh-folder.el
+++ b/lisp/mh-e/mh-folder.el
@@ -1,7 +1,6 @@
;;; mh-folder.el --- MH-Folder mode
-;; Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2003, 2005-2011 Free Software Foundation, Inc.
;; Author: Bill Wohler <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -1974,5 +1973,4 @@ If MSG is nil then act on the message at point"
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: aa97b758-d4f6-4c86-bc5a-1950921da1e7
;;; mh-folder.el ends here
diff --git a/lisp/mh-e/mh-funcs.el b/lisp/mh-e/mh-funcs.el
index 3fb06fa13b..ad50841650 100644
--- a/lisp/mh-e/mh-funcs.el
+++ b/lisp/mh-e/mh-funcs.el
@@ -1,8 +1,6 @@
;;; mh-funcs.el --- MH-E functions not everyone will use right away
-;; Copyright (C) 1993, 1995,
-;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Bill Wohler <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -372,5 +370,4 @@ See `mh-store-msg' for a description of DIRECTORY."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: 1936c4f1-4843-438e-bc4b-a63bb75a7762
;;; mh-funcs.el ends here
diff --git a/lisp/mh-e/mh-gnus.el b/lisp/mh-e/mh-gnus.el
index 3c12821853..f644282fc8 100644
--- a/lisp/mh-e/mh-gnus.el
+++ b/lisp/mh-e/mh-gnus.el
@@ -1,7 +1,6 @@
;;; mh-gnus.el --- make MH-E compatible with various versions of Gnus
-;; Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Satyaki Das <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -177,5 +176,4 @@ PROMPT overrides the default one used to ask user for a file name."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: 1e3638af-cad3-4c69-8427-bc8eb6e5e4fa
;;; mh-gnus.el ends here
diff --git a/lisp/mh-e/mh-identity.el b/lisp/mh-e/mh-identity.el
index cde83b4988..7e8b8576ff 100644
--- a/lisp/mh-e/mh-identity.el
+++ b/lisp/mh-e/mh-identity.el
@@ -1,7 +1,6 @@
;;; mh-identity.el --- multiple identify support for MH-E
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Peter S. Galbraith <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -304,5 +303,4 @@ the header."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: 07d66ef6-8726-4ac6-9ecf-e566cd5bfb45
;;; mh-identity.el ends here
diff --git a/lisp/mh-e/mh-inc.el b/lisp/mh-e/mh-inc.el
index 56c260564c..4f83ed7050 100644
--- a/lisp/mh-e/mh-inc.el
+++ b/lisp/mh-e/mh-inc.el
@@ -1,7 +1,6 @@
;;; mh-inc.el --- MH-E "inc" and separate mail spool handling
-;; Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Peter S. Galbraith <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -90,5 +89,4 @@
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: 3713cf2a-6082-4cb4-8ce2-99d9acaba835
;;; mh-inc.el ends here
diff --git a/lisp/mh-e/mh-junk.el b/lisp/mh-e/mh-junk.el
index fa31077dfe..2ffc24e26e 100644
--- a/lisp/mh-e/mh-junk.el
+++ b/lisp/mh-e/mh-junk.el
@@ -1,7 +1,6 @@
;;; mh-junk.el --- MH-E interface to anti-spam measures
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Satyaki Das <[email protected]>,
;; Bill Wohler <[email protected]>
@@ -467,5 +466,4 @@ See `mh-spamprobe-blacklist' for more information."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: 603335f1-77ff-4306-8828-5d3dad51abe1
;;; mh-junk.el ends here
diff --git a/lisp/mh-e/mh-letter.el b/lisp/mh-e/mh-letter.el
index 03ef7b6f47..eebc30aa4c 100644
--- a/lisp/mh-e/mh-letter.el
+++ b/lisp/mh-e/mh-letter.el
@@ -1,8 +1,6 @@
;;; mh-letter.el --- MH-Letter mode
-;; Copyright (C) 1993, 1995, 1997,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1995, 1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Bill Wohler <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -960,5 +958,4 @@ Otherwise, simply insert MH-INS-STRING before each line."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: 0548632c-aadb-4e3b-bb80-bbd62ff90bf3
;;; mh-letter.el ends here
diff --git a/lisp/mh-e/mh-limit.el b/lisp/mh-e/mh-limit.el
index d8b4dea648..db17b05ef3 100644
--- a/lisp/mh-e/mh-limit.el
+++ b/lisp/mh-e/mh-limit.el
@@ -1,7 +1,6 @@
;;; mh-limit.el --- MH-E display limits
-;; Copyright (C) 2001, 2002, 2003, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2003, 2006-2011 Free Software Foundation, Inc.
;; Author: Peter S. Galbraith <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -334,5 +333,4 @@ The MH command pick is used to do the match."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: b0d24378-1234-4c42-aa3f-7abad25b40a1
;;; mh-limit.el ends here
diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el
index 860256e236..de0f49e41d 100644
--- a/lisp/mh-e/mh-mime.el
+++ b/lisp/mh-e/mh-mime.el
@@ -1,7 +1,6 @@
;;; mh-mime.el --- MH-E MIME support
-;; Copyright (C) 1993, 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Bill Wohler <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
diff --git a/lisp/mh-e/mh-print.el b/lisp/mh-e/mh-print.el
index 846596d79e..bd99245efe 100644
--- a/lisp/mh-e/mh-print.el
+++ b/lisp/mh-e/mh-print.el
@@ -1,7 +1,6 @@
;;; mh-print.el --- MH-E printing support
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Jeffrey C Honig <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -248,5 +247,4 @@ Consider using \\[mh-ps-print-msg] instead."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: 8d84d50b-2a49-4d0d-b51e-ba9c9b6fc679
;;; mh-print.el ends here
diff --git a/lisp/mh-e/mh-scan.el b/lisp/mh-e/mh-scan.el
index 5f5a84f07a..656bcb6501 100644
--- a/lisp/mh-e/mh-scan.el
+++ b/lisp/mh-e/mh-scan.el
@@ -1,8 +1,6 @@
;;; mh-scan.el --- MH-E scan line constants and utilities
-;; Copyright (C) 1993, 1995, 1997,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1995, 1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Bill Wohler <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -485,5 +483,4 @@ comes after that."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: 5ab35d46-101e-443b-a2b6-5a908cf97528
;;; mh-scan.el ends here
diff --git a/lisp/mh-e/mh-search.el b/lisp/mh-e/mh-search.el
index 7a1f41bf93..a90a26ab2a 100644
--- a/lisp/mh-e/mh-search.el
+++ b/lisp/mh-e/mh-search.el
@@ -1,8 +1,6 @@
;;; mh-search --- MH-Search mode
-;; Copyright (C) 1993, 1995,
-;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Indexed search by Satyaki Das <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -1931,5 +1929,4 @@ folder buffer."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: 607762ad-0dff-4fe1-a27e-6c0dde0dcc47
;;; mh-search ends here
diff --git a/lisp/mh-e/mh-seq.el b/lisp/mh-e/mh-seq.el
index 09dce2f32d..145b689c6b 100644
--- a/lisp/mh-e/mh-seq.el
+++ b/lisp/mh-e/mh-seq.el
@@ -1,7 +1,6 @@
;;; mh-seq.el --- MH-E sequences support
-;; Copyright (C) 1993, 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Bill Wohler <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
diff --git a/lisp/mh-e/mh-show.el b/lisp/mh-e/mh-show.el
index 58d5220507..5c2f08cefe 100644
--- a/lisp/mh-e/mh-show.el
+++ b/lisp/mh-e/mh-show.el
@@ -1,8 +1,6 @@
;;; mh-show.el --- MH-Show mode
-;; Copyright (C) 1993, 1995, 1997,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1995, 1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Bill Wohler <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -917,5 +915,4 @@ See also `mh-folder-mode'.
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: 8607a80a-9b5c-43a7-a25d-d7e4a848c25b
;;; mh-show.el ends here
diff --git a/lisp/mh-e/mh-speed.el b/lisp/mh-e/mh-speed.el
index fc22802b87..b782081c85 100644
--- a/lisp/mh-e/mh-speed.el
+++ b/lisp/mh-e/mh-speed.el
@@ -1,7 +1,6 @@
;;; mh-speed.el --- MH-E speedbar support
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Satyaki Das <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -581,5 +580,4 @@ The function invalidates the latest ancestor that is present."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: d38ddcd4-3c00-4e37-99bf-8b89dda7b32c
;;; mh-speed.el ends here
diff --git a/lisp/mh-e/mh-thread.el b/lisp/mh-e/mh-thread.el
index c07e58d1bc..c6f33a15fd 100644
--- a/lisp/mh-e/mh-thread.el
+++ b/lisp/mh-e/mh-thread.el
@@ -1,7 +1,6 @@
;;; mh-thread.el --- MH-E threading support
-;; Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2004, 2006-2011 Free Software Foundation, Inc.
;; Author: Satyaki Das <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -880,5 +879,4 @@ This function can only be used the folder is threaded."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: b10e62f5-f028-4e04-873e-89d0e069b3d5
;;; mh-thread.el ends here
diff --git a/lisp/mh-e/mh-tool-bar.el b/lisp/mh-e/mh-tool-bar.el
index 4c0187a385..ddc9b3ffe9 100644
--- a/lisp/mh-e/mh-tool-bar.el
+++ b/lisp/mh-e/mh-tool-bar.el
@@ -1,7 +1,6 @@
;;; mh-tool-bar.el --- MH-E tool bar support
-;; Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2003, 2005-2011 Free Software Foundation, Inc.
;; Author: Satyaki Das <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -465,5 +464,4 @@ This button runs `mh-widen'"))
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: 28c2436d-bb8d-486a-a8d7-5a4d9cae3513
;;; mh-tool-bar.el ends here
diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el
index 7034fddd88..d7d3107b90 100644
--- a/lisp/mh-e/mh-utils.el
+++ b/lisp/mh-e/mh-utils.el
@@ -1,8 +1,6 @@
;;; mh-utils.el --- MH-E general utilities
-;; Copyright (C) 1993, 1995, 1997,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1995, 1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Bill Wohler <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -1013,5 +1011,4 @@ If the current line is too long truncate a part of it as well."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: 1af39fdf-f66f-4b06-9b48-18a7656c8e36
;;; mh-utils.el ends here
diff --git a/lisp/mh-e/mh-xface.el b/lisp/mh-e/mh-xface.el
index afad87d1ce..027d79a948 100644
--- a/lisp/mh-e/mh-xface.el
+++ b/lisp/mh-e/mh-xface.el
@@ -1,7 +1,6 @@
;;; mh-xface.el --- MH-E X-Face and Face header field display
-;; Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2003, 2005-2011 Free Software Foundation, Inc.
;; Author: Bill Wohler <[email protected]>
;; Maintainer: Bill Wohler <[email protected]>
@@ -471,5 +470,4 @@ The argument CHANGE is ignored."
;; sentence-end-double-space: nil
;; End:
-;; arch-tag: a79dd33f-d0e5-4b19-a53a-be690f90229a
;;; mh-xface.el ends here
diff --git a/lisp/midnight.el b/lisp/midnight.el
index 5ff1ecc9b0..9a6b162e98 100644
--- a/lisp/midnight.el
+++ b/lisp/midnight.el
@@ -1,7 +1,6 @@
;;; midnight.el --- run something every midnight, e.g., kill old buffers
-;; Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Sam Steingold <[email protected]>
;; Maintainer: Sam Steingold <[email protected]>
@@ -126,7 +125,7 @@ See also `clean-buffer-list-kill-regexps',
:group 'midnight)
(defcustom clean-buffer-list-kill-never-buffer-names
- '("*scratch*" "*Messages*" "*server*")
+ '("*scratch*" "*Messages*")
"List of buffer names which will never be killed by `clean-buffer-list'.
See also `clean-buffer-list-kill-never-regexps'.
Note that this does override `clean-buffer-list-kill-regexps' and
@@ -234,5 +233,4 @@ first argument to `run-at-time'."
(provide 'midnight)
-;; arch-tag: a5979be9-2890-46a3-ba84-791f0a4a6e80
;;; midnight.el ends here
diff --git a/lisp/minibuf-eldef.el b/lisp/minibuf-eldef.el
index 95291f665c..e6ebe3c53f 100644
--- a/lisp/minibuf-eldef.el
+++ b/lisp/minibuf-eldef.el
@@ -1,7 +1,6 @@
;;; minibuf-eldef.el --- Only show defaults in prompts when applicable
;;
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;;
;; Author: Miles Bader <[email protected]>
;; Keywords: convenience
@@ -156,5 +155,4 @@ Returns non-nil if the new state is enabled."
(provide 'minibuf-eldef)
-;; arch-tag: 7e421fae-c275-4729-b0da-7836af377d3d
;;; minibuf-eldef.el ends here
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 8d09d5d3f6..1b42ee1f2c 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -1,6 +1,6 @@
;;; minibuffer.el --- Minibuffer completion functions
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Package: emacs
@@ -2320,5 +2320,4 @@ filter out additional entries (because TABLE migth not obey PRED)."
(provide 'minibuffer)
-;; arch-tag: ef8a0a15-1080-4790-a754-04017c02f08f
;;; minibuffer.el ends here
diff --git a/lisp/misc.el b/lisp/misc.el
index 55b685fe2b..8a571f4514 100644
--- a/lisp/misc.el
+++ b/lisp/misc.el
@@ -1,7 +1,6 @@
;;; misc.el --- some nonstandard basic editing commands for Emacs
-;; Copyright (C) 1989, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1989, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: convenience
diff --git a/lisp/misearch.el b/lisp/misearch.el
index 1e5ab06a8b..a0351f3820 100644
--- a/lisp/misearch.el
+++ b/lisp/misearch.el
@@ -1,6 +1,6 @@
;;; misearch.el --- isearch extensions for multi-buffer search
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Juri Linkov <[email protected]>
;; Keywords: matching
@@ -378,5 +378,4 @@ whose file names match the specified wildcard."
(provide 'multi-isearch)
-;; arch-tag: a6d38ffa-4d14-4e39-8ac6-46af9d6a6773
;;; misearch.el ends here
diff --git a/lisp/mouse-copy.el b/lisp/mouse-copy.el
index db68ee6617..92fbdeb74e 100644
--- a/lisp/mouse-copy.el
+++ b/lisp/mouse-copy.el
@@ -1,7 +1,6 @@
;;; mouse-copy.el --- one-click text copy and move
-;; Copyright (C) 1996, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 2001-2011 Free Software Foundation, Inc.
;; Author: John Heidemann <[email protected]>
;; Keywords: mouse
@@ -222,5 +221,4 @@ by [email protected]."
(provide 'mouse-copy)
-;; arch-tag: 3d50293b-c089-4273-b412-4fc96a5f26ff
;;; mouse-copy.el ends here
diff --git a/lisp/mouse-drag.el b/lisp/mouse-drag.el
index e024b2aa55..ac99a34e64 100644
--- a/lisp/mouse-drag.el
+++ b/lisp/mouse-drag.el
@@ -1,7 +1,6 @@
;;; mouse-drag.el --- use mouse-2 to do a new style of scrolling
-;; Copyright (C) 1996, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1997, 2001-2011 Free Software Foundation, Inc.
;; Author: John Heidemann <[email protected]>
;; Keywords: mouse
diff --git a/lisp/mouse-sel.el b/lisp/mouse-sel.el
index 9b4a048131..d80f8db3b7 100644
--- a/lisp/mouse-sel.el
+++ b/lisp/mouse-sel.el
@@ -1,7 +1,6 @@
;;; mouse-sel.el --- multi-click selection support
-;; Copyright (C) 1993, 1994, 1995, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Mike Williams <[email protected]>
;; Keywords: mouse
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 40e0c14c06..c572263f3b 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -1,7 +1,6 @@
;;; mouse.el --- window system-independent mouse support
-;; Copyright (C) 1993, 1994, 1995, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1995, 1999-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: hardware, mouse
@@ -185,6 +184,7 @@ items `Turn Off' and `Help'."
(minor-mode-menu-from-indicator indicator)))
(defun mouse-menu-major-mode-map ()
+ (run-hooks 'activate-menubar-hook 'menu-bar-update-hook)
(let* (;; Keymap from which to inherit; may be null.
(ancestor (mouse-menu-non-singleton
(and (current-local-map)
@@ -217,6 +217,7 @@ Otherwise return the whole menu."
"Return a keymap equivalent to the menu bar.
The contents are the items that would be in the menu bar whether or
not it is actually displayed."
+ (run-hooks 'activate-menubar-hook 'menu-bar-update-hook)
(let* ((local-menu (and (current-local-map)
(lookup-key (current-local-map) [menu-bar])))
(global-menu (lookup-key global-map [menu-bar]))
@@ -1280,7 +1281,16 @@ regardless of where you click."
(or mouse-yank-at-point (mouse-set-point click))
(let ((primary
(cond
- ((fboundp 'x-get-selection-value) ; MS-DOS, MS-Windows and X.
+ ((eq system-type 'windows-nt)
+ ;; MS-Windows emulates PRIMARY in x-get-selection, but not
+ ;; in x-get-selection-value (the latter only accesses the
+ ;; clipboard). So try PRIMARY first, in case they selected
+ ;; something with the mouse in the current Emacs session.
+ (or (x-get-selection 'PRIMARY)
+ (x-get-selection-value)))
+ ((fboundp 'x-get-selection-value) ; MS-DOS and X.
+ ;; On X, x-get-selection-value supports more formats and
+ ;; encodings, so use it in preference to x-get-selection.
(or (x-get-selection-value)
(x-get-selection 'PRIMARY)))
;; FIXME: What about xterm-mouse-mode etc.?
@@ -2130,5 +2140,4 @@ choose a font."
(provide 'mouse)
-;; arch-tag: 9a710ce1-914a-4923-9b81-697f7bf82ab3
;;; mouse.el ends here
diff --git a/lisp/mpc.el b/lisp/mpc.el
index 97c5573fac..8feddf8829 100644
--- a/lisp/mpc.el
+++ b/lisp/mpc.el
@@ -1,6 +1,6 @@
;;; mpc.el --- A client for the Music Player Daemon -*- coding: utf-8 -*-
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Keywords: multimedia
@@ -2611,5 +2611,4 @@ This is used so that they can be compared with `eq', which is needed for
(provide 'mpc)
-;; arch-tag: 4794b2f5-59e6-4f26-b695-650b3e002f37
;;; mpc.el ends here
diff --git a/lisp/msb.el b/lisp/msb.el
index b7f1cfa2ff..fb9de914ab 100644
--- a/lisp/msb.el
+++ b/lisp/msb.el
@@ -1,7 +1,6 @@
;;; msb.el --- customizable buffer-selection with multiple menus
-;; Copyright (C) 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1995, 1997-2011 Free Software Foundation, Inc.
;; Author: Lars Lindberg <[email protected]>
;; Maintainer: FSF
@@ -365,6 +364,9 @@ This is instead of the groups in `msb-menu-cond'."
:set 'msb-custom-set
:group 'msb)
+(define-obsolete-variable-alias 'msb-after-load-hooks
+ 'msb-after-load-hook "24.1")
+
(defcustom msb-after-load-hook nil
"Hook run after the msb package has been loaded."
:type 'hook
@@ -1152,7 +1154,6 @@ different buffer menu using the function `msb'."
nil)
(provide 'msb)
-(eval-after-load "msb" '(run-hooks 'msb-after-load-hook 'msb-after-load-hooks))
+(run-hooks 'msb-after-load-hook)
-;; arch-tag: 403f9e82-b92e-4e7a-a797-5d6d9b76da36
;;; msb.el ends here
diff --git a/lisp/mwheel.el b/lisp/mwheel.el
index 2fc84c0624..4ead168b18 100644
--- a/lisp/mwheel.el
+++ b/lisp/mwheel.el
@@ -1,7 +1,6 @@
;;; mwheel.el --- Wheel mouse support
-;; Copyright (C) 1998, 2000, 2001, 2002, 2002, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2000-2011 Free Software Foundation, Inc.
;; Maintainer: William M. Perry <[email protected]>
;; Keywords: mouse
;; Package: emacs
@@ -285,5 +284,4 @@ Return non-nil if the new state is enabled."
(provide 'mwheel)
-;; arch-tag: 50ed00e7-3686-4b7a-8037-fb31aa5c237f
;;; mwheel.el ends here
diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
index 0709166347..f0d36451b5 100644
--- a/lisp/net/ange-ftp.el
+++ b/lisp/net/ange-ftp.el
@@ -1,8 +1,6 @@
;;; ange-ftp.el --- transparent FTP support for GNU Emacs
-;; Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1989-1996, 1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Andy Norman ([email protected])
;; Maintainer: FSF
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index f2af67458a..660eb3b968 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -1,8 +1,6 @@
;;; browse-url.el --- pass a URL to a WWW browser
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Denis Howe <[email protected]>
;; Maintainer: FSF
diff --git a/lisp/net/dbus.el b/lisp/net/dbus.el
index c9adec5d7b..43215003ef 100644
--- a/lisp/net/dbus.el
+++ b/lisp/net/dbus.el
@@ -1,6 +1,6 @@
;;; dbus.el --- Elisp bindings for D-Bus.
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Michael Albinus <[email protected]>
;; Keywords: comm, hardware
@@ -183,7 +183,18 @@ association to the service from D-Bus."
(defun dbus-unregister-service (bus service)
"Unregister all objects related to SERVICE from D-Bus BUS.
BUS is either a Lisp symbol, `:system' or `:session', or a string
-denoting the bus address. SERVICE must be a known service name."
+denoting the bus address. SERVICE must be a known service name.
+
+The function returns a keyword, indicating the result of the
+operation. One of the following keywords is returned:
+
+`:released': Service has become the primary owner of the name.
+
+`:non-existent': Service name does not exist on this bus.
+
+`:not-owner': We are neither the primary owner nor waiting in the
+queue of this service."
+
(maphash
(lambda (key value)
(dolist (elt value)
@@ -193,9 +204,14 @@ denoting the bus address. SERVICE must be a known service name."
(puthash key (delete elt value) dbus-registered-objects-table)
(remhash key dbus-registered-objects-table))))))
dbus-registered-objects-table)
- (dbus-call-method
- bus dbus-service-dbus dbus-path-dbus dbus-interface-dbus
- "ReleaseName" service))
+ (let ((reply (dbus-call-method
+ bus dbus-service-dbus dbus-path-dbus dbus-interface-dbus
+ "ReleaseName" service)))
+ (case reply
+ (1 :released)
+ (2 :non-existent)
+ (3 :not-owner)
+ (t (signal 'dbus-error (list "Could not unregister service" service))))))
(defun dbus-call-method-non-blocking-handler (&rest args)
"Handler for reply messages of asynchronous D-Bus message calls.
@@ -868,21 +884,23 @@ name of the property, and its value. If there are no properties,
(add-to-list 'result (cons (car dict) (caadr dict)) 'append)))))
(defun dbus-register-property
- (bus service path interface property access value &optional emits-signal)
+ (bus service path interface property access value
+ &optional emits-signal dont-register-service)
"Register property PROPERTY on the D-Bus BUS.
BUS is either a Lisp symbol, `:system' or `:session', or a string
denoting the bus address.
SERVICE is the D-Bus service name of the D-Bus. It must be a
-known name.
-
-PATH is the D-Bus object path SERVICE is registered. INTERFACE
-is the name of the interface used at PATH, PROPERTY is the name
-of the property of INTERFACE. ACCESS indicates, whether the
-property can be changed by other services via D-Bus. It must be
-either the symbol `:read' or `:readwrite'. VALUE is the initial
-value of the property, it can be of any valid type (see
+known name (See discussion of DONT-REGISTER-SERVICE below).
+
+PATH is the D-Bus object path SERVICE is registered (See
+discussion of DONT-REGISTER-SERVICE below). INTERFACE is the
+name of the interface used at PATH, PROPERTY is the name of the
+property of INTERFACE. ACCESS indicates, whether the property
+can be changed by other services via D-Bus. It must be either
+the symbol `:read' or `:readwrite'. VALUE is the initial value
+of the property, it can be of any valid type (see
`dbus-call-method' for details).
If PROPERTY already exists on PATH, it will be overwritten. For
@@ -894,24 +912,38 @@ The interface \"org.freedesktop.DBus.Properties\" is added to
PATH, including a default handler for the \"Get\", \"GetAll\" and
\"Set\" methods of this interface. When EMITS-SIGNAL is non-nil,
the signal \"PropertiesChanged\" is sent when the property is
-changed by `dbus-set-property'."
+changed by `dbus-set-property'.
+
+When DONT-REGISTER-SERVICE is non-nil, the known name SERVICE is
+not registered. This means that other D-Bus clients have no way
+of noticing the newly registered property. When interfaces are
+constructed incrementally by adding single methods or properties
+at a time, DONT-REGISTER-SERVICE can be used to prevent other
+clients from discovering the still incomplete interface."
(unless (member access '(:read :readwrite))
(signal 'dbus-error (list "Access type invalid" access)))
;; Register SERVICE.
- (unless (member service (dbus-list-names bus))
+ (unless (or dont-register-service
+ (member service (dbus-list-names bus)))
(dbus-call-method
bus dbus-service-dbus dbus-path-dbus dbus-interface-dbus
"RequestName" service 0))
- ;; Add the handler. We use `dbus-service-emacs' as service name, in
- ;; order to let unregister SERVICE despite of this default handler.
+ ;; Add handlers for the three property-related methods.
(dbus-register-method
- bus service path dbus-interface-properties "Get" 'dbus-property-handler)
+ bus service path dbus-interface-properties "Get"
+ 'dbus-property-handler 'dont-register)
(dbus-register-method
- bus service path dbus-interface-properties "GetAll" 'dbus-property-handler)
+ bus service path dbus-interface-properties "GetAll"
+ 'dbus-property-handler 'dont-register)
(dbus-register-method
- bus service path dbus-interface-properties "Set" 'dbus-property-handler)
+ bus service path dbus-interface-properties "Set"
+ 'dbus-property-handler 'dont-register)
+
+ ;; Register the name SERVICE with BUS.
+ (unless dont-register-service
+ (dbus-register-service bus service))
;; Send the PropertiesChanged signal.
(when emits-signal
diff --git a/lisp/net/dig.el b/lisp/net/dig.el
index d36247a1d1..af78ded478 100644
--- a/lisp/net/dig.el
+++ b/lisp/net/dig.el
@@ -1,7 +1,6 @@
;;; dig.el --- Domain Name System dig interface
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Simon Josefsson <[email protected]>
;; Keywords: DNS BIND dig comm
diff --git a/lisp/net/dns.el b/lisp/net/dns.el
index 2d4c2d8cd8..77a194ec43 100644
--- a/lisp/net/dns.el
+++ b/lisp/net/dns.el
@@ -1,7 +1,6 @@
;;; dns.el --- Domain Name Service lookups
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: network comm
diff --git a/lisp/net/eudc-bob.el b/lisp/net/eudc-bob.el
index 962020f2b3..5847a2def6 100644
--- a/lisp/net/eudc-bob.el
+++ b/lisp/net/eudc-bob.el
@@ -1,7 +1,6 @@
;;; eudc-bob.el --- Binary Objects Support for EUDC
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Oscar Figueiredo <[email protected]>
;; Maintainer: Pavel Jan�k <[email protected]>
@@ -366,5 +365,4 @@ display a button."
"Display a button for the JPEG DATA."
(eudc-bob-display-jpeg data nil))
-;; arch-tag: 8f1853df-c9b6-4c5a-bdb1-d94dbd651fb3
;;; eudc-bob.el ends here
diff --git a/lisp/net/eudc-export.el b/lisp/net/eudc-export.el
index 91abac571b..df3a2e0411 100644
--- a/lisp/net/eudc-export.el
+++ b/lisp/net/eudc-export.el
@@ -1,7 +1,6 @@
;;; eudc-export.el --- functions to export EUDC query results
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Oscar Figueiredo <[email protected]>
;; Maintainer: Pavel Jan�k <[email protected]>
@@ -220,5 +219,4 @@ This function can only be called from a directory query result buffer."
(overlay-get (car (overlays-at (point))) 'eudc-record)
(eudc-insert-record-at-point-into-bbdb)))
-;; arch-tag: 8cbda7dc-3163-47e6-921c-6ec5083df2d7
;;; eudc-export.el ends here
diff --git a/lisp/net/eudc-hotlist.el b/lisp/net/eudc-hotlist.el
index 5862384bd4..fd0c56ed69 100644
--- a/lisp/net/eudc-hotlist.el
+++ b/lisp/net/eudc-hotlist.el
@@ -1,7 +1,6 @@
;;; eudc-hotlist.el --- hotlist management for EUDC
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Oscar Figueiredo <[email protected]>
;; Maintainer: Pavel Jan�k <[email protected]>
@@ -194,5 +193,4 @@ These are the special commands of this mode:
""
eudc-hotlist-menu))
-;; arch-tag: 9b633ab3-6a6e-4b46-b12e-d96739a7e0e8
;;; eudc-hotlist.el ends here
diff --git a/lisp/net/eudc-vars.el b/lisp/net/eudc-vars.el
index e5e231a374..d9985312f9 100644
--- a/lisp/net/eudc-vars.el
+++ b/lisp/net/eudc-vars.el
@@ -1,7 +1,6 @@
;;; eudc-vars.el --- Emacs Unified Directory Client
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Oscar Figueiredo <[email protected]>
;; Maintainer: Pavel Jan�k <[email protected]>
@@ -406,5 +405,4 @@ Otherwise records must match queries exactly."
(provide 'eudc-vars)
-;; arch-tag: 80050575-b838-4246-8ebc-b2d7c5a2e482
;;; eudc-vars.el ends here
diff --git a/lisp/net/eudc.el b/lisp/net/eudc.el
index 282a60a828..8616c805f4 100644
--- a/lisp/net/eudc.el
+++ b/lisp/net/eudc.el
@@ -1,7 +1,6 @@
;;; eudc.el --- Emacs Unified Directory Client
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Oscar Figueiredo <[email protected]>
;; Maintainer: Pavel Jan�k <[email protected]>
diff --git a/lisp/net/eudcb-bbdb.el b/lisp/net/eudcb-bbdb.el
index aa4315077e..1dd0648f56 100644
--- a/lisp/net/eudcb-bbdb.el
+++ b/lisp/net/eudcb-bbdb.el
@@ -1,7 +1,6 @@
;;; eudcb-bbdb.el --- Emacs Unified Directory Client - BBDB Backend
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Oscar Figueiredo <[email protected]>
;; Maintainer: Pavel Jan�k <[email protected]>
@@ -243,5 +242,4 @@ RETURN-ATTRS is a list of attributes to return, defaulting to
(provide 'eudcb-bbdb)
-;; arch-tag: 38276208-75de-4dbc-ba6f-8db684c32e0a
;;; eudcb-bbdb.el ends here
diff --git a/lisp/net/eudcb-ldap.el b/lisp/net/eudcb-ldap.el
index e2ca2acadd..14594409df 100644
--- a/lisp/net/eudcb-ldap.el
+++ b/lisp/net/eudcb-ldap.el
@@ -1,7 +1,6 @@
;;; eudcb-ldap.el --- Emacs Unified Directory Client - LDAP Backend
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Oscar Figueiredo <[email protected]>
;; Maintainer: Pavel Jan�k <[email protected]>
@@ -208,5 +207,4 @@ attribute names are returned. Default to `person'"
(provide 'eudcb-ldap)
-;; arch-tag: 0f254dc0-7378-4fd4-ae26-18666184e96b
;;; eudcb-ldap.el ends here
diff --git a/lisp/net/eudcb-mab.el b/lisp/net/eudcb-mab.el
index d848b9953a..485ca5a0c0 100644
--- a/lisp/net/eudcb-mab.el
+++ b/lisp/net/eudcb-mab.el
@@ -1,7 +1,6 @@
;;; eudcb-mab.el --- Emacs Unified Directory Client - AddressBook backend
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
;; Maintainer: FSF
@@ -130,5 +129,4 @@ RETURN-ATTRS is a list of attributes to return, defaulting to
(provide 'eudcb-mab)
-;; arch-tag: 4bef8e65-f109-47c7-91b9-8a6ea3ed7bb1
;;; eudcb-mab.el ends here
diff --git a/lisp/net/eudcb-ph.el b/lisp/net/eudcb-ph.el
index c0e4f81d31..9e7490106e 100644
--- a/lisp/net/eudcb-ph.el
+++ b/lisp/net/eudcb-ph.el
@@ -1,7 +1,6 @@
;;; eudcb-ph.el --- Emacs Unified Directory Client - CCSO PH/QI Backend
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Oscar Figueiredo <[email protected]>
;; Maintainer: Pavel Jan�k <[email protected]>
@@ -241,5 +240,4 @@ depending on RETURN-RESPONSE."
(provide 'eudcb-ph)
-;; arch-tag: 4365bbf5-af20-453e-b5b6-2e7118ebfcdb
;;; eudcb-ph.el ends here
diff --git a/lisp/net/gnutls.el b/lisp/net/gnutls.el
index 85c546ffd3..0929c31b6c 100644
--- a/lisp/net/gnutls.el
+++ b/lisp/net/gnutls.el
@@ -1,6 +1,6 @@
;;; gnutls.el --- Support SSL/TLS connections through GnuTLS
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Ted Zlatanov <[email protected]>
;; Keywords: comm, tls, ssl, encryption
@@ -77,7 +77,7 @@ PRIORITY-STRING is as per the GnuTLS docs, default is \"NORMAL\".
TRUSTFILES is a list of CA bundles.
KEYFILES is a list of client keys."
(let* ((type (or type 'gnutls-x509pki))
- (trusfiles (or trustfiles
+ (trustfiles (or trustfiles
'("/etc/ssl/certs/ca-certificates.crt")))
(priority-string (or priority-string
(cond
diff --git a/lisp/net/goto-addr.el b/lisp/net/goto-addr.el
index 182758aaff..4e78a7d42c 100644
--- a/lisp/net/goto-addr.el
+++ b/lisp/net/goto-addr.el
@@ -1,7 +1,6 @@
;;; goto-addr.el --- click to browse URL or to send to e-mail address
-;; Copyright (C) 1995, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 2000-2011 Free Software Foundation, Inc.
;; Author: Eric Ding <[email protected]>
;; Maintainer: FSF
@@ -302,5 +301,4 @@ Also fontifies the buffer appropriately (see `goto-address-fontify-p' and
(provide 'goto-addr)
-;; arch-tag: ca47c505-5661-425d-a471-62bc6e75cf0a
;;; goto-addr.el ends here
diff --git a/lisp/net/hmac-def.el b/lisp/net/hmac-def.el
index c16fffc8de..5c8710afdb 100644
--- a/lisp/net/hmac-def.el
+++ b/lisp/net/hmac-def.el
@@ -1,6 +1,6 @@
;;; hmac-def.el --- A macro for defining HMAC functions.
-;; Copyright (C) 1999, 2001, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2001, 2007-2011 Free Software Foundation, Inc.
;; Author: Shuhei KOBAYASHI <[email protected]>
;; Keywords: HMAC, RFC2104
diff --git a/lisp/net/hmac-md5.el b/lisp/net/hmac-md5.el
index a0bfd36ea6..a423cbeadd 100644
--- a/lisp/net/hmac-md5.el
+++ b/lisp/net/hmac-md5.el
@@ -1,6 +1,6 @@
;;; hmac-md5.el --- Compute HMAC-MD5.
-;; Copyright (C) 1999, 2001, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2001, 2007-2011 Free Software Foundation, Inc.
;; Author: Shuhei KOBAYASHI <[email protected]>
;; Keywords: HMAC, RFC2104, HMAC-MD5, MD5, KEYED-MD5, CRAM-MD5
diff --git a/lisp/net/imap-hash.el b/lisp/net/imap-hash.el
index 9bcca67d13..d21b714d95 100644
--- a/lisp/net/imap-hash.el
+++ b/lisp/net/imap-hash.el
@@ -1,6 +1,6 @@
;;; imap-hash.el --- Hashtable-like interface to an IMAP mailbox
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Teodor Zlatanov <[email protected]>
;; Keywords: mail
@@ -371,4 +371,3 @@ Get only the headers if HEADERS-ONLY is not nil."
;;; (imap-hash-fetch iht nil 1 2 3)
;;; (imap-hash-fetch iht t 1 2 3)
-;; arch-tag: 071410ac-91dc-4e36-b892-18e057d639c5
diff --git a/lisp/net/imap.el b/lisp/net/imap.el
index 9265e962b3..6d80b97fd2 100644
--- a/lisp/net/imap.el
+++ b/lisp/net/imap.el
@@ -1,7 +1,6 @@
;;; imap.el --- imap library
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Simon Josefsson <[email protected]>
;; Keywords: mail
diff --git a/lisp/net/ldap.el b/lisp/net/ldap.el
index 066dbd8bea..3ccad277ff 100644
--- a/lisp/net/ldap.el
+++ b/lisp/net/ldap.el
@@ -1,7 +1,6 @@
;;; ldap.el --- client interface to LDAP for Emacs
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Oscar Figueiredo <[email protected]>
;; Maintainer: FSF
@@ -556,13 +555,10 @@ an alist of attribute/value pairs."
(if (and sizelimit
(not (equal "" sizelimit)))
(setq arglist (nconc arglist (list (format "-z%s" sizelimit)))))
- (eval `(call-process ldap-ldapsearch-prog
- nil
- buf
- nil
- ,@arglist
- ,@ldap-ldapsearch-args
- ,@filter))
+ (apply #'call-process ldap-ldapsearch-prog
+ ;; Ignore stderr, which can corrupt results
+ nil (list buf nil) nil
+ (append arglist ldap-ldapsearch-args filter))
(insert "\n")
(goto-char (point-min))
diff --git a/lisp/net/mairix.el b/lisp/net/mairix.el
index bfac633c58..8c4bbb4a78 100644
--- a/lisp/net/mairix.el
+++ b/lisp/net/mairix.el
@@ -1,6 +1,6 @@
;;; mairix.el --- Mairix interface for Emacs
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: David Engster <[email protected]>
;; Keywords: mail searching
@@ -946,4 +946,3 @@ Use cursor keys or C-n,C-p to select next/previous search.\n\n")
;;; mairix.el ends here
-;; arch-tag: 787ab678-fcd5-4c50-9295-01c2ee5124a6
diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el
index 60829f300b..3c4588780a 100644
--- a/lisp/net/net-utils.el
+++ b/lisp/net/net-utils.el
@@ -1,7 +1,6 @@
;;; net-utils.el --- network functions
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Peter Breton <[email protected]>
;; Created: Sun Mar 16 1997
diff --git a/lisp/net/netrc.el b/lisp/net/netrc.el
index ff0b52c2b9..59e9eab5fc 100644
--- a/lisp/net/netrc.el
+++ b/lisp/net/netrc.el
@@ -1,6 +1,5 @@
;;; netrc.el --- .netrc parsing functionality
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <[email protected]>
;; Keywords: news
@@ -34,18 +33,6 @@
;;; .netrc and .authinfo rc parsing
;;;
-(defalias 'netrc-point-at-eol
- (if (fboundp 'point-at-eol)
- 'point-at-eol
- 'line-end-position))
-(eval-when-compile
- ;; This is unnecessary in the compiled version as it is a macro.
- (if (fboundp 'bound-and-true-p)
- (defalias 'netrc-bound-and-true-p 'bound-and-true-p)
- (defmacro netrc-bound-and-true-p (var)
- "Return the value of symbol VAR if it is bound, else nil."
- `(and (boundp (quote ,var)) ,var))))
-
(defgroup netrc nil
"Netrc configuration."
:group 'comm)
@@ -58,12 +45,15 @@
(defvar netrc-services-file "/etc/services"
"The name of the services file.")
+(defvar netrc-cache nil)
+
(defun netrc-parse (&optional file)
(interactive "fFile to Parse: ")
"Parse FILE and return a list of all entries in the file."
(unless file
(setq file netrc-file))
(if (listp file)
+ ;; We got already parsed contents; just return it.
file
(when (file-exists-p file)
(with-temp-buffer
@@ -71,7 +61,16 @@
"password" "account" "macdef" "force"
"port"))
alist elem result pair)
- (insert-file-contents file)
+ (if (and netrc-cache
+ (equal (car netrc-cache) (nth 5 (file-attributes file))))
+ ;; Store the contents of the file heavily encrypted in memory.
+ (insert (base64-decode-string (rot13-string (cdr netrc-cache))))
+ (insert-file-contents file)
+ (when (string-match "\\.gpg\\'" file)
+ (setq netrc-cache (cons (nth 5 (file-attributes file))
+ (rot13-string
+ (base64-encode-string
+ (buffer-string)))))))
(goto-char (point-min))
;; Go through the file, line by line.
(while (not (eobp))
diff --git a/lisp/net/newst-backend.el b/lisp/net/newst-backend.el
index 590363a1f6..039d709770 100644
--- a/lisp/net/newst-backend.el
+++ b/lisp/net/newst-backend.el
@@ -1,7 +1,6 @@
;;; newst-backend.el --- Retrieval backend for newsticker.
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Ulf Jasper <[email protected]>
;; Filename: newst-backend.el
@@ -2353,5 +2352,4 @@ This function is suited for adding it to `newsticker-new-item-functions'."
(provide 'newst-backend)
-;; arch-tag: 0e37b658-56e9-49ab-90f9-f2df57e1a659
;;; newst-backend.el ends here
diff --git a/lisp/net/newst-plainview.el b/lisp/net/newst-plainview.el
index a6629a4072..0e1279cd86 100644
--- a/lisp/net/newst-plainview.el
+++ b/lisp/net/newst-plainview.el
@@ -1,7 +1,6 @@
;;; newst-plainview.el --- Single buffer frontend for newsticker.
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Ulf Jasper <[email protected]>
;; Filename: newst-plainview.el
@@ -1800,5 +1799,4 @@ Take care: end of item is at the end of its last line!"
(provide 'newst-plainview)
-;; arch-tag: 4e48b683-d48b-48dd-a13e-fe45baf41184
;;; newst-plainview.el ends here
diff --git a/lisp/net/newst-reader.el b/lisp/net/newst-reader.el
index 25ed65d04a..dd076bcf4f 100644
--- a/lisp/net/newst-reader.el
+++ b/lisp/net/newst-reader.el
@@ -1,7 +1,6 @@
;;; newst-reader.el --- Generic RSS reader functions.
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Ulf Jasper <[email protected]>
;; Filename: newst-reader.el
@@ -1181,5 +1180,4 @@ static char * visit_xpm[] = {
(provide 'newst-reader)
-;; arch-tag: c604b701-bdf1-4fc1-8d05-5fabd1939533
;;; newst-reader.el ends here
diff --git a/lisp/net/newst-ticker.el b/lisp/net/newst-ticker.el
index 80df1a14f2..cb82bb7404 100644
--- a/lisp/net/newst-ticker.el
+++ b/lisp/net/newst-ticker.el
@@ -1,7 +1,6 @@
;; newst-ticker.el --- modeline ticker for newsticker.
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Ulf Jasper <[email protected]>
;; Filename: newst-ticker.el
@@ -290,5 +289,4 @@ running already."
(provide 'newst-ticker)
-;; arch-tag: faee3ebb-749b-4935-9835-7f36d4b700f0
;;; newst-ticker.el ends here
diff --git a/lisp/net/newst-treeview.el b/lisp/net/newst-treeview.el
index 6bf0b593de..58d86b2394 100644
--- a/lisp/net/newst-treeview.el
+++ b/lisp/net/newst-treeview.el
@@ -1,6 +1,6 @@
;;; newst-treeview.el --- Treeview frontend for newsticker.
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Ulf Jasper <[email protected]>
;; Filename: newst-treeview.el
@@ -2076,5 +2076,4 @@ POS gives the position where EVENT occurred."
(provide 'newst-treeview)
-;; arch-tag: 5dbaff48-1f3e-4fc6-8ebd-e966fc90d2d4
;;; newst-treeview.el ends here
diff --git a/lisp/net/newsticker.el b/lisp/net/newsticker.el
index 2566529d42..3a2cf3f04f 100644
--- a/lisp/net/newsticker.el
+++ b/lisp/net/newsticker.el
@@ -1,7 +1,6 @@
;;; newsticker.el --- A Newsticker for Emacs.
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Ulf Jasper <[email protected]>
;; Filename: newsticker.el
@@ -409,5 +408,4 @@
(provide 'newsticker)
-;; arch-tag: ab761dfa-67bc-4207-bc64-4307271dc381
;;; newsticker.el ends here
diff --git a/lisp/net/ntlm.el b/lisp/net/ntlm.el
index 517e97efe6..25e7a7b43d 100644
--- a/lisp/net/ntlm.el
+++ b/lisp/net/ntlm.el
@@ -1,6 +1,6 @@
;;; ntlm.el --- NTLM (NT LanManager) authentication support
-;; Copyright (C) 2001, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2007-2011 Free Software Foundation, Inc.
;; Author: Taro Kawagishi <[email protected]>
;; Keywords: NTLM, SASL
diff --git a/lisp/net/quickurl.el b/lisp/net/quickurl.el
index 4e99f542b3..4045a44364 100644
--- a/lisp/net/quickurl.el
+++ b/lisp/net/quickurl.el
@@ -1,7 +1,6 @@
;;; quickurl.el --- insert an URL based on text at point in buffer
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Dave Pearson <[email protected]>
;; Maintainer: Dave Pearson <[email protected]>
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index 093892a110..59a7b17608 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -1,10 +1,10 @@
;;; rcirc.el --- default, simple IRC client.
-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2005-2011 Free Software Foundation, Inc.
-;; Author: Ryan Yeske
-;; URL: http://www.nongnu.org/rcirc
+;; Author: Ryan Yeske <[email protected]>
+;; Maintainers: Ryan Yeske <[email protected]>,
+;; Deniz Dogan <[email protected]>
;; Keywords: comm
;; This file is part of GNU Emacs.
@@ -895,6 +895,7 @@ Each element looks like (FILENAME . TEXT).")
This number is independent of the number of lines in the buffer.")
(defun rcirc-mode (process target)
+ ;; FIXME: Use define-derived-mode.
"Major mode for IRC channel buffers.
\\{rcirc-mode-map}"
@@ -973,7 +974,7 @@ This number is independent of the number of lines in the buffer.")
(add-hook 'completion-at-point-functions
'rcirc-completion-at-point nil 'local)
- (run-hooks 'rcirc-mode-hook))
+ (run-mode-hooks 'rcirc-mode-hook))
(defun rcirc-update-prompt (&optional all)
"Reset the prompt string in the current buffer.
@@ -1027,6 +1028,9 @@ If ALL is non-nil, update prompts in all IRC buffers."
(defun rcirc-kill-buffer-hook ()
"Part the channel when killing an rcirc buffer."
(when (eq major-mode 'rcirc-mode)
+ (when (and rcirc-log-flag
+ rcirc-log-directory)
+ (rcirc-log-write))
(rcirc-clean-up-buffer "Killed buffer")))
(defun rcirc-change-major-mode-hook ()
@@ -1561,8 +1565,11 @@ return the filename, or nil if no logging is desired for this
session.
If the returned filename is absolute (`file-name-absolute-p'
-returns true), then it is used as-is, otherwise the resulting
-file is put into `rcirc-log-directory'."
+returns t), then it is used as-is, otherwise the resulting file
+is put into `rcirc-log-directory'.
+
+The filename is then cleaned using `convert-standard-filename' to
+guarantee valid filenames for the current OS."
:group 'rcirc
:type 'function)
@@ -1587,7 +1594,9 @@ file is put into `rcirc-log-directory'."
Log data is written to `rcirc-log-directory', except for
log-files with absolute names (see `rcirc-log-filename-function')."
(dolist (cell rcirc-log-alist)
- (let ((filename (expand-file-name (car cell) rcirc-log-directory))
+ (let ((filename (convert-standard-filename
+ (expand-file-name (car cell)
+ rcirc-log-directory)))
(coding-system-for-write 'utf-8))
(make-directory (file-name-directory filename) t)
(with-temp-buffer
@@ -2850,5 +2859,4 @@ Passwords are stored in `rcirc-authinfo' (which see)."
(provide 'rcirc)
-;; arch-tag: b471b7e8-6b5a-4399-b2c6-a3c78dfc8ffb
;;; rcirc.el ends here
diff --git a/lisp/net/rcompile.el b/lisp/net/rcompile.el
index 3addcf73d7..82df5b39c9 100644
--- a/lisp/net/rcompile.el
+++ b/lisp/net/rcompile.el
@@ -1,7 +1,6 @@
;;; rcompile.el --- run a compilation on a remote machine
-;; Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Albert <[email protected]>
;; Maintainer: FSF
@@ -178,5 +177,4 @@ See \\[compile]."
remote-compile-host
""))))))
-;; arch-tag: 2866a132-ece4-4ce9-9f91-ec147f803f73
;;; rcompile.el ends here
diff --git a/lisp/net/rlogin.el b/lisp/net/rlogin.el
index 77f3296751..91b4aa7d72 100644
--- a/lisp/net/rlogin.el
+++ b/lisp/net/rlogin.el
@@ -1,7 +1,6 @@
;;; rlogin.el --- remote login interface
-;; Copyright (C) 1992, 1993, 1994, 1995, 1997, 1998, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1992-1995, 1997-1998, 2001-2011
;; Free Software Foundation, Inc.
;; Author: Noah Friedman
@@ -319,5 +318,4 @@ Delete ARG characters forward, or send a C-d to process if at end of buffer."
(provide 'rlogin)
-;; arch-tag: 6e20eabf-feda-40fa-ab40-0d156db447e4
;;; rlogin.el ends here
diff --git a/lisp/net/sasl-cram.el b/lisp/net/sasl-cram.el
index 38d7ff4e11..153d2cafe2 100644
--- a/lisp/net/sasl-cram.el
+++ b/lisp/net/sasl-cram.el
@@ -1,6 +1,6 @@
;;; sasl-cram.el --- CRAM-MD5 module for the SASL client framework
-;; Copyright (C) 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2007-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Kenichi OKADA <[email protected]>
diff --git a/lisp/net/sasl-digest.el b/lisp/net/sasl-digest.el
index 8559c8f3fa..1c7d2f02d1 100644
--- a/lisp/net/sasl-digest.el
+++ b/lisp/net/sasl-digest.el
@@ -1,6 +1,6 @@
;;; sasl-digest.el --- DIGEST-MD5 module for the SASL client framework
-;; Copyright (C) 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2007-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Kenichi OKADA <[email protected]>
diff --git a/lisp/net/sasl-ntlm.el b/lisp/net/sasl-ntlm.el
index ace50528ac..d8b367ac8a 100644
--- a/lisp/net/sasl-ntlm.el
+++ b/lisp/net/sasl-ntlm.el
@@ -1,6 +1,6 @@
;;; sasl-ntlm.el --- NTLM (NT Lan Manager) module for the SASL client framework
-;; Copyright (C) 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2007-2011 Free Software Foundation, Inc.
;; Author: Taro Kawagishi <[email protected]>
;; Keywords: SASL, NTLM
diff --git a/lisp/net/sasl.el b/lisp/net/sasl.el
index 7f864390a5..2c4da7986e 100644
--- a/lisp/net/sasl.el
+++ b/lisp/net/sasl.el
@@ -1,6 +1,6 @@
;;; sasl.el --- SASL client framework
-;; Copyright (C) 2000, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2007-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Keywords: SASL
diff --git a/lisp/net/secrets.el b/lisp/net/secrets.el
index 4487407971..89378497c3 100644
--- a/lisp/net/secrets.el
+++ b/lisp/net/secrets.el
@@ -1,6 +1,6 @@
;;; secrets.el --- Client interface to gnome-keyring and kwallet.
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Michael Albinus <[email protected]>
;; Keywords: comm password passphrase
@@ -448,10 +448,9 @@ If there is no such COLLECTION, return nil."
;; Check the collections.
(catch 'collection-found
(dolist (collection-path (secrets-get-collections) nil)
- (when
- (string-equal
- collection
- (secrets-get-collection-property collection-path "Label"))
+ (when (string-equal
+ collection
+ (secrets-get-collection-property collection-path "Label"))
(throw 'collection-found collection-path))))))
(defun secrets-create-collection (collection)
@@ -490,6 +489,13 @@ For the time being, only the alias \"default\" is supported."
secrets-interface-service "SetAlias"
alias :object-path collection-path))))
+(defun secrets-delete-alias (alias)
+ "Delete ALIAS, referencing to a collection."
+ (dbus-call-method
+ :session secrets-service secrets-path
+ secrets-interface-service "SetAlias"
+ alias :object-path secrets-empty-path))
+
(defun secrets-unlock-collection (collection)
"Unlock collection labelled COLLECTION.
If successful, return the object path of the collection."
diff --git a/lisp/net/snmp-mode.el b/lisp/net/snmp-mode.el
index 846a6e0fab..e9783d46ba 100644
--- a/lisp/net/snmp-mode.el
+++ b/lisp/net/snmp-mode.el
@@ -1,7 +1,6 @@
;;; snmp-mode.el --- SNMP & SNMPv2 MIB major mode
-;; Copyright (C) 1995, 1998, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Paul D. Smith <[email protected]>
;; Keywords: data
@@ -694,5 +693,4 @@ controls whether case is significant."
(provide 'snmp-mode)
-;; arch-tag: eb6cc0f9-1e47-4023-8625-bc9aae6c3527
;;; snmp-mode.el ends here
diff --git a/lisp/net/socks.el b/lisp/net/socks.el
index e7ed84c16e..d792077d86 100644
--- a/lisp/net/socks.el
+++ b/lisp/net/socks.el
@@ -1,7 +1,6 @@
;;; socks.el --- A Socks v5 Client for Emacs
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2000, 2002, 2007-2011 Free Software Foundation, Inc.
;; Author: William M. Perry <[email protected]>
;; Dave Love <[email protected]>
@@ -646,5 +645,4 @@ version.")
(provide 'socks)
-;; arch-tag: 67aef0d9-f4f7-4056-89c3-b4c9bf93ce7f
;;; socks.el ends here
diff --git a/lisp/net/telnet.el b/lisp/net/telnet.el
index 25bf7db761..d4850fed34 100644
--- a/lisp/net/telnet.el
+++ b/lisp/net/telnet.el
@@ -1,7 +1,7 @@
;;; telnet.el --- run a telnet session from within an Emacs buffer
-;; Copyright (C) 1985, 1988, 1992, 1994, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1988, 1992, 1994, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: William F. Schelter
;; Maintainer: FSF
@@ -263,5 +263,4 @@ Normally input is edited in Emacs and sent a line at a time."
(provide 'telnet)
-;; arch-tag: 98218821-d04a-48b6-9058-57d0d4677a56
;;; telnet.el ends here
diff --git a/lisp/net/tls.el b/lisp/net/tls.el
index 0ab4293f0d..42ae5920ee 100644
--- a/lisp/net/tls.el
+++ b/lisp/net/tls.el
@@ -1,7 +1,6 @@
;;; tls.el --- TLS/SSL support via wrapper around GnuTLS
-;; Copyright (C) 1996, 1997, 1998, 1999, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2002-2011 Free Software Foundation, Inc.
;; Author: Simon Josefsson <[email protected]>
;; Keywords: comm, tls, gnutls, ssl
diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el
index 7885d143cc..c893ce797e 100644
--- a/lisp/net/tramp-cache.el
+++ b/lisp/net/tramp-cache.el
@@ -1,7 +1,6 @@
;;; tramp-cache.el --- file information caching for Tramp
-;; Copyright (C) 2000, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2005-2011 Free Software Foundation, Inc.
;; Author: Daniel Pittman <[email protected]>
;; Michael Albinus <[email protected]>
@@ -62,6 +61,8 @@
(defcustom tramp-persistency-file-name
(cond
;; GNU Emacs.
+ ((and (fboundp 'locate-user-emacs-file))
+ (expand-file-name (tramp-compat-funcall 'locate-user-emacs-file "tramp")))
((and (boundp 'user-emacs-directory)
(stringp (symbol-value 'user-emacs-directory))
(file-directory-p (symbol-value 'user-emacs-directory)))
@@ -403,5 +404,4 @@ for all methods. Resulting data are derived from connection history."
(provide 'tramp-cache)
-;; arch-tag: ee1739b7-7628-408c-9b96-d11a74b05d26
;;; tramp-cache.el ends here
diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el
index fac08defef..7d266ad17d 100644
--- a/lisp/net/tramp-cmds.el
+++ b/lisp/net/tramp-cmds.el
@@ -1,6 +1,6 @@
;;; tramp-cmds.el --- Interactive commands for Tramp
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Michael Albinus <[email protected]>
;; Keywords: comm, processes
diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el
index 852ee8fa45..4dcc3d5484 100644
--- a/lisp/net/tramp-compat.el
+++ b/lisp/net/tramp-compat.el
@@ -1,6 +1,6 @@
;;; tramp-compat.el --- Tramp compatibility functions
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Michael Albinus <[email protected]>
;; Keywords: comm, processes
diff --git a/lisp/net/tramp-ftp.el b/lisp/net/tramp-ftp.el
index a0db019941..f048208ea4 100644
--- a/lisp/net/tramp-ftp.el
+++ b/lisp/net/tramp-ftp.el
@@ -1,7 +1,6 @@
;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Michael Albinus <[email protected]>
;; Keywords: comm, processes
@@ -105,13 +104,13 @@ present for backward compatibility."
;; ... and add it to the method list.
;;;###tramp-autoload
(unless (featurep 'xemacs)
- (add-to-list 'tramp-methods (cons tramp-ftp-method nil)))
+ (add-to-list 'tramp-methods (cons tramp-ftp-method nil))
-;; Add some defaults for `tramp-default-method-alist'.
-(add-to-list 'tramp-default-method-alist
- (list "\\`ftp\\." nil tramp-ftp-method))
-(add-to-list 'tramp-default-method-alist
- (list nil "\\`\\(anonymous\\|ftp\\)\\'" tramp-ftp-method))
+ ;; Add some defaults for `tramp-default-method-alist'.
+ (add-to-list 'tramp-default-method-alist
+ (list "\\`ftp\\." nil tramp-ftp-method))
+ (add-to-list 'tramp-default-method-alist
+ (list nil "\\`\\(anonymous\\|ftp\\)\\'" tramp-ftp-method)))
;; Add completion function for FTP method.
(tramp-set-completion-function
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index a87b58a42c..0f3a0cf33f 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -1,6 +1,6 @@
;;; tramp-gvfs.el --- Tramp access functions for GVFS daemon
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Michael Albinus <[email protected]>
;; Keywords: comm, processes
@@ -124,6 +124,7 @@
;; Add a default for `tramp-default-user-alist'. Rule: For the SYNCE
;; method, no user is chosen.
+;;;###tramp-autoload
(add-to-list 'tramp-default-user-alist '("\\`synce\\'" nil nil))
(defcustom tramp-gvfs-zeroconf-domain "local"
diff --git a/lisp/net/tramp-gw.el b/lisp/net/tramp-gw.el
index 0fac3935d7..70b70004de 100644
--- a/lisp/net/tramp-gw.el
+++ b/lisp/net/tramp-gw.el
@@ -1,6 +1,6 @@
;;; tramp-gw.el --- Tramp utility functions for HTTP tunnels and SOCKS gateways
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Michael Albinus <[email protected]>
;; Keywords: comm, processes
@@ -72,6 +72,7 @@
(list "Default server" "socks" tramp-gw-default-socks-port 5))
;; Add a default for `tramp-default-user-alist'. Default is the local user.
+;;;###tramp-autoload
(add-to-list
'tramp-default-user-alist
(list (concat "\\`"
diff --git a/lisp/net/tramp-imap.el b/lisp/net/tramp-imap.el
index d71583bcd8..e0799e070a 100644
--- a/lisp/net/tramp-imap.el
+++ b/lisp/net/tramp-imap.el
@@ -1,6 +1,6 @@
;;; tramp-imap.el --- Tramp interface to IMAP through imap.el
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Teodor Zlatanov <[email protected]>
;; Keywords: mail, comm
@@ -96,6 +96,7 @@
(list tramp-imaps-method '(tramp-default-port 993))))
;; Add a default for `tramp-default-user-alist'. Default is the local user.
+;;;###tramp-autoload
(add-to-list
'tramp-default-user-alist
(list (concat "\\`"
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 1501868a6b..ccc9028825 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -1,7 +1,6 @@
;;; tramp-sh.el --- Tramp access functions for (s)sh-like connections
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; (copyright statements below in code to be updated with the above notice)
@@ -161,10 +160,11 @@ detected as prompt when being sent on echoing hosts, therefore.")
(tramp-async-args (("-q")))
(tramp-remote-sh "/bin/sh")
(tramp-copy-program "scp")
- (tramp-copy-args (("-P" "%p") ("%k" "-p") ("-q")
+ (tramp-copy-args (("-P" "%p") ("%k" "-p") ("-q") ("-r")
("-o" "ControlPath=%t.%%r@%%h:%%p")
("-o" "ControlMaster=auto")))
(tramp-copy-keep-date t)
+ (tramp-copy-recursive t)
(tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null")
("-o" "UserKnownHostsFile=/dev/null")
("-o" "StrictHostKeyChecking=no")))
@@ -179,8 +179,9 @@ detected as prompt when being sent on echoing hosts, therefore.")
(tramp-async-args (("-q")))
(tramp-remote-sh "/bin/sh")
(tramp-copy-program "scp")
- (tramp-copy-args (("%k" "-p")))
+ (tramp-copy-args (("-P" "%p") ("%k" "-p") ("-q") ("-r")))
(tramp-copy-keep-date t)
+ (tramp-copy-recursive t)
(tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null")
("-o" "UserKnownHostsFile=/dev/null")
("-o" "StrictHostKeyChecking=no")))
@@ -306,6 +307,12 @@ detected as prompt when being sent on echoing hosts, therefore.")
(tramp-remote-sh "/bin/sh")))
;;;###tramp-autoload
(add-to-list 'tramp-methods
+ '("ksu"
+ (tramp-login-program "ksu")
+ (tramp-login-args (("%u") ("-q")))
+ (tramp-remote-sh "/bin/sh")))
+;;;###tramp-autoload
+(add-to-list 'tramp-methods
'("krlogin"
(tramp-login-program "krlogin")
(tramp-login-args (("%h") ("-l" "%u") ("-x")))
@@ -374,13 +381,23 @@ detected as prompt when being sent on echoing hosts, therefore.")
(tramp-copy-args (("%k" "-p")))
(tramp-copy-keep-date t)))
+;;;###tramp-autoload
(add-to-list 'tramp-default-method-alist
`(,tramp-local-host-regexp "\\`root\\'" "su"))
+;;;###tramp-autoload
(add-to-list 'tramp-default-user-alist
- '("\\`su\\(do\\)?\\'" nil "root"))
+ `(,(concat "\\`" (regexp-opt '("su" "sudo" "ksu")) "\\'")
+ nil "root"))
+;; Do not add "ssh" based methods, otherwise ~/.ssh/config would be ignored.
+;;;###tramp-autoload
(add-to-list 'tramp-default-user-alist
- `("\\`r\\(em\\)?\\(cp\\|sh\\)\\|telnet\\|plink1?\\'"
+ `(,(concat
+ "\\`"
+ (regexp-opt
+ '("rcp" "remcp" "rsh" "telnet" "krlogin"
+ "plink" "plink1" "pscp" "psftp" "fcp"))
+ "\\'")
nil ,(user-login-name)))
(defconst tramp-completion-function-alist-rsh
@@ -437,6 +454,7 @@ detected as prompt when being sent on echoing hosts, therefore.")
(tramp-set-completion-function "telnet" tramp-completion-function-alist-telnet)
(tramp-set-completion-function "su" tramp-completion-function-alist-su)
(tramp-set-completion-function "sudo" tramp-completion-function-alist-su)
+(tramp-set-completion-function "ksu" tramp-completion-function-alist-su)
(tramp-set-completion-function "krlogin" tramp-completion-function-alist-rsh)
(tramp-set-completion-function "plink" tramp-completion-function-alist-ssh)
(tramp-set-completion-function "plink1" tramp-completion-function-alist-ssh)
@@ -742,8 +760,7 @@ on the remote host.")
(defconst tramp-perl-encode
"%s -e '
# This script contributed by Juanma Barranquero <[email protected]>.
-# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 2002-2011 Free Software Foundation, Inc.
use strict;
my %%trans = do {
@@ -784,8 +801,7 @@ This string is passed to `format', so percent characters need to be doubled.")
(defconst tramp-perl-decode
"%s -e '
# This script contributed by Juanma Barranquero <[email protected]>.
-# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 2002-2011 Free Software Foundation, Inc.
use strict;
my %%trans = do {
@@ -2637,61 +2653,65 @@ the result will be a local, non-Tramp, filename."
(defun tramp-sh-handle-start-file-process (name buffer program &rest args)
"Like `start-file-process' for Tramp files."
(with-parsed-tramp-file-name default-directory nil
- (unwind-protect
- ;; When PROGRAM is nil, we just provide a tty.
- (let ((command
- (when (stringp program)
- (format "cd %s; exec %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))
- (name1 name)
- (i 0))
- (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)
- (clear-visited-file-modtime)
- (narrow-to-region (point-max) (point-max)))
- (if command
- ;; Send the command.
- (tramp-send-command v command nil t) ; nooutput
- ;; Check, whether a pty is associated.
- (tramp-maybe-open-connection v)
- (unless (tramp-compat-process-get
- (tramp-get-connection-process v) 'remote-tty)
- (tramp-error
- v 'file-error "pty association is not supported for `%s'" name)))
- (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)))
- (widen)
- (goto-char (point-max))))
- (tramp-set-connection-property v "process-name" nil)
- (tramp-set-connection-property v "process-buffer" nil))))
+ ;; When PROGRAM is nil, we just provide a tty.
+ (let ((command
+ (when (stringp program)
+ (format "cd %s; exec %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-send-command v command nil t) ; nooutput
+ ;; Check, whether a pty is associated.
+ (tramp-maybe-open-connection v)
+ (unless (tramp-compat-process-get
+ (tramp-get-connection-process v) 'remote-tty)
+ (tramp-error
+ v 'file-error
+ "pty association is not supported for `%s'" name)))))
+ (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)))))
(defun tramp-sh-handle-process-file
(program &optional infile destination display &rest args)
@@ -4042,9 +4062,17 @@ Goes through the list `tramp-inline-compress-commands'."
vec 5
"Checking local compress command `%s', `%s' for sanity"
compress decompress)
- (unless (zerop (tramp-call-local-coding-command
- (format "echo %s | %s | %s"
- magic compress decompress) nil nil))
+ (unless
+ (zerop
+ (tramp-call-local-coding-command
+ (format
+ ;; Windows shells need the program file name after
+ ;; the pipe symbol be quoted if they use forward
+ ;; slashes as directory separators.
+ (if (memq system-type '(windows-nt))
+ "echo %s | \"%s\" | \"%s\""
+ "echo %s | %s | %s")
+ magic compress decompress) nil nil))
(throw 'next nil))
(tramp-message
vec 5
@@ -4938,9 +4966,25 @@ function cell is returned to be applied on a buffer."
((symbolp coding)
coding)
((and compress (string-match "decoding" prop))
- (format "(%s | %s >%%s)" coding compress))
+ (format
+ ;; Windows shells need the program file name after
+ ;; the pipe symbol be quoted if they use forward
+ ;; slashes as directory separators.
+ (if (and (string-match "local" prop)
+ (memq system-type '(windows-nt)))
+ "(%s | \"%s\" >%%s)"
+ "(%s | %s >%%s)")
+ coding compress))
(compress
- (format "(%s <%%s | %s)" compress coding))
+ (format
+ ;; Windows shells need the program file name after
+ ;; the pipe symbol be quoted if they use forward
+ ;; slashes as directory separators.
+ (if (and (string-match "local" prop)
+ (memq system-type '(windows-nt)))
+ "(%s <%%s | \"%s\")"
+ "(%s <%%s | %s)")
+ compress coding))
((string-match "decoding" prop)
(format "%s >%%s" coding))
(t
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index b54bbf1fa5..51e9c600b0 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -1,7 +1,6 @@
;;; tramp-smb.el --- Tramp access functions for SMB servers
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Michael Albinus <[email protected]>
;; Keywords: comm, processes
@@ -43,11 +42,13 @@
;; Add a default for `tramp-default-method-alist'. Rule: If there is
;; a domain in USER, it must be the SMB method.
+;;;###tramp-autoload
(add-to-list 'tramp-default-method-alist
`(nil ,tramp-prefix-domain-regexp ,tramp-smb-method))
;; Add a default for `tramp-default-user-alist'. Rule: For the SMB method,
;; the anonymous user is chosen.
+;;;###tramp-autoload
(add-to-list 'tramp-default-user-alist
`(,(concat "\\`" tramp-smb-method "\\'") nil nil))
diff --git a/lisp/net/tramp-uu.el b/lisp/net/tramp-uu.el
index fe6862c924..391fba0b40 100644
--- a/lisp/net/tramp-uu.el
+++ b/lisp/net/tramp-uu.el
@@ -1,7 +1,6 @@
;;; tramp-uu.el --- uuencode in Lisp
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Kai Großjohann <[email protected]>
;; Keywords: comm, terminals
@@ -94,7 +93,6 @@
(provide 'tramp-uu)
-;; arch-tag: 7153f2c6-8be5-4cd2-8c06-0fbcf5190ef6
;;; tramp-uu.el ends here
;; Local Variables:
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index f7d3b81039..93250e3864 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1,7 +1,6 @@
;;; tramp.el --- Transparent Remote Access, Multiple Protocol
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Kai Großjohann <[email protected]>
;; Michael Albinus <[email protected]>
@@ -291,8 +290,11 @@ shouldn't return t when it isn't."
;; password caching. "scpc" is chosen if we detect that the user is
;; running OpenSSH 4.0 or newer.
(cond
- ;; PuTTY is installed.
- ((executable-find "pscp")
+ ;; PuTTY is installed. We don't take it, if it is installed on a
+ ;; non-windows system, or pscp from the pssh (parallel ssh) package
+ ;; is found.
+ ((and (eq system-type 'windows-nt)
+ (executable-find "pscp"))
(if (or (fboundp 'password-read)
(fboundp 'auth-source-user-or-password)
;; Pageant is running.
@@ -318,6 +320,7 @@ Also see `tramp-default-method-alist'."
:group 'tramp
:type 'string)
+;;;###tramp-autoload
(defcustom tramp-default-method-alist nil
"*Default method to use for specific host/user pairs.
This is an alist of items (HOST USER METHOD). The first matching item
@@ -344,6 +347,7 @@ This variable is regarded as obsolete, and will be removed soon."
:group 'tramp
:type '(choice (const nil) string))
+;;;###tramp-autoload
(defcustom tramp-default-user-alist nil
"*Default user to use for specific method/host pairs.
This is an alist of items (METHOD HOST USER). The first matching item
@@ -384,6 +388,7 @@ interpreted as a regular expression which always matches."
(choice :tag "User regexp" regexp sexp)
(choice :tag " Proxy name" string (const nil)))))
+;;;###tramp-autoload
(defconst tramp-local-host-regexp
(concat
"\\`"
@@ -603,6 +608,7 @@ It shall be used in combination with `generate-new-buffer-name'.")
"File name of a persistent local temporary file.
Useful for \"rsync\" like methods.")
(make-variable-buffer-local 'tramp-temp-buffer-file-name)
+(put 'tramp-temp-buffer-file-name 'permanent-local t)
;; XEmacs is distributed with few Lisp packages. Further packages are
;; installed using EFS. If we use a unified filename format, then
@@ -665,9 +671,11 @@ Derived from `tramp-postfix-method-format'.")
(defconst tramp-user-regexp "[^:/ \t]+"
"*Regexp matching user names.")
+;;;###tramp-autoload
(defconst tramp-prefix-domain-format "%"
"*String matching delimeter between user and domain names.")
+;;;###tramp-autoload
(defconst tramp-prefix-domain-regexp
(regexp-quote tramp-prefix-domain-format)
"*Regexp matching delimeter between user and domain names.
@@ -1284,7 +1292,8 @@ ARGS to actually emit the message (if applicable)."
(let ((now (current-time)))
(insert (format-time-string "%T." now))
(insert (format "%06d " (nth 2 now))))
- ;; Calling function.
+ ;; Calling Tramp function. We suppress compat and trace
+ ;; functions from being displayed.
(let ((btn 1) btf fn)
(while (not fn)
(setq btf (nth 1 (backtrace-frame btn)))
@@ -1292,10 +1301,23 @@ ARGS to actually emit the message (if applicable)."
(setq fn "")
(when (symbolp btf)
(setq fn (symbol-name btf))
- (unless (and (string-match "^tramp" fn)
- (not (string-match
- "^tramp\\(-debug\\)?\\(-message\\|-error\\|-compat\\(-funcall\\|-with-temp-message\\)\\)$"
- fn)))
+ (unless
+ (and
+ (string-match "^tramp" fn)
+ (not
+ (string-match
+ (concat
+ "^"
+ (regexp-opt
+ '("tramp-compat-funcall"
+ "tramp-compat-with-temp-message"
+ "tramp-debug-message"
+ "tramp-error"
+ "tramp-error-with-buffer"
+ "tramp-message")
+ t)
+ "$")
+ fn)))
(setq fn nil)))
(setq btn (1+ btn))))
;; The following code inserts filename and line number.
@@ -2842,8 +2864,8 @@ User is always nil."
(t (file-local-copy filename)))))
;; When the file is not readable for the owner, it
- ;; cannot be inserted, even it is redable for the group
- ;; or for everybody.
+ ;; cannot be inserted, even if it is readable for the
+ ;; group or for everybody.
(set-file-modes local-copy (tramp-compat-octal-to-decimal "0600"))
(when (and (null remote-copy)
@@ -2851,8 +2873,7 @@ User is always nil."
method 'tramp-copy-keep-tmpfile))
;; We keep the local file for performance reasons,
;; useful for "rsync".
- (setq tramp-temp-buffer-file-name local-copy)
- (put 'tramp-temp-buffer-file-name 'permanent-local t))
+ (setq tramp-temp-buffer-file-name local-copy))
(with-progress-reporter
v 3 (format "Inserting local temp file `%s'" local-copy)
@@ -3077,26 +3098,27 @@ The terminal type can be configured with `tramp-terminal-type'."
(tramp-compat-with-temp-message ""
;; Enable auth-source and password-cache.
(tramp-set-connection-property vec "first-password-request" t)
- (let (exit)
- (while (not exit)
- (tramp-message proc 3 "Waiting for prompts from remote shell")
- (setq exit
- (catch 'tramp-action
- (if timeout
- (with-timeout (timeout)
- (tramp-process-one-action proc vec actions))
- (tramp-process-one-action proc vec actions)))))
- (with-current-buffer (tramp-get-connection-buffer vec)
- (widen)
- (tramp-message vec 6 "\n%s" (buffer-string)))
- (unless (eq exit 'ok)
- (tramp-clear-passwd vec)
- (tramp-error-with-buffer
- nil vec 'file-error
- (cond
- ((eq exit 'permission-denied) "Permission denied")
- ((eq exit 'process-died) "Process died")
- (t "Login failed")))))))
+ (save-restriction
+ (let (exit)
+ (while (not exit)
+ (tramp-message proc 3 "Waiting for prompts from remote shell")
+ (setq exit
+ (catch 'tramp-action
+ (if timeout
+ (with-timeout (timeout)
+ (tramp-process-one-action proc vec actions))
+ (tramp-process-one-action proc vec actions)))))
+ (with-current-buffer (tramp-get-connection-buffer vec)
+ (widen)
+ (tramp-message vec 6 "\n%s" (buffer-string)))
+ (unless (eq exit 'ok)
+ (tramp-clear-passwd vec)
+ (tramp-error-with-buffer
+ nil vec 'file-error
+ (cond
+ ((eq exit 'permission-denied) "Permission denied")
+ ((eq exit 'process-died) "Process died")
+ (t "Login failed"))))))))
:;; Utility functions:
diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el
index 005fbb932a..1f3064c706 100644
--- a/lisp/net/trampver.el
+++ b/lisp/net/trampver.el
@@ -1,8 +1,7 @@
;;; trampver.el --- Transparent Remote Access, Multiple Protocol
;;; lisp/trampver.el. Generated from trampver.el.in by configure.
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Kai Großjohann <[email protected]>
;; Keywords: comm, processes
diff --git a/lisp/net/webjump.el b/lisp/net/webjump.el
index 81e4e2c65f..be79bc721e 100644
--- a/lisp/net/webjump.el
+++ b/lisp/net/webjump.el
@@ -1,7 +1,6 @@
;;; webjump.el --- programmable Web hotlist
-;; Copyright (C) 1996, 1997, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Neil W. Van Dyke <[email protected]>
;; Created: 09-Aug-1996
@@ -480,5 +479,4 @@ Please submit bug reports and other feedback to the author, Neil W. Van Dyke
(provide 'webjump)
-;; arch-tag: f1d20156-0a6f-488b-bd91-f69ee8b6d5cc
;;; webjump.el ends here
diff --git a/lisp/net/xesam.el b/lisp/net/xesam.el
index 03c188006d..16500c61b7 100644
--- a/lisp/net/xesam.el
+++ b/lisp/net/xesam.el
@@ -1,6 +1,6 @@
;;; xesam.el --- Xesam interface to search engines.
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Michael Albinus <[email protected]>
;; Keywords: tools, hypermedia
@@ -918,5 +918,4 @@ Example:
;; yahoo, ebay, ...
;; - Construct complex queries via widgets, like in mairix.el.
-;; arch-tag: 7fb9fc6c-c2ff-4bc7-bb42-bacb80cce2b2
;;; xesam.el ends here
diff --git a/lisp/net/zeroconf.el b/lisp/net/zeroconf.el
index e49a45c8a4..d801a4c094 100644
--- a/lisp/net/zeroconf.el
+++ b/lisp/net/zeroconf.el
@@ -1,6 +1,6 @@
;;; zeroconf.el --- Service browser using Avahi.
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Michael Albinus <[email protected]>
;; Keywords: comm, hardware
@@ -686,5 +686,4 @@ For the description of arguments, see `zeroconf-resolved-services-hash'."
(provide 'zeroconf)
-;; arch-tag: ea578165-7fa8-44f4-90f0-de3940aec69f
;;; zeroconf.el ends here
diff --git a/lisp/newcomment.el b/lisp/newcomment.el
index 3227d2ac53..d88b76a775 100644
--- a/lisp/newcomment.el
+++ b/lisp/newcomment.el
@@ -1,7 +1,6 @@
;;; newcomment.el --- (un)comment regions of buffers
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: code extracted from Emacs-20's simple.el
;; Maintainer: Stefan Monnier <[email protected]>
@@ -1185,6 +1184,12 @@ end- comment markers additionally to what `comment-add' already specifies."
'box-multi 'box)))
(comment-region beg end (+ comment-add arg))))
+(defun comment-only-p (beg end)
+ "Return non-nil if the text between BEG and END is all comments."
+ (save-excursion
+ (goto-char beg)
+ (comment-forward (point-max))
+ (<= end (point))))
;;;###autoload
(defun comment-or-uncomment-region (beg end &optional arg)
@@ -1193,10 +1198,7 @@ in which case call `uncomment-region'. If a prefix arg is given, it
is passed on to the respective function."
(interactive "*r\nP")
(comment-normalize-vars)
- (funcall (if (save-excursion ;; check for already commented region
- (goto-char beg)
- (comment-forward (point-max))
- (<= end (point)))
+ (funcall (if (comment-only-p beg end)
'uncomment-region 'comment-region)
beg end arg))
@@ -1387,5 +1389,4 @@ unless optional argument SOFT is non-nil."
(provide 'newcomment)
-;; arch-tag: 01e3320a-00c8-44ea-a696-8f8e7354c858
;;; newcomment.el ends here
diff --git a/lisp/notifications.el b/lisp/notifications.el
index dc4904db4c..893b9ed095 100644
--- a/lisp/notifications.el
+++ b/lisp/notifications.el
@@ -1,6 +1,6 @@
;;; notifications.el --- Client interface to desktop notifications.
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Julien Danjou <[email protected]>
;; Keywords: comm desktop notifications
diff --git a/lisp/novice.el b/lisp/novice.el
index 47b32fcde8..e47b17cf34 100644
--- a/lisp/novice.el
+++ b/lisp/novice.el
@@ -1,7 +1,6 @@
;;; novice.el --- handling of disabled commands ("novice mode") for Emacs
-;; Copyright (C) 1985, 1986, 1987, 1994, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1994, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal, help
diff --git a/lisp/nxml/nxml-enc.el b/lisp/nxml/nxml-enc.el
index e36863154b..350c5c77c7 100644
--- a/lisp/nxml/nxml-enc.el
+++ b/lisp/nxml/nxml-enc.el
@@ -1,6 +1,6 @@
;;; nxml-enc.el --- XML encoding auto-detection
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML
@@ -146,5 +146,4 @@ Applied to any files that `auto-mode-alist' says should be handled by
(provide 'nxml-enc)
-;; arch-tag: c2436247-78f3-418c-8069-85dc5335d083
;;; nxml-enc.el ends here
diff --git a/lisp/nxml/nxml-glyph.el b/lisp/nxml/nxml-glyph.el
index ec7ee492e9..1b48a3fa25 100644
--- a/lisp/nxml/nxml-glyph.el
+++ b/lisp/nxml/nxml-glyph.el
@@ -1,6 +1,6 @@
;;; nxml-glyph.el --- glyph-handling for nxml-mode
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML
@@ -415,5 +415,4 @@ Return nil if the face cannot display a glyph for N."
(provide 'nxml-glyph)
-;; arch-tag: 50985104-27c6-4241-8625-b11aa5685633
;;; nxml-glyph.el ends here
diff --git a/lisp/nxml/nxml-maint.el b/lisp/nxml/nxml-maint.el
index a10ad2b21a..e24a3d7172 100644
--- a/lisp/nxml/nxml-maint.el
+++ b/lisp/nxml/nxml-maint.el
@@ -1,7 +1,6 @@
;;; nxml-maint.el --- commands for maintainers of nxml-*.el
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML
diff --git a/lisp/nxml/nxml-mode.el b/lisp/nxml/nxml-mode.el
index d1cffdd38a..993a6f7a2a 100644
--- a/lisp/nxml/nxml-mode.el
+++ b/lisp/nxml/nxml-mode.el
@@ -1,7 +1,6 @@
;;; nxml-mode.el --- a new XML mode
-;; Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2004, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML
diff --git a/lisp/nxml/nxml-ns.el b/lisp/nxml/nxml-ns.el
index 60715b9474..4cf7f50d09 100644
--- a/lisp/nxml/nxml-ns.el
+++ b/lisp/nxml/nxml-ns.el
@@ -1,6 +1,6 @@
;;; nxml-ns.el --- XML namespace processing
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML
@@ -145,5 +145,4 @@ NS is a symbol or nil."
(provide 'nxml-ns)
-;; arch-tag: 5968e4b7-fb37-46ce-8621-c65db9793028
;;; nxml-ns.el ends here
diff --git a/lisp/nxml/nxml-outln.el b/lisp/nxml/nxml-outln.el
index 1afc4e9e5e..6a2a9daf7e 100644
--- a/lisp/nxml/nxml-outln.el
+++ b/lisp/nxml/nxml-outln.el
@@ -1,7 +1,6 @@
;;; nxml-outln.el --- outline support for nXML mode
-;; Copyright (C) 2004, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML
diff --git a/lisp/nxml/nxml-parse.el b/lisp/nxml/nxml-parse.el
index 94f11fbf5d..36e112e407 100644
--- a/lisp/nxml/nxml-parse.el
+++ b/lisp/nxml/nxml-parse.el
@@ -1,6 +1,6 @@
;;; nxml-parse.el --- XML parser, sharing infrastructure with nxml-mode
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML
@@ -315,5 +315,4 @@ same way as well-formedness error."
(provide 'nxml-parse)
-;; arch-tag: fc19639b-1bff-4673-9992-f539da89ba1e
;;; nxml-parse.el ends here
diff --git a/lisp/nxml/nxml-rap.el b/lisp/nxml/nxml-rap.el
index 3b36cef753..05df611832 100644
--- a/lisp/nxml/nxml-rap.el
+++ b/lisp/nxml/nxml-rap.el
@@ -1,6 +1,6 @@
;;; nxml-rap.el --- low-level support for random access parsing for nXML mode
-;; Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003-2004, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML
@@ -482,5 +482,4 @@ expected `%s'"
(provide 'nxml-rap)
-;; arch-tag: cba241ec-4c59-4ef3-aa51-2cf92b3dd24f
;;; nxml-rap.el ends here
diff --git a/lisp/nxml/nxml-uchnm.el b/lisp/nxml/nxml-uchnm.el
index 03c09824f6..e96ee345ae 100644
--- a/lisp/nxml/nxml-uchnm.el
+++ b/lisp/nxml/nxml-uchnm.el
@@ -1,6 +1,6 @@
;;; nxml-uchnm.el --- support for Unicode standard cha names in nxml-mode
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML
@@ -248,5 +248,4 @@ the variable `nxml-enabled-unicode-blocks'."
(provide 'nxml-uchnm)
-;; arch-tag: 440248c3-b604-467c-8b50-e83662c659a3
;;; nxml-uchnm.el ends here
diff --git a/lisp/nxml/nxml-util.el b/lisp/nxml/nxml-util.el
index a069a7aa0c..e2e4ed348b 100644
--- a/lisp/nxml/nxml-util.el
+++ b/lisp/nxml/nxml-util.el
@@ -1,6 +1,6 @@
;;; nxml-util.el --- utility functions for nxml-*.el
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML
@@ -132,5 +132,4 @@ modifications to the buffer."
(provide 'nxml-util)
-;; arch-tag: 7d3b3af4-de2b-4410-bf67-94d64824324b
;;; nxml-util.el ends here
diff --git a/lisp/nxml/rng-cmpct.el b/lisp/nxml/rng-cmpct.el
index 858f377878..09bd2b7503 100644
--- a/lisp/nxml/rng-cmpct.el
+++ b/lisp/nxml/rng-cmpct.el
@@ -1,6 +1,6 @@
;;; rng-cmpct.el --- parsing of RELAX NG Compact Syntax schemas
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML, RelaxNG
@@ -938,4 +938,3 @@ Current token after parse is token following ]."
;;; rng-cmpct.el
-;; arch-tag: 90395eb1-283b-4146-bbc1-6d6ef1704e57
diff --git a/lisp/nxml/rng-dt.el b/lisp/nxml/rng-dt.el
index 89e7a846e4..e320f8377b 100644
--- a/lisp/nxml/rng-dt.el
+++ b/lisp/nxml/rng-dt.el
@@ -1,6 +1,6 @@
;;; rng-dt.el --- datatype library interface for RELAX NG
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML, RelaxNG
@@ -61,5 +61,4 @@ a datatype library.")
(provide 'rng-dt)
-;; arch-tag: 1dca90f1-8dae-4dd4-b61f-fade4452c014
;;; rng-dt.el ends here
diff --git a/lisp/nxml/rng-loc.el b/lisp/nxml/rng-loc.el
index 35ec87a8c4..b9e31e0a09 100644
--- a/lisp/nxml/rng-loc.el
+++ b/lisp/nxml/rng-loc.el
@@ -1,7 +1,6 @@
;;; rng-loc.el --- locate the schema to use for validation
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML, RelaxNG
diff --git a/lisp/nxml/rng-maint.el b/lisp/nxml/rng-maint.el
index e3da03136b..d31740f0ca 100644
--- a/lisp/nxml/rng-maint.el
+++ b/lisp/nxml/rng-maint.el
@@ -1,6 +1,6 @@
;;; rng-maint.el --- commands for RELAX NG maintainers
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML, RelaxNG
@@ -275,5 +275,4 @@
(while (rng-do-some-validation
(lambda () t))))
-;; arch-tag: 4b8c6143-daac-4888-9c61-9bea6f935f17
;;; rng-maint.el ends here
diff --git a/lisp/nxml/rng-match.el b/lisp/nxml/rng-match.el
index 7afb4e82e4..072d932678 100644
--- a/lisp/nxml/rng-match.el
+++ b/lisp/nxml/rng-match.el
@@ -1,6 +1,6 @@
;;; rng-match.el --- matching of RELAX NG patterns against XML events
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML, RelaxNG
@@ -1736,5 +1736,4 @@ be exhaustive."
(provide 'rng-match)
-;; arch-tag: c8c50733-edcf-49fb-85e2-0aac8749b7f8
;;; rng-match.el ends here
diff --git a/lisp/nxml/rng-nxml.el b/lisp/nxml/rng-nxml.el
index 96e3525410..1686ebfc51 100644
--- a/lisp/nxml/rng-nxml.el
+++ b/lisp/nxml/rng-nxml.el
@@ -1,7 +1,6 @@
;;; rng-nxml.el --- make nxml-mode take advantage of rng-validate-mode
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML, RelaxNG
diff --git a/lisp/nxml/rng-parse.el b/lisp/nxml/rng-parse.el
index 88e3c026ef..68a3aff3a0 100644
--- a/lisp/nxml/rng-parse.el
+++ b/lisp/nxml/rng-parse.el
@@ -1,6 +1,6 @@
;;; rng-parse.el --- parse an XML file and validate it against a schema
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML, RelaxNG
@@ -100,5 +100,4 @@ be signaled in the same way as when it is not well-formed."
(provide 'rng-parse)
-;; arch-tag: 8f14f533-b687-4dc0-9cd7-617ead856981
;;; rng-parse.el ends here
diff --git a/lisp/nxml/rng-pttrn.el b/lisp/nxml/rng-pttrn.el
index 0f2d325079..a803369d3d 100644
--- a/lisp/nxml/rng-pttrn.el
+++ b/lisp/nxml/rng-pttrn.el
@@ -1,6 +1,6 @@
;;; rng-pttrn.el --- RELAX NG patterns
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML, RelaxNG
@@ -186,5 +186,4 @@
(provide 'rng-pttrn)
-;; arch-tag: 9418e269-ddd4-4037-861f-ff903f48f008
;;; rng-pttrn.el ends here
diff --git a/lisp/nxml/rng-uri.el b/lisp/nxml/rng-uri.el
index 5f9c515078..2b367b2007 100644
--- a/lisp/nxml/rng-uri.el
+++ b/lisp/nxml/rng-uri.el
@@ -1,6 +1,6 @@
;;; rng-uri.el --- URI parsing and manipulation
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML
@@ -352,5 +352,4 @@ Both FULL and BASE must be absolute URIs."
(provide 'rng-uri)
-;; arch-tag: c7b7b8b8-61d1-48ec-82bc-7001c70b2e9d
;;; rng-uri.el ends here
diff --git a/lisp/nxml/rng-util.el b/lisp/nxml/rng-util.el
index 180f91f013..3e23b67c99 100644
--- a/lisp/nxml/rng-util.el
+++ b/lisp/nxml/rng-util.el
@@ -1,6 +1,6 @@
;;; rng-util.el --- utility functions for RELAX NG library
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML, RelaxNG
@@ -167,5 +167,4 @@ HIST, if non-nil, specifies a history list as with `completing-read'."
(provide 'rng-util)
-;; arch-tag: 2dc233e0-5e7a-488f-bfc4-5909512dbaf0
;;; rng-util.el ends here
diff --git a/lisp/nxml/rng-valid.el b/lisp/nxml/rng-valid.el
index f55601b322..876e582ed2 100644
--- a/lisp/nxml/rng-valid.el
+++ b/lisp/nxml/rng-valid.el
@@ -1,7 +1,6 @@
;;; rng-valid.el --- real-time validation of XML using RELAX NG
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML, RelaxNG
diff --git a/lisp/nxml/rng-xsd.el b/lisp/nxml/rng-xsd.el
index 74aa009e65..266f8daac9 100644
--- a/lisp/nxml/rng-xsd.el
+++ b/lisp/nxml/rng-xsd.el
@@ -1,6 +1,6 @@
;;; rng-xsd.el --- W3C XML Schema datatypes library for RELAX NG
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML, RelaxNG
@@ -856,5 +856,4 @@ MONTHS must be an integer >= 0."
(provide 'rng-xsd)
-;; arch-tag: 6b05510e-a5bb-4b99-8618-4660d00d0abb
;;; rng-xsd.el ends here
diff --git a/lisp/nxml/xmltok.el b/lisp/nxml/xmltok.el
index d2aeff9778..a9b24955fa 100644
--- a/lisp/nxml/xmltok.el
+++ b/lisp/nxml/xmltok.el
@@ -1,6 +1,6 @@
;;; xmltok.el --- XML tokenization
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML
@@ -1920,5 +1920,4 @@ and `xmltok-namespace-attributes'."
(provide 'xmltok)
-;; arch-tag: 747e5f3a-6fc3-4f8d-bd96-89f05aa99f5e
;;; xmltok.el ends here
diff --git a/lisp/nxml/xsd-regexp.el b/lisp/nxml/xsd-regexp.el
index 1c13060679..fbf0e15924 100644
--- a/lisp/nxml/xsd-regexp.el
+++ b/lisp/nxml/xsd-regexp.el
@@ -1,6 +1,6 @@
;;; xsd-regexp.el --- translate W3C XML Schema regexps to Emacs regexps
-;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
;; Author: James Clark
;; Keywords: XML, regexp
@@ -2117,5 +2117,4 @@ Code is inserted into the current buffer."
(provide 'xsd-regexp)
-;; arch-tag: bf990d61-a26c-4fd3-b578-56a5640729da
;;; xsd-regexp.el ends here
diff --git a/lisp/obsolete/awk-mode.el b/lisp/obsolete/awk-mode.el
index 0d1b3c9a4f..d09ff1dd89 100644
--- a/lisp/obsolete/awk-mode.el
+++ b/lisp/obsolete/awk-mode.el
@@ -1,7 +1,6 @@
;;; awk-mode.el --- AWK code editing commands for Emacs
-;; Copyright (C) 1988, 1994, 1996, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1994, 1996, 2000-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: unix, languages
@@ -122,5 +121,4 @@ Turning on AWK mode runs `awk-mode-hook'."
(provide 'awk-mode)
-;; arch-tag: 14ebc02a-b3c5-4e76-8034-6ca9ac0af0e6
;;; awk-mode.el ends here
diff --git a/lisp/obsolete/cl-compat.el b/lisp/obsolete/cl-compat.el
index 622c4eaace..21bb46179c 100644
--- a/lisp/obsolete/cl-compat.el
+++ b/lisp/obsolete/cl-compat.el
@@ -1,7 +1,6 @@
;;; cl-compat.el --- Common Lisp extensions for GNU Emacs Lisp (compatibility)
-;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
;; Author: Dave Gillespie <[email protected]>
;; Version: 2.02
diff --git a/lisp/obsolete/complete.el b/lisp/obsolete/complete.el
index b7e9474380..925361566f 100644
--- a/lisp/obsolete/complete.el
+++ b/lisp/obsolete/complete.el
@@ -1,7 +1,6 @@
;;; complete.el --- partial completion mechanism plus other goodies
-;; Copyright (C) 1990, 1991, 1992, 1993, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 1999-2011 Free Software Foundation, Inc.
;; Author: Dave Gillespie <[email protected]>
;; Keywords: abbrev convenience
@@ -1120,5 +1119,4 @@ This is only used by "
(provide 'complete)
-;; arch-tag: fc7e2768-ff44-4e22-b579-4d825b968458
;;; complete.el ends here
diff --git a/lisp/obsolete/fast-lock.el b/lisp/obsolete/fast-lock.el
index 979daae258..68d06ef34b 100644
--- a/lisp/obsolete/fast-lock.el
+++ b/lisp/obsolete/fast-lock.el
@@ -1,7 +1,6 @@
;;; fast-lock.el --- automagic text properties caching for fast Font Lock mode
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Simon Marshall <[email protected]>
;; Maintainer: FSF
@@ -855,5 +854,4 @@ See `fast-lock-get-face-properties'."
(provide 'fast-lock)
-;; arch-tag: 638c431e-8cae-4538-80a1-963ff97d233e
;;; fast-lock.el ends here
diff --git a/lisp/obsolete/iso-acc.el b/lisp/obsolete/iso-acc.el
index 5a96e3fd1d..14b6a20201 100644
--- a/lisp/obsolete/iso-acc.el
+++ b/lisp/obsolete/iso-acc.el
@@ -1,7 +1,6 @@
;;; iso-acc.el --- minor mode providing electric accent keys
-;; Copyright (C) 1993, 1994, 1996, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Johan Vromans
;; Maintainer: FSF
@@ -487,5 +486,4 @@ Noninteractively, this operates on text from START to END."
(add-hook 'minibuffer-setup-hook 'iso-acc-minibuf-setup)
-;; arch-tag: 149ff409-7c3e-4574-9b5d-ac038939c0a6
;;; iso-acc.el ends here
diff --git a/lisp/obsolete/iso-insert.el b/lisp/obsolete/iso-insert.el
index 90ff2398ee..3f3b6d4abb 100644
--- a/lisp/obsolete/iso-insert.el
+++ b/lisp/obsolete/iso-insert.el
@@ -1,7 +1,6 @@
;;; iso-insert.el --- insert functions for ISO 8859/1 -*- coding: iso-8859-1;-*-
-;; Copyright (C) 1987, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1987, 1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Howard Gayle
;; Maintainer: FSF
@@ -629,5 +628,4 @@
(provide 'iso-insert)
-;; arch-tag: eb5f97bd-a034-4851-92ff-ab1f1bf92814
;;; iso-insert.el ends here
diff --git a/lisp/obsolete/iso-swed.el b/lisp/obsolete/iso-swed.el
index 9a6df1dc32..d197f0d5b6 100644
--- a/lisp/obsolete/iso-swed.el
+++ b/lisp/obsolete/iso-swed.el
@@ -1,7 +1,6 @@
;;; iso-swed.el --- set up char tables for ISO 8859/1 for Swedish/Finnish ttys
-;; Copyright (C) 1987, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1987, 2001-2011 Free Software Foundation, Inc.
;; Author: Howard Gayle
;; Maintainer: FSF
@@ -149,5 +148,4 @@
(provide 'iso-swed)
-;; arch-tag: 6b3dc269-660c-44b6-a25f-680b921eaf2c
;;; iso-swed.el ends here
diff --git a/lisp/obsolete/keyswap.el b/lisp/obsolete/keyswap.el
index f9e6118705..f95b8f5bdb 100644
--- a/lisp/obsolete/keyswap.el
+++ b/lisp/obsolete/keyswap.el
@@ -1,7 +1,6 @@
;;; keyswap.el --- swap BS and DEL keys -*- no-byte-compile: t -*-
-;; Copyright (C) 1992, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 2001-2011 Free Software Foundation, Inc.
;; Author: Eric S. Raymond <[email protected]>
;; Keywords: terminals
@@ -39,5 +38,4 @@
(aset the-table ?\^h ?\177)
(setq keyboard-translate-table the-table))
-;; arch-tag: 67cf7009-e23e-421c-9648-078e7277297c
;;; keyswap.el ends here
diff --git a/lisp/obsolete/lazy-lock.el b/lisp/obsolete/lazy-lock.el
index b425498e18..f922a5c30b 100644
--- a/lisp/obsolete/lazy-lock.el
+++ b/lisp/obsolete/lazy-lock.el
@@ -1,7 +1,6 @@
;;; lazy-lock.el --- lazy demand-driven fontification for fast Font Lock mode
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Simon Marshall <[email protected]>
;; Maintainer: FSF
diff --git a/lisp/obsolete/levents.el b/lisp/obsolete/levents.el
index 1715185ac0..96183cadb9 100644
--- a/lisp/obsolete/levents.el
+++ b/lisp/obsolete/levents.el
@@ -1,7 +1,6 @@
;;; levents.el --- emulate the Lucid event data type and associated functions
-;; Copyright (C) 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: emulations
@@ -290,5 +289,4 @@ GNU Emacs 19 does not currently generate process-output events."
(provide 'levents)
-;; arch-tag: a80c21da-69d7-46de-9cdb-5f68577b5525
;;; levents.el ends here
diff --git a/lisp/obsolete/lmenu.el b/lisp/obsolete/lmenu.el
index 14f6398eef..3c188be93e 100644
--- a/lisp/obsolete/lmenu.el
+++ b/lisp/obsolete/lmenu.el
@@ -1,7 +1,6 @@
;;; lmenu.el --- emulate Lucid's menubar support
-;; Copyright (C) 1992, 1993, 1994, 1997, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992-1994, 1997, 2001-2011 Free Software Foundation, Inc.
;; Keywords: emulations obsolete
;; Obsolete-since: 23.3
diff --git a/lisp/obsolete/lucid.el b/lisp/obsolete/lucid.el
index a35cde0229..d5ef629ffb 100644
--- a/lisp/obsolete/lucid.el
+++ b/lisp/obsolete/lucid.el
@@ -1,7 +1,6 @@
;;; lucid.el --- emulate some Lucid Emacs functions
-;; Copyright (C) 1993, 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1995, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: emulations
diff --git a/lisp/obsolete/old-whitespace.el b/lisp/obsolete/old-whitespace.el
index 71568f98d5..be967938bc 100644
--- a/lisp/obsolete/old-whitespace.el
+++ b/lisp/obsolete/old-whitespace.el
@@ -1,7 +1,6 @@
;;; whitespace.el --- warn about and clean bogus whitespaces in the file
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Rajesh Vaidheeswarran <[email protected]>
;; Keywords: convenience
@@ -809,5 +808,4 @@ This is meant to be added buffer-locally to `write-file-functions'."
(provide 'whitespace)
-;; arch-tag: 4ff44e87-b63c-402d-95a6-15e51e58bd0c
;;; whitespace.el ends here
diff --git a/lisp/obsolete/options.el b/lisp/obsolete/options.el
index 808617d4b9..1b475e9e98 100644
--- a/lisp/obsolete/options.el
+++ b/lisp/obsolete/options.el
@@ -1,7 +1,6 @@
;;; options.el --- edit Options command for Emacs
-;; Copyright (C) 1985, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -147,5 +146,4 @@ For convenience, the characters \\[backward-paragraph] and \\[forward-paragraph]
(provide 'options)
-;; arch-tag: d18211a1-f3fb-48c9-a449-d5acde406a3c
;;; options.el ends here
diff --git a/lisp/pgg-def.el b/lisp/obsolete/pgg-def.el
index d1b78ccb30..39aef5fd27 100644
--- a/lisp/pgg-def.el
+++ b/lisp/obsolete/pgg-def.el
@@ -1,12 +1,12 @@
;;; pgg-def.el --- functions/macros for defining PGG functions
-;; Copyright (C) 1999, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2002-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Created: 1999/11/02
;; Keywords: PGP, OpenPGP, GnuPG
;; Package: pgg
+;; Obsolete-since: 24.1
;; This file is part of GNU Emacs.
diff --git a/lisp/pgg-gpg.el b/lisp/obsolete/pgg-gpg.el
index 97b3b3e3d4..064985f456 100644
--- a/lisp/pgg-gpg.el
+++ b/lisp/obsolete/pgg-gpg.el
@@ -1,7 +1,6 @@
;;; pgg-gpg.el --- GnuPG support for PGG.
-;; Copyright (C) 1999, 2000, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2000, 2002-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Symmetric encryption and gpg-agent support added by:
@@ -9,6 +8,7 @@
;; Created: 1999/10/28
;; Keywords: PGP, OpenPGP, GnuPG
;; Package: pgg
+;; Obsolete-since: 24.1
;; This file is part of GNU Emacs.
diff --git a/lisp/pgg-parse.el b/lisp/obsolete/pgg-parse.el
index 72f8729de7..3d4539d946 100644
--- a/lisp/pgg-parse.el
+++ b/lisp/obsolete/pgg-parse.el
@@ -1,12 +1,12 @@
;;; pgg-parse.el --- OpenPGP packet parsing
-;; Copyright (C) 1999, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2002-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Created: 1999/10/28
;; Keywords: PGP, OpenPGP, GnuPG
;; Package: pgg
+;; Obsolete-since: 24.1
;; This file is part of GNU Emacs.
diff --git a/lisp/pgg-pgp.el b/lisp/obsolete/pgg-pgp.el
index dfa02d7835..7a9c70249a 100644
--- a/lisp/pgg-pgp.el
+++ b/lisp/obsolete/pgg-pgp.el
@@ -1,12 +1,12 @@
;;; pgg-pgp.el --- PGP 2.* and 6.* support for PGG.
-;; Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2000, 2002-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Created: 1999/11/02
;; Keywords: PGP, OpenPGP
;; Package: pgg
+;; Obsolete-since: 24.1
;; This file is part of GNU Emacs.
diff --git a/lisp/pgg-pgp5.el b/lisp/obsolete/pgg-pgp5.el
index 4973119094..796310bcfd 100644
--- a/lisp/pgg-pgp5.el
+++ b/lisp/obsolete/pgg-pgp5.el
@@ -1,12 +1,12 @@
;;; pgg-pgp5.el --- PGP 5.* support for PGG.
-;; Copyright (C) 1999, 2000, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2000, 2002-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Created: 1999/11/02
;; Keywords: PGP, OpenPGP
;; Package: pgg
+;; Obsolete-since: 24.1
;; This file is part of GNU Emacs.
diff --git a/lisp/pgg.el b/lisp/obsolete/pgg.el
index f654f3dc35..42030f7d50 100644
--- a/lisp/pgg.el
+++ b/lisp/obsolete/pgg.el
@@ -1,12 +1,12 @@
;;; pgg.el --- glue for the various PGP implementations.
-;; Copyright (C) 1999, 2000, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2000, 2002-2011 Free Software Foundation, Inc.
;; Author: Daiki Ueno <[email protected]>
;; Symmetric encryption added by: Sascha Wilde <[email protected]>
;; Created: 1999/10/28
;; Keywords: PGP
+;; Obsolete-since: 24.1
;; This file is part of GNU Emacs.
@@ -23,11 +23,6 @@
;; 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:
-
-;; This file is on its way to obsolescence, waiting for allout.el to
-;; switch to EPG.
-
;;; Code:
(require 'pgg-def)
diff --git a/lisp/obsolete/resume.el b/lisp/obsolete/resume.el
index aa12ce3234..6b52ef2878 100644
--- a/lisp/obsolete/resume.el
+++ b/lisp/obsolete/resume.el
@@ -1,7 +1,6 @@
;;; resume.el --- process command line args from within a suspended Emacs job
-;; Copyright (C) 1992, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 2001-2011 Free Software Foundation, Inc.
;; Author: Joe Wells <[email protected]>
;; Adapted-By: ESR
@@ -124,5 +123,4 @@
(provide 'resume)
-;; arch-tag: c90b2761-4803-4e58-a0ae-c4721368b628
;;; resume.el ends here
diff --git a/lisp/obsolete/s-region.el b/lisp/obsolete/s-region.el
index a88d1f37ee..b06861c0ef 100644
--- a/lisp/obsolete/s-region.el
+++ b/lisp/obsolete/s-region.el
@@ -1,7 +1,6 @@
;;; s-region.el --- set region using shift key
-;; Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Morten Welinder <[email protected]>
;; Keywords: terminals
@@ -121,5 +120,4 @@ to global keymap."
(provide 's-region)
-;; arch-tag: a471e912-18d7-4247-a29b-2100bca180ff
;;; s-region.el ends here
diff --git a/lisp/obsolete/scribe.el b/lisp/obsolete/scribe.el
index 568401b465..3f543b38e4 100644
--- a/lisp/obsolete/scribe.el
+++ b/lisp/obsolete/scribe.el
@@ -1,7 +1,6 @@
;;; scribe.el --- scribe mode, and its idiosyncratic commands
-;; Copyright (C) 1985, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc.
;; Author: William Sommerfeld
;; (according to ack.texi)
@@ -326,5 +325,4 @@ preceding text is of the form @Command."
(provide 'scribe)
-;; arch-tag: 64f454c4-7544-4ea2-9d14-f0b668f2cdc6
;;; scribe.el ends here
diff --git a/lisp/textmodes/spell.el b/lisp/obsolete/spell.el
index dc4859ac53..a97a6dce52 100644
--- a/lisp/textmodes/spell.el
+++ b/lisp/obsolete/spell.el
@@ -1,10 +1,10 @@
;;; spell.el --- spelling correction interface for Emacs
-;; Copyright (C) 1985, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: wp, unix
+;; Obsolete-since: 23.1
;; This file is part of GNU Emacs.
@@ -146,27 +146,25 @@ for example, \"word\"."
(defun spell-string (string)
"Check spelling of string supplied as argument."
(interactive "sSpell string: ")
- (let ((buf (get-buffer-create " *temp*")))
- (with-current-buffer buf
- (widen)
- (erase-buffer)
- (insert string "\n")
- (if (string= "spell" spell-command)
- (call-process-region (point-min) (point-max) "spell"
- t t)
- (call-process-region (point-min) (point-max) shell-file-name
- t t nil "-c" spell-command))
- (if (= 0 (buffer-size))
- (message "%s is correct" string)
- (goto-char (point-min))
- (while (search-forward "\n" nil t)
- (replace-match " "))
- (message "%sincorrect" (buffer-substring 1 (point-max)))))))
+ (with-temp-buffer
+ (widen)
+ (erase-buffer)
+ (insert string "\n")
+ (if (string= "spell" spell-command)
+ (call-process-region (point-min) (point-max) "spell"
+ t t)
+ (call-process-region (point-min) (point-max) shell-file-name
+ t t nil "-c" spell-command))
+ (if (= 0 (buffer-size))
+ (message "%s is correct" string)
+ (goto-char (point-min))
+ (while (search-forward "\n" nil t)
+ (replace-match " "))
+ (message "%sincorrect" (buffer-substring 1 (point-max))))))
;;;###autoload
(make-obsolete 'spell-string "The `spell' package is obsolete - use `ispell'."
"23.1")
(provide 'spell)
-;; arch-tag: 7eabb848-9c76-431a-bcdb-0e0592d2db04
;;; spell.el ends here
diff --git a/lisp/emacs-lisp/sregex.el b/lisp/obsolete/sregex.el
index f5e3aac231..d1c80a6567 100644
--- a/lisp/emacs-lisp/sregex.el
+++ b/lisp/obsolete/sregex.el
@@ -1,11 +1,11 @@
;;; sregex.el --- symbolic regular expressions
-;; Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Bob Glickstein <[email protected]>
;; Maintainer: Bob Glickstein <[email protected]>
;; Keywords: extensions
+;; Obsolete-since: 24.1
;; This file is part of GNU Emacs.
@@ -604,5 +604,4 @@ has one of the following forms:
(provide 'sregex)
-;; arch-tag: 460c1f5a-eb6e-42ec-a451-ffac78bdf492
;;; sregex.el ends here
diff --git a/lisp/obsolete/swedish.el b/lisp/obsolete/swedish.el
index 3cca969758..4b82a74bce 100644
--- a/lisp/obsolete/swedish.el
+++ b/lisp/obsolete/swedish.el
@@ -1,7 +1,6 @@
;;; swedish.el --- miscellaneous functions for dealing with Swedish
-;; Copyright (C) 1988, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1988, 2001-2011 Free Software Foundation, Inc.
;; Author: Howard Gayle
;; Maintainer: FSF
@@ -159,5 +158,4 @@ Leaves point just after the word that looks Swedish."
(provide 'swedish)
-;; arch-tag: a117019d-acac-4ac4-8eac-0dbd49a41d32
;;; swedish.el ends here
diff --git a/lisp/obsolete/sym-comp.el b/lisp/obsolete/sym-comp.el
index 90ce5b4f20..6365a1075e 100644
--- a/lisp/obsolete/sym-comp.el
+++ b/lisp/obsolete/sym-comp.el
@@ -1,6 +1,6 @@
;;; sym-comp.el --- mode-dependent symbol completion
-;; Copyright (C) 2004, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2004, 2008-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Keywords: extensions
@@ -227,5 +227,4 @@ completion:
(provide 'sym-comp)
-;; arch-tag: 6fcce616-f3c4-4751-94b4-710e83144124
;;; sym-comp.el ends here
diff --git a/lisp/obsolete/vc-mcvs.el b/lisp/obsolete/vc-mcvs.el
index 8027ee6293..06ce7f41c6 100644
--- a/lisp/obsolete/vc-mcvs.el
+++ b/lisp/obsolete/vc-mcvs.el
@@ -1,7 +1,6 @@
;;; vc-mcvs.el --- VC backend for the Meta-CVS version-control system
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: FSF (see vc.el for full credits)
;; Maintainer: None
@@ -585,5 +584,4 @@ and that it passes `vc-mcvs-global-switches' to it before FLAGS."
;;
;; ********** READ THIS! **********
-;; arch-tag: a39c7c1c-5247-429d-88df-dd7187d2e704
;;; vc-mcvs.el ends here
diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog
index 2973ff4b57..b35cf0738b 100644
--- a/lisp/org/ChangeLog
+++ b/lisp/org/ChangeLog
@@ -1,3 +1,13 @@
+2011-01-13 Stefan Monnier <[email protected]>
+
+ * org-remember.el (org-remember-mode):
+ * org-capture.el (org-capture-mode): Don't run hook redundantly.
+
+2011-01-09 Chong Yidong <[email protected]>
+
+ * org-faces.el (org-link): Inherit from link face.
+ Suggested by Joakim Verona.
+
2010-12-11 Tassilo Horn <[email protected]>
* org-footnote.el (org-footnote-create-definition): Place
@@ -175,6 +185,9 @@
* org-compat.el (org-floor*): New function.
+2010-12-11 Carsten Dominik <[email protected]>
+ John Wiegley <[email protected]>
+
* org-complete.el: New file.
2010-12-11 Carsten Dominik <[email protected]>
@@ -183,7 +196,7 @@
2010-12-11 Matt Lundin <[email protected]>
- * org-agenda.el: (org-format-agenda-item) The value of
+ * org-agenda.el (org-format-agenda-item): The value of
org-category is not converted to a string unless it is defined.
2010-12-11 Eric Schulte <[email protected]>
@@ -247,11 +260,6 @@
* org.el (org-auto-repeat-maybe): Use org-today.
-2010-12-11 David Maus <[email protected]>
-
- * test-org.el (test-org/org-link-escape-url-with-escaped-char): Add
- test for escaping and unescaping url with already escaped char.
-
2010-12-11 Carsten Dominik <[email protected]>
* org-clock.el (org-day-of-week): New function.
@@ -260,8 +268,8 @@
2010-12-11 Sébastien Vauban <[email protected]>
- * org.el (org-complete-tags-always-offer-all-agenda-tags): Fix
- docstring.
+ * org.el (org-complete-tags-always-offer-all-agenda-tags):
+ Fix docstring.
2010-12-11 Julien Danjou <[email protected]>
@@ -277,10 +285,10 @@
2010-12-11 Nicolas Goaziou <[email protected]>
- * org-latex.el (org-export-latex-lists): do not add an
+ * org-latex.el (org-export-latex-lists): Do not add an
unnecessary newline character after a list.
- * org-list.el (org-list-bottom-point-with-indent): ensure bottom
+ * org-list.el (org-list-bottom-point-with-indent): Ensure bottom
point is just after a non blank line.
2010-12-11 Eric Schulte <[email protected]>
@@ -320,7 +328,7 @@
2010-12-11 Eric Schulte <[email protected]>
- * ob-eval.el (org-babel-eval-wipe-error-buffer): Fixed compiler
+ * ob-eval.el (org-babel-eval-wipe-error-buffer): Fix compiler
warning and added documentation string.
2010-12-11 Eric Schulte <[email protected]>
@@ -373,8 +381,8 @@
2010-12-11 Eric Schulte <[email protected]>
- * ob-python.el (org-babel-python-table-or-string): Using
- `org-babel-script-escape' for reading string input from scripting
+ * ob-python.el (org-babel-python-table-or-string):
+ Using `org-babel-script-escape' for reading string input from scripting
languages.
2010-12-11 Achim Gratz <[email protected]> (tiny change)
@@ -383,29 +391,11 @@
with-no-warnings.
(with-silent-modifications) Declare macro for Emacs < 23.2.
-2010-12-11 David Maus <[email protected]>
-
- * org-test.el (org-test-current-file): New function. Run all tests
- for current file.
-
2010-12-11 Eric Schulte <[email protected]>
- * ob.el (org-babel-parse-header-arguments): Removed addition of
+ * ob.el (org-babel-parse-header-arguments): Remove addition of
":" to singleton first header arguments as it was leading to errors.
-2010-12-11 David Maus <[email protected]>
-
- * test-org.el (test-org/org-link-escape-ascii-character)
- (test-org/org-link-escape-ascii-ctrl-character)
- (test-org/org-link-escape-multibyte-character)
- (test-org/org-link-escape-custom-table)
- (test-org/org-link-escape-custom-table-merge)
- (test-org/org-link-unescape-ascii-character)
- (test-org/org-link-unescape-ascii-ctrl-character)
- (test-org/org-link-unescape-multibyte-character)
- (test-org/org-link-unescape-ascii-extended-char): New tests for
- unicode aware percent escaping.
-
2010-12-11 Carsten Dominik <[email protected]>
* org-latex.el (org-export-latex-make-header): Run the title through
@@ -434,7 +424,7 @@
2010-12-11 Achim Gratz <[email protected]> (tiny change)
- * org-clock.el (org-get-clocktable): previous patch incorrectly
+ * org-clock.el (org-get-clocktable): Previous patch incorrectly
required whitespace in front of #+BEGIN: and #+END:
2010-12-11 Dan Davison <[email protected]>
@@ -444,12 +434,12 @@
2010-12-11 Nicolas Goaziou <[email protected]>
- * org-list.el (org-cycle-list-bullet): ensure point is at bol before
+ * org-list.el (org-cycle-list-bullet): Ensure point is at bol before
checking item indentation.
2010-12-11 Eric Schulte <[email protected]>
- * ob.el (org-babel-map-src-blocks): Moved to earlier in the file
+ * ob.el (org-babel-map-src-blocks): Move to earlier in the file
and now autoloading.
2010-12-11 Eric Schulte <[email protected]>
@@ -527,7 +517,7 @@
2010-12-11 Noorul Islam <[email protected]>
* org-latex.el (org-export-latex-hyperref-format): New option.
- (org-export-latex-href-format): Renamed the existing variable
+ (org-export-latex-href-format): Rename the existing variable
`org-export-latex-hyperref-format' as `org-export-latex-href-format'
(org-export-latex-links): Use `org-export-latex-hyperref-format' and
`org-export-latex-href-format'
@@ -578,7 +568,7 @@
2010-12-11 Dan Davison <[email protected]>
- * org-exp.el: (org-export-format-source-code-or-example):
+ * org-exp.el (org-export-format-source-code-or-example):
Remove hard-wired configuration of minted export
(org-export-latex-minted-with-line-numbers): Remove variable
@@ -616,8 +606,7 @@
2010-12-11 Julien Danjou <[email protected]>
- * list/org-agenda.el (org-agenda-category-icon-alist): Fix defcustom
- type.
+ * org-agenda.el (org-agenda-category-icon-alist): Fix defcustom type.
2010-12-11 Nicolas Goaziou <[email protected]>
@@ -661,18 +650,13 @@
* org-id.el (org-id-store-link): Test for org-mode before checking
for IDs.
-2010-12-11 David Maus <[email protected]>
-
- * org-test.el (org-test-current-defun): `which-function' does not
- return a list, but the name of the function.
-
2010-12-11 Carsten Dominik <[email protected]>
* org.el (org-shorten-string): New function.
* org-exp.el (org-export-convert-protected-spaces): New function.
- (org-export-preprocess-string): Call
- `org-export-convert-protected-spaces' to handle new hard spaces.
+ (org-export-preprocess-string):
+ Call `org-export-convert-protected-spaces' to handle new hard spaces.
2010-12-11 David Maus <[email protected]>
@@ -752,8 +736,8 @@
2010-11-11 Dan Davison <[email protected]>
- * org-exp.el (org-export-format-source-code-or-example): Use
- minted for latex source code export if `org-export-latex-listings'
+ * org-exp.el (org-export-format-source-code-or-example):
+ Use minted for latex source code export if `org-export-latex-listings'
has the value 'minted
* org-latex.el (org-export-latex-listings): Document special value
@@ -768,8 +752,8 @@
2010-11-11 Eric Schulte <[email protected]>
- * ob-gnuplot.el (org-babel-variable-assignments:gnuplot): Fixed
- bug in gnuplot data file assignment using user variables.
+ * ob-gnuplot.el (org-babel-variable-assignments:gnuplot):
+ Fix bug in gnuplot data file assignment using user variables.
2010-11-11 Eric Schulte <[email protected]>
@@ -813,7 +797,7 @@
2010-11-11 Eric Schulte <[email protected]>
- * ob-clojure.el (org-babel-clojure-babel-clojure-cmd): Fixed error
+ * ob-clojure.el (org-babel-clojure-babel-clojure-cmd): Fix error
message when clojure binary is not found.
2010-11-11 Carsten Dominik <[email protected]>
@@ -843,8 +827,8 @@
2010-11-11 David Maus <[email protected]>
- * ob-haskell.el (org-babel-variable-assignments:haskell): Don't
- pass more than two arguments to mapc.
+ * ob-haskell.el (org-babel-variable-assignments:haskell):
+ Don't pass more than two arguments to mapc.
2010-11-11 David Maus <[email protected]>
@@ -931,17 +915,17 @@
2010-11-11 Carsten Dominik <[email protected]>
- * org-indent.el: (org-indent-add-properties): Use
- `with-silent-modificaitons'.
- (org-indent-remove-properties): Use `with-silent-modificaitons'.
+ * org-indent.el (org-indent-add-properties):
+ Use `with-silent-modificatons'.
+ (org-indent-remove-properties): Use `with-silent-modificatons'.
2010-11-11 Carsten Dominik <[email protected]>
* org-table.el (org-table-cookie-line-p): Fix indentation.
* org-exp.el (org-store-forced-table-alignment): New function.
- (org-export-preprocess-string): Call
- `org-store-forced-table-alignment'.
+ (org-export-preprocess-string):
+ Call `org-store-forced-table-alignment'.
* org-html.el (org-format-org-table-html): Use stored alignment
information.
@@ -953,7 +937,7 @@
2010-11-11 Eric Schulte <[email protected]>
- * ob.el (org-babel-execute-src-block): Removed needless param
+ * ob.el (org-babel-execute-src-block): Remove needless param
sorting from ob-execute-src-block, the params are sorted already
by ob-sha1-hash.
@@ -995,7 +979,7 @@
2010-11-11 Eric Schulte <[email protected]>
- * ob.el (org-babel-map-src-blocks): Fixed minor bug in and
+ * ob.el (org-babel-map-src-blocks): Fix minor bug in and
improved efficiency of org-babel-map-src-blocks.
2010-11-11 Eric Schulte <[email protected]>
@@ -1314,7 +1298,7 @@
2010-11-11 Eric Schulte <[email protected]>
- * ob.el (org-babel-merge-params): Fixed order or precedence for
+ * ob.el (org-babel-merge-params): Fix order or precedence for
variables.
2010-11-11 Eric Schulte <[email protected]>
@@ -1498,16 +1482,16 @@
2010-11-11 Eric Schulte <[email protected]>
- * ob-emacs-lisp.el (org-babel-expand-body:emacs-lisp): Whitespace
- (org-babel-execute:emacs-lisp): Whitespace.
+ * ob-emacs-lisp.el (org-babel-expand-body:emacs-lisp):
+ Whitespace (org-babel-execute:emacs-lisp): Whitespace.
2010-11-11 Dan Davison <[email protected]>
* ob-sh.el (org-babel-sh-variable-assignments): Provide missing
docstring
- * ob-python.el (org-babel-python-variable-assignments): Provide
- missing docstring.
+ * ob-python.el (org-babel-python-variable-assignments):
+ Provide missing docstring.
2010-11-11 Dan Davison <[email protected]>
@@ -1555,9 +1539,8 @@
2010-11-11 Eric Schulte <[email protected]>
- * ob.el (org-number-sequence): Declared
-
- * ob-R.el (org-number-sequence): Declared.
+ * ob.el (org-number-sequence):
+ Declared * ob-R.el (org-number-sequence): Declared.
2010-11-11 Dan Davison <[email protected]>
@@ -1575,8 +1558,8 @@
* ob-R.el (org-babel-expand-body:R): Use `org-number-sequence'.
- * ob.el (org-babel-where-is-src-block-result): Use
- `org-number-sequence'.
+ * ob.el (org-babel-where-is-src-block-result):
+ Use `org-number-sequence'.
(org-babel-current-buffer-properties): Fix variable definition.
* ob-ref.el (org-babel-ref-index-list): Use `org-number-sequence'.
@@ -1596,8 +1579,8 @@
* org.el (org-agenda-jump-prefer-future): New option.
- * org-agenda.el (org-agenda-goto-date): Use
- `org-agenda-jump-prefer-future'.
+ * org-agenda.el (org-agenda-goto-date):
+ Use `org-agenda-jump-prefer-future'.
2010-11-11 Noorul Islam <[email protected]>
@@ -1721,18 +1704,18 @@
2010-11-11 Dan Davison <[email protected]>
- * org-exp.el (org-export-latex-minted-with-line-numbers): Ensure
- that variable is declared.
+ * org-exp.el (org-export-latex-minted-with-line-numbers):
+ Ensure that variable is declared.
2010-11-11 Eric Schulte <[email protected]>
- * ob-python.el (org-src-preserve-indentation): Fixed compiler
+ * ob-python.el (org-src-preserve-indentation): Fix compiler
warning.
2010-11-11 Dan Davison <[email protected]>
- * org-exp.el (org-export-format-source-code-or-example): Latex
- formatting of source code blocks using the minted package
+ * org-exp.el (org-export-format-source-code-or-example):
+ Latex formatting of source code blocks using the minted package
(org-export-plist-vars): Add :latex-minted property
(org-export-latex-minted): Ensure variable is defined
(org-export-latex-minted-langs): Ensure variable is defined.
@@ -1762,8 +1745,8 @@
2010-11-11 Carsten Dominik <[email protected]>
- * org-beamer.el (org-beamer-place-default-actions-for-lists): Fix
- typo in regexp.
+ * org-beamer.el (org-beamer-place-default-actions-for-lists):
+ Fix typo in regexp.
2010-11-11 Nicolas Goaziou <[email protected]>
@@ -1772,8 +1755,8 @@
2010-11-11 David Maus <[email protected]>
- * org-gnus.el (org-gnus-nnimap-query-article-no-from-file): Query
- article number from file is nil by default.
+ * org-gnus.el (org-gnus-nnimap-query-article-no-from-file):
+ Query article number from file is nil by default.
2010-11-11 Stephen Eglen <[email protected]>
@@ -1800,8 +1783,8 @@
2010-11-11 Carsten Dominik <[email protected]>
- * org-mobile.el (org-mobile-force-id-on-agenda-items): Fix
- docstring.
+ * org-mobile.el (org-mobile-force-id-on-agenda-items):
+ Fix docstring.
(org-mobile-write-agenda-for-mobile): Use outline path if we do
not have an ID and are not allowed to make one.
(org-mobile-get-outline-path-link): New function.
@@ -1816,7 +1799,7 @@
2010-11-11 Eric Schulte <[email protected]>
- * ob.el (org-babel-number-p): Fixed documentation string.
+ * ob.el (org-babel-number-p): Fix documentation string.
2010-11-11 Eric Schulte <[email protected]>
@@ -1826,7 +1809,7 @@
2010-11-11 Eric Schulte <[email protected]>
- * ob-exp.el (org-babel-exp-src-blocks): Fixed export when headings
+ * ob-exp.el (org-babel-exp-src-blocks): Fix export when headings
have links, with tests.
2010-11-11 Carsten Dominik <[email protected]>
@@ -1949,7 +1932,7 @@
2010-11-11 Eric Schulte <[email protected]>
- * ob.el (org-babel-confirm-evaluate): Fixed bug causing extra
+ * ob.el (org-babel-confirm-evaluate): Fix bug causing extra
prompt in ob-confirm-evaluate in some cases.
2010-11-11 Eric Schulte <[email protected]>
@@ -1977,8 +1960,8 @@
2010-11-11 Carsten Dominik <[email protected]>
- * org-mobile.el (org-mobile-encryption-password): Improve
- docstring.
+ * org-mobile.el (org-mobile-encryption-password):
+ Improve docstring.
(org-mobile-encryption-password-session): New variable.
(org-mobile-encryption-password): New function.
(org-mobile-check-setup):
@@ -1992,7 +1975,7 @@
2010-11-11 Jambunathan K <[email protected]>
- * org.el (org-speed-command-hook): Added org-speed-command-hook
+ * org.el (org-speed-command-hook): Add org-speed-command-hook
(org-babel-speed-command-hook): Hook for Babel's speed commands.
2010-11-11 Dan Davison <[email protected]>
@@ -2131,13 +2114,13 @@
2010-11-11 Dan Davison <[email protected]>
- * org-src.el (org-src-strip-leading-and-trailing-blank-lines): New
- variable allowing prevention of automatic stripping of leading and
+ * org-src.el (org-src-strip-leading-and-trailing-blank-lines):
+ New variable allowing prevention of automatic stripping of leading and
trailing blank lines when exiting edit buffer.
(org-edit-src-exit): Respect value of
`org-src-strip-leading-and-trailing-blank-lines'
- (org-src-native-tab-command-maybe): Bind
- `org-src-strip-leading-and-trailing-blank-lines' to nil during
+ (org-src-native-tab-command-maybe):
+ Bind `org-src-strip-leading-and-trailing-blank-lines' to nil during
this function.
2010-11-11 Dan Davison <[email protected]>
@@ -2256,8 +2239,8 @@
2010-11-11 Carsten Dominik <[email protected]>
* org-latex.el (org-export-latex-tag-markup): New option.
- (org-export-latex-keywords-maybe): Use
- `org-export-latex-tag-markup'.
+ (org-export-latex-keywords-maybe):
+ Use `org-export-latex-tag-markup'.
2010-11-11 Rémi Vanicat <[email protected]>
@@ -2288,8 +2271,8 @@
2010-11-11 aaa bbb <[email protected]>
- * org-archive.el (org-get-local-archive-location): Use
- `org-carchive-location' as default.
+ * org-archive.el (org-get-local-archive-location):
+ Use `org-carchive-location' as default.
2010-11-11 Eric Schulte <[email protected]>
@@ -2326,8 +2309,8 @@
2010-11-11 David Maus <[email protected]>
- * org-gnus.el (org-gnus-nnimap-query-article-no-from-file): New
- customization variable.
+ * org-gnus.el (org-gnus-nnimap-query-article-no-from-file):
+ New customization variable.
(org-gnus-nnimap-cached-article-number): New function.
(org-gnus-follow-link): Try to fetch cached article number of
message-id.
@@ -2350,8 +2333,8 @@
2010-11-11 Dan Davison <[email protected]>
- * ob.el (org-babel-do-in-edit-buffer): Use
- `org-babel-where-is-src-block-head' to test for source block at
+ * ob.el (org-babel-do-in-edit-buffer):
+ Use `org-babel-where-is-src-block-head' to test for source block at
point.
2010-11-11 Eric Schulte <[email protected]>
@@ -2439,8 +2422,8 @@
2010-11-11 Eric Schulte <[email protected]>
- * ob-tangle.el (org-babel-tangle-comment-format-beg): Format
- string specifying the link-comment preceding a code block
+ * ob-tangle.el (org-babel-tangle-comment-format-beg):
+ Format string specifying the link-comment preceding a code block
(org-babel-tangle-comment-format-end): Format string specifying
the link-comment following a code block
(org-babel-tangle-collect-blocks): Storing more information in the
@@ -2537,7 +2520,7 @@
2010-11-11 Eric Schulte <[email protected]>
- * ob-ruby.el (org-babel-expand-body:ruby): Removed requirement of
+ * ob-ruby.el (org-babel-expand-body:ruby): Remove requirement of
inf-ruby.
2010-11-11 Noorul Islam <[email protected]> (tiny change)
@@ -2636,7 +2619,7 @@
2010-11-11 Nicolas Goaziou <[email protected]>
- * org-docbook.el (org-export-as-docbook): Removed check for
+ * org-docbook.el (org-export-as-docbook): Remove check for
indentation on lines that do not start with a list bullet.
* org-html.el (org-export-as-html): Same thing.
@@ -2654,7 +2637,7 @@
2010-11-11 Nicolas Goaziou <[email protected]>
- * org-list.el (org-list-struct-indent): Added code to replace
+ * org-list.el (org-list-struct-indent): Add code to replace
bullets if needed when indenting.
2010-11-11 Nicolas Goaziou <[email protected]>
@@ -2704,7 +2687,7 @@
2010-11-11 Nicolas Goaziou <[email protected]>
- * org-list.el (org-indent-item-tree): Removed region code. It was
+ * org-list.el (org-indent-item-tree): Remove region code. It was
prone to errors and undocumented.
* org-list.el (org-item-indent-positions): Better heuristics to
@@ -2725,7 +2708,7 @@
2010-11-11 Nicolas Goaziou <[email protected]>
- * org-list.el (org-indent-item-tree): Removed unnecessary bullets
+ * org-list.el (org-indent-item-tree): Remove unnecessary bullets
fix, and improved heuristics to determine bullet when indenting.
* org-list.el (org-item-indent-positions): Function now returns
@@ -2784,8 +2767,8 @@
* org-list.el (org-list-insert-item-generic): Insert the right
bullet, with help of `org-list-bullet-string'.
- * org-list.el (org-indent-item-tree): Use
- `org-list-bullet-string'.
+ * org-list.el (org-indent-item-tree):
+ Use `org-list-bullet-string'.
* org-list.el (org-fix-bullet-type): Use `org-list-bullet-string'.
@@ -2832,8 +2815,8 @@
2010-11-11 Nicolas Goaziou <[email protected]>
- * org-list.el (org-cycle-list-bullet): Check
- `org-plain-list-ordered-item-terminator' before allowing 1. or 1)
+ * org-list.el (org-cycle-list-bullet):
+ Check `org-plain-list-ordered-item-terminator' before allowing 1. or 1)
as valid bullets when cycling.
2010-11-11 Nicolas Goaziou <[email protected]>
@@ -2860,7 +2843,7 @@
2010-11-11 Nicolas Goaziou <[email protected]>
- * org-list.el (org-maybe-renumber-ordered-list): Removed call for
+ * org-list.el (org-maybe-renumber-ordered-list): Remove call for
`org-fix-bullet-type' to prevent infinite loop, and some checks
already done in `org-renumber-ordered-list'.
@@ -2881,8 +2864,8 @@
2010-11-11 Nicolas Goaziou <[email protected]>
- * org-capture.el (org-capture-place-item): Use
- `org-search-forward-unenclosed' and
+ * org-capture.el (org-capture-place-item):
+ Use `org-search-forward-unenclosed' and
`org-search-backward-unenclosed' and new variable
`org-item-beginning-re'.
@@ -2902,10 +2885,10 @@
* org-list.el (org-list-make-subtree): Add protection when used
outside of list
- * org-list.el (org-insert-item): Removed useless hack now
+ * org-list.el (org-insert-item): Remove useless hack now
`org-in-item-p' is fixed.
- * org-timer.el (org-timer-item): Removed useless hack now
+ * org-timer.el (org-timer-item): Remove useless hack now
`org-in-item-p' is fixed.
2010-11-11 Nicolas Goaziou <[email protected]>
@@ -2959,8 +2942,8 @@
* org-list.el (org-search-forward-unenclosed): Can send errors
now. Removed useless usage of COUNT.
- * org-list.el (org-update-checkbox-count): Use
- `org-search-forward-unenclosed' and
+ * org-list.el (org-update-checkbox-count):
+ Use `org-search-forward-unenclosed' and
`org-search-backward-unenclosed' instead of `re-search-forward'
and `re-search-backward'.
@@ -2968,8 +2951,8 @@
and `org-search-backward-unenclosed' instead of
`re-search-forward' and `re-search-backward'.
- * org-list.el (org-list-make-subtree): Use
- `org-search-forward-unenclosed' and
+ * org-list.el (org-list-make-subtree):
+ Use `org-search-forward-unenclosed' and
`org-search-backward-unenclosed' instead of `re-search-forward'
and `re-search-backward'.
@@ -2983,7 +2966,7 @@
* org-timer.el (org-timer-item): Refactoring. Compute timer string
before inserting it in the buffer
- * org-timer.el (org-timer): Added an optional argument to return
+ * org-timer.el (org-timer): Add an optional argument to return
timer string instead of inserting it.
2010-11-11 Nicolas Goaziou <[email protected]>
@@ -3192,8 +3175,8 @@
2010-11-11 Nicolas Goaziou <[email protected]>
- * org-html.el (org-export-html-preprocess): Replace
- `org-list-end-re' by a blank line during pre-process.
+ * org-html.el (org-export-html-preprocess):
+ Replace `org-list-end-re' by a blank line during pre-process.
2010-11-11 Nicolas Goaziou <[email protected]>
@@ -3292,8 +3275,8 @@
2010-11-11 Carsten Dominik <[email protected]>
- * org-exp.el (org-export-concatenate-multiline-emphasis): Ignore
- matches that start in a headline.
+ * org-exp.el (org-export-concatenate-multiline-emphasis):
+ Ignore matches that start in a headline.
2010-11-11 Eric Schulte <[email protected]>
@@ -3320,17 +3303,16 @@
2010-11-11 Eric Schulte <[email protected]>
- * ob-R.el (ess-make-buffer-current): Declared
- (ess-ask-for-ess-directory): Declared
- (ess-local-process-name): Declared
-
- * ob-latex.el (org-babel-latex-tex-to-pdf): Capturing free
+ * ob-R.el (ess-make-buffer-current):
+ Declared (ess-ask-for-ess-directory):
+ Declared (ess-local-process-name):
+ Declared * ob-latex.el (org-babel-latex-tex-to-pdf): Capturing free
variable
* ob.el (org-edit-src-code): Fixing arguments
- (org-edit-src-exit): Declared
- (org-outline-overlay-data): Declared
- (org-set-outline-overlay-data): Declared.
+ (org-edit-src-exit):
+ Declared (org-outline-overlay-data):
+ Declared (org-set-outline-overlay-data): Declared.
2010-11-11 Glenn Morris <[email protected]>
@@ -3358,7 +3340,7 @@
2010-11-11 Eric Schulte <[email protected]>
- * ob.el (org-babel-remove-temporary-directory): Removed explicit
+ * ob.el (org-babel-remove-temporary-directory): Remove explicit
second argument.
2010-11-11 Magnus Henoch <[email protected]> (tiny change)
@@ -3368,7 +3350,7 @@
2010-11-11 Eric Schulte <[email protected]>
- * org-macs.el (org-save-outline-visibility): Moved from org.el.
+ * org-macs.el (org-save-outline-visibility): Move from org.el.
2010-11-11 Eric Schulte <[email protected]>
@@ -3471,11 +3453,11 @@
2010-11-11 Carsten Dominik <[email protected]>
- * org-latex.el (org-export-latex-set-initial-vars): Bind
- `case-fold-search' to t around the search for special LaTeX setup.
+ * org-latex.el (org-export-latex-set-initial-vars):
+ Bind `case-fold-search' to t around the search for special LaTeX setup.
- * org-beamer.el (org-beamer-after-initial-vars): Bind
- `case-fold-search' to t around the search for special BEAMER
+ * org-beamer.el (org-beamer-after-initial-vars):
+ Bind `case-fold-search' to t around the search for special BEAMER
setup.
2010-11-11 David Maus <[email protected]>
@@ -3533,8 +3515,8 @@
* org-feed.el (xml-substitute-special): Declare function for byte
compiler.
(org-feed-unescape): Removed.
- (org-feed-parse-rss-entry, org-feed-parse-atom-entry): Use
- `xml-substitute-special' to unescape XML entities.
+ (org-feed-parse-rss-entry, org-feed-parse-atom-entry):
+ Use `xml-substitute-special' to unescape XML entities.
2010-11-11 Dan Davison <[email protected]>
@@ -3635,10 +3617,10 @@
2010-11-11 Carsten Dominik <[email protected]>
- * org-agenda.el (org-agenda-before-sorting-filter-function): New
- hook function.
- (org-finalize-agenda-entries): Apply
- `org-agenda-before-sorting-filter-function'.
+ * org-agenda.el (org-agenda-before-sorting-filter-function):
+ New hook function.
+ (org-finalize-agenda-entries):
+ Apply `org-agenda-before-sorting-filter-function'.
2010-11-11 Carsten Dominik <[email protected]>
@@ -3683,8 +3665,8 @@
* org.el (org-preview-latex-fragment): Call `org-format-latex'
with the additional processing argument.
(org-export-have-math): New variable, for dynamic scoping.
- (org-format-latex): Implement specific ways of processing. New
- function argument for processing type.
+ (org-format-latex): Implement specific ways of processing.
+ New function argument for processing type.
(org-org-menu): Remove the entry to configure LaTeX snippet
processing.
@@ -3797,13 +3779,13 @@
2010-11-11 Dan Davison <[email protected]>
- * ob-octave.el (org-babel-octave-evaluate-external-process): Allow
- remote files.
+ * ob-octave.el (org-babel-octave-evaluate-external-process):
+ Allow remote files.
2010-11-11 Juan Pechiar <[email protected]>
- * ob-octave.el (org-babel-octave-evaluate-external-process): Use
- `org-babel-octave-import-elisp-from-file' instead of
+ * ob-octave.el (org-babel-octave-evaluate-external-process):
+ Use `org-babel-octave-import-elisp-from-file' instead of
`org-babel-eval-read-file'.
(org-babel-octave-var-to-octave): Separate matrix rows with ';',
and use '%s' as format specifier instead of '%S'.
@@ -3831,12 +3813,12 @@
* org-latex.el (org-export-latex-tables): Add label if any
- * org-latex.el (org-export-latex-convert-table.el-table): Fix
- little mistake when inserting label.
+ * org-latex.el (org-export-latex-convert-table.el-table):
+ Fix little mistake when inserting label.
2010-11-11 Nicolas Goaziou <[email protected]>
- * org.el (org-cycle-internal-local): Removed an unnecessary call
+ * org.el (org-cycle-internal-local): Remove an unnecessary call
to `org-back-to-heading' that was preventing point to stay at its
column when cycling visibility.
@@ -3895,7 +3877,7 @@
2010-11-11 Eric Schulte <[email protected]>
- * ob-lob.el (org-babel-lob-one-liner-regexp): Fixed error in lob
+ * ob-lob.el (org-babel-lob-one-liner-regexp): Fix error in lob
regexp -- it wasn't matching lob lines w/o indices.
2010-11-11 Eric Schulte <[email protected]>
@@ -3931,13 +3913,13 @@
2010-11-11 Eric Schulte <[email protected]>
- * org-exp.el (org-export-format-source-code-or-example): Escape
- underscores in code block names on latex listings export.
+ * org-exp.el (org-export-format-source-code-or-example):
+ Escape underscores in code block names on latex listings export.
2010-11-11 Eric Schulte <[email protected]>
- * ob-tangle.el (org-babel-with-temp-filebuffer): Use
- find-file-noselect to avoid excess buffer movement.
+ * ob-tangle.el (org-babel-with-temp-filebuffer):
+ Use find-file-noselect to avoid excess buffer movement.
2010-11-11 Carsten Dominik <[email protected]>
@@ -4256,11 +4238,11 @@
2010-07-19 Carsten Dominik <[email protected]>
- * org-capture.el (org-capture-set-target-location): Store
- exact positions for file+regexp and file+function targets.
+ * org-capture.el (org-capture-set-target-location):
+ Store exact positions for file+regexp and file+function targets.
(org-capture-place-entry, org-capture-place-item)
- (org-capture-place-table-line, org-capture-place-plain-text): Respect
- exact positions.
+ (org-capture-place-table-line, org-capture-place-plain-text):
+ Respect exact positions.
(org-capture-finalize): Make sure we are at the beginning of a line
when fixing the empty lines after the entry.
@@ -4281,21 +4263,21 @@
2010-07-19 Eric Schulte <[email protected]>
- * org-exp.el (org-export-attach-captions-and-attributes): Add
- a shortname attribute to caption strings under the symbol name
+ * org-exp.el (org-export-attach-captions-and-attributes):
+ Add a shortname attribute to caption strings under the symbol name
org-caption-shortn.
2010-07-19 Carsten Dominik <[email protected]>
- * org.el (org-switchb): Rename from `org-iswitchb'. Improve
- docstring.
+ * org.el (org-switchb): Rename from `org-iswitchb'.
+ Improve docstring.
(org-iswitchb): New alias.
(org-ido-switchb): Make alias point to `org-switchb'.
2010-07-19 Carsten Dominik <[email protected]>
- * org-capture.el (org-capture-fill-template): Respect
- time-of-day preference in template prompt.
+ * org-capture.el (org-capture-fill-template):
+ Respect time-of-day preference in template prompt.
2010-07-19 David Maus <[email protected]>
@@ -4310,8 +4292,8 @@
2010-07-19 Carsten Dominik <[email protected]>
- * org-capture.el (org-capture-set-target-location): Fix
- file+function interpretation.
+ * org-capture.el (org-capture-set-target-location):
+ Fix file+function interpretation.
2010-07-19 David Maus <[email protected]>
@@ -4325,8 +4307,8 @@
2010-07-19 David Maus <[email protected]>
- * org-feed.el (org-feed-unescape): New function. Unescape
- protected entities.
+ * org-feed.el (org-feed-unescape): New function.
+ Unescape protected entities.
(org-feed-parse-atom-entry): Use function for atom:content
type text and html.
@@ -4347,8 +4329,8 @@
2010-07-19 Carsten Dominik <[email protected]>
- * org-publish.el (org-publish-initialize-cache): Make
- timestamp directory, the entire path to it.
+ * org-publish.el (org-publish-initialize-cache):
+ Make timestamp directory, the entire path to it.
2010-07-19 Carsten Dominik <[email protected]>
@@ -4403,15 +4385,15 @@
(org-capture-bookmark-last-stored-position): New functions.
(org-capture-place-table-line): Better error catching.
(org-capture-place-item, org-capture-place-entry)
- (org-capture-place-plain-text): Call
- `org-capture-position-for-last-stored'.
+ (org-capture-place-plain-text):
+ Call `org-capture-position-for-last-stored'.
(org-capture-finalize): Just call
`org-capture-bookmark-last-stored-position'.
2010-07-19 Eric Schulte <[email protected]>
- * org-exp.el (org-export-mark-blockquote-verse-center): Fix
- small bug, now grabbing match data before overwritten by looking-at
+ * org-exp.el (org-export-mark-blockquote-verse-center):
+ Fix small bug, now grabbing match data before overwritten by looking-at
this fixes a problem with remainders of #+end_quote lines appearing
in exported output.
@@ -4584,8 +4566,8 @@
2010-07-19 Eric Schulte <[email protected]>
- * org-exp-blocks.el (org-export-blocks-postblock-hook): Add
- documentation to and turn into a defcustom.
+ * org-exp-blocks.el (org-export-blocks-postblock-hook):
+ Add documentation to and turn into a defcustom.
2010-07-19 Eric Schulte <[email protected]>
@@ -4674,8 +4656,8 @@
2010-07-19 John Wiegley <[email protected]>
- * org-clock.el (org-clock-clock-in, org-clock-in): Add
- parameter `start-time'.
+ * org-clock.el (org-clock-clock-in, org-clock-in):
+ Add parameter `start-time'.
(org-clock-resolve-clock): Add parameter `clock-out-time'.
If set, and resolve-to is a past time, then the clock out
event occurs at `clock-out-time' rather than at `resolve-to'.
@@ -4720,8 +4702,8 @@
* org-docbook.el (org-export-docbook-xslt-stylesheet): New option.
(org-export-docbook-xslt-proc-command): Fix docstring.
(org-export-docbook-xsl-fo-proc-command): Fix docstring.
- (org-export-as-docbook-pdf): Improve
- formatting of the xslt command.
+ (org-export-as-docbook-pdf):
+ Improve formatting of the xslt command.
* org-exp.el (org-infile-export-plist): Check for XSLT setting.
@@ -4730,8 +4712,8 @@
2010-07-19 Carsten Dominik <[email protected]>
- * org-docbook.el (org-export-as-docbook-pdf): Improve
- formatting of the xslt command.
+ * org-docbook.el (org-export-as-docbook-pdf):
+ Improve formatting of the xslt command.
2010-07-19 Sebastian Rose <[email protected]>
@@ -4748,8 +4730,8 @@
2010-07-19 Carsten Dominik <[email protected]>
- * org.el (org-beginning-of-defun, org-end-of-defun): New
- functions.
+ * org.el (org-beginning-of-defun, org-end-of-defun):
+ New functions.
(org-mode): Install the `org-beginning-of-defun' and
`org-end-of-defun' functions.
(org-pretty-entities): New option.
@@ -4806,8 +4788,8 @@
* org.el (org-mode): Fix comment syntax settings.
- * org-src.el (org-edit-src-allow-write-back-p): Define
- variable.
+ * org-src.el (org-edit-src-allow-write-back-p):
+ Define variable.
* org.el (org-inline-image-overlays): New variable.
(org-toggle-inline-images, org-display-inline-images)
@@ -4816,8 +4798,8 @@
2010-07-19 David Maus <[email protected]>
- * org-wl.el (org-wl-message-field): New function. Return
- content of header field in message entity.
+ * org-wl.el (org-wl-message-field): New function.
+ Return content of header field in message entity.
(org-wl-store-link): Call `org-wl-store-link-folder' or
`org-wl-store-link-message' depending on major-mode.
(org-wl-store-link-folder): New function. Store link to
@@ -4866,8 +4848,8 @@
2010-07-19 Carsten Dominik <[email protected]>
- * org-latex.el (org-export-latex-treat-sub-super-char): Make
- sure parenthesis matching is consistent.
+ * org-latex.el (org-export-latex-treat-sub-super-char):
+ Make sure parenthesis matching is consistent.
* org-table.el (org-table-colgroup-line-p)
(org-table-cookie-line-p): New functions.
@@ -4887,8 +4869,8 @@
* org-list.el (org-end-of-item-text-before-children): Also do
the right thing at the end of a file.
- * org.el (org-set-packages-alist, org-get-packages-alist): New
- function.
+ * org.el (org-set-packages-alist, org-get-packages-alist):
+ New function.
(org-export-latex-default-packages-alist)
(org-export-latex-packages-alist): Add extra flag to
each package, indicating if it should be used for snippets.
@@ -4927,8 +4909,8 @@
* org-clock.el (org-clock-cancel, org-clock-out): Make sure
the modeline display is removed.
- * org-exp.el (org-export-format-drawer-function): Fix
- docstring.
+ * org-exp.el (org-export-format-drawer-function):
+ Fix docstring.
* org-agenda.el (org-agenda-refile): New optional argument
NO-UPDATE.
@@ -4944,21 +4926,21 @@
* org-ascii.el (org-export-ascii-preprocess): Make table
mapping quiet.
- * org-html.el (org-export-as-html, org-html-level-start): Change
- XHTML IDs to not use dots.
+ * org-html.el (org-export-as-html, org-html-level-start):
+ Change XHTML IDs to not use dots.
- * org-exp.el (org-export-define-heading-targets): Change
- XHTML IDs to not use dots.
+ * org-exp.el (org-export-define-heading-targets):
+ Change XHTML IDs to not use dots.
- * org-docbook.el (org-export-docbook-level-start): Change
- XHTML IDs to not use dots.
+ * org-docbook.el (org-export-docbook-level-start):
+ Change XHTML IDs to not use dots.
* org-latex.el (org-export-as-latex): Make sure that the
result buffer is in latex-mode.
* org.el (org-shiftup-final-hook, org-shiftdown-final-hook)
- (org-shiftleft-final-hook, org-shiftright-final-hook): New
- hooks.
+ (org-shiftleft-final-hook, org-shiftright-final-hook):
+ New hooks.
2010-07-19 Carsten Dominik <[email protected]>
@@ -5011,8 +4993,8 @@
* org-publish.el (org-publish-project-alist): Update docstring.
(org-publish-file-title-cache): New variable.
- (org-publish-initialize-files-alist): Initialize
- `org-publish-initialize-files-alist' to nil.
+ (org-publish-initialize-files-alist):
+ Initialize `org-publish-initialize-files-alist' to nil.
(org-publish-sort-directory-files): New function.
(org-publish-projects): Access the new properties.
(org-publish-find-title): Use the file title cache.
@@ -5097,8 +5079,8 @@
* org-compat.el (org-make-overlay, org-delete-overlay)
(org-overlay-start, org-overlay-end, org-overlay-put)
- (org-overlay-get, org-overlay-move, org-overlay-buffer): Functions
- removed.
+ (org-overlay-get, org-overlay-move, org-overlay-buffer):
+ Functions removed.
(org-add-to-invisibility-spec): Function removed.
* org-html.el (org-export-as-html-and-open): Add argument to
@@ -5173,8 +5155,8 @@
* org-freemind.el (org-freemind-from-org-mode-node)
(org-freemind-from-org-mode)
- (org-freemind-from-org-sparse-tree, org-freemind-to-org-mode): Use
- interactive-p instead of called-interactively, because this is
+ (org-freemind-from-org-sparse-tree, org-freemind-to-org-mode):
+ Use interactive-p instead of called-interactively, because this is
backward compatible with older Emacsen I still support..
2010-07-19 Carsten Dominik <[email protected]>
@@ -5184,8 +5166,8 @@
2010-07-19 Carsten Dominik <[email protected]>
- * org-footnote.el (org-footnote-goto-previous-reference): Rename
- from `org-footnote-goto-next-reference'.
+ * org-footnote.el (org-footnote-goto-previous-reference):
+ Rename from `org-footnote-goto-next-reference'.
* org.el (org-auto-repeat-maybe): Only record LAST_REPEAT if
org-log-repeat is non-nil, or if there is clocking data in the
@@ -5202,11 +5184,11 @@
* org-wl.el (org-wl-link-remove-filter): New customizable
variable. If non-nil, filter conditions are stripped when storing
link to message in filter folder.
- (org-wl-shimbun-prefer-web-links): New customizable variable. If
- non-nil, links to shimbun messages are created as web links to
+ (org-wl-shimbun-prefer-web-links): New customizable variable.
+ If non-nil, links to shimbun messages are created as web links to
message source.
- (org-wl-nntp-prefer-web-links): New customizable variable. If
- non-nil, links to nntp message are created as web links to gmane
+ (org-wl-nntp-prefer-web-links): New customizable variable.
+ If non-nil, links to nntp message are created as web links to gmane
or googlegroups.
(org-wl-namazu-default-index): New customizable variable.
Directory of namazu search index that should be used as default
@@ -5237,13 +5219,13 @@
* org.el (org-file-apps-ex): New variable.
(org-open-file): Before considering org-file-apps, first match the
- regexps from org-file-apps-ex against the whole link. See
- docstring of org-file-apps-ex.
+ regexps from org-file-apps-ex against the whole link.
+ See docstring of org-file-apps-ex.
2010-07-19 Carsten Dominik <[email protected]>
- * org.el (org-export-latex-default-packages-alist): Remove
- microtype package.
+ * org.el (org-export-latex-default-packages-alist):
+ Remove microtype package.
(org-todo-repeat-to-state): New variable.
(org-auto-repeat-maybe): Allow user-selected target states.
(org-default-properties): Add the new property REPEAT_TO_STATE.
@@ -5369,8 +5351,8 @@
(org-mobile-copy-agenda-files, org-mobile-sumo-agenda-command)
(org-mobile-create-sumo-agenda): Use encryption code.
(org-mobile-encrypt-and-move): New function.
- (org-mobile-encrypt-file, org-mobile-decrypt-file): New
- functions.
+ (org-mobile-encrypt-file, org-mobile-decrypt-file):
+ New functions.
(org-mobile-move-capture): Decrypt the capture file.
* org.el (org-entities): Require the new file.
@@ -5482,8 +5464,8 @@
2010-04-10 Carsten Dominik <[email protected]>
- * org-exp.el (org-export-author-info, org-export-email-info): Fix
- docstrings.
+ * org-exp.el (org-export-author-info, org-export-email-info):
+ Fix docstrings.
* org-beamer.el (org-beamer-select-environment): Rename from
`org-beamer-set-environment-tag'. Improve docstring.
@@ -5592,8 +5574,8 @@
* org-crypt.el (org-reveal-start-hook): Add a decryption function
to this hook.
- (org-decrypt-entries, org-encrypt-entries, org-decrypt-entry): Add
- docstrings.
+ (org-decrypt-entries, org-encrypt-entries, org-decrypt-entry):
+ Add docstrings.
* org.el (org-point-at-end-of-empty-headline)
(org-level-increment, org-get-previous-line-level): New function.
@@ -5621,8 +5603,8 @@
2010-04-10 Stephen Eglen <[email protected]>
- * org-agenda.el (org-agenda-insert-diary-extract-time): New
- variable.
+ * org-agenda.el (org-agenda-insert-diary-extract-time):
+ New variable.
(org-agenda-add-entry-to-org-agenda-diary-file): Use this new
variable rather than `org-agenda-search-headline-for-time'.
@@ -5725,8 +5707,8 @@
(org-export-as-docbook): Fix problem with double footnote
reference in one place.
- * org-exp.el (org-export-format-source-code-or-example): Remove
- unnecessary newline.
+ * org-exp.el (org-export-format-source-code-or-example):
+ Remove unnecessary newline.
* org.el (org-deadline, org-schedule): Allow rescheduling entries
with repeaters.
@@ -5748,8 +5730,8 @@
2010-04-10 Carsten Dominik <[email protected]>
- * org-latex.el (org-export-latex-classes): Add
- \usepackage{latexsym} to all classes.
+ * org-latex.el (org-export-latex-classes):
+ Add \usepackage{latexsym} to all classes.
2010-04-10 Carsten Dominik <[email protected]>
@@ -5768,8 +5750,8 @@
2010-04-10 Carsten Dominik <[email protected]>
- * org-clock.el (org-clock-report-include-clocking-task): New
- option.
+ * org-clock.el (org-clock-report-include-clocking-task):
+ New option.
(org-clock-sum): Add the current clocking task.
2010-04-10 Carsten Dominik <[email protected]>
@@ -5805,8 +5787,8 @@
(org-get-todo-face, org-font-lock-add-priority-faces)
(org-get-tag-face): Use `org-face-from-face-or-color'.
- * org-faces.el (org-todo-keyword-faces, org-priority-faces): Allow
- simple colors as values.
+ * org-faces.el (org-todo-keyword-faces, org-priority-faces):
+ Allow simple colors as values.
(org-faces-easy-properties): New option.
* org-agenda.el (org-agenda-set-mode-name): Show if the agenda is
@@ -5828,8 +5810,8 @@
* org-html.el (org-export-html-style-default): Add a default style
for textareas.
- * org-exp.el (org-export-format-source-code-or-example): Fix
- textarea tag.
+ * org-exp.el (org-export-format-source-code-or-example):
+ Fix textarea tag.
2010-04-10 Bastien Guerry <[email protected]>
@@ -5859,8 +5841,8 @@
* org-latex.el (org-export-as-pdf-and-open): Kill product buffer
if the user wants that.
- * org-exp.el (org-export-kill-product-buffer-when-displayed): New
- option.
+ * org-exp.el (org-export-kill-product-buffer-when-displayed):
+ New option.
* org-agenda.el (org-batch-agenda-csv): Use the time property
instead of the `time-of-day' property.
@@ -5915,8 +5897,8 @@
* org.el (org-get-location): Make sure the selection buffer is
shown in the current frame.
- * org-ascii.el (org-export-ascii-table-widen-columns): New
- option.
+ * org-ascii.el (org-export-ascii-table-widen-columns):
+ New option.
(org-export-ascii-preprocess): Realign tables to remove narrowing
if `org-export-ascii-table-widen-columns' is set.
@@ -5941,8 +5923,8 @@
2010-04-10 Carsten Dominik <[email protected]>
- * org.el (org-fontify-meta-lines-and-blocks): Honor
- `org-fontify-quote-and-verse-blocks'.
+ * org.el (org-fontify-meta-lines-and-blocks):
+ Honor `org-fontify-quote-and-verse-blocks'.
* org-faces.el (org-fontify-quote-and-verse-blocks): New option.
@@ -5990,11 +5972,11 @@
* org-latex.el (org-export-latex-make-header): Define the align
macro if it is not yet defined.
- * org-agenda.el (org-agenda-insert-diary-make-new-entry): Call
- `org-insert-heading' with the INVISIBLE-OK argument.
+ * org-agenda.el (org-agenda-insert-diary-make-new-entry):
+ Call `org-insert-heading' with the INVISIBLE-OK argument.
- * org-mac-message.el (org-mac-message-insert-flagged): Call
- `org-insert-heading' with the INVISIBLE-OK argument.
+ * org-mac-message.el (org-mac-message-insert-flagged):
+ Call `org-insert-heading' with the INVISIBLE-OK argument.
* org.el (org-insert-heading): New argument INVISIBLE-OK.
@@ -6005,10 +5987,10 @@
`html-container-class' text property to set an additional class
for an outline container.
- * org-exp.el (org-export-remember-html-container-classes): New
- function.
- (org-export-preprocess-string): Call
- `org-export-remember-html-container-classes'.
+ * org-exp.el (org-export-remember-html-container-classes):
+ New function.
+ (org-export-preprocess-string):
+ Call `org-export-remember-html-container-classes'.
* org.el (org-cycle): Mention level cycling in the docstring.
(org-default-properties): Add new property HTML_CONTAINER_CLASS.
@@ -6054,8 +6036,8 @@
* org-clock.el (org-task-overrun-text): New option.
(org-task-overrun, org-clock-update-period): New variables.
- (org-clock-get-clock-string, org-clock-update-mode-line): Mark
- overrun clock.
+ (org-clock-get-clock-string, org-clock-update-mode-line):
+ Mark overrun clock.
(org-clock-notify-once-if-expired): Check if clock is overrun.
* org-faces.el: New face `org-mode-line-clock-overrun'.
@@ -6068,8 +6050,8 @@
2010-04-10 Stephen Eglen <[email protected]>
- * org-agenda.el (org-get-time-of-day): Use
- org-agenda-time-leading-zero to allow leading zero (rather than
+ * org-agenda.el (org-get-time-of-day):
+ Use org-agenda-time-leading-zero to allow leading zero (rather than
space) for times.
2010-04-10 Carsten Dominik <[email protected]>
@@ -6116,8 +6098,8 @@
2010-04-10 Carsten Dominik <[email protected]>
- * org-agenda.el (org-diary-class): Use
- `org-order-calendar-date-args'.
+ * org-agenda.el (org-diary-class):
+ Use `org-order-calendar-date-args'.
* org.el (org-order-calendar-date-args): New function.
@@ -6129,8 +6111,8 @@
* org-agenda.el (org-agenda-schedule, org-agenda-deadline):
Document that ARG is passed through to remove the date.
- (org-agenda-bulk-action): Accept prefix arg and pass it on. Do
- not read a date when the user has given a `C-u' prefix.
+ (org-agenda-bulk-action): Accept prefix arg and pass it on.
+ Do not read a date when the user has given a `C-u' prefix.
2010-04-10 Carsten Dominik <[email protected]>
@@ -6178,8 +6160,8 @@
have defined any.
(org-beamer-fix-toc): Put a frame around the table of contents.
- * org-exp.el (org-export-remove-comment-blocks-and-subtrees): Make
- sure case-folding works well when processing comment stuff.
+ * org-exp.el (org-export-remove-comment-blocks-and-subtrees):
+ Make sure case-folding works well when processing comment stuff.
* org-latex.el (org-export-latex-after-save-hook): New hook.
(org-export-as-latex): Run the new hook.
@@ -6365,8 +6347,8 @@
* org.el (org-inhibit-startup-visibility-stuff): New variable.
(org-mode): Don't do startup visibility if inhibited.
- (org-outline-overlay-data, org-set-outline-overlay-data): New
- functions.
+ (org-outline-overlay-data, org-set-outline-overlay-data):
+ New functions.
(org-save-outline-visibility): New macro.
(org-log-note-headings): Document that one should not change the
`state' note format.
@@ -6395,42 +6377,42 @@
* org-beamer.el: New file.
* org-latex.el (org-export-latex-after-initial-vars-hook): New hook.
- (org-export-as-latex): Run
- `org-export-latex-after-initial-vars-hook'.
+ (org-export-as-latex):
+ Run `org-export-latex-after-initial-vars-hook'.
(org-export-latex-format-toc-function)
- (org-export-latex-make-header): Call
- `org-export-latex-format-toc-function'.
+ (org-export-latex-make-header):
+ Call `org-export-latex-format-toc-function'.
* org.el (org-fill-template): Make template searches case sensitive.
* org-exp.el (org-export): Use "1" as a sign to export only the
subtree.
- * org-colview-xemacs.el (org-columns-edit-value): Use
- org-unrestricted property.
+ * org-colview-xemacs.el (org-columns-edit-value):
+ Use org-unrestricted property.
- * org-colview.el (org-columns-edit-value): Use
- org-unrestricted property.
+ * org-colview.el (org-columns-edit-value):
+ Use org-unrestricted property.
* org.el (org-compute-property-at-point): Set org-unrestricted
text property if the list contains ":ETC".
- (org-insert-property-drawer): Use
- org-unrestricted property.
+ (org-insert-property-drawer):
+ Use org-unrestricted property.
* org-exp.el
(org-export-preprocess-before-selecting-backend-code-hook): New hook.
- (org-export-preprocess-string): Run
- `org-export-preprocess-before-selecting-backend-code-hook'.
+ (org-export-preprocess-string):
+ Run `org-export-preprocess-before-selecting-backend-code-hook'.
* org-xoxo.el (org-export-as-xoxo): Run `org-export-first-hook'.
- * org-latex.el (org-export-region-as-latex): Run
- `org-export-first-hook'.
+ * org-latex.el (org-export-region-as-latex):
+ Run `org-export-first-hook'.
* org-html.el (org-export-as-html): Run `org-export-first-hook'.
- * org-docbook.el (org-export-as-docbook): Run
- `org-export-first-hook'.
+ * org-docbook.el (org-export-as-docbook):
+ Run `org-export-first-hook'.
* org-ascii.el (org-export-as-ascii): Run `org-export-first-hook'.
@@ -6468,8 +6450,8 @@
* org-macs.el (org-re): Interpret :punct: in regexps.
- * org-exp.el (org-export-replace-src-segments-and-examples): Also
- take the final newline after the END line.
+ * org-exp.el (org-export-replace-src-segments-and-examples):
+ Also take the final newline after the END line.
* org.el (org-clean-visibility-after-subtree-move): Only fix
entries that are not entirely invisible already.
@@ -6478,8 +6460,8 @@
2010-04-10 Carsten Dominik <[email protected]>
- * org-exp.el (org-export-format-source-code-or-example): Avoid
- additional extra white lines in LaTeX.
+ * org-exp.el (org-export-format-source-code-or-example):
+ Avoid additional extra white lines in LaTeX.
* org-list.el (org-list-parse-list): Leave empty lines after the
list, don't consider them as part of the list.
@@ -6497,14 +6479,14 @@
2010-04-10 Tassilo Horn <[email protected]>
- * org.el (org-complete-tags-always-offer-all-agenda-tags): New
- variable.
+ * org.el (org-complete-tags-always-offer-all-agenda-tags):
+ New variable.
(org-set-tags): Use it.
2010-04-10 Carsten Dominik <[email protected]>
- * org-list.el (org-empty-line-terminates-plain-lists): Update
- docstring.
+ * org-list.el (org-empty-line-terminates-plain-lists):
+ Update docstring.
* org.el (org-format-latex): Fix link creation for processed latex
snippets.
@@ -6560,8 +6542,8 @@
* org-latex.el (org-export-latex-parse-global)
(org-export-latex-parse-content)
- (org-export-latex-parse-subcontent): Use
- `org-re-search-forward-unprotected'.
+ (org-export-latex-parse-subcontent):
+ Use `org-re-search-forward-unprotected'.
(org-export-as-pdf): Remove log files produced by XeTeX.
* org-macs.el (org-re-search-forward-unprotected): New function.
@@ -6594,8 +6576,8 @@
* org.el (org-cycle-level): Use `org-looking-back'.
- * org-list.el (org-cycle-item-indentation): Use
- `org-looking-back'.
+ * org-list.el (org-cycle-item-indentation):
+ Use `org-looking-back'.
* org-compat.el (org-looking-back): New function.
@@ -6648,8 +6630,8 @@
2009-11-20 Carsten Dominik <[email protected]>
- * org-agenda.el (org-agenda-diary-entry-in-org-file): Rebuild
- agenda after adding new entry.
+ * org-agenda.el (org-agenda-diary-entry-in-org-file):
+ Rebuild agenda after adding new entry.
* org-datetree.el (org-datetree-find-day-create): Fix regular
expression.
@@ -6686,8 +6668,8 @@
* org-agenda.el (org-agenda-insert-diary-strategy): New variable.
(org-agenda-insert-diary-as-top-level): New function.
- (org-agenda-add-entry-to-org-agenda-diary-file): Call
- `org-agenda-insert-diary-as-top-level'.
+ (org-agenda-add-entry-to-org-agenda-diary-file):
+ Call `org-agenda-insert-diary-as-top-level'.
* org.el (org-occur-in-agenda-files): Make sure none of the
buffers is narrowed.
@@ -6754,8 +6736,8 @@
* org-agenda.el (org-agenda-show-outline-path): New option.
(org-agenda-do-context-action): New function.
- (org-agenda-next-line, org-agenda-previous-line): Use
- `org-agenda-do-context-action'.
+ (org-agenda-next-line, org-agenda-previous-line):
+ Use `org-agenda-do-context-action'.
* org.el (org-use-speed-commands): Allow function value.
(org-speed-commands-default): Make headline motion safe, so that
@@ -6832,8 +6814,8 @@
* org-latex.el (org-export-latex-links): Check for protectedness
in the last matched character, not after the match.
- * org-datetree.el (org-datetree-find-date-create): Respect
- restriction when KEEP-RESTRICTION is set.
+ * org-datetree.el (org-datetree-find-date-create):
+ Respect restriction when KEEP-RESTRICTION is set.
(org-datetree-file-entry-under): New function.
(org-datetree-cleanup): New command.
@@ -6871,8 +6853,8 @@
* org-agenda.el (org-agenda-diary-entry-in-org-file)
(org-agenda-add-entry-to-org-agenda-diary-file)
(org-agenda-insert-diary-make-new-entry): New functions.
- (org-agenda-diary-entry): Call
- `org-agenda-diary-entry-in-org-file' when appropriate.
+ (org-agenda-diary-entry):
+ Call `org-agenda-diary-entry-in-org-file' when appropriate.
* org.el (org-calendar-insert-diary-entry-key): New option.
(org-agenda-diary-file): New option.
@@ -6923,8 +6905,8 @@
2009-11-13 Dan Davison <[email protected]>
- * org-exp.el (org-export-format-source-code-or-example): Restrict
- scope of preserve-indentp to the let binding.
+ * org-exp.el (org-export-format-source-code-or-example):
+ Restrict scope of preserve-indentp to the let binding.
(org-src): Require org-src, since org-src-preserve-indentation is used.
2009-11-13 Carsten Dominik <[email protected]>
@@ -6944,14 +6926,14 @@
2009-11-13 Carsten Dominik <[email protected]>
- * org-icalendar.el (org-print-icalendar-entries): Use
- org-icalendar-verify-function only if non-nil.
+ * org-icalendar.el (org-print-icalendar-entries):
+ Use org-icalendar-verify-function only if non-nil.
* org.el (org-refile): Refile to clock only if the prefix arg is
2.
(org-sparse-tree): Fix docstring to be in line with prompt.
- (org-update-parent-todo-statistics): Call
- `org-after-todo-statistics-hook' on each level.
+ (org-update-parent-todo-statistics):
+ Call `org-after-todo-statistics-hook' on each level.
2009-11-13 Carsten Dominik <[email protected]>
@@ -6982,8 +6964,8 @@
* org-clock.el (org-clock-play-sound): Expand file in
org-clock-sound, to allow ~ for home.
- * org-remember.el (org-remember-handler): Set
- text-before-node-creation even if this already looks like a node,
+ * org-remember.el (org-remember-handler):
+ Set text-before-node-creation even if this already looks like a node,
because the string might be needed on non-org-mode target files.
* org-agenda.el (org-agenda-open-link): Make this work in agenda
@@ -7012,12 +6994,12 @@
* org-src.el (org-src-preserve-indentation): Document that this
variable is also used during export.
- * org-exp.el (org-export-format-source-code-or-example): Preserve
- indentation if a block has a -i option, or if
+ * org-exp.el (org-export-format-source-code-or-example):
+ Preserve indentation if a block has a -i option, or if
`org-src-preserve-indentation' is set.
- * org-exp-blocks.el (org-export-blocks-preprocess): Preserve
- indentation if a block has a -i option, or if
+ * org-exp-blocks.el (org-export-blocks-preprocess):
+ Preserve indentation if a block has a -i option, or if
`org-src-preserve-indentation' is set.
2009-11-13 Carsten Dominik <[email protected]>
@@ -7034,8 +7016,8 @@
(org-agenda-menu): Add the new archiving commands to the menu.
(org-agenda-archive-default)
(org-agenda-archive-default-with-confirmation): New commands.
- (org-agenda-archive, org-agenda-archive-to-archive-sibling): Just
- call `org-agenda-archive-with'.
+ (org-agenda-archive, org-agenda-archive-to-archive-sibling):
+ Just call `org-agenda-archive-with'.
(org-agenda-archive-with): New function.
* org-table.el (org-table-convert-region): Inert spaces around "|"
@@ -7055,8 +7037,8 @@
IF-EXISTS, which avoids creating the attachment directory if it
does not yet exist.
- * org-agenda.el (org-agenda, org-run-agenda-series): Evaluate
- MATCH.
+ * org-agenda.el (org-agenda, org-run-agenda-series):
+ Evaluate MATCH.
2009-11-13 Carsten Dominik <[email protected]>
@@ -7169,8 +7151,8 @@
2009-11-13 John Wiegley <[email protected]>
- * org-clock.el (org-clock-display, org-clock-put-overlay): Use
- `org-time-clock-use-fractional'.
+ * org-clock.el (org-clock-display, org-clock-put-overlay):
+ Use `org-time-clock-use-fractional'.
* org.el (org-time-clocksum-use-fractional)
(org-time-clocksum-fractional-format): Two new customizable
@@ -7267,8 +7249,8 @@
* org-agenda.el (org-agenda-next-line): New command.
(org-agenda-previous-line): New commands.
- (org-agenda-show-and-scroll-up, org-agenda-show-scroll-down): New
- commands.
+ (org-agenda-show-and-scroll-up, org-agenda-show-scroll-down):
+ New commands.
(org-agenda-follow-mode): Do the follow immediately if the mode is
turned on here.
(previous-line, next-line): Replace keys with the corresponding
@@ -7299,8 +7281,8 @@
2009-11-13 John Wiegley <[email protected]>
- * org-clock.el (org-clock-disable-clock-resolution): New
- customization variable that disable automatic clock resolution on
+ * org-clock.el (org-clock-disable-clock-resolution):
+ New customization variable that disable automatic clock resolution on
clock in.
(org-clock-in): If `org-clock-disable-clock-resolution' is set, do
not automatically resolve anything. This is does not affect
@@ -7326,8 +7308,8 @@
2009-11-13 John Wiegley <[email protected]>
- * org-agenda.el (org-agenda-auto-exclude-function): New
- customization variable for allowing the user to create an "auto
+ * org-agenda.el (org-agenda-auto-exclude-function):
+ New customization variable for allowing the user to create an "auto
exclusion" filter for doing context-aware auto tag filtering.
(org-agenda-filter-by-tag): Changes to support the use of
`org-agenda-auto-exclude-function'. See the new manual addition,.
@@ -7394,8 +7376,8 @@
resolves a clock to a specific time, closing or resuming as need
be, and possibly even starting a new clock.
(org-clock-resolve): New function used by `org-resolve-clocks'
- that sets up for the call to `org-clock-resolve-clock'. It
- determines the time to resolve to based on a single-character
+ that sets up for the call to `org-clock-resolve-clock'.
+ It determines the time to resolve to based on a single-character
selection from the user to either keep time, subtract away time or
cancel the clock.
(org-resolve-clocks): New user command which resolves dangling
@@ -7504,8 +7486,8 @@
2009-11-13 Carsten Dominik <[email protected]>
* org-src.el (org-edit-src-code)
- (org-edit-src-find-region-and-lang, org-edit-src-exit): Handle
- macro editing.
+ (org-edit-src-find-region-and-lang, org-edit-src-exit):
+ Handle macro editing.
* org-agenda.el (org-prefix-category-max-length): New variable.
(org-format-agenda-item): Use `org-prefix-category-max-length'.
@@ -7658,12 +7640,12 @@
(org-agenda-show-new-time, org-agenda-date-prompt)
(org-agenda-schedule, org-agenda-deadline, org-agenda-action)
(org-agenda-clock-in, org-agenda-bulk-mark)
- (org-agenda-bulk-unmark, org-agenda-show-the-flagging-note): Use
- `org-get-at-bol'.
+ (org-agenda-bulk-unmark, org-agenda-show-the-flagging-note):
+ Use `org-get-at-bol'.
* org-colview.el (org-columns-display-here)
- (org-columns-edit-allowed, org-agenda-columns): Use
- `org-get-at-bol'.
+ (org-columns-edit-allowed, org-agenda-columns):
+ Use `org-get-at-bol'.
2009-10-01 Carsten Dominik <[email protected]>
@@ -7698,13 +7680,13 @@
2009-10-01 Carsten Dominik <[email protected]>
- * org-agenda.el (org-prepare-agenda): Reset
- `org-drawers-for-agenda'.
+ * org-agenda.el (org-prepare-agenda):
+ Reset `org-drawers-for-agenda'.
(org-prepare-agenda): Uniquify list of drawers.
* org.el (org-complex-heading-regexp-format): New variable.
- (org-set-regexps-and-options): Define
- `org-complex-heading-regexp-format'.
+ (org-set-regexps-and-options):
+ Define `org-complex-heading-regexp-format'.
(org-drawers-for-agenda): New variable.
(org-map-entries): Bind `org-drawers-for-agenda'.
(org-prepare-agenda-buffers): Add to `org-drawers-for-agenda'.
@@ -7749,10 +7731,10 @@
* org-archive.el (org-archive-set-tag)
(org-archive-subtree-default): New commands.
- * org-clock.el (org-clock-clocktable-default-properties): New
- option.
- (org-clock-report): Use
- `org-clock-clocktable-default-properties'.
+ * org-clock.el (org-clock-clocktable-default-properties):
+ New option.
+ (org-clock-report):
+ Use `org-clock-clocktable-default-properties'.
2009-10-01 Carsten Dominik <[email protected]>
@@ -7855,8 +7837,8 @@
2009-10-01 Carsten Dominik <[email protected]>
- * org-agenda.el (org-agenda-entry-text-exclude-regexps): New
- variable.
+ * org-agenda.el (org-agenda-entry-text-exclude-regexps):
+ New variable.
(org-agenda-entry-text-cleanup-hook): New hook.
(org-agenda-get-some-entry-text): Remove matches of
`org-agenda-entry-text-exclude-regexps' and run the hook
@@ -8006,8 +7988,8 @@
2009-09-02 Carsten Dominik <[email protected]>
- * org.el (org-eval-in-calendar): Use
- `org-select-frame-set-input-focus'.
+ * org.el (org-eval-in-calendar):
+ Use `org-select-frame-set-input-focus'.
* org-compat.el (org-select-frame-set-input-focus): New function.
@@ -8053,8 +8035,8 @@
(org-agenda-menu): Add effort setting commands to menu.
(org-agenda-set-property, org-agenda-set-effort): New functions.
- * org-latex.el (org-export-latex-tables): Fix
- `org-table-last-alignment' and `org-table-last-column-widths' if
+ * org-latex.el (org-export-latex-tables):
+ Fix `org-table-last-alignment' and `org-table-last-column-widths' if
the first column has been removed.
2009-09-02 Carsten Dominik <[email protected]>
@@ -8076,8 +8058,8 @@
(org-get-last-sibling): New function.
(org-refile): Use `org-get-next-sibling' instead of the outline
version of this function.
- (org-clean-visibility-after-subtree-move): Use
- `org-get-next-sibling' and `org-get-last-sibling' instead of the
+ (org-clean-visibility-after-subtree-move):
+ Use `org-get-next-sibling' and `org-get-last-sibling' instead of the
outline versions of these functions.
2009-09-02 Carsten Dominik <[email protected]>
@@ -8105,8 +8087,8 @@
(org-table-get-specials, org-table-rotate-recalc-marks)
(org-table-get-range, org-table-recalculate)
(org-table-edit-formulas, org-table-fedit-convert-buffer)
- (org-table-show-reference, org-table-highlight-rectangle): Don't
- use `goto-line'.
+ (org-table-show-reference, org-table-highlight-rectangle):
+ Don't use `goto-line'.
* org-src.el (org-edit-src-code, org-edit-fixed-width-region)
(org-edit-src-exit): Don't use `goto-line'.
@@ -8121,8 +8103,8 @@
* org-colview.el (org-columns, org-columns-redo)
(org-agenda-columns): Don't use `goto-line'.
- * org-colview-xemacs.el (org-columns, org-agenda-columns): Don't
- use `goto-line'.
+ * org-colview-xemacs.el (org-columns, org-agenda-columns):
+ Don't use `goto-line'.
* org-agenda.el (org-agenda-mode): Force visual line motion off.
(org-agenda-add-entry-text-maxlines): Improve docstring.
@@ -8164,8 +8146,8 @@
2009-09-02 Carsten Dominik <[email protected]>
* org-agenda.el (org-agenda-get-some-entry-text): New function.
- (org-agenda-add-entry-text): Use
- `org-agenda-get-some-entry-text'.
+ (org-agenda-add-entry-text):
+ Use `org-agenda-get-some-entry-text'.
* org.el (org-cycle-separator-lines): Update docstring.
(org-cycle-show-empty-lines): Handle negative values for
@@ -8193,8 +8175,8 @@
2009-09-02 Carsten Dominik <[email protected]>
- * org-exp.el (org-export-format-source-code-or-example): Translate
- language.
+ * org-exp.el (org-export-format-source-code-or-example):
+ Translate language.
* org-src.el (org-src-lang-modes): New variable.
(org-edit-src-code): Translate language.
@@ -8220,8 +8202,8 @@
2009-09-02 Carsten Dominik <[email protected]>
- * org-remember.el (org-remember-apply-template): Use
- org-icompleting-read.
+ * org-remember.el (org-remember-apply-template):
+ Use org-icompleting-read.
* org-publish.el (org-publish): Use org-icompleting-read.
@@ -8229,11 +8211,11 @@
(org-insert-columns-dblock): Use org-icompleting-read.
* org-colview-xemacs.el (org-columns-edit-value)
- (org-columns-new, org-insert-columns-dblock): Use
- org-icompleting-read.
+ (org-columns-new, org-insert-columns-dblock):
+ Use org-icompleting-read.
- * org-attach.el (org-attach-delete-one, org-attach-open): Use
- org-icompleting-read.
+ * org-attach.el (org-attach-delete-one, org-attach-open):
+ Use org-icompleting-read.
2009-09-02 Carsten Dominik <[email protected]>
@@ -8242,8 +8224,8 @@
(org-org-menu): Add a menu entry for the new bug reporter.
(org-submit-bug-report): New command.
- * org-list.el (org-hierarchical-checkbox-statistics): Improve
- docstring.
+ * org-list.el (org-hierarchical-checkbox-statistics):
+ Improve docstring.
* org.el (org-emphasis-regexp-components): Add "`" to set of
pre-emphasis characters.
@@ -8252,16 +8234,16 @@
package.
(org-export-latex-emphasis-alist): Use \st for strikethough.
- * org-exp-blocks.el (org-export-blocks-preprocess): Use
- `indent-code-rigidly' to indent.
+ * org-exp-blocks.el (org-export-blocks-preprocess):
+ Use `indent-code-rigidly' to indent.
- * org-agenda.el (org-agenda-get-restriction-and-command): Remove
- properties only if MATCH really is a string.
+ * org-agenda.el (org-agenda-get-restriction-and-command):
+ Remove properties only if MATCH really is a string.
2009-09-02 Carsten Dominik <[email protected]>
- * org-latex.el (org-export-latex-packages-alist): Fix
- customization type.
+ * org-latex.el (org-export-latex-packages-alist):
+ Fix customization type.
* org.el (org-create-formula-image): Also use
`org-export-latex-packages-alist'.
@@ -8274,8 +8256,8 @@
* org.el (org-fast-tag-selection): Avoid text properties on tags
in the alist.
- * org-agenda.el (org-agenda-get-restriction-and-command): Avoid
- text properties on the match element.
+ * org-agenda.el (org-agenda-get-restriction-and-command):
+ Avoid text properties on the match element.
2009-09-02 Carsten Dominik <[email protected]>
@@ -8299,8 +8281,8 @@
2009-09-02 Carsten Dominik <[email protected]>
- * org.el (org-export-html-special-string-regexps): Definition
- moved into org.el.
+ * org.el (org-export-html-special-string-regexps):
+ Definition moved into org.el.
* org-exp.el (org-export-preprocess-apply-macros): Allow newlines
in macro calls.
@@ -8310,8 +8292,8 @@
* org-latex.el (org-export-latex-listings)
(org-export-latex-listings-langs): New options.
- * org-exp.el (org-export-format-source-code-or-example): Use
- listing package if requested by the user.
+ * org-exp.el (org-export-format-source-code-or-example):
+ Use listing package if requested by the user.
2009-09-02 Bastien Guerry <[email protected]>
@@ -8334,8 +8316,8 @@
* org.el (org-insert-heading): When respecting content, do not
convert current line to headline.
- * org-clock.el (org-clock-save-markers-for-cut-and-paste): Also
- cheeeeeck the hd marker.
+ * org-clock.el (org-clock-save-markers-for-cut-and-paste):
+ Also cheeeeeck the hd marker.
(org-clock-in): Also set the hd marker.
(org-clock-out): Also set the hd marker.
(org-clock-cancel): Reset markers.
@@ -8350,8 +8332,8 @@
* org.el (org-modules): Add org-track.el.
* org-agenda.el (org-agenda-bulk-marked-p): New function.
- (org-agenda-bulk-mark, org-agenda-bulk-unmark): Use
- `org-agenda-bulk-marked-p'.
+ (org-agenda-bulk-mark, org-agenda-bulk-unmark):
+ Use `org-agenda-bulk-marked-p'.
(org-agenda-bulk-toggle): New command.
2009-09-02 Carsten Dominik <[email protected]>
@@ -8417,8 +8399,8 @@
2009-08-06 Carsten Dominik <[email protected]>
- * org-list.el (org-list-send-list): Call
- `org-list-goto-true-beginning' instead of
+ * org-list.el (org-list-send-list):
+ Call `org-list-goto-true-beginning' instead of
`org-list-find-true-beginning', which does not exist.
* org-timer.el (org-timer-reset-timers): Use `mapc'.
@@ -8436,8 +8418,8 @@
(org-startup-options): Add new options indent and noindent.
(org-unfontify-region): Remove line-prefix and wrap-prefix
properties.
- (org-after-demote-entry-hook, org-after-promote-entry-hook): New
- hooks.
+ (org-after-demote-entry-hook, org-after-promote-entry-hook):
+ New hooks.
(org-promote, org-demote): Run the new hooks.
* org-table.el (org-table-align): Replace leading \n as well.
@@ -8480,8 +8462,8 @@
2009-08-06 Carsten Dominik <[email protected]>
- * org-table.el (org-table-cut-region, org-table-copy-region): Work
- on single field if no active region.
+ * org-table.el (org-table-cut-region, org-table-copy-region):
+ Work on single field if no active region.
2009-08-06 Carsten Dominik <[email protected]>
@@ -8523,8 +8505,8 @@
* org.el (org-store-link): Never store a link to an inline task.
- * org-footnote.el (org-footnote-goto-local-insertion-point): Skip
- inline tasks when positioning footnotes.
+ * org-footnote.el (org-footnote-goto-local-insertion-point):
+ Skip inline tasks when positioning footnotes.
* org.el (org-refile): Remove the END line when archiving an
inline task that does have an END line.
@@ -8570,8 +8552,8 @@
2009-08-06 Bastien Guerry <[email protected]>
- * org-protocol.el (org-protocol-default-template-key): New
- option.
+ * org-protocol.el (org-protocol-default-template-key):
+ New option.
* org.el (org-refile): Bugfix: save-excursion before reading the
refile target, otherwise cursor moves might confuse `org-refile'.
@@ -8599,8 +8581,8 @@
* org.el (org-mode-map): New key for org-timer-set-timer.
* org-timer.el (org-timer-reset-timers)
- (org-timer-show-remaining-time, org-timer-set-timer): New
- functions.
+ (org-timer-show-remaining-time, org-timer-set-timer):
+ New functions.
* org-clock.el (org-show-notification): Update the docstring.
@@ -8669,8 +8651,8 @@
* org.el (org-get-refile-targets): Fix bug: don't ignore case when
building the list of targets.
- * org-remember.el (org-remember-delete-empty-lines-at-end): New
- option.
+ * org-remember.el (org-remember-delete-empty-lines-at-end):
+ New option.
(org-remember-handler): Use the new option.
2009-08-06 James TD Smith <[email protected]>
@@ -8697,8 +8679,8 @@
* org-latex.el (org-export-latex-first-lines): Fix problem with
publishing the region.
- * org-exp.el (org-export-format-source-code-or-example): Fix
- bad line numbering when exporting examples in HTML.
+ * org-exp.el (org-export-format-source-code-or-example):
+ Fix bad line numbering when exporting examples in HTML.
2009-08-06 James TD Smith <[email protected]>
@@ -8744,8 +8726,8 @@
* org-exp.el (org-infile-export-plist): Read BIND lines.
(org-install-letbind): New function.
- (org-export-as-org, org-export-preprocess-string): Call
- `org-install-letbind'.
+ (org-export-as-org, org-export-preprocess-string):
+ Call `org-install-letbind'.
* org-list.el (org-list-demote-modify-bullet): New option.
(org-first-list-item-p): Save point.
@@ -8762,8 +8744,8 @@
* org-footnote.el (org-footnote-auto-adjust): New option.
(org-footnote-auto-adjust-maybe): New function.
- (org-footnote-new, org-footnote-delete): Call
- `org-footnote-auto-adjust-maybe'.
+ (org-footnote-new, org-footnote-delete):
+ Call `org-footnote-auto-adjust-maybe'.
* org.el (org-startup-options): Add new footnote-related
keywords.
@@ -8926,16 +8908,16 @@
in column values.
(org-columns-capture-view): Exclude comment and archived trees.
- * org-colview-xemacs.el (org-columns-capture-view): Protect
- vertical bars in column values.
+ * org-colview-xemacs.el (org-columns-capture-view):
+ Protect vertical bars in column values.
(org-columns-capture-view): Exclude comment and archived trees.
* org.el (org-quote-vert): New function.
* org-latex.el (org-export-latex-verbatim-wrap): New option.
- * org-exp.el (org-export-format-source-code-or-example): Use
- `org-export-latex-verbatim-wrap'.
+ * org-exp.el (org-export-format-source-code-or-example):
+ Use `org-export-latex-verbatim-wrap'.
* org.el (org-clone-subtree-with-time-shift): Also shift inactive
time stamps.
@@ -8967,8 +8949,8 @@
2009-08-06 Carsten Dominik <[email protected]>
- * org-icalendar.el (org-icalendar-include-bbdb-anniversaries): New
- option.
+ * org-icalendar.el (org-icalendar-include-bbdb-anniversaries):
+ New option.
(org-export-icalendar): Call `org-bbdb-anniv-export-ical'.
* org-bbdb.el (org-bbdb-anniv-export-ical): New function.
@@ -8990,8 +8972,8 @@
* org-remember.el (org-remember-handler): Abort remember if the
buffer is empty.
- * org-exp.el (org-export-format-source-code-or-example): Run
- `org-src-mode-hook'.
+ * org-exp.el (org-export-format-source-code-or-example):
+ Run `org-src-mode-hook'.
2009-08-06 Carsten Dominik <[email protected]>
@@ -9008,8 +8990,8 @@
* org-macs.el (org-replace-match-keep-properties): New function.
- * org-exp.el (org-export-mark-blockquote-verse-center): Better
- preprocessing of center and quote and verse blocks.
+ * org-exp.el (org-export-mark-blockquote-verse-center):
+ Better preprocessing of center and quote and verse blocks.
* org-list.el (org-list-end): Respect the stored "original"
indentation when determining the end of the list.
@@ -9032,8 +9014,8 @@
2009-08-06 Carsten Dominik <[email protected]>
- * org-exp.el (org-export-format-source-code-or-example): Remember
- the original indentation of source code snippets and examples.
+ * org-exp.el (org-export-format-source-code-or-example):
+ Remember the original indentation of source code snippets and examples.
* org-latex.el (org-export-as-latex): Relocate the table of
contents.
@@ -9109,35 +9091,35 @@
(org-table-edit-formulas, orgtbl-ctrl-c-ctrl-c)
(orgtbl-gather-send-defs): Allow indented #+TBLFM line.
- * org.el (org-fontify-meta-lines, org-ctrl-c-ctrl-c): Allow
- indented #+TBLFM line.
+ * org.el (org-fontify-meta-lines, org-ctrl-c-ctrl-c):
+ Allow indented #+TBLFM line.
- * org-footnote.el (org-footnote-goto-local-insertion-point): Allow
- indented #+TBLFM line.
+ * org-footnote.el (org-footnote-goto-local-insertion-point):
+ Allow indented #+TBLFM line.
* org-colview.el (org-dblock-write:columnview): Allow indented
#+TBLFM line.
- * org-colview-xemacs.el (org-dblock-write:columnview): Allow
- indented #+TBLFM line.
+ * org-colview-xemacs.el (org-dblock-write:columnview):
+ Allow indented #+TBLFM line.
* org-clock.el (org-dblock-write:clocktable): Allow indented
#+TBLFM line.
2009-08-06 Carsten Dominik <[email protected]>
- * org-exp.el (org-export-format-source-code-or-example): Make
- editing indented blocks work correctly.
+ * org-exp.el (org-export-format-source-code-or-example):
+ Make editing indented blocks work correctly.
* org.el (org-edit-src-nindent): New variable.
(org-edit-src-code, org-edit-fixed-width-region)
- (org-edit-src-find-region-and-lang, org-edit-src-exit): Make
- editing indented blocks work correctly.
+ (org-edit-src-find-region-and-lang, org-edit-src-exit):
+ Make editing indented blocks work correctly.
2009-08-06 Carsten Dominik <[email protected]>
- * org-exp.el (org-export-replace-src-segments-and-examples): Find
- indented blocks.
+ * org-exp.el (org-export-replace-src-segments-and-examples):
+ Find indented blocks.
(org-export-format-source-code-or-example): Fix indentation of
blocks.
(org-export-remove-indentation): New function.
@@ -9156,18 +9138,18 @@
2009-08-06 Carsten Dominik <[email protected]>
* org.el (org-treat-insert-todo-heading-as-state-change)
- (org-treat-S-cursor-todo-selection-as-state-change): New
- variables.
- (org-insert-todo-heading): Honor
- `org-treat-insert-todo-heading-as-state-change'.
- (org-shiftright, org-shiftleft): Honor
- `org-treat-S-cursor-todo-selection-as-state-change'.
+ (org-treat-S-cursor-todo-selection-as-state-change):
+ New variables.
+ (org-insert-todo-heading):
+ Honor `org-treat-insert-todo-heading-as-state-change'.
+ (org-shiftright, org-shiftleft):
+ Honor `org-treat-S-cursor-todo-selection-as-state-change'.
(org-inhibit-logging): New variable.
2009-08-06 Carsten Dominik <[email protected]>
- * org-agenda.el (org-remove-subtree-entries-from-agenda): Reduce
- range for marker position checking.
+ * org-agenda.el (org-remove-subtree-entries-from-agenda):
+ Reduce range for marker position checking.
* org-latex.el (org-export-latex-first-lines): Fix bug when
exporting a region.
@@ -9190,8 +9172,8 @@
* org-latex.el (org-export-latex-low-levels): Fix customization
type.
- * org.el (org-priority, org-shiftup, org-shiftdown): Disable
- priority commands.
+ * org.el (org-priority, org-shiftup, org-shiftdown):
+ Disable priority commands.
* org-agenda.el (org-agenda-priority): Disable priority commands.
@@ -9206,17 +9188,17 @@
* org-exp.el (org-export-push-to-kill-ring): New function.
(org-export-copy-to-kill-ring): New option.
- * org-latex.el (org-export-as-latex): Call
- `org-export-push-to-kill-ring'.
+ * org-latex.el (org-export-as-latex):
+ Call `org-export-push-to-kill-ring'.
- * org-exp.el (org-export-show-temporary-export-buffer): New
- option.
+ * org-exp.el (org-export-show-temporary-export-buffer):
+ New option.
- * org-latex.el (org-export-as-latex): Use
- `org-export-show-temporary-export-buffer'.
+ * org-latex.el (org-export-as-latex):
+ Use `org-export-show-temporary-export-buffer'.
- * org-exp.el (org-export-show-temporary-export-buffer): New
- option.
+ * org-exp.el (org-export-show-temporary-export-buffer):
+ New option.
(org-export-push-to-kill-ring): New function.
* org-colview.el (org-columns-compile-map): New variable.
@@ -9279,8 +9261,8 @@
* org-latex.el (org-export-latex-complex-heading-re): New variable.
(org-export-as-latex): Force the correct regexp in the
preprocessor buffer.
- (org-export-latex-set-initial-vars): Set
- `org-export-latex-complex-heading-re'.
+ (org-export-latex-set-initial-vars):
+ Set `org-export-latex-complex-heading-re'.
* org-agenda.el (org-agenda-start-with-log-mode): New option.
(org-agenda-mode): Use `org-agenda-start-with-log-mode'.
@@ -9363,8 +9345,8 @@
* org-clock.el (org-clock-insert-selection-line): Fix prefious
patch.
- * org.el (org-edit-src-code, org-edit-fixed-width-region): Use
- separate buffer instead of indirect buffer to edit source code.
+ * org.el (org-edit-src-code, org-edit-fixed-width-region):
+ Use separate buffer instead of indirect buffer to edit source code.
(org-edit-src-exit): Make this function work with the new setup.
* org-clock.el (org-clock-insert-selection-line): Make sure tasks
@@ -9386,8 +9368,8 @@
* org-list.el (org-reset-checkbox-state-subtree): Move here from
org-checklist.el.
- (org-reset-checkbox-state-subtree): Call
- `org-reset-checkbox-state-subtree'.
+ (org-reset-checkbox-state-subtree):
+ Call `org-reset-checkbox-state-subtree'.
* org-remember.el (org-select-remember-template): For the
selection of a valid template.
@@ -9455,11 +9437,11 @@
* org.el (org-prepare-agenda-buffers): Catch a throw to nextfile.
* org-protocol.el: Remove dependency on url.el.
- (org-protocol-unhex-compound, org-protocol-open-source): Remove
- dependency on url.el.
+ (org-protocol-unhex-compound, org-protocol-open-source):
+ Remove dependency on url.el.
- * org-latex.el (org-export-as-pdf): Use
- `org-latex-to-pdf-process'.
+ * org-latex.el (org-export-as-pdf):
+ Use `org-latex-to-pdf-process'.
2009-08-06 Carsten Dominik <[email protected]>
@@ -9467,8 +9449,8 @@
* org-agenda.el (org-agenda-skip-additional-timestamps-same-entry):
New option.
- (org-agenda-get-timestamps): Honor
- `org-agenda-skip-additional-timestamps-same-entry'.
+ (org-agenda-get-timestamps):
+ Honor `org-agenda-skip-additional-timestamps-same-entry'.
* org-clock.el (org-clock-goto-may-find-recent-task): New option.
(org-clock-goto): Find recent task only if
@@ -9493,8 +9475,8 @@
* org.el (org-tab-first-hook)
(org-tab-after-check-for-table-hook)
(org-tab-after-check-for-cycling-hook): New hooks.
- (org-cycle-internal-global, org-cycle-internal-local): New
- functions, split out from `org-cycle'.
+ (org-cycle-internal-global, org-cycle-internal-local):
+ New functions, split out from `org-cycle'.
(org-cycle): Call the new hooks.
2009-08-06 Carsten Dominik <[email protected]>
@@ -9502,13 +9484,13 @@
* org-exp.el (org-export-preprocess-string): Reset the list of
preferred targets for each run of the preprocessor.
- * org.el (org-refile-target-verify-function): Improve
- documentation.
+ * org.el (org-refile-target-verify-function):
+ Improve documentation.
(org-get-refile-targets): Respect point being moved by the
verification function.
- * org-latex.el (org-export-latex-timestamp-keyword-markup): New
- option.
+ * org-latex.el (org-export-latex-timestamp-keyword-markup):
+ New option.
(org-export-latex-keywords): Use new option.
* org.el (org-rear-nonsticky-at): New defsubst.
@@ -9521,8 +9503,8 @@
2009-08-06 Carsten Dominik <[email protected]>
* org-protocol.el (server-edit): Declare `server-edit'.
- (org-protocol-unhex-string, org-protocol-unhex-compound): New
- functions.
+ (org-protocol-unhex-string, org-protocol-unhex-compound):
+ New functions.
(org-protocol-check-filename-for-protocol): Call `server-edit'.
* org.el (org-default-properties): New default properteis for
@@ -9703,15 +9685,15 @@
* org-agenda.el (org-agenda-confirm-kill)
(org-agenda-custom-commands-local-options)
(org-timeline-show-empty-dates, org-agenda-ndays)
- (org-agenda-start-on-weekday, org-scheduled-past-days): Fix
- customization type from number to integer.
+ (org-agenda-start-on-weekday, org-scheduled-past-days):
+ Fix customization type from number to integer.
2009-08-06 Carsten Dominik <[email protected]>
* org-protocol.el: Declare some functions.
- * org-agenda.el (org-agenda-compare-effort): Honor
- `org-sort-agenda-noeffort-is-high'.
+ * org-agenda.el (org-agenda-compare-effort):
+ Honor `org-sort-agenda-noeffort-is-high'.
(org-agenda-filter-by-tag, org-agenda-filter-make-matcher)
(org-agenda-compare-effort): Implement the "?" operator for
finding entries without effort setting.
@@ -9814,8 +9796,8 @@
* org-mac-message.el (org-mac-flagged-mail): New group.
(org-mac-mail-account): New variable.
- (org-mac-create-flagged-mail, org-mac-insert-flagged-mail): New
- commands.
+ (org-mac-create-flagged-mail, org-mac-insert-flagged-mail):
+ New commands.
* org-remember.el (org-remember-backup-directory): New variable.
(org-remember-apply-template): Write file to backup directory.
@@ -9828,15 +9810,15 @@
* org-table.el (org-table-beginning-of-field)
(org-table-end-of-field): New commands.
- (org-table-previous-field, org-table-beginning-of-field): Better
- error messages.
+ (org-table-previous-field, org-table-beginning-of-field):
+ Better error messages.
(orgtbl-setup): Include `M-a' and `M-e'.
- * org.el (org-backward-sentence, org-forward-sentence): New
- commands.
+ * org.el (org-backward-sentence, org-forward-sentence):
+ New commands.
- * org-colview.el (org-colview-initial-truncate-line-value): New
- variable.
+ * org-colview.el (org-colview-initial-truncate-line-value):
+ New variable.
(org-columns-remove-overlays): Restore the value of `truncate-lines'.
(org-columns): Remember the value of `truncate-lines'.
@@ -9892,11 +9874,11 @@
sub-projects.
(org-agenda-skip-entry-when-regexp-matches)
(org-agenda-skip-entry-when-regexp-matches-in-subtree): New functions.
- (org-agenda-list-stuck-projects): Use
- `org-agenda-skip-entry-when-regexp-matches-in-subtree'.
+ (org-agenda-list-stuck-projects):
+ Use `org-agenda-skip-entry-when-regexp-matches-in-subtree'.
- * org-latex.el (org-export-latex-preprocess): Improve
- export of verses.
+ * org-latex.el (org-export-latex-preprocess):
+ Improve export of verses.
* org-exp.el (org-export-as-html): Implement centering as a div
rather than a paragraph. Do a better job with line-end in verse
@@ -9911,8 +9893,8 @@
* org-latex.el (org-export-latex-preprocess): Implement the
centering markup.
- * org-exp.el (org-export-mark-blockquote-verse-center): Rename
- from `org-export-mark-blockquote-and-verse'.
+ * org-exp.el (org-export-mark-blockquote-verse-center):
+ Rename from `org-export-mark-blockquote-and-verse'.
(org-export-as-html): Implement the centering markup.
* org-latex.el (org-export-latex-tables): Fix vertical
@@ -9938,16 +9920,16 @@
2009-08-06 Carsten Dominik <[email protected]>
- * org-latex.el (org-export-latex-emphasis-alist): Better
- defaults for verbose emphasis.
+ * org-latex.el (org-export-latex-emphasis-alist):
+ Better defaults for verbose emphasis.
(org-export-latex-emph-format): New function.
(org-export-latex-fontify): Call `org-export-latex-emph-format'.
* org-agenda.el (org-agenda-menu): Add new commands to menu.
(org-agenda-do-date-later, org-agenda-do-date-earlier)
(org-agenda-date-later-minutes, org-agenda-date-earlier-minutes)
- (org-agenda-date-later-hours, org-agenda-date-earlier-hours): New
- commands.
+ (org-agenda-date-later-hours, org-agenda-date-earlier-hours):
+ New commands.
* org.el (org-timestamp-change): Move end-time along with start
time.
@@ -9979,8 +9961,8 @@
(org-publish-projects, org-publish-org-index): Change default anme
for the index of file names to "sitemap.org".
- * org-latex.el (org-export-latex-tables): Use
- `org-split-string', for Emacs 21 compatibility.
+ * org-latex.el (org-export-latex-tables):
+ Use `org-split-string', for Emacs 21 compatibility.
2009-08-06 Carsten Dominik <[email protected]>
@@ -9996,10 +9978,10 @@
(org-get-current-options): Add new keywords.
(org-export-as-html): Publish description and keywords.
- * org-agenda.el (org-agenda-add-entry-text-descriptive-links): New
- option.
- (org-agenda-add-entry-text): Honor
- `org-agenda-add-entry-text-descriptive-links'.
+ * org-agenda.el (org-agenda-add-entry-text-descriptive-links):
+ New option.
+ (org-agenda-add-entry-text):
+ Honor `org-agenda-add-entry-text-descriptive-links'.
* org-latex.el (org-export-latex-preprocess): Make all
external preprocess functions use a PARAMETER arg.
@@ -10018,8 +10000,8 @@
`org-export-html-style-include-scripts'.
(org-export-as-html): Honor new option
`org-export-html-style-include-scripts'.
- (org-export-html-scripts, org-export-html-style-default): Fix
- xml issues with the Safari browser.
+ (org-export-html-scripts, org-export-html-style-default):
+ Fix xml issues with the Safari browser.
2009-08-06 Carsten Dominik <[email protected]>
@@ -10036,8 +10018,8 @@
2009-08-06 Carsten Dominik <[email protected]>
- * org-exp.el (org-export-format-source-code-or-example): Mark
- temporary buffer unmodified, so that it will be killed even if
+ * org-exp.el (org-export-format-source-code-or-example):
+ Mark temporary buffer unmodified, so that it will be killed even if
mode like message mode has decided to assign a file name.
* org.el (org-scan-tags): Improve tag inheritance.
@@ -10056,8 +10038,8 @@
* org.el (org-add-planning-info): Fix bug with looking for keyword
only at column 0.
- * org-agenda.el (org-agenda-custom-commands-local-options): Add
- option for tags filter preset.
+ * org-agenda.el (org-agenda-custom-commands-local-options):
+ Add option for tags filter preset.
(org-prepare-agenda): Store filter preset as a property on the
filter variable.
(org-finalize-agenda): Call the filter, if there is a preset.
@@ -10076,8 +10058,8 @@
(org-agenda-fontify-priorities): Rename from
org-fontify-priorities.
- * org.el (org-set-font-lock-defaults): Call
- `org-font-lock-add-priority-faces'.
+ * org.el (org-set-font-lock-defaults):
+ Call `org-font-lock-add-priority-faces'.
(org-font-lock-add-priority-faces): New function.
* org-faces.el (org-set-tag-faces): New option.
@@ -10134,8 +10116,8 @@
* org.el (org-blank-before-new-entry): Mention the dependence on
`org-empty-line-terminates-plain-lists' in the docstring.
- * org-publish.el (org-publish-get-project-from-filename): New
- optional argument UP. Only find the top project if UP is set.
+ * org-publish.el (org-publish-get-project-from-filename):
+ New optional argument UP. Only find the top project if UP is set.
(org-publish-current-project): Find the top encloding project.
* org-agenda.el (org-agenda-before-write-hook)
@@ -10149,15 +10131,15 @@
* org-exp.el (org-export-ascii-links-to-notes): New option.
(org-export-as-ascii): Handle links better.
- (org-export-ascii-wrap, org-export-ascii-push-links): New
- functions.
+ (org-export-ascii-wrap, org-export-ascii-push-links):
+ New functions.
2009-08-06 Carsten Dominik <[email protected]>
* org-agenda.el (org-agenda): Make prefix arg optional.
(org-agenda-search-headline-for-time): New option.
- (org-format-agenda-item): Honor
- `org-agenda-search-headline-for-time'.
+ (org-format-agenda-item):
+ Honor `org-agenda-search-headline-for-time'.
* org-table.el (orgtbl-self-insert-command): Cluster undo for 20
characters.
@@ -10228,8 +10210,8 @@
2009-02-19 Carsten Dominik <[email protected]>
- * org.el (org-block-todo-from-children-or-siblings): Use
- `org-up-heading-all' so that this will work correctly with hidden
+ * org.el (org-block-todo-from-children-or-siblings):
+ Use `org-up-heading-all' so that this will work correctly with hidden
property drawers and entries.
(org-end-of-line, org-beginning-of-line): Make prefix arg work, by
falling back to normal, default command.
@@ -10310,8 +10292,8 @@
* org-exp.el (org-export-html-footnotes-section): Make the div id
consistent.
- * org-export-latex.el (org-export-latex-classes): Remove
- paper size option from LaTeX classes.
+ * org-export-latex.el (org-export-latex-classes):
+ Remove paper size option from LaTeX classes.
2009-01-31 Carsten Dominik <[email protected]>
@@ -10394,8 +10376,8 @@
* org-agenda.el (org-agenda-todo): Call `org-todo' interactively,
to get real errors from the blocker hook.
- * org.el (org-shiftselect-error, org-call-for-shift-select): New
- functions.
+ * org.el (org-shiftselect-error, org-call-for-shift-select):
+ New functions.
(org-set-visibility-according-to-property): Turn off the setting
of `org-show-entry-below', to avoid overruling a FOLDED visibility
property.
@@ -10412,13 +10394,13 @@
* org-footnote.el (org-footnote-normalize): Remove unnecessary
variable.
- (org-insert-footnote-reference-near-definition): Remove
- unnecessary let form.
+ (org-insert-footnote-reference-near-definition):
+ Remove unnecessary let form.
2009-01-26 Carsten Dominik <[email protected]>
- * org-export-latex.el (org-export-as-latex): Call
- `org-export-latex-first-lines' with OPT-PLIST as a parameter.
+ * org-export-latex.el (org-export-as-latex):
+ Call `org-export-latex-first-lines' with OPT-PLIST as a parameter.
(org-export-latex-first-lines): New parameter OPT-PLIST.
* org.el (org-yank): Tell `delete-selection-mode' about
@@ -10426,8 +10408,8 @@
* org-faces.el (org-clock-overlay): Fix face definition.
- * org-export-latex.el (org-export-latex-first-lines): Pass
- timestamp and footnote parameters to the preprocessor.
+ * org-export-latex.el (org-export-latex-first-lines):
+ Pass timestamp and footnote parameters to the preprocessor.
* org-exp.el (org-export-remove-timestamps): Do not remove time
stamps inside tables.
@@ -10436,8 +10418,8 @@
* org-exp.el (org-export-as-html): Turn \par into a paragraph.
- * org.el (org-agenda-tags-todo-honor-ignore-options): Declare
- variable.
+ * org.el (org-agenda-tags-todo-honor-ignore-options):
+ Declare variable.
* org-table.el (org-table-insert-hline): Fix typo in fuction call
to `backward-char'.
@@ -10445,21 +10427,21 @@
* org-exp.el (org-export-as-html): Remove the initial space from
colon examples.
- * org.el (org-scan-tags): Call
- `org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item'.
+ * org.el (org-scan-tags):
+ Call `org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item'.
- * org-agenda.el (org-agenda-todo-list, org-agenda-match-view): New
- customization groups.
+ * org-agenda.el (org-agenda-todo-list, org-agenda-match-view):
+ New customization groups.
(org-agenda-tags-todo-honor-ignore-options): New option.
(org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item):
New function.
- (org-agenda-get-todos): Use
- `org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item'.
+ (org-agenda-get-todos):
+ Use `org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item'.
2009-01-25 Carsten Dominik <[email protected]>
- * org-exp.el (org-export-format-source-code-or-example): Escape
- HTML characters also in examples that anre not treated with
+ * org-exp.el (org-export-format-source-code-or-example):
+ Escape HTML characters also in examples that anre not treated with
htmlize. Also, just switch to EXAMPLE processing if we do not
have a good version of htmlize.
@@ -10515,8 +10497,8 @@
2009-01-25 Carsten Dominik <[email protected]>
- * org-export-latex.el (org-export-latex-quotation-marks): Use
- `org-if-unprotected-1'.
+ * org-export-latex.el (org-export-latex-quotation-marks):
+ Use `org-if-unprotected-1'.
(org-export-latex-set-initial-vars): Check for class definition in
property.
@@ -10526,8 +10508,8 @@
* org-compat.el (org-count-lines): New function.
- * org-exp.el (org-export-format-source-code-or-example): Handle
- switches related to text areas.
+ * org-exp.el (org-export-format-source-code-or-example):
+ Handle switches related to text areas.
* org.el (org-activate-footnote-links): Don't allow match inside a
link.
@@ -10562,17 +10544,17 @@
* org.el (org-image-file-name-regexp, org-file-image-p): Allow the
list of extensions to be a parameter.
- * org-exp.el (org-export-html-inline-image-extensions): New
- variable.
+ * org-exp.el (org-export-html-inline-image-extensions):
+ New variable.
- * org-agenda.el (org-prepare-agenda): Use
- `org-agenda-block-separator'.
+ * org-agenda.el (org-prepare-agenda):
+ Use `org-agenda-block-separator'.
(org-agenda-block-separator): New option.
2009-01-25 Carsten Dominik <[email protected]>
- * org-export-latex.el (org-export-latex-tables): Call
- `org-table-clean-before-export' with the new optional argument.
+ * org-export-latex.el (org-export-latex-tables):
+ Call `org-table-clean-before-export' with the new optional argument.
* org-exp.el (org-table-clean-before-export): New optional
parameter MAYBE-QUOTED, allows for quoted characters like \# in
@@ -10583,8 +10565,8 @@
* org-plot.el (org-plot/gnuplot): Fix text-ind parameter for
histograms.
- * org-colview.el (org-colview-construct-allowed-dates): Better
- error catching when a date/time property does not have allowed
+ * org-colview.el (org-colview-construct-allowed-dates):
+ Better error catching when a date/time property does not have allowed
values defined.
* org-colview-xemacs.el (org-colview-construct-allowed-dates):
@@ -10613,8 +10595,8 @@
2009-01-25 Carsten Dominik <[email protected]>
- * org-compat.el (org-fit-window-to-buffer): Use
- `window-full-width-p'.
+ * org-compat.el (org-fit-window-to-buffer):
+ Use `window-full-width-p'.
* org-export-latex.el (org-export-latex-fixed-width): Enforce the
space after the colon in short examples.
@@ -10670,8 +10652,8 @@
(org-timer-stop): New command.
(org-timer-seconds): Return correct time when timer is paused.
(org-timer-mode-line-timer): New variable.
- (org-timer-set-mode-line, org-timer-update-mode-line): New
- functions.
+ (org-timer-set-mode-line, org-timer-update-mode-line):
+ New functions.
* org.el (org-insert-heading): Handle new value `auto' for
`org-blank-before-new-entry'.
@@ -10720,19 +10702,19 @@
* org-exp.el (org-export-preprocess-string): Remove clock lines
and timestamps already in the preprocesor.
- (org-export-remove-timestamps, org-export-remove-clock-lines): New
- functions.
+ (org-export-remove-timestamps, org-export-remove-clock-lines):
+ New functions.
(org-export-as-ascii, org-export-as-html): Add the timestamps
parameter to the preprocessor parameter list.
* org-list.el (org-list-parse-list): Parse for checkboxes.
(org-list-to-generic): Introduce and handle new parameters :cbon
and :cboff.
- (org-list-to-latex, org-list-to-html, org-list-to-texinfo): Add
- optional parameter PARAMS.
+ (org-list-to-latex, org-list-to-html, org-list-to-texinfo):
+ Add optional parameter PARAMS.
- * org-export-latex.el (org-export-latex-special-chars): Fix
- problems with interpreting dollar signs.
+ * org-export-latex.el (org-export-latex-special-chars):
+ Fix problems with interpreting dollar signs.
(org-inside-latex-math-p): New function.
(org-export-latex-preprocess): Protect all the math fragments.
@@ -10744,8 +10726,8 @@
* org-agenda.el (org-run-agenda-series): Have series options set
when finalizing the agenda.
- * org-exp.el (org-export-format-source-code-or-example): Protect
- the converted examples.
+ * org-exp.el (org-export-format-source-code-or-example):
+ Protect the converted examples.
* org.el (org-set-regexps-and-options): Fix the regexp
`org-complex-heading-regexp'.
@@ -10789,8 +10771,8 @@
* org-macs.el (org-re): Handle the [:word:] class.
- * org-exp.el (org-export-preprocess-string): Call
- `org-export-protect-colon-examples'.
+ * org-exp.el (org-export-preprocess-string):
+ Call `org-export-protect-colon-examples'.
(org-export-protect-colon-examples): Rename from
`org-export-protect-examples', and scope limited to lines starting
with a colon.
@@ -10820,8 +10802,8 @@
(org-export-latex-preprocess): Treat multiple references to a
footnote.
- * org-exp.el (org-export-preprocess-string): Call
- `org-footnote-normalize'.
+ * org-exp.el (org-export-preprocess-string):
+ Call `org-footnote-normalize'.
(org-export-as-ascii, org-export-as-html): Pass footnote variable
to preprocessor.
(org-export-as-html): Treat multiple references to a footnote.
@@ -10832,8 +10814,8 @@
links.
* org.el (org-bracket-link-analytic-regexp++): New variable.
- (org-make-link-regexps): Initialize
- `org-bracket-link-analytic-regexp++'.
+ (org-make-link-regexps):
+ Initialize `org-bracket-link-analytic-regexp++'.
(org-store-link): Implement special case in edit-src buffer.
(org-insert-link): No use of ide to insert stored links.
(org-link-search): Implement special case for coderefs.
@@ -10861,8 +10843,8 @@
2009-01-16 Glenn Morris <[email protected]>
- * org-mouse.el (org-mouse-show-context-menu): Use
- mouse-menu-major-mode-map, if defined, rather than the obsolete
+ * org-mouse.el (org-mouse-show-context-menu):
+ Use mouse-menu-major-mode-map, if defined, rather than the obsolete
mouse-major-mode-menu.
2008-12-23 Carsten Dominik <[email protected]>
@@ -10887,8 +10869,8 @@
2008-12-20 Carsten Dominik <[email protected]>
- * org.el (org-get-refile-targets, org-refile-get-location): Use
- expanded file name to improve comparison.
+ * org.el (org-get-refile-targets, org-refile-get-location):
+ Use expanded file name to improve comparison.
2008-12-20 Carsten Dominik <[email protected]>
@@ -10900,12 +10882,12 @@
* org-export-latex.el (org-export-latex-links): Fix bug with
undefined label.
- * org-table.el (org-table-get-specials): Set
- `org-table-current-last-data-line'.
+ * org-table.el (org-table-get-specials):
+ Set `org-table-current-last-data-line'.
(org-table-current-last-data-line): New variable.
(org-table-insert-column, org-table-delete-column)
- (org-table-move-column, org-table-fix-formulas): Call
- `org-table-fix-formulas' a second time to fix the $LR references.
+ (org-table-move-column, org-table-fix-formulas):
+ Call `org-table-fix-formulas' a second time to fix the $LR references.
(org-table-get-specials): Add the $LR references to the tables.
(org-table-get-formula): Do not offer last-row names as LHS of
formulas.
@@ -10959,8 +10941,8 @@
* org.el (org-refile): Avoid refiling to within the region to be
refiled.
- * org-export-latex.el (org-export-latex-special-chars): Replace
- special characters also in tables.
+ * org-export-latex.el (org-export-latex-special-chars):
+ Replace special characters also in tables.
* org-agenda.el (org-agenda-change-all-lines): New argument
FORCE-TAGS.
@@ -11008,8 +10990,8 @@
(org-export-as-latex): Pass RBEG to `org-export-latex-first-lines'.
(org-export-latex-make-header): Add some hard space after the
table of contents.
- (org-export-latex-first-lines): Accept RBEG argument. Mark
- exported text so that it will be excuded in further steps.
+ (org-export-latex-first-lines): Accept RBEG argument.
+ Mark exported text so that it will be excuded in further steps.
* org-table.el (org-table-get-specials): Make @0 reference the
last line in a table.
@@ -11029,8 +11011,8 @@
* org-exp.el (org-export-html-style-default): Add style
definitions for the figure div.
- (org-export-preprocess-string, org-export-as-html): Implement
- attribute, label, and caption handling.
+ (org-export-preprocess-string, org-export-as-html):
+ Implement attribute, label, and caption handling.
(org-export-attach-captions-and-attributes): New function.
(org-export-html-format-image): New function.
(org-format-org-table-html): Implement attribute, label, and
@@ -11118,8 +11100,8 @@
* org-w3m.el (w3m-minor-mode-hook): Also add the special copy
command to the `w3m-minor-mode-map'.
- * org-archive.el (org-archive-to-archive-sibling): Protect
- `this-command' to avoid appending kills during archiving.
+ * org-archive.el (org-archive-to-archive-sibling):
+ Protect `this-command' to avoid appending kills during archiving.
* org-exp.el (org-export-with-priority): New variable.
(org-export-add-options-to-plist): Use `org-export-plist-vars'
@@ -11147,8 +11129,8 @@
2008-12-07 Carsten Dominik <[email protected]>
* org.el (org-tags-exclude-from-inheritance): New option.
- (org-tag-inherit-p, org-remove-uniherited-tags): Respect
- `org-tags-exclude-from-inheritance'.
+ (org-tag-inherit-p, org-remove-uniherited-tags):
+ Respect `org-tags-exclude-from-inheritance'.
* org-agenda.el (org-agenda-show-inherited-tags): New option.
(org-format-agenda-item): Add inherited tags to the agenda line
@@ -11206,8 +11188,8 @@
accidentially overwritten by last commit to Emacs.
* org.el (org-outline-path-complete-in-steps): New option.
- (org-refile-get-location): Honor
- `org-outline-path-complete-in-steps'.
+ (org-refile-get-location):
+ Honor `org-outline-path-complete-in-steps'.
(org-agenda-change-all-lines, org-tags-sparse-tree)
(org-time-string-to-absolute, org-small-year-to-year)
(org-link-escape): Re-apply changes accidentially overwritten
@@ -11230,8 +11212,8 @@
line before the first headline to always be included. This is
to not miss a commented target.
- * org-mouse.el (org-mouse-insert-item): Call
- `org-indent-to-column' instead of `indent-to', for XEmacs
+ * org-mouse.el (org-mouse-insert-item):
+ Call `org-indent-to-column' instead of `indent-to', for XEmacs
compatibility.
* org.el (org-refile-targets): Fix customize definition so
@@ -11254,18 +11236,18 @@
2008-11-23 Carsten Dominik <[email protected]>
- * org-remember.el (org-remember-apply-template): Use
- `org-substring-no-properties'.
+ * org-remember.el (org-remember-apply-template):
+ Use `org-substring-no-properties'.
* org-compat.el (org-substring-no-properties): New function.
- * org-remember.el (org-remember-apply-template): Use
- `org-substring-no-properties' for compatibility.
+ * org-remember.el (org-remember-apply-template):
+ Use `org-substring-no-properties' for compatibility.
- * org-list.el (org-list-two-spaces-after-bullet-regexp): New
- option.
- (org-fix-bullet-type): Respect
- `org-list-two-spaces-after-bullet-regexp'.
+ * org-list.el (org-list-two-spaces-after-bullet-regexp):
+ New option.
+ (org-fix-bullet-type):
+ Respect `org-list-two-spaces-after-bullet-regexp'.
* org-clock.el (org-clock-load): Clean up the code.
@@ -11330,8 +11312,8 @@
(org-set-property, org-delete-property)
(org-delete-property-globally): Use `org-ido-completing-read'.
- * org-remember.el (org-remember-apply-template): Use
- `org-ido-completing-read'.
+ * org-remember.el (org-remember-apply-template):
+ Use `org-ido-completing-read'.
* org-publish.el (org-publish): Use `org-ido-completing-read'.
@@ -11339,14 +11321,14 @@
(org-insert-columns-dblock): Use `org-ido-completing-read'.
* org-colview-xemacs.el (org-columns-edit-value)
- (org-columns-new, org-insert-columns-dblock): Use
- `org-ido-completing-read'.
+ (org-columns-new, org-insert-columns-dblock):
+ Use `org-ido-completing-read'.
- * org-attach.el (org-attach-delete-one, org-attach-open): Use
- `org-ido-completing-read'.
+ * org-attach.el (org-attach-delete-one, org-attach-open):
+ Use `org-ido-completing-read'.
- * org-agenda.el (org-todo-list, org-agenda-filter-by-tag): Use
- `org-ido-completing-read'.
+ * org-agenda.el (org-todo-list, org-agenda-filter-by-tag):
+ Use `org-ido-completing-read'.
* org.el (org-time-today): New function.
(org-matcher-time): Use `org-time-today'. Add special treatment
@@ -11361,8 +11343,8 @@
2008-11-23 Carsten Dominik <[email protected]>
- * org-export-latex.el (org-export-latex-subcontent): Interprete
- target aliases as additonal labels.
+ * org-export-latex.el (org-export-latex-subcontent):
+ Interprete target aliases as additonal labels.
* org-exp.el (org-export-target-aliases): New variable.
(org-export-preprocess-string)
@@ -11409,8 +11391,8 @@
* org-vm.el (org-vm-follow-link): Require `vm-search'.
- * org.el (org-up-heading-safe, org-forward-same-level): Always
- call `org-back-to-heading' instead of `outline-back-to-heading'.
+ * org.el (org-up-heading-safe, org-forward-same-level):
+ Always call `org-back-to-heading' instead of `outline-back-to-heading'.
(org-back-to-heading): New wrapper around outline-back-to-heading,
with a useful error message telling where the error happened.
@@ -11516,8 +11498,8 @@
* org.el (org-link-abbrev-alist): Improve customization type.
- * org-attach.el (org-attach-expand-link, org-attach-expand): New
- functions.
+ * org-attach.el (org-attach-expand-link, org-attach-expand):
+ New functions.
* org-agenda.el (org-agenda-get-progress): Rename from
`org-get-closed'. Implement searching for state changes as well.
@@ -11556,8 +11538,8 @@
* org-exp.el (org-export-as-html): Make sure that <hr/> is between
paragraphs, not inside.
- * org.el (org-todo): Quote
- `org-agenda-headline-snapshot-before-repeat'.
+ * org.el (org-todo):
+ Quote `org-agenda-headline-snapshot-before-repeat'.
* org-exp.el (org-export-as-html): Fully process link descriptions.
(org-export-html-format-desc): New function.
@@ -11572,14 +11554,14 @@
really, a preliminary and incomplete version was present earlier,
but not used).
- * org.el (org-fast-todo-selection, org-fast-tag-selection): Use
- `org-fit-window-to-buffer'.
+ * org.el (org-fast-todo-selection, org-fast-tag-selection):
+ Use `org-fit-window-to-buffer'.
* org-exp.el (org-export): Use `org-fit-window-to-buffer'.
* org-agenda.el (org-agenda-get-restriction-and-command)
- (org-fit-agenda-window, org-agenda-convert-date): Use
- `org-fit-window-to-buffer'.
+ (org-fit-agenda-window, org-agenda-convert-date):
+ Use `org-fit-window-to-buffer'.
* org-exp.el (org-export-as-html): Process href links through
`org-export-html-format-href'.
@@ -11602,8 +11584,8 @@
(org-export-html-style-default): Mark style definitions as
unparsed CDATA.
- * org-publish.el (org-publish-validate-link): Function
- re-introduced.
+ * org-publish.el (org-publish-validate-link):
+ Function re-introduced.
2008-11-12 Charles Sebold <[email protected]>
@@ -11748,8 +11730,8 @@
2008-10-26 Bastien Guerry <[email protected]>
- * org-export-latex.el (org-export-latex-classes): Add
- \usepackage{graphicx} to the default list of packages.
+ * org-export-latex.el (org-export-latex-classes):
+ Add \usepackage{graphicx} to the default list of packages.
2008-10-26 Carsten Dominik <[email protected]>
@@ -11763,8 +11745,8 @@
(org-add-log-note): Mask prefix argument when immediately storing
the note.
- * org-agenda.el (org-agenda-filter-effort-default-operator): New
- option.
+ * org-agenda.el (org-agenda-filter-effort-default-operator):
+ New option.
2008-10-26 James TD Smith <[email protected]>
@@ -11797,8 +11779,8 @@
2008-10-26 Carsten Dominik <[email protected]>
- * org.el (org-add-log-setup): Respect
- `org-log-state-notes-insert-after-drawers'.
+ * org.el (org-add-log-setup):
+ Respect `org-log-state-notes-insert-after-drawers'.
(org-log-state-notes-insert-after-drawers): New option.
(org-todo-trigger-tag-changes): New function.
(org-todo): Call `org-todo-trigger-tag-changes'.
@@ -11833,8 +11815,8 @@
2008-10-26 Carsten Dominik <[email protected]>
- * org-export-latex.el (org-export-latex-preprocess): Improve
- quoting of LaTeX environments.
+ * org-export-latex.el (org-export-latex-preprocess):
+ Improve quoting of LaTeX environments.
2008-10-19 Eli Zaretskii <[email protected]>
@@ -11889,8 +11871,8 @@
* org-attach.el (org-attach-auto-tag): New option.
(org-attach-tag, org-attach-untag): New functions.
- (org-attach-attach, org-attach-new, org-attach-sync): Call
- `org-attach-tag'.
+ (org-attach-attach, org-attach-new, org-attach-sync):
+ Call `org-attach-tag'.
(org-attach-delete): Call `org-attach-untag'.
* org-table.el (orgtbl-self-insert-command): Make this work for
@@ -11917,8 +11899,8 @@
* org-exp.el (org-infile-export-plist): Put the content of
#+LATEX_HEADER: into the property :latex-header-extra.
- * org-colview.el (org-columns-get-format-and-top-level): Remove
- resetting the marker.
+ * org-colview.el (org-columns-get-format-and-top-level):
+ Remove resetting the marker.
* org-colview-xemacs.el (org-columns-get-format-and-top-level):
Remove resetting the marker.
@@ -11930,8 +11912,8 @@
* org-exp.el (org-infile-export-plist): Allow multiple STYLE lines.
* org.el (org-entry-get-multivalued-property)
- (org-entry-protect-space, org-entry-restore-space): New
- functions.
+ (org-entry-protect-space, org-entry-restore-space):
+ New functions.
(org-file-apps-defaults-macosx): Let postscript files be opened by
preview.
(org-time-stamp-inactive): Call `org-time-stamp'.
@@ -11966,8 +11948,8 @@
* org-bbdb.el (org-bbdb-anniversaries): Require bbdb in
`org-bbdb-anniversaries'.
- * org.el (org-get-next-sibling, org-forward-same-level): New
- functions, similar to the outline versions, but invisible headings
+ * org.el (org-get-next-sibling, org-forward-same-level):
+ New functions, similar to the outline versions, but invisible headings
are OK.
2008-10-12 Bastien Guerry <[email protected]>
@@ -12092,15 +12074,15 @@
(org-entries-lessp): Implement sorting by TODO state.
(org-cmp-todo-state): New defsubst.
- * org-colview.el (org-colview-construct-allowed-dates): New
- function.
- (org-columns-next-allowed-value): Use
- `org-colview-construct-allowed-dates'.
+ * org-colview.el (org-colview-construct-allowed-dates):
+ New function.
+ (org-columns-next-allowed-value):
+ Use `org-colview-construct-allowed-dates'.
- * org-colview-xemacs.el (org-colview-construct-allowed-dates): New
- function.
- (org-columns-next-allowed-value): Use
- `org-colview-construct-allowed-dates'.
+ * org-colview-xemacs.el (org-colview-construct-allowed-dates):
+ New function.
+ (org-columns-next-allowed-value):
+ Use `org-colview-construct-allowed-dates'.
* org.el (org-protect-slash): New function.
(org-get-refile-targets): Use `org-protect-slash'.
@@ -12108,8 +12090,8 @@
* org-agenda.el (org-global-tags-completion-table): New variable.
* org-exp.el (org-export-handle-export-tags): New function.
- (org-export-preprocess-string): Call
- `org-export-handle-export-tags'.
+ (org-export-preprocess-string):
+ Call `org-export-handle-export-tags'.
* org-publish.el (org-publish-expand-components): Function removed.
(org-publish-expand-projects): Allow components to have components.
@@ -12119,8 +12101,8 @@
(org-yank-and-fold-if-subtree): New function.
* org-agenda.el (org-agenda-todayp): New function.
- (org-agenda-get-deadlines, org-agenda-get-scheduled): Use
- `org-agenda-todayp'.
+ (org-agenda-get-deadlines, org-agenda-get-scheduled):
+ Use `org-agenda-todayp'.
* org.el (org-insert-heading-respect-content)
(org-insert-todo-heading-respect-content): New commands.
@@ -12228,11 +12210,11 @@
* org-agenda.el (org-agenda-align-tags): Fix bug with malformed
face property.
- * org-colview.el (org-columns-display-here): Use
- `org-columns-modify-value-for-display-function'.
+ * org-colview.el (org-columns-display-here):
+ Use `org-columns-modify-value-for-display-function'.
- * org-colview-xemacs.el (org-columns-display-here): Use
- `org-columns-modify-value-for-display-function'.
+ * org-colview-xemacs.el (org-columns-display-here):
+ Use `org-columns-modify-value-for-display-function'.
* org.el (org-columns-modify-value-for-display-function): New option.
@@ -12289,14 +12271,14 @@
2008-07-24 Carsten Dominik <[email protected]>
- * org-exp.el (org-export-region-as-html, org-export-as-html): Make
- sure that calls from `org-export-region-as-html' do not do the
+ * org-exp.el (org-export-region-as-html, org-export-as-html):
+ Make sure that calls from `org-export-region-as-html' do not do the
special check for a subtree.
* org-agenda.el (org-batch-store-agenda-views): Fix parsing bug.
- * org.el (org-open-file): Use
- `org-open-directory-means-index-dot-org'.
+ * org.el (org-open-file):
+ Use `org-open-directory-means-index-dot-org'.
(org-open-directory-means-index-dot-org): New option.
* org.el (org-make-link-string): Remove link attributes from
@@ -12312,8 +12294,8 @@
* org.el (org-narrow-to-subtree): Do not include the final newline
into the narrowed region.
- * org-agenda.el (org-agenda-custom-commands-local-options): Fix
- bug with user-define skipping condition.
+ * org-agenda.el (org-agenda-custom-commands-local-options):
+ Fix bug with user-define skipping condition.
* org-agenda.el (org-agenda-get-restriction-and-command): Fix typo.
@@ -12332,8 +12314,8 @@
* org-publish.el (org-publish-find-title): Bug fix.
(org-publish-org-index): Implement new :index-style option.
- * org-publish.el (org-publish-timestamp-filename): Use
- SHA1-encoded file names in the timestamp directory.
+ * org-publish.el (org-publish-timestamp-filename):
+ Use SHA1-encoded file names in the timestamp directory.
* org-publish.el (org-publish-needed-p): Be verbose about files
published and files skipped.
@@ -12475,8 +12457,8 @@
`org-diary-to-ical-string' out of the loop, and kill the buffer
afterwords.
- * org-remember.el (org-remember-visit-immediately): Position
- cursor after moving to the note.
+ * org-remember.el (org-remember-visit-immediately):
+ Position cursor after moving to the note.
(org-remember-apply-template): Use a text property to record the
cursor position.
(org-remember-handler): Align tags after pasting the note.
@@ -12519,8 +12501,8 @@
2008-06-17 Carsten Dominik <[email protected]>
* org-remember.el (org-jump-to-target-location): New variable.
- (org-remember-apply-template): Set
- `org-remember-apply-template' if requested by template.
+ (org-remember-apply-template):
+ Set `org-remember-apply-template' if requested by template.
(org-remember-handler): Start an idle timer to jump to
remember location.
@@ -12570,8 +12552,8 @@
2008-06-17 Carsten Dominik <[email protected]>
- * org-agenda.el (org-agenda-columns-remove-prefix-from-item): New
- option.
+ * org-agenda.el (org-agenda-columns-remove-prefix-from-item):
+ New option.
* org-colview.el (org-agenda-columns-cleanup-item): New function.
@@ -12692,11 +12674,11 @@
* org-clock.el (org-clock-display, org-clock-out)
(org-update-mode-line): Use `org-time-clocksum-format'.
- * org-colview-xemacs.el (org-columns-number-to-string): Use
- `org-time-clocksum-format'.
+ * org-colview-xemacs.el (org-columns-number-to-string):
+ Use `org-time-clocksum-format'.
- * org-colview.el (org-columns-number-to-string): Use
- `org-time-clocksum-format'.
+ * org-colview.el (org-columns-number-to-string):
+ Use `org-time-clocksum-format'.
2008-06-17 Carsten Dominik <[email protected]>
@@ -12724,8 +12706,8 @@
(org-export-preprocess-string): Implement the COMMENT
environment.
- * org-export-latex.el (org-export-latex-preprocess): Implement
- VERSE environment.
+ * org-export-latex.el (org-export-latex-preprocess):
+ Implement VERSE environment.
2008-06-17 Carsten Dominik <[email protected]>
@@ -12780,8 +12762,8 @@
2008-06-17 Carsten Dominik <[email protected]>
- * org.el (org-remove-double-quotes, org-file-contents): New
- functions.
+ * org.el (org-remove-double-quotes, org-file-contents):
+ New functions.
* org-exp.el (org-infile-export-plist): Also parse the
contents of #+SETUPFILE files, recursively.
@@ -12790,8 +12772,8 @@
contents of #+SETUPFILE files, recursively.
* org-exp.el (org-export-handle-include-files): New function.
- (org-export-preprocess-string): Call
- `org-export-handle-include-files'.
+ (org-export-preprocess-string):
+ Call `org-export-handle-include-files'.
* org.el (org-delete-property-globally)
(org-delete-property, org-set-property): Ignore case during
@@ -12819,8 +12801,8 @@
* org.el (org-set-font-lock-defaults): Make the description
tag bold.
- * org-exp.el (org-export-as-html, org-close-li): Implement
- description lists.
+ * org-exp.el (org-export-as-html, org-close-li):
+ Implement description lists.
2008-06-17 Jason Riedy <[email protected]>
@@ -12901,7 +12883,7 @@
;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2008-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -12918,4 +12900,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;; arch-tag: a9bdcf06-7c2d-4b5a-bf7a-c5e7b706f67c
diff --git a/lisp/org/ob-C.el b/lisp/org/ob-C.el
index da0e76894f..6d81e1978f 100644
--- a/lisp/org/ob-C.el
+++ b/lisp/org/ob-C.el
@@ -1,6 +1,6 @@
;;; ob-C.el --- org-babel functions for C and similar languages
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -189,6 +189,5 @@ of the same value."
(provide 'ob-C)
-;; arch-tag: 8f49e462-54e3-417b-9a8d-423864893b37
;;; ob-C.el ends here
diff --git a/lisp/org/ob-R.el b/lisp/org/ob-R.el
index 1f4fd87b0a..5f94240f22 100644
--- a/lisp/org/ob-R.el
+++ b/lisp/org/ob-R.el
@@ -1,6 +1,6 @@
;;; ob-R.el --- org-babel functions for R code evaluation
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte, Dan Davison
;; Keywords: literate programming, reproducible research, R, statistics
@@ -298,6 +298,5 @@ Insert hline if column names in output have been requested."
(provide 'ob-R)
-;; arch-tag: cd4c7298-503b-450f-a3c2-f3e74b630237
;;; ob-R.el ends here
diff --git a/lisp/org/ob-asymptote.el b/lisp/org/ob-asymptote.el
index ab2abda28d..0640754246 100644
--- a/lisp/org/ob-asymptote.el
+++ b/lisp/org/ob-asymptote.el
@@ -1,6 +1,6 @@
;;; ob-asymptote.el --- org-babel functions for asymptote evaluation
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -159,6 +159,5 @@ of int, where every cell must be of int type."
(provide 'ob-asymptote)
-;; arch-tag: f2f5bd0d-78e8-412b-8e6c-6dadc94cc06b
;;; ob-asymptote.el ends here
diff --git a/lisp/org/ob-calc.el b/lisp/org/ob-calc.el
index 287bad31a2..8682a06e24 100644
--- a/lisp/org/ob-calc.el
+++ b/lisp/org/ob-calc.el
@@ -1,6 +1,6 @@
;;; ob-calc.el --- org-babel functions for calc code evaluation
-;; Copyright (C) 2010 Free Software Foundation, Inc
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -92,6 +92,5 @@
(provide 'ob-calc)
-;; arch-tag: 5c57a3b7-5818-4c6c-acda-7a94831a6449
;;; ob-calc.el ends here
diff --git a/lisp/org/ob-clojure.el b/lisp/org/ob-clojure.el
index d88c54b6db..f9087e8358 100644
--- a/lisp/org/ob-clojure.el
+++ b/lisp/org/ob-clojure.el
@@ -1,6 +1,6 @@
;;; ob-clojure.el --- org-babel functions for clojure evaluation
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Joel Boehland, Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -83,6 +83,5 @@
(provide 'ob-clojure)
-;; arch-tag: a43b33f2-653e-46b1-ac56-2805cf05b7d1
;;; ob-clojure.el ends here
diff --git a/lisp/org/ob-comint.el b/lisp/org/ob-comint.el
index 064aad539c..7607f80291 100644
--- a/lisp/org/ob-comint.el
+++ b/lisp/org/ob-comint.el
@@ -1,6 +1,6 @@
;;; ob-comint.el --- org-babel functions for interaction with comint buffers
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research, comint
@@ -158,6 +158,5 @@ FILE exists at end of evaluation."
(provide 'ob-comint)
-;; arch-tag: 9adddce6-0864-4be3-b0b5-6c5157dc7889
;;; ob-comint.el ends here
diff --git a/lisp/org/ob-css.el b/lisp/org/ob-css.el
index 48ea9e3f93..6c96d53a99 100644
--- a/lisp/org/ob-css.el
+++ b/lisp/org/ob-css.el
@@ -1,6 +1,6 @@
;;; ob-css.el --- org-babel functions for css evaluation
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -44,6 +44,5 @@ CSS does not support sessions."
(provide 'ob-css)
-;; arch-tag: f4447e8c-50ab-41f9-b322-b7b9574d9fbe
;;; ob-css.el ends here
diff --git a/lisp/org/ob-ditaa.el b/lisp/org/ob-ditaa.el
index 097f938e92..336ca8cde7 100644
--- a/lisp/org/ob-ditaa.el
+++ b/lisp/org/ob-ditaa.el
@@ -1,6 +1,6 @@
;;; ob-ditaa.el --- org-babel functions for ditaa evaluation
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -69,6 +69,5 @@ This function is called by `org-babel-execute-src-block'."
(provide 'ob-ditaa)
-;; arch-tag: 492cd006-07d9-4fac-bef6-5bb60b48842e
;;; ob-ditaa.el ends here
diff --git a/lisp/org/ob-dot.el b/lisp/org/ob-dot.el
index 36baddb1cd..09476cd259 100644
--- a/lisp/org/ob-dot.el
+++ b/lisp/org/ob-dot.el
@@ -1,6 +1,6 @@
;;; ob-dot.el --- org-babel functions for dot evaluation
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -85,6 +85,5 @@ This function is called by `org-babel-execute-src-block'."
(provide 'ob-dot)
-;; arch-tag: 817d0516-7b47-4f77-a8b2-2aadd8e4d0e2
;;; ob-dot.el ends here
diff --git a/lisp/org/ob-emacs-lisp.el b/lisp/org/ob-emacs-lisp.el
index df6f505ffe..9b9fe68a25 100644
--- a/lisp/org/ob-emacs-lisp.el
+++ b/lisp/org/ob-emacs-lisp.el
@@ -1,6 +1,6 @@
;;; ob-emacs-lisp.el --- org-babel functions for emacs-lisp code evaluation
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -66,6 +66,5 @@
(provide 'ob-emacs-lisp)
-;; arch-tag: e9a3acca-dc84-472a-9f5a-23c35befbcd6
;;; ob-emacs-lisp.el ends here
diff --git a/lisp/org/ob-eval.el b/lisp/org/ob-eval.el
index a71cb0dd69..84d0354fc7 100644
--- a/lisp/org/ob-eval.el
+++ b/lisp/org/ob-eval.el
@@ -1,6 +1,6 @@
;;; ob-eval.el --- org-babel functions for external code evaluation
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research, comint
@@ -257,6 +257,5 @@ This buffer is named by `org-babel-error-buffer-name'."
(provide 'ob-eval)
-;; arch-tag: 5328b17f-957d-42d9-94da-a2952682d04d
;;; ob-eval.el ends here
diff --git a/lisp/org/ob-exp.el b/lisp/org/ob-exp.el
index 8b6914c903..1be45198e0 100644
--- a/lisp/org/ob-exp.el
+++ b/lisp/org/ob-exp.el
@@ -1,6 +1,6 @@
;;; ob-exp.el --- Exportation of org-babel source blocks
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte, Dan Davison
;; Keywords: literate programming, reproducible research
@@ -323,6 +323,5 @@ inhibit insertion of results into the buffer."
(provide 'ob-exp)
-;; arch-tag: 523abf4c-76d1-44ed-9f27-e3bddf34bf0f
;;; ob-exp.el ends here
diff --git a/lisp/org/ob-gnuplot.el b/lisp/org/ob-gnuplot.el
index 423e47e866..41b47102d6 100644
--- a/lisp/org/ob-gnuplot.el
+++ b/lisp/org/ob-gnuplot.el
@@ -1,6 +1,6 @@
;;; ob-gnuplot.el --- org-babel functions for gnuplot evaluation
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -230,6 +230,5 @@ Pass PARAMS through to `orgtbl-to-generic' when exporting TABLE."
(provide 'ob-gnuplot)
-;; arch-tag: 50490ace-a9e1-4b29-a6e5-0db9f16c610b
;;; ob-gnuplot.el ends here
diff --git a/lisp/org/ob-haskell.el b/lisp/org/ob-haskell.el
index 734e1f6c89..43c14deb40 100644
--- a/lisp/org/ob-haskell.el
+++ b/lisp/org/ob-haskell.el
@@ -1,6 +1,6 @@
;;; ob-haskell.el --- org-babel functions for haskell evaluation
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -212,6 +212,5 @@ constructs (header arguments, no-web syntax etc...) are ignored."
(provide 'ob-haskell)
-;; arch-tag: b53f75f3-ba1a-4b05-82d9-a2a0d4e70804
;;; ob-haskell.el ends here
diff --git a/lisp/org/ob-js.el b/lisp/org/ob-js.el
index 05f8ea4175..06acfb391b 100644
--- a/lisp/org/ob-js.el
+++ b/lisp/org/ob-js.el
@@ -1,6 +1,6 @@
;;; ob-js.el --- org-babel functions for Javascript
-;; Copyright (C) 2010 Free Software Foundation
+;; Copyright (C) 2010-2011 Free Software Foundation
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research, js
@@ -160,6 +160,5 @@ then create. Return the initialized session."
(provide 'ob-js)
-;; arch-tag: 84401fb3-b8d9-4bb6-9a90-cbe2d103d494
;;; ob-js.el ends here
diff --git a/lisp/org/ob-keys.el b/lisp/org/ob-keys.el
index af8190692c..d1422c6876 100644
--- a/lisp/org/ob-keys.el
+++ b/lisp/org/ob-keys.el
@@ -1,6 +1,6 @@
;;; ob-keys.el --- key bindings for org-babel
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -93,6 +93,5 @@ a-list placed behind the generic `org-babel-key-prefix'.")
(provide 'ob-keys)
-;; arch-tag: 01e348ee-4906-46fa-839a-6b7b6f989048
;;; ob-keys.el ends here
diff --git a/lisp/org/ob-latex.el b/lisp/org/ob-latex.el
index 96afbcd92a..9bb0f318be 100644
--- a/lisp/org/ob-latex.el
+++ b/lisp/org/ob-latex.el
@@ -1,6 +1,6 @@
;;; ob-latex.el --- org-babel functions for latex "evaluation"
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -175,6 +175,5 @@ Extracted from `org-export-as-pdf' in org-latex.el."
(provide 'ob-latex)
-;; arch-tag: 1f13f7e2-26de-4c24-9274-9f331d4c6ff3
;;; ob-latex.el ends here
diff --git a/lisp/org/ob-ledger.el b/lisp/org/ob-ledger.el
index a02eb6fec8..51f0282c5c 100644
--- a/lisp/org/ob-ledger.el
+++ b/lisp/org/ob-ledger.el
@@ -1,6 +1,6 @@
;;; ob-ledger.el --- org-babel functions for ledger evaluation
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Eric S Fraga
;; Keywords: literate programming, reproducible research, accounting
@@ -67,6 +67,5 @@ called by `org-babel-execute-src-block'."
(provide 'ob-ledger)
-;; arch-tag: 7bbb529e-95a1-4236-9d29-b0000b918c7c
;;; ob-ledger.el ends here
diff --git a/lisp/org/ob-lisp.el b/lisp/org/ob-lisp.el
index 600b79ee7a..1a8ad38a19 100644
--- a/lisp/org/ob-lisp.el
+++ b/lisp/org/ob-lisp.el
@@ -1,6 +1,6 @@
;;; ob-lisp.el --- org-babel functions for Common Lisp
-;; Copyright (C) 2010 Free Software Foundation
+;; Copyright (C) 2010-2011 Free Software Foundation
;; Author: David T. O'Toole <[email protected]>, Eric Schulte
;; Keywords: literate programming, reproducible research, lisp
@@ -108,6 +108,5 @@ then create. Return the initialized session."
(provide 'ob-lisp)
-;; arch-tag: 18086168-009f-4947-bbb5-3532375d851d
;;; ob-lisp.el ends here
diff --git a/lisp/org/ob-lob.el b/lisp/org/ob-lob.el
index 137a6bce9a..96081c1623 100644
--- a/lisp/org/ob-lob.el
+++ b/lisp/org/ob-lob.el
@@ -1,6 +1,6 @@
;;; ob-lob.el --- functions supporting the Library of Babel
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte, Dan Davison
;; Keywords: literate programming, reproducible research
@@ -119,6 +119,5 @@ if so then run the appropriate source block from the Library."
(provide 'ob-lob)
-;; arch-tag: ce0712c9-2147-4019-ba3f-42341b8b474b
;;; ob-lob.el ends here
diff --git a/lisp/org/ob-matlab.el b/lisp/org/ob-matlab.el
index 192c73d908..441f9d7a73 100644
--- a/lisp/org/ob-matlab.el
+++ b/lisp/org/ob-matlab.el
@@ -1,6 +1,6 @@
;;; ob-matlab.el --- org-babel support for matlab evaluation
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Dan Davison
;; Keywords: literate programming, reproducible research
@@ -43,6 +43,5 @@
(provide 'ob-matlab)
-;; arch-tag: 6b234299-c1f7-4eb1-ace8-7b93344065ac
;;; ob-matlab.el ends here
diff --git a/lisp/org/ob-mscgen.el b/lisp/org/ob-mscgen.el
index 98230da56a..3b55f2e27b 100644
--- a/lisp/org/ob-mscgen.el
+++ b/lisp/org/ob-mscgen.el
@@ -1,6 +1,6 @@
;;; ob-msc.el --- org-babel functions for mscgen evaluation
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Juan Pechiar
;; Keywords: literate programming, reproducible research
@@ -81,6 +81,5 @@ ERROR: no output file specified. Add \":file name.png\" to the src header"))
(provide 'ob-mscgen)
-;; arch-tag: 74695b1e-715f-4b5a-a3a9-d78ee39ba5c8
;;; ob-msc.el ends here
diff --git a/lisp/org/ob-ocaml.el b/lisp/org/ob-ocaml.el
index 459dcf336f..bf34b984c0 100644
--- a/lisp/org/ob-ocaml.el
+++ b/lisp/org/ob-ocaml.el
@@ -1,6 +1,6 @@
;;; ob-ocaml.el --- org-babel functions for ocaml evaluation
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -152,6 +152,5 @@ Emacs-lisp table, otherwise return the results as a string."
(provide 'ob-ocaml)
-;; arch-tag: 2e815f4d-365e-4d69-b1df-dd17fdd7b7b7
;;; ob-ocaml.el ends here
diff --git a/lisp/org/ob-octave.el b/lisp/org/ob-octave.el
index 9fcd825f91..ae6c1513de 100644
--- a/lisp/org/ob-octave.el
+++ b/lisp/org/ob-octave.el
@@ -1,6 +1,6 @@
;;; ob-octave.el --- org-babel functions for octave and matlab evaluation
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Dan Davison
;; Keywords: literate programming, reproducible research
@@ -259,6 +259,5 @@ This removes initial blank and comment lines and then calls
(provide 'ob-octave)
-;; arch-tag: d8e5f68b-ba13-440a-a495-b653e989e704
;;; ob-octave.el ends here
diff --git a/lisp/org/ob-org.el b/lisp/org/ob-org.el
index c03fa07602..99c04d8e31 100644
--- a/lisp/org/ob-org.el
+++ b/lisp/org/ob-org.el
@@ -1,6 +1,6 @@
;;; ob-org.el --- org-babel functions for org code block evaluation
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -57,6 +57,5 @@ This function is called by `org-babel-execute-src-block'."
(provide 'ob-org)
-;; arch-tag: 130af5fe-cc56-46bd-9508-fa0ebd94cb1f
;;; ob-org.el ends here
diff --git a/lisp/org/ob-perl.el b/lisp/org/ob-perl.el
index 1e0cecb1af..6309b90011 100644
--- a/lisp/org/ob-perl.el
+++ b/lisp/org/ob-perl.el
@@ -1,6 +1,6 @@
;;; ob-perl.el --- org-babel functions for perl evaluation
-;; Copyright (C) 2009, 2010 Free Software Foundation
+;; Copyright (C) 2009-2011 Free Software Foundation
;; Author: Dan Davison, Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -112,6 +112,5 @@ return the value of the last statement in BODY, as elisp."
(provide 'ob-perl)
-;; arch-tag: 88ef9396-d857-4dc3-8946-5a72bdfa2337
;;; ob-perl.el ends here
diff --git a/lisp/org/ob-plantuml.el b/lisp/org/ob-plantuml.el
index fb81dc8e60..f455bc9bb4 100644
--- a/lisp/org/ob-plantuml.el
+++ b/lisp/org/ob-plantuml.el
@@ -1,6 +1,6 @@
;;; ob-plantuml.el --- org-babel functions for plantuml evaluation
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Zhang Weize
;; Keywords: literate programming, reproducible research
@@ -78,6 +78,5 @@ This function is called by `org-babel-execute-src-block'."
(provide 'ob-plantuml)
-;; arch-tag: 451f50c5-e779-407e-ad64-70e0e8f161d1
;;; ob-plantuml.el ends here
diff --git a/lisp/org/ob-python.el b/lisp/org/ob-python.el
index 27b69bff5a..b53513a212 100644
--- a/lisp/org/ob-python.el
+++ b/lisp/org/ob-python.el
@@ -1,6 +1,6 @@
;;; ob-python.el --- org-babel functions for python evaluation
-;; Copyright (C) 2009, 2010 Free Software Foundation
+;; Copyright (C) 2009-2011 Free Software Foundation
;; Author: Eric Schulte, Dan Davison
;; Keywords: literate programming, reproducible research
@@ -277,6 +277,5 @@ last statement in BODY, as elisp."
(provide 'ob-python)
-;; arch-tag: f19b6c3d-dfcb-4a1a-9ce0-45ade1ebc212
;;; ob-python.el ends here
diff --git a/lisp/org/ob-ref.el b/lisp/org/ob-ref.el
index 2ca99ca651..7b06e90f92 100644
--- a/lisp/org/ob-ref.el
+++ b/lisp/org/ob-ref.el
@@ -1,6 +1,6 @@
;;; ob-ref.el --- org-babel functions for referencing external data
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte, Dan Davison
;; Keywords: literate programming, reproducible research
@@ -224,6 +224,5 @@ Supported reference types are tables and source blocks."
(provide 'ob-ref)
-;; arch-tag: ace4a4f4-ea38-4dac-8fe6-6f52fcc43b6d
;;; ob-ref.el ends here
diff --git a/lisp/org/ob-ruby.el b/lisp/org/ob-ruby.el
index 3f2af39460..ae98137735 100644
--- a/lisp/org/ob-ruby.el
+++ b/lisp/org/ob-ruby.el
@@ -1,6 +1,6 @@
;;; ob-ruby.el --- org-babel functions for ruby evaluation
-;; Copyright (C) 2009, 2010 Free Software Foundation
+;; Copyright (C) 2009-2011 Free Software Foundation
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -234,6 +234,5 @@ return the value of the last statement in BODY, as elisp."
(provide 'ob-ruby)
-;; arch-tag: 3e9726db-4520-49e2-b263-e8f571ac88f5
;;; ob-ruby.el ends here
diff --git a/lisp/org/ob-sass.el b/lisp/org/ob-sass.el
index b3acc8b8d2..3348dd4d1d 100644
--- a/lisp/org/ob-sass.el
+++ b/lisp/org/ob-sass.el
@@ -1,6 +1,6 @@
;;; ob-sass.el --- org-babel functions for the sass css generation language
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -64,6 +64,5 @@ This function is called by `org-babel-execute-src-block'."
(provide 'ob-sass)
-;; arch-tag: 2954b169-eef4-45ce-a8e5-3e619f0f07ac
;;; ob-sass.el ends here
diff --git a/lisp/org/ob-scheme.el b/lisp/org/ob-scheme.el
index b2b9fa6a01..5dda693b9a 100644
--- a/lisp/org/ob-scheme.el
+++ b/lisp/org/ob-scheme.el
@@ -1,6 +1,6 @@
;;; ob-scheme.el --- org-babel functions for Scheme
-;; Copyright (C) 2010 Free Software Foundation
+;; Copyright (C) 2010-2011 Free Software Foundation
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research, scheme
@@ -134,6 +134,5 @@ then create. Return the initialized session."
(provide 'ob-scheme)
-;; arch-tag: 6b2fe76f-4b25-4e87-ad1c-225b2f282a71
;;; ob-scheme.el ends here
diff --git a/lisp/org/ob-screen.el b/lisp/org/ob-screen.el
index 7f4af79549..59e23c4caa 100644
--- a/lisp/org/ob-screen.el
+++ b/lisp/org/ob-screen.el
@@ -1,6 +1,6 @@
;;; ob-screen.el --- org-babel support for interactive terminal
-;; Copyright (C) 2009, 2010 Free Software Foundation
+;; Copyright (C) 2009-2011 Free Software Foundation
;; Author: Benjamin Andresen
;; Keywords: literate programming, interactive shell
@@ -142,6 +142,5 @@ The terminal should shortly flicker."
(provide 'ob-screen)
-;; arch-tag: 908e5afe-89a0-4f27-b982-23f1f2e3bac9
;;; ob-screen.el ends here
diff --git a/lisp/org/ob-sh.el b/lisp/org/ob-sh.el
index e153d68b57..6ca52b1f36 100644
--- a/lisp/org/ob-sh.el
+++ b/lisp/org/ob-sh.el
@@ -1,6 +1,6 @@
;;; ob-sh.el --- org-babel functions for shell evaluation
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -166,6 +166,5 @@ return the value of the last statement in BODY."
(provide 'ob-sh)
-;; arch-tag: 416dd531-c230-4b0a-a5bf-8d948f990f2d
;;; ob-sh.el ends here
diff --git a/lisp/org/ob-sql.el b/lisp/org/ob-sql.el
index 5bb123d631..3bd10d6b2b 100644
--- a/lisp/org/ob-sql.el
+++ b/lisp/org/ob-sql.el
@@ -1,6 +1,6 @@
;;; ob-sql.el --- org-babel functions for sql evaluation
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -121,6 +121,5 @@ This function is called by `org-babel-execute-src-block'."
(provide 'ob-sql)
-;; arch-tag: a43ff944-6de1-4566-a83c-626814e3dad2
;;; ob-sql.el ends here
diff --git a/lisp/org/ob-sqlite.el b/lisp/org/ob-sqlite.el
index 65e8091741..408ca4e64c 100644
--- a/lisp/org/ob-sqlite.el
+++ b/lisp/org/ob-sqlite.el
@@ -1,6 +1,6 @@
;;; ob-sqlite.el --- org-babel functions for sqlite database interaction
-;; Copyright (C) 2010 Free Software Foundation
+;; Copyright (C) 2010-2011 Free Software Foundation
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -144,6 +144,5 @@ Prepare SESSION according to the header arguments specified in PARAMS."
(provide 'ob-sqlite)
-;; arch-tag: 5c03d7f2-0f72-48b8-bbd1-35aafea248ac
;;; ob-sqlite.el ends here
diff --git a/lisp/org/ob-table.el b/lisp/org/ob-table.el
index b7f9673c67..e44bb86ca0 100644
--- a/lisp/org/ob-table.el
+++ b/lisp/org/ob-table.el
@@ -1,6 +1,6 @@
;;; ob-table.el --- support for calling org-babel functions from tables
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -120,6 +120,5 @@ example above."
(provide 'ob-table)
-;; arch-tag: 4234cc7c-4fc8-4e92-abb0-2892de1a493b
;;; ob-table.el ends here
diff --git a/lisp/org/ob-tangle.el b/lisp/org/ob-tangle.el
index c5ef2a1fce..67f12eabc0 100644
--- a/lisp/org/ob-tangle.el
+++ b/lisp/org/ob-tangle.el
@@ -1,6 +1,6 @@
;;; ob-tangle.el --- extract source code from org-mode files
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
@@ -449,6 +449,5 @@ which enable the original code blocks to be found."
(provide 'ob-tangle)
-;; arch-tag: 413ced93-48f5-4216-86e4-3fc5df8c8f24
;;; ob-tangle.el ends here
diff --git a/lisp/org/ob.el b/lisp/org/ob.el
index 1c9f9fdbc1..33f960f145 100644
--- a/lisp/org/ob.el
+++ b/lisp/org/ob.el
@@ -1,6 +1,6 @@
;;; ob.el --- working with code blocks in org-mode
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte, Dan Davison
;; Keywords: literate programming, reproducible research
@@ -1963,6 +1963,5 @@ of `org-babel-temporary-directory'."
(provide 'ob)
-;; arch-tag: 01a7ebee-06c5-4ee4-a709-e660d28c0af1
;;; ob.el ends here
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el
index 6bcbf62da0..9adc180b28 100644
--- a/lisp/org/org-agenda.el
+++ b/lisp/org/org-agenda.el
@@ -1,7 +1,6 @@
;;; org-agenda.el --- Dynamic task and appointment lists for Org
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -8058,6 +8057,5 @@ belonging to the \"Work\" category."
(provide 'org-agenda)
-;; arch-tag: 77f7565d-7c4b-44af-a2df-9f6f7070cff1
;;; org-agenda.el ends here
diff --git a/lisp/org/org-archive.el b/lisp/org/org-archive.el
index e56b01f952..4a934517cf 100644
--- a/lisp/org/org-archive.el
+++ b/lisp/org/org-archive.el
@@ -1,7 +1,6 @@
;;; org-archive.el --- Archiving for Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -466,6 +465,5 @@ This command is set with the variable `org-archive-default-command'."
(provide 'org-archive)
-;; arch-tag: 0837f601-9699-43c3-8b90-631572ae6c85
;;; org-archive.el ends here
diff --git a/lisp/org/org-ascii.el b/lisp/org/org-ascii.el
index 99facb1e43..d5964538a9 100644
--- a/lisp/org/org-ascii.el
+++ b/lisp/org/org-ascii.el
@@ -1,7 +1,6 @@
;;; org-ascii.el --- ASCII export for Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -719,5 +718,4 @@ publishing directory."
(provide 'org-ascii)
-;; arch-tag: aa96f882-f477-4e13-86f5-70d43e7adf3c
;;; org-ascii.el ends here
diff --git a/lisp/org/org-attach.el b/lisp/org/org-attach.el
index a894064ed8..c9679edc65 100644
--- a/lisp/org/org-attach.el
+++ b/lisp/org/org-attach.el
@@ -1,6 +1,6 @@
;;; org-attach.el --- Manage file attachments to org-mode tasks
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
;; Keywords: org data task
@@ -418,5 +418,4 @@ prefix."
(provide 'org-attach)
-;; arch-tag: fce93c2e-fe07-4fa3-a905-e10dcc7a6248
;;; org-attach.el ends here
diff --git a/lisp/org/org-bbdb.el b/lisp/org/org-bbdb.el
index 4155f58b5f..49393db430 100644
--- a/lisp/org/org-bbdb.el
+++ b/lisp/org/org-bbdb.el
@@ -1,7 +1,6 @@
;;; org-bbdb.el --- Support for links to BBDB entries from within Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>,
;; Thomas Baumann <thomas dot baumann at ch dot tum dot de>
@@ -381,6 +380,5 @@ END:VEVENT\n"
(provide 'org-bbdb)
-;; arch-tag: 9e4f275d-d080-48c1-b040-62247f66b5c2
;;; org-bbdb.el ends here
diff --git a/lisp/org/org-beamer.el b/lisp/org/org-beamer.el
index c88df859f7..7b698da968 100644
--- a/lisp/org/org-beamer.el
+++ b/lisp/org/org-beamer.el
@@ -1,6 +1,6 @@
;;; org-beamer.el --- Beamer-specific LaTeX export for org-mode
;;
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;;
;; Version: 7.4
;; Author: Carsten Dominik <carsten.dominik AT gmail DOT com>
@@ -631,6 +631,5 @@ include square brackets."
(provide 'org-beamer)
-;; arch-tag: 68bac91a-a946-43a3-8173-a9269306f67c
;;; org-beamer.el ends here
diff --git a/lisp/org/org-bibtex.el b/lisp/org/org-bibtex.el
index e34e1572cd..0c7edc6cbd 100644
--- a/lisp/org/org-bibtex.el
+++ b/lisp/org/org-bibtex.el
@@ -1,6 +1,6 @@
;;; org-bibtex.el --- Org links to BibTeX entries
;;
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;;
;; Author: Bastien Guerry <bzg at altern dot org>
;; Carsten Dominik <carsten dot dominik at gmail dot com>
@@ -200,6 +200,5 @@
(provide 'org-bibtex)
-;; arch-tag: 83987d5a-01b8-41c7-85bc-77700f1285f5
;;; org-bibtex.el ends here
diff --git a/lisp/org/org-capture.el b/lisp/org/org-capture.el
index 5c7b0386e0..fb9365bda7 100644
--- a/lisp/org/org-capture.el
+++ b/lisp/org/org-capture.el
@@ -1,6 +1,6 @@
;;; org-capture.el --- Fast note taking in Org-mode
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -359,8 +359,7 @@ for a Remember buffer.")
nil " Rem" org-capture-mode-map
(org-set-local
'header-line-format
- "Capture buffer. Finish `C-c C-c', refile `C-c C-w', abort `C-c C-k'.")
- (run-hooks 'org-capture-mode-hook))
+ "Capture buffer. Finish `C-c C-c', refile `C-c C-w', abort `C-c C-k'."))
(define-key org-capture-mode-map "\C-c\C-c" 'org-capture-finalize)
(define-key org-capture-mode-map "\C-c\C-k" 'org-capture-kill)
(define-key org-capture-mode-map "\C-c\C-w" 'org-capture-refile)
@@ -1386,6 +1385,5 @@ The template may still contain \"%?\" for cursor positioning."
(provide 'org-capture)
-;; arch-tag: 986bf41b-8ada-4e28-bf20-e8388a7205a0
;;; org-capture.el ends here
diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el
index 93b0b524c8..4e30dd90d8 100644
--- a/lisp/org/org-clock.el
+++ b/lisp/org/org-clock.el
@@ -1,7 +1,6 @@
;;; org-clock.el --- The time clocking code for Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -2493,7 +2492,6 @@ The details of what will be saved are regulated by the variable
(provide 'org-clock)
-;; arch-tag: 7b42c5d4-9b36-48be-97c0-66a869daed4c
;;; org-clock.el ends here
diff --git a/lisp/org/org-colview.el b/lisp/org/org-colview.el
index c4f18c7c64..35a23052e8 100644
--- a/lisp/org/org-colview.el
+++ b/lisp/org/org-colview.el
@@ -1,7 +1,6 @@
;;; org-colview.el --- Column View in Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -1537,6 +1536,5 @@ The string should be two numbers joined with a \"-\"."
(provide 'org-colview)
-;; arch-tag: 61f5128d-747c-4983-9479-e3871fa3d73c
;;; org-colview.el ends here
diff --git a/lisp/org/org-compat.el b/lisp/org/org-compat.el
index 452a261fd1..efe54c568b 100644
--- a/lisp/org/org-compat.el
+++ b/lisp/org/org-compat.el
@@ -1,7 +1,6 @@
;;; org-compat.el --- Compatibility code for Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -426,6 +425,5 @@ With two arguments, return floor and remainder of their quotient."
(provide 'org-compat)
-;; arch-tag: a0a0579f-e68c-4bdf-9e55-93768b846bbe
;;; org-compat.el ends here
diff --git a/lisp/org/org-complete.el b/lisp/org/org-complete.el
index 2eb1f4c3ff..07c1ba2e4f 100644
--- a/lisp/org/org-complete.el
+++ b/lisp/org/org-complete.el
@@ -1,7 +1,6 @@
;;; org-complete.el --- In-buffer completion code
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;;
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; John Wiegley <johnw at gnu dot org>
@@ -274,6 +273,5 @@ Complete a language in the first field, the header arguments and switches."
(provide 'org-complete)
-;; arch-tag:
;;; org-complete.el ends here
diff --git a/lisp/org/org-crypt.el b/lisp/org/org-crypt.el
index 1d761049bb..0a6001bf62 100644
--- a/lisp/org/org-crypt.el
+++ b/lisp/org/org-crypt.el
@@ -1,6 +1,6 @@
;;; org-crypt.el --- Public key encryption for org-mode entries
-;; Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
;; Emacs Lisp Archive Entry
;; Filename: org-crypt.el
@@ -182,6 +182,5 @@ This setting can also be overridden in the CRYPTKEY property."
(provide 'org-crypt)
-;; arch-tag: 8202ed2c-221e-4001-9e4b-54674a7e846e
;;; org-crypt.el ends here
diff --git a/lisp/org/org-ctags.el b/lisp/org/org-ctags.el
index f2c631afe2..3bbfe18e1b 100644
--- a/lisp/org/org-ctags.el
+++ b/lisp/org/org-ctags.el
@@ -1,6 +1,6 @@
;;; org-ctags.el - Integrate Emacs "tags" facility with org mode.
;;
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Paul Sexton <[email protected]>
;; Version: 7.4
@@ -537,5 +537,4 @@ a new topic."
(provide 'org-ctags)
-;; arch-tag: 4b1ddd5a-8529-4b17-bcde-96a922d26343
;;; org-ctags.el ends here
diff --git a/lisp/org/org-datetree.el b/lisp/org/org-datetree.el
index 8014f8f1f9..47ca287d8f 100644
--- a/lisp/org/org-datetree.el
+++ b/lisp/org/org-datetree.el
@@ -1,6 +1,6 @@
;;; org-datetree.el --- Create date entries in a tree
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -195,6 +195,5 @@ before running this command, even though the command tries to be smart."
(provide 'org-datetree)
-;; arch-tag: 1daea962-fd08-448b-9f98-6e8b511b3601
;;; org-datetree.el ends here
diff --git a/lisp/org/org-docbook.el b/lisp/org/org-docbook.el
index 91ebb97196..e883d71b6f 100644
--- a/lisp/org/org-docbook.el
+++ b/lisp/org/org-docbook.el
@@ -1,6 +1,6 @@
;;; org-docbook.el --- DocBook exporter for org-mode
;;
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;;
;; Emacs Lisp Archive Entry
;; Filename: org-docbook.el
@@ -1440,5 +1440,4 @@ that need to be preserved in later phase of DocBook exporting."
(provide 'org-docbook)
-;; arch-tag: a24a127c-d365-4c2a-9e9b-f7dcb0ebfdc3
;;; org-docbook.el ends here
diff --git a/lisp/org/org-docview.el b/lisp/org/org-docview.el
index cb0f24139a..ee39d8afc6 100644
--- a/lisp/org/org-docview.el
+++ b/lisp/org/org-docview.el
@@ -1,6 +1,6 @@
;;; org-docview.el --- support for links to doc-view-mode buffers
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Jan Böcker <jan.boecker at jboecker dot de>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -88,6 +88,5 @@ and append it."
(provide 'org-docview)
-;; arch-tag: dd147a78-cce1-481b-b40a-15869417debe
;;; org-docview.el ends here
diff --git a/lisp/org/org-entities.el b/lisp/org/org-entities.el
index 1c99b9eb5a..7115972b73 100644
--- a/lisp/org/org-entities.el
+++ b/lisp/org/org-entities.el
@@ -1,6 +1,6 @@
;;; org-entities.el --- Support for special entities in Org-mode
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>,
;; Ulf Stegemann <ulf at zeitform dot de>
@@ -568,6 +568,5 @@ Kind can be any of `latex', `html', `ascii', `latin1', or `utf8'."
;; coding: utf-8
;; End:
-;; arch-tag: e6bd163f-7419-4009-9c93-a74623016424
;;; org-entities.el ends here
diff --git a/lisp/org/org-exp-blocks.el b/lisp/org/org-exp-blocks.el
index 57087e1dfc..f5b635838f 100644
--- a/lisp/org/org-exp-blocks.el
+++ b/lisp/org/org-exp-blocks.el
@@ -1,7 +1,6 @@
;;; org-exp-blocks.el --- pre-process blocks when exporting org files
-;; Copyright (C) 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Eric Schulte
;; Version: 7.4
@@ -352,5 +351,4 @@ other backends, it converts the comment into an EXAMPLE segment."
(provide 'org-exp-blocks)
-;; arch-tag: 1c365fe9-8808-4f72-bb15-0b00f36d8024
;;; org-exp-blocks.el ends here
diff --git a/lisp/org/org-exp.el b/lisp/org/org-exp.el
index d45ef9cdd7..002ad025fb 100644
--- a/lisp/org/org-exp.el
+++ b/lisp/org/org-exp.el
@@ -1,7 +1,6 @@
;;; org-exp.el --- ASCII, HTML, XOXO and iCalendar export for Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -2962,7 +2961,6 @@ The depends on the variable `org-export-copy-to-kill'."
(provide 'org-exp)
-;; arch-tag: 65985fe9-095c-49c7-a7b6-cb4ee15c0a95
;;; org-exp.el ends here
diff --git a/lisp/org/org-faces.el b/lisp/org/org-faces.el
index 3f8245758f..e5877768fe 100644
--- a/lisp/org/org-faces.el
+++ b/lisp/org/org-faces.el
@@ -1,7 +1,6 @@
;;; org-faces.el --- Face definitions for Org-mode.
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -247,9 +246,7 @@ column view defines special faces for each outline level. See the file
:group 'org-faces)
(defface org-link
- '((((class color) (background light)) (:foreground "Purple" :underline t))
- (((class color) (background dark)) (:foreground "Cyan" :underline t))
- (t (:underline t)))
+ '((t :inherit link))
"Face for links."
:group 'org-faces)
@@ -718,6 +715,5 @@ level org-n-level-faces"
(provide 'org-faces)
-;; arch-tag: 9dab5f91-c4b9-4d6f-bac3-1f6211ad0a04
;;; org-faces.el ends here
diff --git a/lisp/org/org-feed.el b/lisp/org/org-feed.el
index 32da49b1cb..07558af462 100644
--- a/lisp/org/org-feed.el
+++ b/lisp/org/org-feed.el
@@ -1,6 +1,6 @@
;;; org-feed.el --- Add RSS feed items to Org files
;;
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;;
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -674,5 +674,4 @@ formatted as a string, not the original XML data."
(provide 'org-feed)
-;; arch-tag: 0929b557-9bc4-47f4-9633-30a12dbb5ae2
;;; org-feed.el ends here
diff --git a/lisp/org/org-footnote.el b/lisp/org/org-footnote.el
index 88ffd6e484..c0ca570b7b 100644
--- a/lisp/org/org-footnote.el
+++ b/lisp/org/org-footnote.el
@@ -1,6 +1,6 @@
;;; org-footnote.el --- Footnote support in Org and elsewhere
;;
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;;
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -585,6 +585,5 @@ and all references of a footnote label."
(provide 'org-footnote)
-;; arch-tag: 1b5954df-fb5d-4da5-8709-78d944dbfc37
;;; org-footnote.el ends here
diff --git a/lisp/org/org-freemind.el b/lisp/org/org-freemind.el
index d9486afa0b..c85b4bac36 100644
--- a/lisp/org/org-freemind.el
+++ b/lisp/org/org-freemind.el
@@ -1,6 +1,6 @@
;;; org-freemind.el --- Export Org files to freemind
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Lennart Borgman (lennart O borgman A gmail O com)
;; Keywords: outlines, hypermedia, calendar, wp
@@ -1237,7 +1237,6 @@ PATH should be a list of steps, where each step has the form
(provide 'org-freemind)
-;; arch-tag: e7b0d776-94fd-404a-b35e-0f855fae3627
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; org-freemind.el ends here
diff --git a/lisp/org/org-gnus.el b/lisp/org/org-gnus.el
index fccd3e9ee0..e8424a1e5c 100644
--- a/lisp/org/org-gnus.el
+++ b/lisp/org/org-gnus.el
@@ -1,7 +1,6 @@
;;; org-gnus.el --- Support for links to Gnus groups and messages from within Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Tassilo Horn <tassilo at member dot fsf dot org>
@@ -258,6 +257,5 @@ If `org-store-link' was called with a prefix arg the meaning of
(provide 'org-gnus)
-;; arch-tag: 512e0840-58fa-45b3-b456-71e10fa2376d
;;; org-gnus.el ends here
diff --git a/lisp/org/org-habit.el b/lisp/org/org-habit.el
index b174a1f087..33c55cf46d 100644
--- a/lisp/org/org-habit.el
+++ b/lisp/org/org-habit.el
@@ -1,6 +1,6 @@
;;; org-habit.el --- The habit tracking code for Org-mode
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <johnw at gnu dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -350,6 +350,5 @@ current time."
(provide 'org-habit)
-;; arch-tag: 64e070d9-bd09-4917-bd44-44465f5ed348
;;; org-habit.el ends here
diff --git a/lisp/org/org-html.el b/lisp/org/org-html.el
index 47e8231987..a693397871 100644
--- a/lisp/org/org-html.el
+++ b/lisp/org/org-html.el
@@ -1,7 +1,6 @@
;;; org-html.el --- HTML export for Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -2415,5 +2414,4 @@ Replaces invalid characters with \"_\" and then prepends a prefix."
(provide 'org-html)
-;; arch-tag: 8109d84d-eb8f-460b-b1a8-f45f3a6c7ea1
;;; org-html.el ends here
diff --git a/lisp/org/org-icalendar.el b/lisp/org/org-icalendar.el
index d4034fe6d3..e0ea20a4bb 100644
--- a/lisp/org/org-icalendar.el
+++ b/lisp/org/org-icalendar.el
@@ -1,7 +1,6 @@
;;; org-icalendar.el --- iCalendar export for Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -651,5 +650,4 @@ a time), or the day by one (if it does not contain a time)."
(provide 'org-icalendar)
-;; arch-tag: 2dee2b6e-9211-4aee-8a47-a3c7e5bc30cf
;;; org-icalendar.el ends here
diff --git a/lisp/org/org-id.el b/lisp/org/org-id.el
index a8004afec8..2f64b8b0bb 100644
--- a/lisp/org/org-id.el
+++ b/lisp/org/org-id.el
@@ -1,6 +1,6 @@
;;; org-id.el --- Global identifiers for Org-mode entries
;;
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;;
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -642,6 +642,5 @@ optional argument MARKERP, return the position as a new marker."
;;; org-id.el ends here
-;; arch-tag: e5abaca4-e16f-4b25-832a-540cfb63a712
diff --git a/lisp/org/org-indent.el b/lisp/org/org-indent.el
index a177a6f2a0..50dd6ac027 100644
--- a/lisp/org/org-indent.el
+++ b/lisp/org/org-indent.el
@@ -1,5 +1,5 @@
;;; org-indent.el --- Dynamic indentation for Org-mode
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;;
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -322,5 +322,4 @@ Point is assumed to be at the beginning of a headline."
(provide 'org-indent)
-;; arch-tag: b76736bc-9f4a-43cd-977c-ecfd6689846a
;;; org-indent.el ends here
diff --git a/lisp/org/org-info.el b/lisp/org/org-info.el
index 250f438ab9..edbf426895 100644
--- a/lisp/org/org-info.el
+++ b/lisp/org/org-info.el
@@ -1,7 +1,6 @@
;;; org-info.el --- Support for links to Info nodes from within Org-Mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -78,6 +77,5 @@
(provide 'org-info)
-;; arch-tag: 1e289f54-7176-487f-b575-dd4854bab15e
;;; org-info.el ends here
diff --git a/lisp/org/org-inlinetask.el b/lisp/org/org-inlinetask.el
index 3f2d6fbbf0..53e3f782b9 100644
--- a/lisp/org/org-inlinetask.el
+++ b/lisp/org/org-inlinetask.el
@@ -1,6 +1,6 @@
;;; org-inlinetask.el --- Tasks independent of outline hierarchy
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;;
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
diff --git a/lisp/org/org-install.el b/lisp/org/org-install.el
index 736d7e39fd..eb2d011efb 100644
--- a/lisp/org/org-install.el
+++ b/lisp/org/org-install.el
@@ -1,7 +1,6 @@
;;; org-install.el --- Outline-based notes management and organizer
;; Carstens outline-mode for keeping track of everything.
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;;
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -35,5 +34,4 @@
(provide 'org-install)
-;; arch-tag: 0614acb4-47a3-4e7b-918a-aa3149792bcc
;;; org-install.el ends here
diff --git a/lisp/org/org-irc.el b/lisp/org/org-irc.el
index fba274156d..8339a5640d 100644
--- a/lisp/org/org-irc.el
+++ b/lisp/org/org-irc.el
@@ -1,6 +1,6 @@
;;; org-irc.el --- Store links to IRC sessions
;;
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;;
;; Author: Philip Jackson <[email protected]>
;; Keywords: erc, irc, link, org
@@ -251,6 +251,5 @@ default."
(provide 'org-irc)
-;; arch-tag: 018d7dda-53b8-4a35-ba92-6670939e525a
;;; org-irc.el ends here
diff --git a/lisp/org/org-jsinfo.el b/lisp/org/org-jsinfo.el
index e5c65b0fb0..1db4860b20 100644
--- a/lisp/org/org-jsinfo.el
+++ b/lisp/org/org-jsinfo.el
@@ -1,7 +1,6 @@
;;; org-jsinfo.el --- Support for org-info.js Javascript in Org HTML export
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -205,6 +204,5 @@ Option settings will replace the %MANAGER-OPTIONS cookie."
(provide 'org-infojs)
(provide 'org-jsinfo)
-;; arch-tag: c71d1d85-3337-4817-a066-725e74ac9eac
;;; org-jsinfo.el ends here
diff --git a/lisp/org/org-latex.el b/lisp/org/org-latex.el
index a29c9f3740..3f4c1dcb7c 100644
--- a/lisp/org/org-latex.el
+++ b/lisp/org/org-latex.el
@@ -1,6 +1,6 @@
;;; org-latex.el --- LaTeX exporter for org-mode
;;
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;;
;; Emacs Lisp Archive Entry
;; Filename: org-latex.el
@@ -2573,6 +2573,5 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
(provide 'org-export-latex)
(provide 'org-latex)
-;; arch-tag: 23c2b87d-da04-4c2d-ad2d-1eb6487bc3ad
;;; org-latex.el ends here
diff --git a/lisp/org/org-list.el b/lisp/org/org-list.el
index bc8e7bddb5..08c733acc6 100644
--- a/lisp/org/org-list.el
+++ b/lisp/org/org-list.el
@@ -1,7 +1,6 @@
;;; org-list.el --- Plain lists for Org-mode
;;
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;;
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Bastien Guerry <bzg AT altern DOT org>
@@ -2288,5 +2287,4 @@ with overruling parameters for `org-list-to-generic'."
(provide 'org-list)
-;; arch-tag: 73cf50c1-200f-4d1d-8a53-4e842a5b11c8
;;; org-list.el ends here
diff --git a/lisp/org/org-mac-message.el b/lisp/org/org-mac-message.el
index a146cc86e2..101743727c 100644
--- a/lisp/org/org-mac-message.el
+++ b/lisp/org/org-mac-message.el
@@ -1,6 +1,6 @@
;;; org-mac-message.el --- Links to Apple Mail.app messages from within Org-mode
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
;; Christopher Suckling <suckling at gmail dot com>
@@ -214,6 +214,5 @@ list of message:// links to flagged mail after heading."
(provide 'org-mac-message)
-;; arch-tag: 3806d0c1-abe1-4db6-9c31-f3ed7d4a9b32
;;; org-mac-message.el ends here
diff --git a/lisp/org/org-macs.el b/lisp/org/org-macs.el
index 97a8fdc06e..5bb8688873 100644
--- a/lisp/org/org-macs.el
+++ b/lisp/org/org-macs.el
@@ -1,7 +1,6 @@
;;; org-macs.el --- Top-level definitions for Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -344,6 +343,5 @@ The number of levels is controlled by `org-inlinetask-min-level'"
(provide 'org-macs)
-;; arch-tag: 7e6a73ce-aac9-4fc0-9b30-ce6f89dc6668
;;; org-macs.el ends here
diff --git a/lisp/org/org-mew.el b/lisp/org/org-mew.el
index 9636a1aa42..be0c3b93d1 100644
--- a/lisp/org/org-mew.el
+++ b/lisp/org/org-mew.el
@@ -1,6 +1,6 @@
;;; org-mew.el --- Support for links to Mew messages from within Org-mode
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Tokuya Kameshima <kames at fa2 dot so-net dot ne dot jp>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -135,6 +135,5 @@
(provide 'org-mew)
-;; arch-tag: 07ccdca7-6020-4941-a593-588a1e51b870
;;; org-mew.el ends here
diff --git a/lisp/org/org-mhe.el b/lisp/org/org-mhe.el
index c384062a3f..1767ddca1e 100644
--- a/lisp/org/org-mhe.el
+++ b/lisp/org/org-mhe.el
@@ -1,7 +1,6 @@
;;; org-mhe.el --- Support for links to MH-E messages from within Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Thomas Baumann <thomas dot baumann at ch dot tum dot de>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -225,6 +224,5 @@ folders."
(provide 'org-mhe)
-;; arch-tag: dcb05484-8627-491d-a8c1-01dbd2bde4ae
;;; org-mhe.el ends here
diff --git a/lisp/org/org-mks.el b/lisp/org/org-mks.el
index df4ab3e2e7..e4826f801c 100644
--- a/lisp/org/org-mks.el
+++ b/lisp/org/org-mks.el
@@ -1,6 +1,6 @@
;;; org-mks.el --- Multi-key-selection for Org-mode
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -132,6 +132,5 @@ only the bare key is returned."
(provide 'org-mks)
-;; arch-tag: 4ea90d0e-c6e4-4684-bd61-baf878712f9f
;;; org-mks.el ends here
diff --git a/lisp/org/org-mobile.el b/lisp/org/org-mobile.el
index 4b16e2b8fc..a36f1fc2d5 100644
--- a/lisp/org/org-mobile.el
+++ b/lisp/org/org-mobile.el
@@ -1,5 +1,5 @@
;;; org-mobile.el --- Code for asymmetric sync with a mobile device
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;;
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -1083,7 +1083,6 @@ A and B must be strings or nil."
(provide 'org-mobile)
-;; arch-tag: ace0e26c-58f2-4309-8a61-05ec1535f658
;;; org-mobile.el ends here
diff --git a/lisp/org/org-mouse.el b/lisp/org/org-mouse.el
index d1540c3f3f..d30f172f42 100644
--- a/lisp/org/org-mouse.el
+++ b/lisp/org/org-mouse.el
@@ -1,6 +1,6 @@
;;; org-mouse.el --- Better mouse support for org-mode
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation
+;; Copyright (C) 2006-2011 Free Software Foundation
;;
;; Author: Piotr Zielinski <piotr dot zielinski at gmail dot com>
;; Maintainer: Carsten Dominik <carsten at orgmode dot org>
@@ -1143,6 +1143,5 @@ This means, between the beginning of line and the point."
(provide 'org-mouse)
-;; arch-tag: ff1ae557-3529-41a3-95c6-baaebdcc280f
;;; org-mouse.el ends here
diff --git a/lisp/org/org-plot.el b/lisp/org/org-plot.el
index 374e2d43b5..c5f4bff24f 100644
--- a/lisp/org/org-plot.el
+++ b/lisp/org/org-plot.el
@@ -1,6 +1,6 @@
;;; org-plot.el --- Support for plotting from Org-mode
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;;
;; Author: Eric Schulte <schulte dot eric at gmail dot com>
;; Keywords: tables, plotting
@@ -350,5 +350,4 @@ line directly before or after the table."
(provide 'org-plot)
-;; arch-tag: 5763f7c6-0c75-416d-b070-398ee4ec0eca
;;; org-plot.el ends here
diff --git a/lisp/org/org-protocol.el b/lisp/org/org-protocol.el
index 5d5059fbf0..018eadf9a2 100644
--- a/lisp/org/org-protocol.el
+++ b/lisp/org/org-protocol.el
@@ -1,7 +1,6 @@
;;; org-protocol.el --- Intercept calls from emacsclient to trigger custom actions.
;;
-;; Copyright (C) 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;;
;; Author: Bastien Guerry <bzg AT altern DOT org>
;; Author: Daniel M German <dmg AT uvic DOT org>
@@ -704,5 +703,4 @@ project-plist is the CDR of an element in `org-publish-project-alist', reuse
(provide 'org-protocol)
-;; arch-tag: b5c5c2ac-77cf-4a94-a649-2163dff95846
;;; org-protocol.el ends here
diff --git a/lisp/org/org-publish.el b/lisp/org/org-publish.el
index bb20cc60df..7451587ba2 100644
--- a/lisp/org/org-publish.el
+++ b/lisp/org/org-publish.el
@@ -1,6 +1,5 @@
;;; org-publish.el --- publish related org-mode files as a website
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: David O'Toole <[email protected]>
;; Maintainer: Carsten Dominik <carsten DOT dominik AT gmail DOT com>
@@ -1077,6 +1076,5 @@ Returns value on success, else nil."
(provide 'org-publish)
-;; arch-tag: 72807f3c-8af0-4a6b-8dca-c3376eb25adb
;;; org-publish.el ends here
diff --git a/lisp/org/org-remember.el b/lisp/org/org-remember.el
index c6e21ae057..80f9dadd7a 100644
--- a/lisp/org/org-remember.el
+++ b/lisp/org/org-remember.el
@@ -1,7 +1,6 @@
;;; org-remember.el --- Fast note taking in Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -224,8 +223,7 @@ for a Remember buffer.")
(define-minor-mode org-remember-mode
"Minor mode for special key bindings in a remember buffer."
- nil " Rem" org-remember-mode-map
- (run-hooks 'org-remember-mode-hook))
+ nil " Rem" org-remember-mode-map)
(define-key org-remember-mode-map "\C-c\C-c" 'org-remember-finalize)
(define-key org-remember-mode-map "\C-c\C-k" 'org-remember-kill)
@@ -1149,7 +1147,6 @@ See also the variable `org-reverse-note-order'."
(provide 'org-remember)
-;; arch-tag: 497f30d0-4bc3-4097-8622-2d27ac5f2698
;;; org-remember.el ends here
diff --git a/lisp/org/org-rmail.el b/lisp/org/org-rmail.el
index 7325868523..6e984fda68 100644
--- a/lisp/org/org-rmail.el
+++ b/lisp/org/org-rmail.el
@@ -1,7 +1,6 @@
;;; org-rmail.el --- Support for links to Rmail messages from within Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -115,6 +114,5 @@
(provide 'org-rmail)
-;; arch-tag: c6cf4a8b-6639-4b7f-821f-bdf10746b173
;;; org-rmail.el ends here
diff --git a/lisp/org/org-src.el b/lisp/org/org-src.el
index c932b4a70b..07779700da 100644
--- a/lisp/org/org-src.el
+++ b/lisp/org/org-src.el
@@ -1,7 +1,6 @@
;;; org-src.el --- Source code examples in Org
;;
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;;
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Bastien Guerry <bzg AT altern DOT org>
@@ -807,5 +806,4 @@ LANG is a string, and the returned major mode is a symbol."
(provide 'org-src)
-;; arch-tag: 6a1fc84f-dec7-47be-a416-64be56bea5d8
;;; org-src.el ends here
diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el
index 116c3fc231..c99b5bf681 100644
--- a/lisp/org/org-table.el
+++ b/lisp/org/org-table.el
@@ -1,7 +1,6 @@
;;; org-table.el --- The table editor for Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -4393,6 +4392,5 @@ list of the fields in the rectangle ."
(provide 'org-table)
-;; arch-tag: 4d21cfdd-0268-440a-84b0-09237a0fe0ef
;;; org-table.el ends here
diff --git a/lisp/org/org-taskjuggler.el b/lisp/org/org-taskjuggler.el
index d78e10d56a..94341d8090 100644
--- a/lisp/org/org-taskjuggler.el
+++ b/lisp/org/org-taskjuggler.el
@@ -1,6 +1,6 @@
;;; org-taskjuggler.el --- TaskJuggler exporter for org-mode
;;
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;;
;; Emacs Lisp Archive Entry
;; Filename: org-taskjuggler.el
diff --git a/lisp/org/org-timer.el b/lisp/org/org-timer.el
index bac1187043..f920062362 100644
--- a/lisp/org/org-timer.el
+++ b/lisp/org/org-timer.el
@@ -1,6 +1,6 @@
;;; org-timer.el --- The relative timer code for Org-mode
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -394,6 +394,5 @@ replace any running timer."
(provide 'org-timer)
-;; arch-tag: 97538f8c-3871-4509-8f23-1e7b3ff3d107
;;; org-timer.el ends here
diff --git a/lisp/org/org-vm.el b/lisp/org/org-vm.el
index daef6713f4..7ebeadbc4d 100644
--- a/lisp/org/org-vm.el
+++ b/lisp/org/org-vm.el
@@ -1,7 +1,6 @@
;;; org-vm.el --- Support for links to VM messages from within Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -138,6 +137,5 @@
(provide 'org-vm)
-;; arch-tag: cbc3047b-935e-4d2a-96e7-c5b0117aaa6d
;;; org-vm.el ends here
diff --git a/lisp/org/org-w3m.el b/lisp/org/org-w3m.el
index 6965ac6b33..ff839a9b7c 100644
--- a/lisp/org/org-w3m.el
+++ b/lisp/org/org-w3m.el
@@ -1,6 +1,6 @@
;;; org-w3m.el --- Support from copy and paste from w3m to Org-mode
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Andy Stewart <lazycat dot manatee at gmail dot com>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -168,6 +168,5 @@ Return t if there is no previous link; otherwise, return nil."
(provide 'org-w3m)
-;; arch-tag: 851d7447-488d-49f0-a14d-46c092e84352
;;; org-w3m.el ends here
diff --git a/lisp/org/org-wl.el b/lisp/org/org-wl.el
index 137bad9de8..2a16d047b3 100644
--- a/lisp/org/org-wl.el
+++ b/lisp/org/org-wl.el
@@ -1,7 +1,6 @@
;;; org-wl.el --- Support for links to Wanderlust messages from within Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Tokuya Kameshima <kames at fa2 dot so-net dot ne dot jp>
;; David Maus <dmaus at ictsoc dot de>
@@ -310,6 +309,5 @@ for namazu index."
(provide 'org-wl)
-;; arch-tag: 29b75a0f-ef2e-430b-8abc-acff75bde54a
;;; org-wl.el ends here
diff --git a/lisp/org/org-xoxo.el b/lisp/org/org-xoxo.el
index 2ce277ed6c..39a4cc7a44 100644
--- a/lisp/org/org-xoxo.el
+++ b/lisp/org/org-xoxo.el
@@ -1,7 +1,6 @@
;;; org-xoxo.el --- XOXO export for Org-mode
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -124,5 +123,4 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
(provide 'org-xoxo)
-;; arch-tag: 16e6a31f-f4f5-46f1-af18-48dc89faa702
;;; org-xoxo.el ends here
diff --git a/lisp/org/org.el b/lisp/org/org.el
index eb91968732..8f1ef9e5d6 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -1,7 +1,6 @@
;;; org.el --- Outline-based notes management and organizer
;; Carstens outline-mode for keeping track of everything.
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;;
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
@@ -19642,6 +19641,5 @@ Still experimental, may disappear in the future."
(run-hooks 'org-load-hook)
-;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
;;; org.el ends here
diff --git a/lisp/outline.el b/lisp/outline.el
index 95cc450973..d43afd94a3 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -1,7 +1,6 @@
;;; outline.el --- outline mode commands for Emacs
-;; Copyright (C) 1986, 1993, 1994, 1995, 1997, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1986, 1993-1995, 1997, 2000-2011
;; Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -1119,5 +1118,4 @@ convenient way to make a table of contents of the buffer."
(provide 'outline)
(provide 'noutline)
-;; arch-tag: 1724410e-7d4d-4f46-b801-49e18171e874
;;; outline.el ends here
diff --git a/lisp/paren.el b/lisp/paren.el
index bdc15a66cc..8bd96b9317 100644
--- a/lisp/paren.el
+++ b/lisp/paren.el
@@ -1,7 +1,6 @@
;;; paren.el --- highlight matching paren
-;; Copyright (C) 1993, 1996, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1996, 2001-2011 Free Software Foundation, Inc.
;; Author: [email protected]
;; Maintainer: FSF
diff --git a/lisp/password-cache.el b/lisp/password-cache.el
index 7c67ab1770..fcae55ad59 100644
--- a/lisp/password-cache.el
+++ b/lisp/password-cache.el
@@ -1,7 +1,6 @@
;;; password-cache.el --- Read passwords, possibly using a password cache.
-;; Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2000, 2003-2011 Free Software Foundation, Inc.
;; Author: Simon Josefsson <[email protected]>
;; Created: 2003-12-21
diff --git a/lisp/patcomp.el b/lisp/patcomp.el
index b542dc27f4..c1965a763c 100644
--- a/lisp/patcomp.el
+++ b/lisp/patcomp.el
@@ -19,5 +19,4 @@ It uses the command line arguments to specify the files to compile."
(let ((load-path (list (expand-file-name "lisp"))))
(batch-byte-compile)))
-;; arch-tag: cb299b78-1d6c-4c02-945b-12fa2e856d6f
;;; patcomp.el ends here
diff --git a/lisp/paths.el b/lisp/paths.el
index 095326e9c8..161caf9cb8 100644
--- a/lisp/paths.el
+++ b/lisp/paths.el
@@ -1,7 +1,6 @@
;;; paths.el --- define pathnames for use by various Emacs commands -*- no-byte-compile: t -*-
-;; Copyright (C) 1986, 1988, 1994, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1988, 1994, 1999-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
@@ -186,5 +185,4 @@ If non-nil, Emacs startup does (load (concat term-file-prefix (getenv \"TERM\"))
You may set this variable to nil in your `.emacs' file if you do not wish
the terminal-initialization file to be loaded.")
-;; arch-tag: bae27ffb-9944-4c87-b569-30d4635a99e1
;;; paths.el ends here
diff --git a/lisp/pcmpl-cvs.el b/lisp/pcmpl-cvs.el
index 98d1e47666..b6c5eb62b1 100644
--- a/lisp/pcmpl-cvs.el
+++ b/lisp/pcmpl-cvs.el
@@ -1,7 +1,6 @@
;;; pcmpl-cvs.el --- functions for dealing with cvs completions
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
;; Package: pcomplete
@@ -185,5 +184,4 @@ operation character applies, as displayed by 'cvs -n update'."
(setq pcomplete-stub nondir)
(pcomplete-uniqify-list entries)))
-;; arch-tag: d2aeac43-4bf5-4509-a496-74b863c6642b
;;; pcmpl-cvs.el ends here
diff --git a/lisp/pcmpl-gnu.el b/lisp/pcmpl-gnu.el
index df1f055506..62f5fafe2c 100644
--- a/lisp/pcmpl-gnu.el
+++ b/lisp/pcmpl-gnu.el
@@ -1,7 +1,6 @@
;;; pcmpl-gnu.el --- completions for GNU project tools
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Package: pcomplete
@@ -307,5 +306,4 @@
;;;###autoload
(defalias 'pcomplete/gdb 'pcomplete/xargs)
-;; arch-tag: 06d2b429-dcb1-4a57-84e1-f70d87781183
;;; pcmpl-gnu.el ends here
diff --git a/lisp/pcmpl-linux.el b/lisp/pcmpl-linux.el
index 59c084fffa..8090397627 100644
--- a/lisp/pcmpl-linux.el
+++ b/lisp/pcmpl-linux.el
@@ -1,7 +1,6 @@
;;; pcmpl-linux.el --- functions for dealing with GNU/Linux completions
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Package: pcomplete
@@ -99,5 +98,4 @@
(pcomplete-uniqify-list points)
(cons "swap" (pcmpl-linux-mounted-directories))))))
-;; arch-tag: bb0961a6-a623-463d-92c6-497c317293b1
;;; pcmpl-linux.el ends here
diff --git a/lisp/pcmpl-rpm.el b/lisp/pcmpl-rpm.el
index 7960141f03..475215b162 100644
--- a/lisp/pcmpl-rpm.el
+++ b/lisp/pcmpl-rpm.el
@@ -1,7 +1,6 @@
;;; pcmpl-rpm.el --- functions for dealing with rpm completions
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Package: pcomplete
@@ -322,5 +321,4 @@
(provide 'pcmpl-rpm)
-;; arch-tag: 4e64b490-fecf-430e-b2b9-70a8ad64b8c1
;;; pcmpl-rpm.el ends here
diff --git a/lisp/pcmpl-unix.el b/lisp/pcmpl-unix.el
index f2c19ca71c..e947bfe1da 100644
--- a/lisp/pcmpl-unix.el
+++ b/lisp/pcmpl-unix.el
@@ -1,7 +1,6 @@
;;; pcmpl-unix.el --- standard UNIX completions
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Package: pcomplete
@@ -40,14 +39,23 @@
(defcustom pcmpl-ssh-known-hosts-file "~/.ssh/known_hosts"
"If non-nil, a string naming your SSH \"known_hosts\" file.
-This allows completion of SSH host names. Note that newer
-versions of ssh hash the hosts by default to prevent
-Island-hopping SSH attacks. This can be disabled, at some risk,
-with the SSH option \"HashKnownHosts no\"."
+This allows one method of completion of SSH host names, the other
+being via `pcmpl-ssh-config-file'. Note that newer versions of
+ssh hash the hosts by default, to prevent Island-hopping SSH
+attacks. This can be disabled, at some risk, with the SSH option
+\"HashKnownHosts no\"."
:type '(choice file (const nil))
:group 'pcmpl-unix
:version "23.1")
+(defcustom pcmpl-ssh-config-file "~/.ssh/config"
+ "If non-nil, a string naming your SSH \"config\" file.
+This allows one method of completion of SSH host names, the other
+being via `pcmpl-ssh-known-hosts-file'."
+ :type '(choice file (const nil))
+ :group 'pcmpl-unix
+ :version "24.1")
+
;; Functions:
;;;###autoload
@@ -138,7 +146,7 @@ documentation), this function returns nil."
;; ssh support by Phil Hagelberg.
;; http://www.emacswiki.org/cgi-bin/wiki/pcmpl-ssh.el
-(defun pcmpl-ssh-hosts ()
+(defun pcmpl-ssh-known-hosts ()
"Return a list of hosts found in `pcmpl-ssh-known-hosts-file'."
(when (and pcmpl-ssh-known-hosts-file
(file-readable-p pcmpl-ssh-known-hosts-file))
@@ -153,6 +161,27 @@ documentation), this function returns nil."
(add-to-list 'ssh-hosts-list (match-string 1))))
ssh-hosts-list))))
+(defun pcmpl-ssh-config-hosts ()
+ "Return a list of hosts found in `pcmpl-ssh-config-file'."
+ (when (and pcmpl-ssh-config-file
+ (file-readable-p pcmpl-ssh-config-file))
+ (with-temp-buffer
+ (insert-file-contents-literally pcmpl-ssh-config-file)
+ (let (ssh-hosts-list
+ (case-fold-search t))
+ (while (re-search-forward "^ *host\\(name\\)? +\\([-.[:alnum:]]+\\)"
+ nil t)
+ (add-to-list 'ssh-hosts-list (match-string 2)))
+ ssh-hosts-list))))
+
+(defun pcmpl-ssh-hosts ()
+ "Return a list of known SSH hosts.
+Uses both `pcmpl-ssh-config-file' and `pcmpl-ssh-known-hosts-file'."
+ (let ((hosts (pcmpl-ssh-known-hosts)))
+ (dolist (h (pcmpl-ssh-config-hosts))
+ (add-to-list 'hosts h))
+ hosts))
+
;;;###autoload
(defun pcomplete/ssh ()
"Completion rules for the `ssh' command."
@@ -171,5 +200,4 @@ Includes files as well as host names followed by a colon."
(provide 'pcmpl-unix)
-;; arch-tag: 3f9eb5af-7e0e-449d-b586-381cbbf8fc5c
;;; pcmpl-unix.el ends here
diff --git a/lisp/pcomplete.el b/lisp/pcomplete.el
index cd216ad8d3..0f4d5e42d7 100644
--- a/lisp/pcomplete.el
+++ b/lisp/pcomplete.el
@@ -1,7 +1,6 @@
;;; pcomplete.el --- programmable completion
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
;; Keywords: processes abbrev
@@ -1391,5 +1390,4 @@ Returns the resultant list."
(provide 'pcomplete)
-;; arch-tag: ae32ef2d-dbed-4244-8b0f-cf5a2a3b07a4
;;; pcomplete.el ends here
diff --git a/lisp/play/5x5.el b/lisp/play/5x5.el
index 918587db13..364ea35af3 100644
--- a/lisp/play/5x5.el
+++ b/lisp/play/5x5.el
@@ -1,7 +1,6 @@
;;; 5x5.el --- simple little puzzle game
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Dave Pearson <[email protected]>
;; Maintainer: Dave Pearson <[email protected]>
@@ -512,5 +511,4 @@ in progress because it is an animated attempt."
(provide '5x5)
-;; arch-tag: ec4dabd5-572d-41ea-b48c-ec5ce0d68fa9
;;; 5x5.el ends here
diff --git a/lisp/play/animate.el b/lisp/play/animate.el
index 9ac9591703..157a2fe759 100644
--- a/lisp/play/animate.el
+++ b/lisp/play/animate.el
@@ -1,7 +1,6 @@
;;; animate.el --- make text dance
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Maintainer: Richard Stallman <[email protected]>
;; Keywords: games
@@ -191,5 +190,4 @@ You can specify the one's name by NAME; the default value is \"Sarah\"."
(provide 'animate)
-;; arch-tag: 275289a3-6ac4-41da-b527-a1147045392f
;;; animate.el ends here
diff --git a/lisp/play/blackbox.el b/lisp/play/blackbox.el
index cecb5a29a4..42d1d8e09f 100644
--- a/lisp/play/blackbox.el
+++ b/lisp/play/blackbox.el
@@ -1,7 +1,6 @@
;;; blackbox.el --- blackbox game in Emacs Lisp
-;; Copyright (C) 1985, 1986, 1987, 1992, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1992, 2001-2011 Free Software Foundation, Inc.
;; Author: F. Thomas May <[email protected]>
;; Adapted-By: ESR
@@ -434,5 +433,4 @@ a reflection."
(provide 'blackbox)
-;; arch-tag: 6c474c62-5617-4b10-9b44-ac430168c0e2
;;; blackbox.el ends here
diff --git a/lisp/play/bruce.el b/lisp/play/bruce.el
index ac4640a5fb..168d528ecb 100644
--- a/lisp/play/bruce.el
+++ b/lisp/play/bruce.el
@@ -1,8 +1,7 @@
;;; bruce.el --- bruce phrase utility for overloading the Communications -*- no-byte-compile: t -*-
;;; Decency Act snoops, if any.
-;; Copyright (C) 1988, 1993, 1997, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1993, 1997, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: games
@@ -146,5 +145,4 @@
(provide 'bruce)
-;; arch-tag: b83ded51-4ccb-41ef-8bd6-3b521e81dd9b
;;; bruce.el ends here
diff --git a/lisp/play/bubbles.el b/lisp/play/bubbles.el
index 69620aeaca..8fea2cef6a 100644
--- a/lisp/play/bubbles.el
+++ b/lisp/play/bubbles.el
@@ -1,6 +1,6 @@
;;; bubbles.el --- Puzzle game for Emacs.
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Ulf Jasper <[email protected]>
;; URL: http://ulf.epplejasper.de/
@@ -1460,5 +1460,4 @@ Return t if new char is non-empty."
(provide 'bubbles)
-;; arch-tag: 2cd7237a-b0ad-400d-a7fd-75f676dceb70
;;; bubbles.el ends here
diff --git a/lisp/play/cookie1.el b/lisp/play/cookie1.el
index e786c6cc5c..837213665f 100644
--- a/lisp/play/cookie1.el
+++ b/lisp/play/cookie1.el
@@ -1,7 +1,6 @@
;;; cookie1.el --- retrieve random phrases from fortune cookie files
-;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
;; Author: Eric S. Raymond <[email protected]>
;; Maintainer: FSF
@@ -164,5 +163,4 @@ Optional fifth arg REQUIRE-MATCH non-nil forces a matching cookie."
(provide 'cookie1)
-;; arch-tag: 4a8a8712-df6a-4f34-b030-108a1b47f9f2
;;; cookie1.el ends here
diff --git a/lisp/play/decipher.el b/lisp/play/decipher.el
index f0a602be70..3de8ca3d4f 100644
--- a/lisp/play/decipher.el
+++ b/lisp/play/decipher.el
@@ -1,7 +1,6 @@
;;; decipher.el --- cryptanalyze monoalphabetic substitution ciphers
;;
-;; Copyright (C) 1995, 1996, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-1996, 2001-2011 Free Software Foundation, Inc.
;;
;; Author: Christopher J. Madsen <[email protected]>
;; Keywords: games
diff --git a/lisp/play/dissociate.el b/lisp/play/dissociate.el
index eac1dcf58b..4530e586de 100644
--- a/lisp/play/dissociate.el
+++ b/lisp/play/dissociate.el
@@ -1,7 +1,6 @@
;;; dissociate.el --- scramble text amusingly for Emacs
-;; Copyright (C) 1985, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: games
@@ -99,5 +98,4 @@ Default is 2."
(provide 'dissociate)
-;; arch-tag: 90d197d1-409b-45c5-a0b5-fbfb2e06334f
;;; dissociate.el ends here
diff --git a/lisp/play/doctor.el b/lisp/play/doctor.el
index e892c5dcfb..5b3b4aba0f 100644
--- a/lisp/play/doctor.el
+++ b/lisp/play/doctor.el
@@ -1,7 +1,7 @@
;;; doctor.el --- psychological help for frustrated users
-;; Copyright (C) 1985, 1987, 1994, 1996, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1987, 1994, 1996, 2000-2011
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: games
diff --git a/lisp/play/dunnet.el b/lisp/play/dunnet.el
index f5f8bd7ed4..696442ee8c 100644
--- a/lisp/play/dunnet.el
+++ b/lisp/play/dunnet.el
@@ -1,7 +1,6 @@
;;; dunnet.el --- text adventure for Emacs -*- byte-compile-warnings: nil -*-
-;; Copyright (C) 1992, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992-1993, 2001-2011 Free Software Foundation, Inc.
;; Author: Ron Schnell <[email protected]>
;; Created: 25 Jul 1992
@@ -3357,5 +3356,4 @@ File not found")))
(provide 'dunnet)
-;; arch-tag: 4cc8e47c-d9e1-4ef4-936b-578e7f529558
;;; dunnet.el ends here
diff --git a/lisp/play/fortune.el b/lisp/play/fortune.el
index e7bd013b2a..05775c8a85 100644
--- a/lisp/play/fortune.el
+++ b/lisp/play/fortune.el
@@ -1,7 +1,6 @@
;;; fortune.el --- use fortune to create signatures
-;; Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Holger Schauer <[email protected]>
;; Keywords: games utils mail
diff --git a/lisp/play/gamegrid.el b/lisp/play/gamegrid.el
index da10ffaf0a..d3d8350a43 100644
--- a/lisp/play/gamegrid.el
+++ b/lisp/play/gamegrid.el
@@ -1,7 +1,6 @@
;;; gamegrid.el --- library for implementing grid-based games on Emacs
-;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Glynn Clements <[email protected]>
;; Version: 1.02
@@ -597,5 +596,4 @@ FILE is created there."
(provide 'gamegrid)
-;; arch-tag: a96c2ff4-1c12-427e-bd3d-faeaf174cd46
;;; gamegrid.el ends here
diff --git a/lisp/play/gametree.el b/lisp/play/gametree.el
index 215d95db34..d0ba9b037e 100644
--- a/lisp/play/gametree.el
+++ b/lisp/play/gametree.el
@@ -1,7 +1,6 @@
;;; gametree.el --- manage game analysis trees in Emacs
-;; Copyright (C) 1997, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Ian T Zimmerman <[email protected]>
;; Created: Wed Dec 10 07:41:46 PST 1997
diff --git a/lisp/play/gomoku.el b/lisp/play/gomoku.el
index 2c77aa62df..f9d5594cd0 100644
--- a/lisp/play/gomoku.el
+++ b/lisp/play/gomoku.el
@@ -1,7 +1,6 @@
;;; gomoku.el --- Gomoku game between you and Emacs
-;; Copyright (C) 1988, 1994, 1996, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1994, 1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Philippe Schnoebelen <[email protected]>
;; Maintainer: FSF
diff --git a/lisp/play/handwrite.el b/lisp/play/handwrite.el
index 01844cc892..5bab360f9f 100644
--- a/lisp/play/handwrite.el
+++ b/lisp/play/handwrite.el
@@ -1,7 +1,6 @@
;;; handwrite.el --- turns your emacs buffer into a handwritten document -*- coding: iso-latin-1; -*-
-;; Copyright (C) 1996, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Danny Roozendaal (was: <[email protected]>)
;; Created: October 21 1996
@@ -1323,5 +1322,4 @@ end
(provide 'handwrite)
-;; arch-tag: f2285ae9-e41b-4c96-8343-87dce41e44b7
;;; handwrite.el ends here
diff --git a/lisp/play/hanoi.el b/lisp/play/hanoi.el
index 5185b81091..767792babb 100644
--- a/lisp/play/hanoi.el
+++ b/lisp/play/hanoi.el
@@ -447,5 +447,4 @@ BITS must be of length nrings. Start at START-TIME."
(provide 'hanoi)
-;; arch-tag: 7a901659-4346-495c-8883-14cbf540610c
;;; hanoi.el ends here
diff --git a/lisp/play/landmark.el b/lisp/play/landmark.el
index 0db1041e30..dd32fd790d 100644
--- a/lisp/play/landmark.el
+++ b/lisp/play/landmark.el
@@ -1,7 +1,6 @@
;;; landmark.el --- neural-network robot that learns landmarks
-;; Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Terrence Brannon (was: <[email protected]>)
;; Created: December 16, 1996 - first release to usenet
@@ -10,7 +9,7 @@
;;;_* Usage
;;; Just type
;;; M-x eval-buffer
-;;; M-x lm-test-run
+;;; M-x landmark-test-run
;; This file is part of GNU Emacs.
@@ -30,7 +29,7 @@
;;; Commentary:
-;; Lm is a relatively non-participatory game in which a robot
+;; Landmark is a relatively non-participatory game in which a robot
;; attempts to maneuver towards a tree at the center of the window
;; based on unique olfactory cues from each of the 4 directions. If
;; the smell of the tree increases, then the weights in the robot's
@@ -53,7 +52,7 @@
;; a single move, one moves east,west and south, then both east and
;; west will be improved when they shouldn't
-;; Many thanks to Yuri Pryadkin ([email protected]) for this
+;; Many thanks to Yuri Pryadkin <[email protected]> for this
;; concise problem description.
;;;_* Require
@@ -63,9 +62,9 @@
;;; Code:
-(defgroup lm nil
+(defgroup landmark nil
"Neural-network robot that learns landmarks."
- :prefix "lm-"
+ :prefix "landmark-"
:group 'games)
;;;_ + THE BOARD.
@@ -75,199 +74,199 @@
;; containing padding squares (coded with -1). These squares allow us to
;; detect when we are trying to move out of the board. We denote a square by
;; its (X,Y) coords, or by the INDEX corresponding to them in the vector. The
-;; leftmost topmost square has coords (1,1) and index lm-board-width + 2.
+;; leftmost topmost square has coords (1,1) and index landmark-board-width + 2.
;; Similarly, vectors between squares may be given by two DX, DY coords or by
;; one DEPL (the difference between indexes).
-(defvar lm-board-width nil
- "Number of columns on the Lm board.")
-(defvar lm-board-height nil
- "Number of lines on the Lm board.")
+(defvar landmark-board-width nil
+ "Number of columns on the Landmark board.")
+(defvar landmark-board-height nil
+ "Number of lines on the Landmark board.")
-(defvar lm-board nil
- "Vector recording the actual state of the Lm board.")
+(defvar landmark-board nil
+ "Vector recording the actual state of the Landmark board.")
-(defvar lm-vector-length nil
- "Length of lm-board vector.")
+(defvar landmark-vector-length nil
+ "Length of landmark-board vector.")
-(defvar lm-draw-limit nil
+(defvar landmark-draw-limit nil
;; This is usually set to 70% of the number of squares.
"After how many moves will Emacs offer a draw?")
-(defvar lm-cx 0
+(defvar landmark-cx 0
"This is the x coordinate of the center of the board.")
-(defvar lm-cy 0
+(defvar landmark-cy 0
"This is the y coordinate of the center of the board.")
-(defvar lm-m 0
+(defvar landmark-m 0
"This is the x dimension of the playing board.")
-(defvar lm-n 0
+(defvar landmark-n 0
"This is the y dimension of the playing board.")
-(defun lm-xy-to-index (x y)
+(defun landmark-xy-to-index (x y)
"Translate X, Y cartesian coords into the corresponding board index."
- (+ (* y lm-board-width) x y))
+ (+ (* y landmark-board-width) x y))
-(defun lm-index-to-x (index)
+(defun landmark-index-to-x (index)
"Return corresponding x-coord of board INDEX."
- (% index (1+ lm-board-width)))
+ (% index (1+ landmark-board-width)))
-(defun lm-index-to-y (index)
+(defun landmark-index-to-y (index)
"Return corresponding y-coord of board INDEX."
- (/ index (1+ lm-board-width)))
+ (/ index (1+ landmark-board-width)))
-(defun lm-init-board ()
- "Create the lm-board vector and fill it with initial values."
- (setq lm-board (make-vector lm-vector-length 0))
+(defun landmark-init-board ()
+ "Create the landmark-board vector and fill it with initial values."
+ (setq landmark-board (make-vector landmark-vector-length 0))
;; Every square is 0 (i.e. empty) except padding squares:
- (let ((i 0) (ii (1- lm-vector-length)))
- (while (<= i lm-board-width) ; The squares in [0..width] and in
- (aset lm-board i -1) ; [length - width - 1..length - 1]
- (aset lm-board ii -1) ; are padding squares.
+ (let ((i 0) (ii (1- landmark-vector-length)))
+ (while (<= i landmark-board-width) ; The squares in [0..width] and in
+ (aset landmark-board i -1) ; [length - width - 1..length - 1]
+ (aset landmark-board ii -1) ; are padding squares.
(setq i (1+ i)
ii (1- ii))))
(let ((i 0))
- (while (< i lm-vector-length)
- (aset lm-board i -1) ; and also all k*(width+1)
- (setq i (+ i lm-board-width 1)))))
+ (while (< i landmark-vector-length)
+ (aset landmark-board i -1) ; and also all k*(width+1)
+ (setq i (+ i landmark-board-width 1)))))
;;;_ + DISPLAYING THE BOARD.
;; You may change these values if you have a small screen or if the squares
;; look rectangular, but spacings SHOULD be at least 2 (MUST BE at least 1).
-(defconst lm-square-width 2
- "*Horizontal spacing between squares on the Lm board.")
+(defconst landmark-square-width 2
+ "*Horizontal spacing between squares on the Landmark board.")
-(defconst lm-square-height 1
- "*Vertical spacing between squares on the Lm board.")
+(defconst landmark-square-height 1
+ "*Vertical spacing between squares on the Landmark board.")
-(defconst lm-x-offset 3
- "*Number of columns between the Lm board and the side of the window.")
+(defconst landmark-x-offset 3
+ "*Number of columns between the Landmark board and the side of the window.")
-(defconst lm-y-offset 1
- "*Number of lines between the Lm board and the top of the window.")
+(defconst landmark-y-offset 1
+ "*Number of lines between the Landmark board and the top of the window.")
-;;;_ + LM MODE AND KEYMAP.
+;;;_ + LANDMARK MODE AND KEYMAP.
-(defcustom lm-mode-hook nil
- "If non-nil, its value is called on entry to Lm mode."
+(defcustom landmark-mode-hook nil
+ "If non-nil, its value is called on entry to Landmark mode."
:type 'hook
- :group 'lm)
+ :group 'landmark)
-(defvar lm-mode-map
+(defvar landmark-mode-map
(let ((map (make-sparse-keymap)))
;; Key bindings for cursor motion.
- (define-key map "y" 'lm-move-nw) ; y
- (define-key map "u" 'lm-move-ne) ; u
- (define-key map "b" 'lm-move-sw) ; b
- (define-key map "n" 'lm-move-se) ; n
+ (define-key map "y" 'landmark-move-nw) ; y
+ (define-key map "u" 'landmark-move-ne) ; u
+ (define-key map "b" 'landmark-move-sw) ; b
+ (define-key map "n" 'landmark-move-se) ; n
(define-key map "h" 'backward-char) ; h
(define-key map "l" 'forward-char) ; l
- (define-key map "j" 'lm-move-down) ; j
- (define-key map "k" 'lm-move-up) ; k
+ (define-key map "j" 'landmark-move-down) ; j
+ (define-key map "k" 'landmark-move-up) ; k
- (define-key map [kp-7] 'lm-move-nw)
- (define-key map [kp-9] 'lm-move-ne)
- (define-key map [kp-1] 'lm-move-sw)
- (define-key map [kp-3] 'lm-move-se)
+ (define-key map [kp-7] 'landmark-move-nw)
+ (define-key map [kp-9] 'landmark-move-ne)
+ (define-key map [kp-1] 'landmark-move-sw)
+ (define-key map [kp-3] 'landmark-move-se)
(define-key map [kp-4] 'backward-char)
(define-key map [kp-6] 'forward-char)
- (define-key map [kp-2] 'lm-move-down)
- (define-key map [kp-8] 'lm-move-up)
+ (define-key map [kp-2] 'landmark-move-down)
+ (define-key map [kp-8] 'landmark-move-up)
- (define-key map "\C-n" 'lm-move-down) ; C-n
- (define-key map "\C-p" 'lm-move-up) ; C-p
+ (define-key map "\C-n" 'landmark-move-down) ; C-n
+ (define-key map "\C-p" 'landmark-move-up) ; C-p
;; Key bindings for entering Human moves.
- (define-key map "X" 'lm-human-plays) ; X
- (define-key map "x" 'lm-human-plays) ; x
-
- (define-key map " " 'lm-start-robot) ; SPC
- (define-key map [down-mouse-1] 'lm-start-robot)
- (define-key map [drag-mouse-1] 'lm-click)
- (define-key map [mouse-1] 'lm-click)
- (define-key map [down-mouse-2] 'lm-click)
- (define-key map [mouse-2] 'lm-mouse-play)
- (define-key map [drag-mouse-2] 'lm-mouse-play)
-
- (define-key map [remap previous-line] 'lm-move-up)
- (define-key map [remap next-line] 'lm-move-down)
- (define-key map [remap beginning-of-line] 'lm-beginning-of-line)
- (define-key map [remap end-of-line] 'lm-end-of-line)
- (define-key map [remap undo] 'lm-human-takes-back)
- (define-key map [remap advertised-undo] 'lm-human-takes-back)
+ (define-key map "X" 'landmark-human-plays) ; X
+ (define-key map "x" 'landmark-human-plays) ; x
+
+ (define-key map " " 'landmark-start-robot) ; SPC
+ (define-key map [down-mouse-1] 'landmark-start-robot)
+ (define-key map [drag-mouse-1] 'landmark-click)
+ (define-key map [mouse-1] 'landmark-click)
+ (define-key map [down-mouse-2] 'landmark-click)
+ (define-key map [mouse-2] 'landmark-mouse-play)
+ (define-key map [drag-mouse-2] 'landmark-mouse-play)
+
+ (define-key map [remap previous-line] 'landmark-move-up)
+ (define-key map [remap next-line] 'landmark-move-down)
+ (define-key map [remap beginning-of-line] 'landmark-beginning-of-line)
+ (define-key map [remap end-of-line] 'landmark-end-of-line)
+ (define-key map [remap undo] 'landmark-human-takes-back)
+ (define-key map [remap advertised-undo] 'landmark-human-takes-back)
map)
- "Local keymap to use in Lm mode.")
+ "Local keymap to use in Landmark mode.")
-(defvar lm-emacs-won ()
+(defvar landmark-emacs-won ()
"*For making font-lock use the winner's face for the line.")
-(defface lm-font-lock-face-O '((((class color)) :foreground "red")
+(defface landmark-font-lock-face-O '((((class color)) :foreground "red")
(t :weight bold))
"Face to use for Emacs' O."
:version "22.1"
- :group 'lm)
+ :group 'landmark)
-(defface lm-font-lock-face-X '((((class color)) :foreground "green")
+(defface landmark-font-lock-face-X '((((class color)) :foreground "green")
(t :weight bold))
"Face to use for your X."
:version "22.1"
- :group 'lm)
-
-(defvar lm-font-lock-keywords
- '(("O" . 'lm-font-lock-face-O)
- ("X" . 'lm-font-lock-face-X)
- ("[-|/\\]" 0 (if lm-emacs-won
- 'lm-font-lock-face-O
- 'lm-font-lock-face-X)))
- "*Font lock rules for Lm.")
-
-(put 'lm-mode 'front-sticky
- (put 'lm-mode 'rear-nonsticky '(intangible)))
-(put 'lm-mode 'intangible 1)
+ :group 'landmark)
+
+(defvar landmark-font-lock-keywords
+ '(("O" . 'landmark-font-lock-face-O)
+ ("X" . 'landmark-font-lock-face-X)
+ ("[-|/\\]" 0 (if landmark-emacs-won
+ 'landmark-font-lock-face-O
+ 'landmark-font-lock-face-X)))
+ "*Font lock rules for Landmark.")
+
+(put 'landmark-mode 'front-sticky
+ (put 'landmark-mode 'rear-nonsticky '(intangible)))
+(put 'landmark-mode 'intangible 1)
;; This one is for when they set view-read-only to t: Landmark cannot
;; allow View Mode to be activated in its buffer.
-(put 'lm-mode 'mode-class 'special)
+(put 'landmark-mode 'mode-class 'special)
-(defun lm-mode ()
- "Major mode for playing Lm against Emacs.
+(defun landmark-mode ()
+ "Major mode for playing Landmark against Emacs.
You and Emacs play in turn by marking a free square. You mark it with X
and Emacs marks it with O. The winner is the first to get five contiguous
marks horizontally, vertically or in diagonal.
-You play by moving the cursor over the square you choose and hitting \\[lm-human-plays].
+You play by moving the cursor over the square you choose and hitting \\[landmark-human-plays].
Other useful commands:
-\\{lm-mode-map}
-Entry to this mode calls the value of `lm-mode-hook' if that value
+\\{landmark-mode-map}
+Entry to this mode calls the value of `landmark-mode-hook' if that value
is non-nil. One interesting value is `turn-on-font-lock'."
(interactive)
(kill-all-local-variables)
- (setq major-mode 'lm-mode
- mode-name "Lm")
- (lm-display-statistics)
- (use-local-map lm-mode-map)
+ (setq major-mode 'landmark-mode
+ mode-name "Landmark")
+ (landmark-display-statistics)
+ (use-local-map landmark-mode-map)
(make-local-variable 'font-lock-defaults)
- (setq font-lock-defaults '(lm-font-lock-keywords t)
+ (setq font-lock-defaults '(landmark-font-lock-keywords t)
buffer-read-only t)
- (run-mode-hooks 'lm-mode-hook))
+ (run-mode-hooks 'landmark-mode-hook))
;;;_ + THE SCORE TABLE.
;; Every (free) square has a score associated to it, recorded in the
-;; LM-SCORE-TABLE vector. The program always plays in the square having
+;; LANDMARK-SCORE-TABLE vector. The program always plays in the square having
;; the highest score.
-(defvar lm-score-table nil
+(defvar landmark-score-table nil
"Vector recording the actual score of the free squares.")
@@ -294,7 +293,7 @@ is non-nil. One interesting value is `turn-on-font-lock'."
;; the qtuples.
;;
;; This algorithm is rather simple but anyway it gives a not so dumb level of
-;; play. It easily extends to "n-dimensional Lm", where a win should not
+;; play. It easily extends to "n-dimensional Landmark", where a win should not
;; be obtained with as few as 5 contiguous marks: 6 or 7 (depending on n !)
;; should be preferred.
@@ -303,9 +302,9 @@ is non-nil. One interesting value is `turn-on-font-lock'."
;; these values will change (hopefully improve) the strength of the program
;; and may change its style (rather aggressive here).
-(defconst lm-nil-score 7 "Score of an empty qtuple.")
+(defconst landmark-nil-score 7 "Score of an empty qtuple.")
-(defconst lm-score-trans-table
+(defconst landmark-score-trans-table
(let ((Xscore 15) ; Score of a qtuple containing one X.
(XXscore 400) ; Score of a qtuple containing two X's.
(XXXscore 1800) ; Score of a qtuple containing three X's.
@@ -338,7 +337,7 @@ is non-nil. One interesting value is `turn-on-font-lock'."
;; As we chose values 0, 1 and 6 to denote empty, X and O squares,
;; the contents of a qtuple are uniquely determined by the sum of
;; its elements and we just have to set up a translation table.
- (vector lm-nil-score Xscore XXscore XXXscore XXXXscore 0
+ (vector landmark-nil-score Xscore XXscore XXXscore XXXXscore 0
Oscore 0 0 0 0 0
OOscore 0 0 0 0 0
OOOscore 0 0 0 0 0
@@ -354,16 +353,16 @@ is non-nil. One interesting value is `turn-on-font-lock'."
;; qtuple. We may use these considerations to detect when a given move is
;; winning or losing.
-(defconst lm-winning-threshold
- (aref lm-score-trans-table (+ 6 6 6 6)) ;; OOOOscore
+(defconst landmark-winning-threshold
+ (aref landmark-score-trans-table (+ 6 6 6 6)) ;; OOOOscore
"Threshold score beyond which an Emacs move is winning.")
-(defconst lm-losing-threshold
- (aref lm-score-trans-table (+ 1 1 1 1)) ;; XXXXscore
+(defconst landmark-losing-threshold
+ (aref landmark-score-trans-table (+ 1 1 1 1)) ;; XXXXscore
"Threshold score beyond which a human move is winning.")
-(defun lm-strongest-square ()
+(defun landmark-strongest-square ()
"Compute index of free square with highest score, or nil if none."
;; We just have to loop other all squares. However there are two problems:
;; 1/ The SCORE-TABLE only gives correct scores to free squares. To speed
@@ -372,23 +371,23 @@ is non-nil. One interesting value is `turn-on-font-lock'."
;; 2/ We want to choose randomly between equally good moves.
(let ((score-max 0)
(count 0) ; Number of equally good moves
- (square (lm-xy-to-index 1 1)) ; First square
- (end (lm-xy-to-index lm-board-width lm-board-height))
+ (square (landmark-xy-to-index 1 1)) ; First square
+ (end (landmark-xy-to-index landmark-board-width landmark-board-height))
best-square score)
(while (<= square end)
(cond
;; If score is lower (i.e. most of the time), skip to next:
- ((< (aref lm-score-table square) score-max))
+ ((< (aref landmark-score-table square) score-max))
;; If score is better, beware of non free squares:
- ((> (setq score (aref lm-score-table square)) score-max)
- (if (zerop (aref lm-board square)) ; is it free ?
+ ((> (setq score (aref landmark-score-table square)) score-max)
+ (if (zerop (aref landmark-board square)) ; is it free ?
(setq count 1 ; yes: take it !
best-square square
score-max score)
- (aset lm-score-table square -1))) ; no: kill it !
+ (aset landmark-score-table square -1))) ; no: kill it !
;; If score is equally good, choose randomly. But first check freeness:
- ((not (zerop (aref lm-board square)))
- (aset lm-score-table square -1))
+ ((not (zerop (aref landmark-board square)))
+ (aset landmark-score-table square -1))
((zerop (random (setq count (1+ count))))
(setq best-square square
score-max score)))
@@ -407,28 +406,28 @@ is non-nil. One interesting value is `turn-on-font-lock'."
;; Also, as it is likely that successive games will be played on a board with
;; same size, it is a good idea to save the initial SCORE-TABLE configuration.
-(defvar lm-saved-score-table nil
+(defvar landmark-saved-score-table nil
"Recorded initial value of previous score table.")
-(defvar lm-saved-board-width nil
+(defvar landmark-saved-board-width nil
"Recorded value of previous board width.")
-(defvar lm-saved-board-height nil
+(defvar landmark-saved-board-height nil
"Recorded value of previous board height.")
-(defun lm-init-score-table ()
+(defun landmark-init-score-table ()
"Create the score table vector and fill it with initial values."
- (if (and lm-saved-score-table ; Has it been stored last time ?
- (= lm-board-width lm-saved-board-width)
- (= lm-board-height lm-saved-board-height))
- (setq lm-score-table (copy-sequence lm-saved-score-table))
+ (if (and landmark-saved-score-table ; Has it been stored last time ?
+ (= landmark-board-width landmark-saved-board-width)
+ (= landmark-board-height landmark-saved-board-height))
+ (setq landmark-score-table (copy-sequence landmark-saved-score-table))
;; No, compute it:
- (setq lm-score-table
- (make-vector lm-vector-length (* 20 lm-nil-score)))
+ (setq landmark-score-table
+ (make-vector landmark-vector-length (* 20 landmark-nil-score)))
(let (i j maxi maxj maxi2 maxj2)
- (setq maxi (/ (1+ lm-board-width) 2)
- maxj (/ (1+ lm-board-height) 2)
+ (setq maxi (/ (1+ landmark-board-width) 2)
+ maxj (/ (1+ landmark-board-height) 2)
maxi2 (min 4 maxi)
maxj2 (min 4 maxj))
;; We took symmetry into account and could use it more if the board
@@ -440,43 +439,43 @@ is non-nil. One interesting value is `turn-on-font-lock'."
(while (<= i maxi2)
(setq j 1)
(while (<= j maxj)
- (lm-init-square-score i j)
+ (landmark-init-square-score i j)
(setq j (1+ j)))
(setq i (1+ i)))
(while (<= i maxi)
(setq j 1)
(while (<= j maxj2)
- (lm-init-square-score i j)
+ (landmark-init-square-score i j)
(setq j (1+ j)))
(setq i (1+ i))))
- (setq lm-saved-score-table (copy-sequence lm-score-table)
- lm-saved-board-width lm-board-width
- lm-saved-board-height lm-board-height)))
+ (setq landmark-saved-score-table (copy-sequence landmark-score-table)
+ landmark-saved-board-width landmark-board-width
+ landmark-saved-board-height landmark-board-height)))
-(defun lm-nb-qtuples (i j)
+(defun landmark-nb-qtuples (i j)
"Return the number of qtuples containing square I,J."
;; This function is complicated because we have to deal
;; with ugly cases like 3 by 6 boards, but it works.
;; If you have a simpler (and correct) solution, send it to me. Thanks !
(let ((left (min 4 (1- i)))
- (right (min 4 (- lm-board-width i)))
+ (right (min 4 (- landmark-board-width i)))
(up (min 4 (1- j)))
- (down (min 4 (- lm-board-height j))))
+ (down (min 4 (- landmark-board-height j))))
(+ -12
(min (max (+ left right) 3) 8)
(min (max (+ up down) 3) 8)
(min (max (+ (min left up) (min right down)) 3) 8)
(min (max (+ (min right up) (min left down)) 3) 8))))
-(defun lm-init-square-score (i j)
+(defun landmark-init-square-score (i j)
"Give initial score to square I,J and to its mirror images."
- (let ((ii (1+ (- lm-board-width i)))
- (jj (1+ (- lm-board-height j)))
- (sc (* (lm-nb-qtuples i j) (aref lm-score-trans-table 0))))
- (aset lm-score-table (lm-xy-to-index i j) sc)
- (aset lm-score-table (lm-xy-to-index ii j) sc)
- (aset lm-score-table (lm-xy-to-index i jj) sc)
- (aset lm-score-table (lm-xy-to-index ii jj) sc)))
+ (let ((ii (1+ (- landmark-board-width i)))
+ (jj (1+ (- landmark-board-height j)))
+ (sc (* (landmark-nb-qtuples i j) (aref landmark-score-trans-table 0))))
+ (aset landmark-score-table (landmark-xy-to-index i j) sc)
+ (aset landmark-score-table (landmark-xy-to-index ii j) sc)
+ (aset landmark-score-table (landmark-xy-to-index i jj) sc)
+ (aset landmark-score-table (landmark-xy-to-index ii jj) sc)))
;;;_ - MAINTAINING THE SCORE TABLE.
@@ -486,7 +485,7 @@ is non-nil. One interesting value is `turn-on-font-lock'."
;; SCORE-TABLE after each move. Updating needs not modify more than 36
;; squares: it is done in constant time.
-(defun lm-update-score-table (square dval)
+(defun landmark-update-score-table (square dval)
"Update score table after SQUARE received a DVAL increment."
;; The board has already been updated when this function is called.
;; Updating scores is done by looking for qtuples boundaries in all four
@@ -494,25 +493,25 @@ is non-nil. One interesting value is `turn-on-font-lock'."
;; Finally all squares received the right increment, and then are up to
;; date, except possibly for SQUARE itself if we are taking a move back for
;; its score had been set to -1 at the time.
- (let* ((x (lm-index-to-x square))
- (y (lm-index-to-y square))
+ (let* ((x (landmark-index-to-x square))
+ (y (landmark-index-to-y square))
(imin (max -4 (- 1 x)))
(jmin (max -4 (- 1 y)))
- (imax (min 0 (- lm-board-width x 4)))
- (jmax (min 0 (- lm-board-height y 4))))
- (lm-update-score-in-direction imin imax
+ (imax (min 0 (- landmark-board-width x 4)))
+ (jmax (min 0 (- landmark-board-height y 4))))
+ (landmark-update-score-in-direction imin imax
square 1 0 dval)
- (lm-update-score-in-direction jmin jmax
+ (landmark-update-score-in-direction jmin jmax
square 0 1 dval)
- (lm-update-score-in-direction (max imin jmin) (min imax jmax)
+ (landmark-update-score-in-direction (max imin jmin) (min imax jmax)
square 1 1 dval)
- (lm-update-score-in-direction (max (- 1 y) -4
- (- x lm-board-width))
+ (landmark-update-score-in-direction (max (- 1 y) -4
+ (- x landmark-board-width))
(min 0 (- x 5)
- (- lm-board-height y 4))
+ (- landmark-board-height y 4))
square -1 1 dval)))
-(defun lm-update-score-in-direction (left right square dx dy dval)
+(defun landmark-update-score-in-direction (left right square dx dy dval)
"Update scores for all squares in the qtuples in range.
That is, those between the LEFTth square and the RIGHTth after SQUARE,
along the DX, DY direction, considering that DVAL has been added on SQUARE."
@@ -523,7 +522,7 @@ along the DX, DY direction, considering that DVAL has been added on SQUARE."
((> left right)) ; Quit
(t ; Else ..
(let (depl square0 square1 square2 count delta)
- (setq depl (lm-xy-to-index dx dy)
+ (setq depl (landmark-xy-to-index dx dy)
square0 (+ square (* left depl))
square1 (+ square (* right depl))
square2 (+ square0 (* 4 depl)))
@@ -531,25 +530,25 @@ along the DX, DY direction, considering that DVAL has been added on SQUARE."
(setq square square0
count 0)
(while (<= square square2)
- (setq count (+ count (aref lm-board square))
+ (setq count (+ count (aref landmark-board square))
square (+ square depl)))
(while (<= square0 square1)
;; Update the squares of the qtuple beginning in SQUARE0 and ending
;; in SQUARE2.
- (setq delta (- (aref lm-score-trans-table count)
- (aref lm-score-trans-table (- count dval))))
+ (setq delta (- (aref landmark-score-trans-table count)
+ (aref landmark-score-trans-table (- count dval))))
(cond ((not (zerop delta)) ; or else nothing to update
(setq square square0)
(while (<= square square2)
- (if (zerop (aref lm-board square)) ; only for free squares
- (aset lm-score-table square
- (+ (aref lm-score-table square) delta)))
+ (if (zerop (aref landmark-board square)) ; only for free squares
+ (aset landmark-score-table square
+ (+ (aref landmark-score-table square) delta)))
(setq square (+ square depl)))))
;; Then shift the qtuple one square along DEPL, this only requires
;; modifying SQUARE0 and SQUARE2.
(setq square2 (+ square2 depl)
- count (+ count (- (aref lm-board square0))
- (aref lm-board square2))
+ count (+ count (- (aref landmark-board square0))
+ (aref landmark-board square2))
square0 (+ square0 depl)))))))
;;;
@@ -561,328 +560,328 @@ along the DX, DY direction, considering that DVAL has been added on SQUARE."
;; (anti-updating the score table) and to compute the table from scratch in
;; case of an interruption.
-(defvar lm-game-in-progress nil
+(defvar landmark-game-in-progress nil
"Non-nil if a game is in progress.")
-(defvar lm-game-history nil
+(defvar landmark-game-history nil
"A record of all moves that have been played during current game.")
-(defvar lm-number-of-moves nil
+(defvar landmark-number-of-moves nil
"Number of moves already played in current game.")
-(defvar lm-number-of-human-moves nil
+(defvar landmark-number-of-human-moves nil
"Number of moves already played by human in current game.")
-(defvar lm-emacs-played-first nil
+(defvar landmark-emacs-played-first nil
"Non-nil if Emacs played first.")
-(defvar lm-human-took-back nil
+(defvar landmark-human-took-back nil
"Non-nil if Human took back a move during the game.")
-(defvar lm-human-refused-draw nil
+(defvar landmark-human-refused-draw nil
"Non-nil if Human refused Emacs offer of a draw.")
-(defvar lm-emacs-is-computing nil
+(defvar landmark-emacs-is-computing nil
;; This is used to detect interruptions. Hopefully, it should not be needed.
"Non-nil if Emacs is in the middle of a computation.")
-(defun lm-start-game (n m)
+(defun landmark-start-game (n m)
"Initialize a new game on an N by M board."
- (setq lm-emacs-is-computing t) ; Raise flag
- (setq lm-game-in-progress t)
- (setq lm-board-width n
- lm-board-height m
- lm-vector-length (1+ (* (+ m 2) (1+ n)))
- lm-draw-limit (/ (* 7 n m) 10))
- (setq lm-emacs-won nil
- lm-game-history nil
- lm-number-of-moves 0
- lm-number-of-human-moves 0
- lm-emacs-played-first nil
- lm-human-took-back nil
- lm-human-refused-draw nil)
- (lm-init-display n m) ; Display first: the rest takes time
- (lm-init-score-table) ; INIT-BOARD requires that the score
- (lm-init-board) ; table be already created.
- (setq lm-emacs-is-computing nil))
-
-(defun lm-play-move (square val &optional dont-update-score)
+ (setq landmark-emacs-is-computing t) ; Raise flag
+ (setq landmark-game-in-progress t)
+ (setq landmark-board-width n
+ landmark-board-height m
+ landmark-vector-length (1+ (* (+ m 2) (1+ n)))
+ landmark-draw-limit (/ (* 7 n m) 10))
+ (setq landmark-emacs-won nil
+ landmark-game-history nil
+ landmark-number-of-moves 0
+ landmark-number-of-human-moves 0
+ landmark-emacs-played-first nil
+ landmark-human-took-back nil
+ landmark-human-refused-draw nil)
+ (landmark-init-display n m) ; Display first: the rest takes time
+ (landmark-init-score-table) ; INIT-BOARD requires that the score
+ (landmark-init-board) ; table be already created.
+ (setq landmark-emacs-is-computing nil))
+
+(defun landmark-play-move (square val &optional dont-update-score)
"Go to SQUARE, play VAL and update everything."
- (setq lm-emacs-is-computing t) ; Raise flag
+ (setq landmark-emacs-is-computing t) ; Raise flag
(cond ((= 1 val) ; a Human move
- (setq lm-number-of-human-moves (1+ lm-number-of-human-moves)))
- ((zerop lm-number-of-moves) ; an Emacs move. Is it first ?
- (setq lm-emacs-played-first t)))
- (setq lm-game-history
- (cons (cons square (aref lm-score-table square))
- lm-game-history)
- lm-number-of-moves (1+ lm-number-of-moves))
- (lm-plot-square square val)
- (aset lm-board square val) ; *BEFORE* UPDATE-SCORE !
+ (setq landmark-number-of-human-moves (1+ landmark-number-of-human-moves)))
+ ((zerop landmark-number-of-moves) ; an Emacs move. Is it first ?
+ (setq landmark-emacs-played-first t)))
+ (setq landmark-game-history
+ (cons (cons square (aref landmark-score-table square))
+ landmark-game-history)
+ landmark-number-of-moves (1+ landmark-number-of-moves))
+ (landmark-plot-square square val)
+ (aset landmark-board square val) ; *BEFORE* UPDATE-SCORE !
(if dont-update-score nil
- (lm-update-score-table square val) ; previous val was 0: dval = val
- (aset lm-score-table square -1))
- (setq lm-emacs-is-computing nil))
+ (landmark-update-score-table square val) ; previous val was 0: dval = val
+ (aset landmark-score-table square -1))
+ (setq landmark-emacs-is-computing nil))
-(defun lm-take-back ()
+(defun landmark-take-back ()
"Take back last move and update everything."
- (setq lm-emacs-is-computing t)
- (let* ((last-move (car lm-game-history))
+ (setq landmark-emacs-is-computing t)
+ (let* ((last-move (car landmark-game-history))
(square (car last-move))
- (oldval (aref lm-board square)))
+ (oldval (aref landmark-board square)))
(if (= 1 oldval)
- (setq lm-number-of-human-moves (1- lm-number-of-human-moves)))
- (setq lm-game-history (cdr lm-game-history)
- lm-number-of-moves (1- lm-number-of-moves))
- (lm-plot-square square 0)
- (aset lm-board square 0) ; *BEFORE* UPDATE-SCORE !
- (lm-update-score-table square (- oldval))
- (aset lm-score-table square (cdr last-move)))
- (setq lm-emacs-is-computing nil))
+ (setq landmark-number-of-human-moves (1- landmark-number-of-human-moves)))
+ (setq landmark-game-history (cdr landmark-game-history)
+ landmark-number-of-moves (1- landmark-number-of-moves))
+ (landmark-plot-square square 0)
+ (aset landmark-board square 0) ; *BEFORE* UPDATE-SCORE !
+ (landmark-update-score-table square (- oldval))
+ (aset landmark-score-table square (cdr last-move)))
+ (setq landmark-emacs-is-computing nil))
;;;_ + SESSION CONTROL.
-(defvar lm-number-of-trials 0
+(defvar landmark-number-of-trials 0
"The number of times that landmark has been run.")
-(defvar lm-sum-of-moves 0
+(defvar landmark-sum-of-moves 0
"The total number of moves made in all games.")
-(defvar lm-number-of-emacs-wins 0
+(defvar landmark-number-of-emacs-wins 0
"Number of games Emacs won in this session.")
-(defvar lm-number-of-human-wins 0
+(defvar landmark-number-of-human-wins 0
"Number of games you won in this session.")
-(defvar lm-number-of-draws 0
+(defvar landmark-number-of-draws 0
"Number of games already drawn in this session.")
-(defun lm-terminate-game (result)
+(defun landmark-terminate-game (result)
"Terminate the current game with RESULT."
- (setq lm-number-of-trials (1+ lm-number-of-trials))
- (setq lm-sum-of-moves (+ lm-sum-of-moves lm-number-of-moves))
+ (setq landmark-number-of-trials (1+ landmark-number-of-trials))
+ (setq landmark-sum-of-moves (+ landmark-sum-of-moves landmark-number-of-moves))
(if (eq result 'crash-game)
(message
"Sorry, I have been interrupted and cannot resume that game..."))
- (lm-display-statistics)
+ (landmark-display-statistics)
;;(ding)
- (setq lm-game-in-progress nil))
+ (setq landmark-game-in-progress nil))
-(defun lm-crash-game ()
+(defun landmark-crash-game ()
"What to do when Emacs detects it has been interrupted."
- (setq lm-emacs-is-computing nil)
- (lm-terminate-game 'crash-game)
+ (setq landmark-emacs-is-computing nil)
+ (landmark-terminate-game 'crash-game)
(sit-for 4) ; Let's see the message
- (lm-prompt-for-other-game))
+ (landmark-prompt-for-other-game))
;;;_ + INTERACTIVE COMMANDS.
-(defun lm-emacs-plays ()
+(defun landmark-emacs-plays ()
"Compute Emacs next move and play it."
(interactive)
- (lm-switch-to-window)
+ (landmark-switch-to-window)
(cond
- (lm-emacs-is-computing
- (lm-crash-game))
- ((not lm-game-in-progress)
- (lm-prompt-for-other-game))
+ (landmark-emacs-is-computing
+ (landmark-crash-game))
+ ((not landmark-game-in-progress)
+ (landmark-prompt-for-other-game))
(t
(message "Let me think...")
(let (square score)
- (setq square (lm-strongest-square))
+ (setq square (landmark-strongest-square))
(cond ((null square)
- (lm-terminate-game 'nobody-won))
+ (landmark-terminate-game 'nobody-won))
(t
- (setq score (aref lm-score-table square))
- (lm-play-move square 6)
- (cond ((>= score lm-winning-threshold)
- (setq lm-emacs-won t) ; for font-lock
- (lm-find-filled-qtuple square 6)
- (lm-terminate-game 'emacs-won))
+ (setq score (aref landmark-score-table square))
+ (landmark-play-move square 6)
+ (cond ((>= score landmark-winning-threshold)
+ (setq landmark-emacs-won t) ; for font-lock
+ (landmark-find-filled-qtuple square 6)
+ (landmark-terminate-game 'emacs-won))
((zerop score)
- (lm-terminate-game 'nobody-won))
- ((and (> lm-number-of-moves lm-draw-limit)
- (not lm-human-refused-draw)
- (lm-offer-a-draw))
- (lm-terminate-game 'draw-agreed))
+ (landmark-terminate-game 'nobody-won))
+ ((and (> landmark-number-of-moves landmark-draw-limit)
+ (not landmark-human-refused-draw)
+ (landmark-offer-a-draw))
+ (landmark-terminate-game 'draw-agreed))
(t
- (lm-prompt-for-move)))))))))
+ (landmark-prompt-for-move)))))))))
;; For small square dimensions this is approximate, since though measured in
;; pixels, event's (X . Y) is a character's top-left corner.
-(defun lm-click (click)
+(defun landmark-click (click)
"Position at the square where you click."
(interactive "e")
(and (windowp (posn-window (setq click (event-end click))))
(numberp (posn-point click))
(select-window (posn-window click))
(setq click (posn-col-row click))
- (lm-goto-xy
+ (landmark-goto-xy
(min (max (/ (+ (- (car click)
- lm-x-offset
+ landmark-x-offset
1)
(window-hscroll)
- lm-square-width
- (% lm-square-width 2)
- (/ lm-square-width 2))
- lm-square-width)
+ landmark-square-width
+ (% landmark-square-width 2)
+ (/ landmark-square-width 2))
+ landmark-square-width)
1)
- lm-board-width)
+ landmark-board-width)
(min (max (/ (+ (- (cdr click)
- lm-y-offset
+ landmark-y-offset
1)
(let ((inhibit-point-motion-hooks t))
(count-lines 1 (window-start)))
- lm-square-height
- (% lm-square-height 2)
- (/ lm-square-height 2))
- lm-square-height)
+ landmark-square-height
+ (% landmark-square-height 2)
+ (/ landmark-square-height 2))
+ landmark-square-height)
1)
- lm-board-height))))
+ landmark-board-height))))
-(defun lm-mouse-play (click)
+(defun landmark-mouse-play (click)
"Play at the square where you click."
(interactive "e")
- (if (lm-click click)
- (lm-human-plays)))
+ (if (landmark-click click)
+ (landmark-human-plays)))
-(defun lm-human-plays ()
- "Signal to the Lm program that you have played.
+(defun landmark-human-plays ()
+ "Signal to the Landmark program that you have played.
You must have put the cursor on the square where you want to play.
If the game is finished, this command requests for another game."
(interactive)
- (lm-switch-to-window)
+ (landmark-switch-to-window)
(cond
- (lm-emacs-is-computing
- (lm-crash-game))
- ((not lm-game-in-progress)
- (lm-prompt-for-other-game))
+ (landmark-emacs-is-computing
+ (landmark-crash-game))
+ ((not landmark-game-in-progress)
+ (landmark-prompt-for-other-game))
(t
(let (square score)
- (setq square (lm-point-square))
+ (setq square (landmark-point-square))
(cond ((null square)
(error "Your point is not on a square. Retry!"))
- ((not (zerop (aref lm-board square)))
+ ((not (zerop (aref landmark-board square)))
(error "Your point is not on a free square. Retry!"))
(t
- (setq score (aref lm-score-table square))
- (lm-play-move square 1)
- (cond ((and (>= score lm-losing-threshold)
+ (setq score (aref landmark-score-table square))
+ (landmark-play-move square 1)
+ (cond ((and (>= score landmark-losing-threshold)
;; Just testing SCORE > THRESHOLD is not enough for
;; detecting wins, it just gives an indication that
- ;; we confirm with LM-FIND-FILLED-QTUPLE.
- (lm-find-filled-qtuple square 1))
- (lm-terminate-game 'human-won))
+ ;; we confirm with LANDMARK-FIND-FILLED-QTUPLE.
+ (landmark-find-filled-qtuple square 1))
+ (landmark-terminate-game 'human-won))
(t
- (lm-emacs-plays)))))))))
+ (landmark-emacs-plays)))))))))
-(defun lm-human-takes-back ()
- "Signal to the Lm program that you wish to take back your last move."
+(defun landmark-human-takes-back ()
+ "Signal to the Landmark program that you wish to take back your last move."
(interactive)
- (lm-switch-to-window)
+ (landmark-switch-to-window)
(cond
- (lm-emacs-is-computing
- (lm-crash-game))
- ((not lm-game-in-progress)
+ (landmark-emacs-is-computing
+ (landmark-crash-game))
+ ((not landmark-game-in-progress)
(message "Too late for taking back...")
(sit-for 4)
- (lm-prompt-for-other-game))
- ((zerop lm-number-of-human-moves)
+ (landmark-prompt-for-other-game))
+ ((zerop landmark-number-of-human-moves)
(message "You have not played yet... Your move?"))
(t
(message "One moment, please...")
;; It is possible for the user to let Emacs play several consecutive
;; moves, so that the best way to know when to stop taking back moves is
;; to count the number of human moves:
- (setq lm-human-took-back t)
- (let ((number lm-number-of-human-moves))
- (while (= number lm-number-of-human-moves)
- (lm-take-back)))
- (lm-prompt-for-move))))
-
-(defun lm-human-resigns ()
- "Signal to the Lm program that you may want to resign."
+ (setq landmark-human-took-back t)
+ (let ((number landmark-number-of-human-moves))
+ (while (= number landmark-number-of-human-moves)
+ (landmark-take-back)))
+ (landmark-prompt-for-move))))
+
+(defun landmark-human-resigns ()
+ "Signal to the Landmark program that you may want to resign."
(interactive)
- (lm-switch-to-window)
+ (landmark-switch-to-window)
(cond
- (lm-emacs-is-computing
- (lm-crash-game))
- ((not lm-game-in-progress)
+ (landmark-emacs-is-computing
+ (landmark-crash-game))
+ ((not landmark-game-in-progress)
(message "There is no game in progress"))
((y-or-n-p "You mean, you resign? ")
- (lm-terminate-game 'human-resigned))
+ (landmark-terminate-game 'human-resigned))
((y-or-n-p "You mean, we continue? ")
- (lm-prompt-for-move))
+ (landmark-prompt-for-move))
(t
- (lm-terminate-game 'human-resigned)))) ; OK. Accept it
+ (landmark-terminate-game 'human-resigned)))) ; OK. Accept it
;;;_ + PROMPTING THE HUMAN PLAYER.
-(defun lm-prompt-for-move ()
+(defun landmark-prompt-for-move ()
"Display a message asking for Human's move."
- (message (if (zerop lm-number-of-human-moves)
+ (message (if (zerop landmark-number-of-human-moves)
"Your move? (move to a free square and hit X, RET ...)"
"Your move?")))
-(defun lm-prompt-for-other-game ()
+(defun landmark-prompt-for-other-game ()
"Ask for another game, and start it."
(if (y-or-n-p "Another game? ")
(if (y-or-n-p "Retain learned weights ")
- (lm 2)
- (lm 1))
+ (landmark 2)
+ (landmark 1))
(message "Chicken!")))
-(defun lm-offer-a-draw ()
+(defun landmark-offer-a-draw ()
"Offer a draw and return t if Human accepted it."
(or (y-or-n-p "I offer you a draw. Do you accept it? ")
- (not (setq lm-human-refused-draw t))))
+ (not (setq landmark-human-refused-draw t))))
-(defun lm-max-width ()
+(defun landmark-max-width ()
"Largest possible board width for the current window."
(1+ (/ (- (window-width (selected-window))
- lm-x-offset lm-x-offset 1)
- lm-square-width)))
+ landmark-x-offset landmark-x-offset 1)
+ landmark-square-width)))
-(defun lm-max-height ()
+(defun landmark-max-height ()
"Largest possible board height for the current window."
(1+ (/ (- (window-height (selected-window))
- lm-y-offset lm-y-offset 2)
+ landmark-y-offset landmark-y-offset 2)
;; 2 instead of 1 because WINDOW-HEIGHT includes the mode line !
- lm-square-height)))
+ landmark-square-height)))
-(defun lm-point-y ()
+(defun landmark-point-y ()
"Return the board row where point is."
(let ((inhibit-point-motion-hooks t))
- (1+ (/ (- (count-lines 1 (point)) lm-y-offset (if (bolp) 0 1))
- lm-square-height))))
+ (1+ (/ (- (count-lines 1 (point)) landmark-y-offset (if (bolp) 0 1))
+ landmark-square-height))))
-(defun lm-point-square ()
+(defun landmark-point-square ()
"Return the index of the square point is on."
(let ((inhibit-point-motion-hooks t))
- (lm-xy-to-index (1+ (/ (- (current-column) lm-x-offset)
- lm-square-width))
- (lm-point-y))))
+ (landmark-xy-to-index (1+ (/ (- (current-column) landmark-x-offset)
+ landmark-square-width))
+ (landmark-point-y))))
-(defun lm-goto-square (index)
+(defun landmark-goto-square (index)
"Move point to square number INDEX."
- (lm-goto-xy (lm-index-to-x index) (lm-index-to-y index)))
+ (landmark-goto-xy (landmark-index-to-x index) (landmark-index-to-y index)))
-(defun lm-goto-xy (x y)
+(defun landmark-goto-xy (x y)
"Move point to square at X, Y coords."
(let ((inhibit-point-motion-hooks t))
(goto-char (point-min))
- (forward-line (+ lm-y-offset (* lm-square-height (1- y)))))
- (move-to-column (+ lm-x-offset (* lm-square-width (1- x)))))
+ (forward-line (+ landmark-y-offset (* landmark-square-height (1- y)))))
+ (move-to-column (+ landmark-x-offset (* landmark-square-width (1- x)))))
-(defun lm-plot-square (square value)
+(defun landmark-plot-square (square value)
"Draw 'X', 'O' or '.' on SQUARE depending on VALUE, leave point there."
(or (= value 1)
- (lm-goto-square square))
+ (landmark-goto-square square))
(let ((inhibit-read-only t)
(inhibit-point-motion-hooks t))
(insert-and-inherit (cond ((= value 1) ?.)
@@ -901,8 +900,8 @@ mouse-1: get robot moving, mouse-2: play on this square")))
(backward-char 1))
(sit-for 0)) ; Display NOW
-(defun lm-init-display (n m)
- "Display an N by M Lm board."
+(defun landmark-init-display (n m)
+ "Display an N by M Landmark board."
(buffer-disable-undo (current-buffer))
(let ((inhibit-read-only t)
(point 1) opoint
@@ -910,17 +909,17 @@ mouse-1: get robot moving, mouse-2: play on this square")))
(i m) j x)
;; Try to minimize number of chars (because of text properties)
(setq tab-width
- (if (zerop (% lm-x-offset lm-square-width))
- lm-square-width
- (max (/ (+ (% lm-x-offset lm-square-width)
- lm-square-width 1) 2) 2)))
+ (if (zerop (% landmark-x-offset landmark-square-width))
+ landmark-square-width
+ (max (/ (+ (% landmark-x-offset landmark-square-width)
+ landmark-square-width 1) 2) 2)))
(erase-buffer)
- (newline lm-y-offset)
+ (newline landmark-y-offset)
(while (progn
(setq j n
- x (- lm-x-offset lm-square-width))
+ x (- landmark-x-offset landmark-square-width))
(while (>= (setq j (1- j)) 0)
- (insert-char ?\t (/ (- (setq x (+ x lm-square-width))
+ (insert-char ?\t (/ (- (setq x (+ x landmark-square-width))
(current-column))
tab-width))
(insert-char ? (- x (current-column)))
@@ -941,7 +940,7 @@ mouse-1: get robot moving, mouse-2: play on this square")))
(> (setq i (1- i)) 0))
(if (= i (1- m))
(setq opoint point))
- (insert-char ?\n lm-square-height))
+ (insert-char ?\n landmark-square-height))
(or (eq (char-after 1) ?.)
(put-text-property 1 2 'point-entered
(lambda (x y) (if (bobp) (forward-char)))))
@@ -949,32 +948,32 @@ mouse-1: get robot moving, mouse-2: play on this square")))
(put-text-property point (point) 'intangible 2))
(put-text-property point (point) 'point-entered
(lambda (x y) (if (eobp) (backward-char))))
- (put-text-property (point-min) (point) 'category 'lm-mode))
- (lm-goto-xy (/ (1+ n) 2) (/ (1+ m) 2)) ; center of the board
+ (put-text-property (point-min) (point) 'category 'landmark-mode))
+ (landmark-goto-xy (/ (1+ n) 2) (/ (1+ m) 2)) ; center of the board
(sit-for 0)) ; Display NOW
-(defun lm-display-statistics ()
+(defun landmark-display-statistics ()
"Obnoxiously display some statistics about previous games in mode line."
;; We store this string in the mode-line-process local variable.
;; This is certainly not the cleanest way out ...
(setq mode-line-process
(format ": Trials: %d, Avg#Moves: %d"
- lm-number-of-trials
- (if (zerop lm-number-of-trials)
+ landmark-number-of-trials
+ (if (zerop landmark-number-of-trials)
0
- (/ lm-sum-of-moves lm-number-of-trials))))
+ (/ landmark-sum-of-moves landmark-number-of-trials))))
(force-mode-line-update))
-(defun lm-switch-to-window ()
- "Find or create the Lm buffer, and display it."
+(defun landmark-switch-to-window ()
+ "Find or create the Landmark buffer, and display it."
(interactive)
- (let ((buff (get-buffer "*Lm*")))
+ (let ((buff (get-buffer "*Landmark*")))
(if buff ; Buffer exists:
(switch-to-buffer buff) ; no problem.
- (if lm-game-in-progress
- (lm-crash-game)) ; buffer has been killed or something
- (switch-to-buffer "*Lm*") ; Anyway, start anew.
- (lm-mode))))
+ (if landmark-game-in-progress
+ (landmark-crash-game)) ; buffer has been killed or something
+ (switch-to-buffer "*Landmark*") ; Anyway, start anew.
+ (landmark-mode))))
;;;_ + CROSSING WINNING QTUPLES.
@@ -984,61 +983,61 @@ mouse-1: get robot moving, mouse-2: play on this square")))
;; squares ! It only knows the square where the last move has been played and
;; who won. The solution is to scan the board along all four directions.
-(defun lm-find-filled-qtuple (square value)
+(defun landmark-find-filled-qtuple (square value)
"Return t if SQUARE belongs to a qtuple filled with VALUEs."
- (or (lm-check-filled-qtuple square value 1 0)
- (lm-check-filled-qtuple square value 0 1)
- (lm-check-filled-qtuple square value 1 1)
- (lm-check-filled-qtuple square value -1 1)))
+ (or (landmark-check-filled-qtuple square value 1 0)
+ (landmark-check-filled-qtuple square value 0 1)
+ (landmark-check-filled-qtuple square value 1 1)
+ (landmark-check-filled-qtuple square value -1 1)))
-(defun lm-check-filled-qtuple (square value dx dy)
+(defun landmark-check-filled-qtuple (square value dx dy)
"Return t if SQUARE belongs to a qtuple filled with VALUEs along DX, DY."
(let ((a 0) (b 0)
(left square) (right square)
- (depl (lm-xy-to-index dx dy)))
+ (depl (landmark-xy-to-index dx dy)))
(while (and (> a -4) ; stretch tuple left
- (= value (aref lm-board (setq left (- left depl)))))
+ (= value (aref landmark-board (setq left (- left depl)))))
(setq a (1- a)))
(while (and (< b (+ a 4)) ; stretch tuple right
- (= value (aref lm-board (setq right (+ right depl)))))
+ (= value (aref landmark-board (setq right (+ right depl)))))
(setq b (1+ b)))
(cond ((= b (+ a 4)) ; tuple length = 5 ?
- (lm-cross-qtuple (+ square (* a depl)) (+ square (* b depl))
+ (landmark-cross-qtuple (+ square (* a depl)) (+ square (* b depl))
dx dy)
t))))
-(defun lm-cross-qtuple (square1 square2 dx dy)
+(defun landmark-cross-qtuple (square1 square2 dx dy)
"Cross every square between SQUARE1 and SQUARE2 in the DX, DY direction."
(save-excursion ; Not moving point from last square
- (let ((depl (lm-xy-to-index dx dy))
+ (let ((depl (landmark-xy-to-index dx dy))
(inhibit-read-only t)
(inhibit-point-motion-hooks t))
;; WARNING: this function assumes DEPL > 0 and SQUARE2 > SQUARE1
(while (/= square1 square2)
- (lm-goto-square square1)
+ (landmark-goto-square square1)
(setq square1 (+ square1 depl))
(cond
((= dy 0) ; Horizontal
(forward-char 1)
- (insert-char ?- (1- lm-square-width) t)
+ (insert-char ?- (1- landmark-square-width) t)
(delete-region (point) (progn
(skip-chars-forward " \t")
(point))))
((= dx 0) ; Vertical
- (let ((lm-n 1)
+ (let ((landmark-n 1)
(column (current-column)))
- (while (< lm-n lm-square-height)
- (setq lm-n (1+ lm-n))
+ (while (< landmark-n landmark-square-height)
+ (setq landmark-n (1+ landmark-n))
(forward-line 1)
(indent-to column)
(insert-and-inherit ?|))))
((= dx -1) ; 1st Diagonal
- (indent-to (prog1 (- (current-column) (/ lm-square-width 2))
- (forward-line (/ lm-square-height 2))))
+ (indent-to (prog1 (- (current-column) (/ landmark-square-width 2))
+ (forward-line (/ landmark-square-height 2))))
(insert-and-inherit ?/))
(t ; 2nd Diagonal
- (indent-to (prog1 (+ (current-column) (/ lm-square-width 2))
- (forward-line (/ lm-square-height 2))))
+ (indent-to (prog1 (+ (current-column) (/ landmark-square-width 2))
+ (forward-line (/ landmark-square-height 2))))
(insert-and-inherit ?\\))))))
(sit-for 0)) ; Display NOW
@@ -1046,301 +1045,301 @@ mouse-1: get robot moving, mouse-2: play on this square")))
;;;_ + CURSOR MOTION.
;; previous-line and next-line don't work right with intangible newlines
-(defun lm-move-down ()
- "Move point down one row on the Lm board."
+(defun landmark-move-down ()
+ "Move point down one row on the Landmark board."
(interactive)
- (if (< (lm-point-y) lm-board-height)
- (forward-line 1)));;; lm-square-height)))
+ (if (< (landmark-point-y) landmark-board-height)
+ (forward-line 1)));;; landmark-square-height)))
-(defun lm-move-up ()
- "Move point up one row on the Lm board."
+(defun landmark-move-up ()
+ "Move point up one row on the Landmark board."
(interactive)
- (if (> (lm-point-y) 1)
- (forward-line (- lm-square-height))))
+ (if (> (landmark-point-y) 1)
+ (forward-line (- landmark-square-height))))
-(defun lm-move-ne ()
- "Move point North East on the Lm board."
+(defun landmark-move-ne ()
+ "Move point North East on the Landmark board."
(interactive)
- (lm-move-up)
+ (landmark-move-up)
(forward-char))
-(defun lm-move-se ()
- "Move point South East on the Lm board."
+(defun landmark-move-se ()
+ "Move point South East on the Landmark board."
(interactive)
- (lm-move-down)
+ (landmark-move-down)
(forward-char))
-(defun lm-move-nw ()
- "Move point North West on the Lm board."
+(defun landmark-move-nw ()
+ "Move point North West on the Landmark board."
(interactive)
- (lm-move-up)
+ (landmark-move-up)
(backward-char))
-(defun lm-move-sw ()
- "Move point South West on the Lm board."
+(defun landmark-move-sw ()
+ "Move point South West on the Landmark board."
(interactive)
- (lm-move-down)
+ (landmark-move-down)
(backward-char))
-(defun lm-beginning-of-line ()
- "Move point to first square on the Lm board row."
+(defun landmark-beginning-of-line ()
+ "Move point to first square on the Landmark board row."
(interactive)
- (move-to-column lm-x-offset))
+ (move-to-column landmark-x-offset))
-(defun lm-end-of-line ()
- "Move point to last square on the Lm board row."
+(defun landmark-end-of-line ()
+ "Move point to last square on the Landmark board row."
(interactive)
- (move-to-column (+ lm-x-offset
- (* lm-square-width (1- lm-board-width)))))
+ (move-to-column (+ landmark-x-offset
+ (* landmark-square-width (1- landmark-board-width)))))
;;;_ + Simulation variables
-;;;_ - lm-nvar
-(defvar lm-nvar 0.0075
+;;;_ - landmark-nvar
+(defvar landmark-nvar 0.0075
"Not used.
Affects a noise generator which was used in an earlier incarnation of
this program to add a random element to the way moves were made.")
;;;_ - lists of cardinal directions
;;;_ :
-(defvar lm-ns '(lm-n lm-s)
+(defvar landmark-ns '(landmark-n landmark-s)
"Used when doing something relative to the north and south axes.")
-(defvar lm-ew '(lm-e lm-w)
+(defvar landmark-ew '(landmark-e landmark-w)
"Used when doing something relative to the east and west axes.")
-(defvar lm-directions '(lm-n lm-s lm-e lm-w)
+(defvar landmark-directions '(landmark-n landmark-s landmark-e landmark-w)
"The cardinal directions.")
-(defvar lm-8-directions
- '((lm-n) (lm-n lm-w) (lm-w) (lm-s lm-w)
- (lm-s) (lm-s lm-e) (lm-e) (lm-n lm-e))
+(defvar landmark-8-directions
+ '((landmark-n) (landmark-n landmark-w) (landmark-w) (landmark-s landmark-w)
+ (landmark-s) (landmark-s landmark-e) (landmark-e) (landmark-n landmark-e))
"The full 8 possible directions.")
-(defvar lm-number-of-moves
+(defvar landmark-number-of-moves
"The number of moves made by the robot so far.")
;;;_* Terry's mods to create lm.el
-;;;(setq lm-debug nil)
-(defvar lm-debug nil
+;;;(setq landmark-debug nil)
+(defvar landmark-debug nil
"If non-nil, debugging is printed.")
-(defcustom lm-one-moment-please nil
+(defcustom landmark-one-moment-please nil
"If non-nil, print \"One moment please\" when a new board is generated.
The drawback of this is you don't see how many moves the last run took
because it is overwritten by \"One moment please\"."
:type 'boolean
- :group 'lm)
-(defcustom lm-output-moves t
+ :group 'landmark)
+(defcustom landmark-output-moves t
"If non-nil, output number of moves so far on a move-by-move basis."
:type 'boolean
- :group 'lm)
+ :group 'landmark)
-(defun lm-weights-debug ()
- (if lm-debug
- (progn (lm-print-wts) (lm-blackbox) (lm-print-y-s-noise)
- (lm-print-smell))))
+(defun landmark-weights-debug ()
+ (if landmark-debug
+ (progn (landmark-print-wts) (landmark-blackbox) (landmark-print-y-s-noise)
+ (landmark-print-smell))))
;;;_ - Printing various things
-(defun lm-print-distance-int (direction)
+(defun landmark-print-distance-int (direction)
(interactive)
(insert (format "%S %S " direction (get direction 'distance))))
-(defun lm-print-distance ()
- (insert (format "tree: %S \n" (calc-distance-of-robot-from 'lm-tree)))
- (mapc 'lm-print-distance-int lm-directions))
+(defun landmark-print-distance ()
+ (insert (format "tree: %S \n" (calc-distance-of-robot-from 'landmark-tree)))
+ (mapc 'landmark-print-distance-int landmark-directions))
-;;(setq direction 'lm-n)
-;;(get 'lm-n 'lm-s)
-(defun lm-nslify-wts-int (direction)
+;;(setq direction 'landmark-n)
+;;(get 'landmark-n 'landmark-s)
+(defun landmark-nslify-wts-int (direction)
(mapcar (lambda (target-direction)
(get direction target-direction))
- lm-directions))
+ landmark-directions))
-(defun lm-nslify-wts ()
+(defun landmark-nslify-wts ()
(interactive)
- (let ((l (apply 'append (mapcar 'lm-nslify-wts-int lm-directions))))
+ (let ((l (apply 'append (mapcar 'landmark-nslify-wts-int landmark-directions))))
(insert (format "set data_value WTS \n %s \n" l))
(insert (format "/* max: %S min: %S */"
(eval (cons 'max l)) (eval (cons 'min l))))))
-(defun lm-print-wts-int (direction)
+(defun landmark-print-wts-int (direction)
(mapc (lambda (target-direction)
(insert (format "%S %S %S "
direction
target-direction
(get direction target-direction))))
- lm-directions)
+ landmark-directions)
(insert "\n"))
-(defun lm-print-wts ()
+(defun landmark-print-wts ()
(interactive)
- (with-current-buffer "*lm-wts*"
+ (with-current-buffer "*landmark-wts*"
(insert "==============================\n")
- (mapc 'lm-print-wts-int lm-directions)))
+ (mapc 'landmark-print-wts-int landmark-directions)))
-(defun lm-print-moves (moves)
+(defun landmark-print-moves (moves)
(interactive)
- (with-current-buffer "*lm-moves*"
+ (with-current-buffer "*landmark-moves*"
(insert (format "%S\n" moves))))
-(defun lm-print-y-s-noise-int (direction)
- (insert (format "%S:lm-y %S, s %S, noise %S \n"
+(defun landmark-print-y-s-noise-int (direction)
+ (insert (format "%S:landmark-y %S, s %S, noise %S \n"
(symbol-name direction)
(get direction 'y_t)
(get direction 's)
(get direction 'noise)
)))
-(defun lm-print-y-s-noise ()
+(defun landmark-print-y-s-noise ()
(interactive)
- (with-current-buffer "*lm-y,s,noise*"
+ (with-current-buffer "*landmark-y,s,noise*"
(insert "==============================\n")
- (mapc 'lm-print-y-s-noise-int lm-directions)))
+ (mapc 'landmark-print-y-s-noise-int landmark-directions)))
-(defun lm-print-smell-int (direction)
+(defun landmark-print-smell-int (direction)
(insert (format "%S: smell: %S \n"
(symbol-name direction)
(get direction 'smell))))
-(defun lm-print-smell ()
+(defun landmark-print-smell ()
(interactive)
- (with-current-buffer "*lm-smell*"
+ (with-current-buffer "*landmark-smell*"
(insert "==============================\n")
(insert (format "tree: %S \n" (get 'z 't)))
- (mapc 'lm-print-smell-int lm-directions)))
+ (mapc 'landmark-print-smell-int landmark-directions)))
-(defun lm-print-w0-int (direction)
+(defun landmark-print-w0-int (direction)
(insert (format "%S: w0: %S \n"
(symbol-name direction)
(get direction 'w0))))
-(defun lm-print-w0 ()
+(defun landmark-print-w0 ()
(interactive)
- (with-current-buffer "*lm-w0*"
+ (with-current-buffer "*landmark-w0*"
(insert "==============================\n")
- (mapc 'lm-print-w0-int lm-directions)))
+ (mapc 'landmark-print-w0-int landmark-directions)))
-(defun lm-blackbox ()
- (with-current-buffer "*lm-blackbox*"
+(defun landmark-blackbox ()
+ (with-current-buffer "*landmark-blackbox*"
(insert "==============================\n")
(insert "I smell: ")
(mapc (lambda (direction)
(if (> (get direction 'smell) 0)
(insert (format "%S " direction))))
- lm-directions)
+ landmark-directions)
(insert "\n")
(insert "I move: ")
(mapc (lambda (direction)
(if (> (get direction 'y_t) 0)
(insert (format "%S " direction))))
- lm-directions)
+ landmark-directions)
(insert "\n")
- (lm-print-wts-blackbox)
+ (landmark-print-wts-blackbox)
(insert (format "z_t-z_t-1: %S" (- (get 'z 't) (get 'z 't-1))))
- (lm-print-distance)
+ (landmark-print-distance)
(insert "\n")))
-(defun lm-print-wts-blackbox ()
+(defun landmark-print-wts-blackbox ()
(interactive)
- (mapc 'lm-print-wts-int lm-directions))
+ (mapc 'landmark-print-wts-int landmark-directions))
;;;_ - learning parameters
-(defcustom lm-bound 0.005
+(defcustom landmark-bound 0.005
"The maximum that w0j may be."
:type 'number
- :group 'lm)
-(defcustom lm-c 1.0
+ :group 'landmark)
+(defcustom landmark-c 1.0
"A factor applied to modulate the increase in wij.
-Used in the function lm-update-normal-weights."
+Used in the function landmark-update-normal-weights."
:type 'number
- :group 'lm)
-(defcustom lm-c-naught 0.5
+ :group 'landmark)
+(defcustom landmark-c-naught 0.5
"A factor applied to modulate the increase in w0j.
-Used in the function lm-update-naught-weights."
+Used in the function landmark-update-naught-weights."
:type 'number
- :group 'lm)
-(defvar lm-initial-w0 0.0)
-(defvar lm-initial-wij 0.0)
-(defcustom lm-no-payoff 0
+ :group 'landmark)
+(defvar landmark-initial-w0 0.0)
+(defvar landmark-initial-wij 0.0)
+(defcustom landmark-no-payoff 0
"The amount of simulation cycles that have occurred with no movement.
Used to move the robot when he is stuck in a rut for some reason."
:type 'integer
- :group 'lm)
-(defcustom lm-max-stall-time 2
+ :group 'landmark)
+(defcustom landmark-max-stall-time 2
"The maximum number of cycles that the robot can remain stuck in a place.
-After this limit is reached, lm-random-move is called to push him out of it."
+After this limit is reached, landmark-random-move is called to push him out of it."
:type 'integer
- :group 'lm)
+ :group 'landmark)
;;;_ + Randomizing functions
-;;;_ - lm-flip-a-coin ()
-(defun lm-flip-a-coin ()
+;;;_ - landmark-flip-a-coin ()
+(defun landmark-flip-a-coin ()
(if (> (random 5000) 2500)
-1
1))
-;;;_ : lm-very-small-random-number ()
-;(defun lm-very-small-random-number ()
+;;;_ : landmark-very-small-random-number ()
+;(defun landmark-very-small-random-number ()
; (/
; (* (/ (random 900000) 900000.0) .0001)))
-;;;_ : lm-randomize-weights-for (direction)
-(defun lm-randomize-weights-for (direction)
+;;;_ : landmark-randomize-weights-for (direction)
+(defun landmark-randomize-weights-for (direction)
(mapc (lambda (target-direction)
(put direction
target-direction
- (* (lm-flip-a-coin) (/ (random 10000) 10000.0))))
- lm-directions))
-;;;_ : lm-noise ()
-(defun lm-noise ()
- (* (- (/ (random 30001) 15000.0) 1) lm-nvar))
-
-;;;_ : lm-fix-weights-for (direction)
-(defun lm-fix-weights-for (direction)
+ (* (landmark-flip-a-coin) (/ (random 10000) 10000.0))))
+ landmark-directions))
+;;;_ : landmark-noise ()
+(defun landmark-noise ()
+ (* (- (/ (random 30001) 15000.0) 1) landmark-nvar))
+
+;;;_ : landmark-fix-weights-for (direction)
+(defun landmark-fix-weights-for (direction)
(mapc (lambda (target-direction)
(put direction
target-direction
- lm-initial-wij))
- lm-directions))
+ landmark-initial-wij))
+ landmark-directions))
;;;_ + Plotting functions
-;;;_ - lm-plot-internal (sym)
-(defun lm-plot-internal (sym)
- (lm-plot-square (lm-xy-to-index
+;;;_ - landmark-plot-internal (sym)
+(defun landmark-plot-internal (sym)
+ (landmark-plot-square (landmark-xy-to-index
(get sym 'x)
(get sym 'y))
(get sym 'sym)))
-;;;_ - lm-plot-landmarks ()
-(defun lm-plot-landmarks ()
- (setq lm-cx (/ lm-board-width 2))
- (setq lm-cy (/ lm-board-height 2))
+;;;_ - landmark-plot-landmarks ()
+(defun landmark-plot-landmarks ()
+ (setq landmark-cx (/ landmark-board-width 2))
+ (setq landmark-cy (/ landmark-board-height 2))
- (put 'lm-n 'x lm-cx)
- (put 'lm-n 'y 1)
- (put 'lm-n 'sym 2)
+ (put 'landmark-n 'x landmark-cx)
+ (put 'landmark-n 'y 1)
+ (put 'landmark-n 'sym 2)
- (put 'lm-tree 'x lm-cx)
- (put 'lm-tree 'y lm-cy)
- (put 'lm-tree 'sym 6)
+ (put 'landmark-tree 'x landmark-cx)
+ (put 'landmark-tree 'y landmark-cy)
+ (put 'landmark-tree 'sym 6)
- (put 'lm-s 'x lm-cx)
- (put 'lm-s 'y lm-board-height)
- (put 'lm-s 'sym 3)
+ (put 'landmark-s 'x landmark-cx)
+ (put 'landmark-s 'y landmark-board-height)
+ (put 'landmark-s 'sym 3)
- (put 'lm-w 'x 1)
- (put 'lm-w 'y (/ lm-board-height 2))
- (put 'lm-w 'sym 5)
+ (put 'landmark-w 'x 1)
+ (put 'landmark-w 'y (/ landmark-board-height 2))
+ (put 'landmark-w 'sym 5)
- (put 'lm-e 'x lm-board-width)
- (put 'lm-e 'y (/ lm-board-height 2))
- (put 'lm-e 'sym 4)
+ (put 'landmark-e 'x landmark-board-width)
+ (put 'landmark-e 'y (/ landmark-board-height 2))
+ (put 'landmark-e 'sym 4)
- (mapc 'lm-plot-internal '(lm-n lm-s lm-e lm-w lm-tree)))
+ (mapc 'landmark-plot-internal '(landmark-n landmark-s landmark-e landmark-w landmark-tree)))
@@ -1357,9 +1356,9 @@ After this limit is reached, lm-random-move is called to push him out of it."
(defun calc-distance-of-robot-from (direction)
(put direction 'distance
(distance (get direction 'x)
- (lm-index-to-x (lm-point-square))
+ (landmark-index-to-x (landmark-point-square))
(get direction 'y)
- (lm-index-to-y (lm-point-square)))))
+ (landmark-index-to-y (landmark-point-square)))))
;;;_ - calc-smell-internal (sym)
(defun calc-smell-internal (sym)
@@ -1371,269 +1370,259 @@ After this limit is reached, lm-random-move is called to push him out of it."
;;;_ + Learning (neural) functions
-(defun lm-f (x)
+(defun landmark-f (x)
(cond
- ((> x lm-bound) lm-bound)
+ ((> x landmark-bound) landmark-bound)
((< x 0.0) 0.0)
(t x)))
-(defun lm-y (direction)
- (let ((noise (put direction 'noise (lm-noise))))
+(defun landmark-y (direction)
+ (let ((noise (put direction 'noise (landmark-noise))))
(put direction 'y_t
(if (> (get direction 's) 0.0)
1.0
0.0))))
-(defun lm-update-normal-weights (direction)
+(defun landmark-update-normal-weights (direction)
(mapc (lambda (target-direction)
(put direction target-direction
(+
(get direction target-direction)
- (* lm-c
+ (* landmark-c
(- (get 'z 't) (get 'z 't-1))
(get target-direction 'y_t)
(get direction 'smell)))))
- lm-directions))
+ landmark-directions))
-(defun lm-update-naught-weights (direction)
+(defun landmark-update-naught-weights (direction)
(mapc (lambda (target-direction)
(put direction 'w0
- (lm-f
+ (landmark-f
(+
(get direction 'w0)
- (* lm-c-naught
+ (* landmark-c-naught
(- (get 'z 't) (get 'z 't-1))
(get direction 'y_t))))))
- lm-directions))
+ landmark-directions))
;;;_ + Statistics gathering and creating functions
-(defun lm-calc-current-smells ()
+(defun landmark-calc-current-smells ()
(mapc (lambda (direction)
(put direction 'smell (calc-smell-internal direction)))
- lm-directions))
+ landmark-directions))
-(defun lm-calc-payoff ()
+(defun landmark-calc-payoff ()
(put 'z 't-1 (get 'z 't))
- (put 'z 't (calc-smell-internal 'lm-tree))
+ (put 'z 't (calc-smell-internal 'landmark-tree))
(if (= (- (get 'z 't) (get 'z 't-1)) 0.0)
- (incf lm-no-payoff)
- (setf lm-no-payoff 0)))
+ (incf landmark-no-payoff)
+ (setf landmark-no-payoff 0)))
-(defun lm-store-old-y_t ()
+(defun landmark-store-old-y_t ()
(mapc (lambda (direction)
(put direction 'y_t-1 (get direction 'y_t)))
- lm-directions))
+ landmark-directions))
;;;_ + Functions to move robot
-(defun lm-confidence-for (target-direction)
+(defun landmark-confidence-for (target-direction)
(apply '+
(get target-direction 'w0)
(mapcar (lambda (direction)
(*
(get direction target-direction)
(get direction 'smell)))
- lm-directions)))
+ landmark-directions)))
-(defun lm-calc-confidences ()
+(defun landmark-calc-confidences ()
(mapc (lambda (direction)
- (put direction 's (lm-confidence-for direction)))
- lm-directions))
+ (put direction 's (landmark-confidence-for direction)))
+ landmark-directions))
-(defun lm-move ()
- (if (and (= (get 'lm-n 'y_t) 1.0) (= (get 'lm-s 'y_t) 1.0))
+(defun landmark-move ()
+ (if (and (= (get 'landmark-n 'y_t) 1.0) (= (get 'landmark-s 'y_t) 1.0))
(progn
- (mapc (lambda (dir) (put dir 'y_t 0)) lm-ns)
- (if lm-debug
+ (mapc (lambda (dir) (put dir 'y_t 0)) landmark-ns)
+ (if landmark-debug
(message "n-s normalization."))))
- (if (and (= (get 'lm-w 'y_t) 1.0) (= (get 'lm-e 'y_t) 1.0))
+ (if (and (= (get 'landmark-w 'y_t) 1.0) (= (get 'landmark-e 'y_t) 1.0))
(progn
- (mapc (lambda (dir) (put dir 'y_t 0)) lm-ew)
- (if lm-debug
+ (mapc (lambda (dir) (put dir 'y_t 0)) landmark-ew)
+ (if landmark-debug
(message "e-w normalization"))))
(mapc (lambda (pair)
(if (> (get (car pair) 'y_t) 0)
(funcall (car (cdr pair)))))
'(
- (lm-n lm-move-up)
- (lm-s lm-move-down)
- (lm-e forward-char)
- (lm-w backward-char)))
- (lm-plot-square (lm-point-square) 1)
- (incf lm-number-of-moves)
- (if lm-output-moves
- (message "Moves made: %d" lm-number-of-moves)))
+ (landmark-n landmark-move-up)
+ (landmark-s landmark-move-down)
+ (landmark-e forward-char)
+ (landmark-w backward-char)))
+ (landmark-plot-square (landmark-point-square) 1)
+ (incf landmark-number-of-moves)
+ (if landmark-output-moves
+ (message "Moves made: %d" landmark-number-of-moves)))
-(defun lm-random-move ()
+(defun landmark-random-move ()
(mapc
(lambda (direction) (put direction 'y_t 0))
- lm-directions)
- (dolist (direction (nth (random 8) lm-8-directions))
+ landmark-directions)
+ (dolist (direction (nth (random 8) landmark-8-directions))
(put direction 'y_t 1.0))
- (lm-move))
+ (landmark-move))
-(defun lm-amble-robot ()
+(defun landmark-amble-robot ()
(interactive)
- (while (> (calc-distance-of-robot-from 'lm-tree) 0)
+ (while (> (calc-distance-of-robot-from 'landmark-tree) 0)
- (lm-store-old-y_t)
- (lm-calc-current-smells)
+ (landmark-store-old-y_t)
+ (landmark-calc-current-smells)
- (if (> lm-no-payoff lm-max-stall-time)
- (lm-random-move)
+ (if (> landmark-no-payoff landmark-max-stall-time)
+ (landmark-random-move)
(progn
- (lm-calc-confidences)
- (mapc 'lm-y lm-directions)
- (lm-move)))
+ (landmark-calc-confidences)
+ (mapc 'landmark-y landmark-directions)
+ (landmark-move)))
- (lm-calc-payoff)
+ (landmark-calc-payoff)
- (mapc 'lm-update-normal-weights lm-directions)
- (mapc 'lm-update-naught-weights lm-directions)
- (if lm-debug
- (lm-weights-debug)))
- (lm-terminate-game nil))
+ (mapc 'landmark-update-normal-weights landmark-directions)
+ (mapc 'landmark-update-naught-weights landmark-directions)
+ (if landmark-debug
+ (landmark-weights-debug)))
+ (landmark-terminate-game nil))
-;;;_ - lm-start-robot ()
-(defun lm-start-robot ()
- "Signal to the Lm program that you have played.
+;;;_ - landmark-start-robot ()
+(defun landmark-start-robot ()
+ "Signal to the Landmark program that you have played.
You must have put the cursor on the square where you want to play.
If the game is finished, this command requests for another game."
(interactive)
- (lm-switch-to-window)
+ (landmark-switch-to-window)
(cond
- (lm-emacs-is-computing
- (lm-crash-game))
- ((not lm-game-in-progress)
- (lm-prompt-for-other-game))
+ (landmark-emacs-is-computing
+ (landmark-crash-game))
+ ((not landmark-game-in-progress)
+ (landmark-prompt-for-other-game))
(t
(let (square score)
- (setq square (lm-point-square))
+ (setq square (landmark-point-square))
(cond ((null square)
(error "Your point is not on a square. Retry!"))
- ((not (zerop (aref lm-board square)))
+ ((not (zerop (aref landmark-board square)))
(error "Your point is not on a free square. Retry!"))
(t
(progn
- (lm-plot-square square 1)
+ (landmark-plot-square square 1)
- (lm-store-old-y_t)
- (lm-calc-current-smells)
- (put 'z 't (calc-smell-internal 'lm-tree))
+ (landmark-store-old-y_t)
+ (landmark-calc-current-smells)
+ (put 'z 't (calc-smell-internal 'landmark-tree))
- (lm-random-move)
+ (landmark-random-move)
- (lm-calc-payoff)
+ (landmark-calc-payoff)
- (mapc 'lm-update-normal-weights lm-directions)
- (mapc 'lm-update-naught-weights lm-directions)
- (lm-amble-robot)
+ (mapc 'landmark-update-normal-weights landmark-directions)
+ (mapc 'landmark-update-naught-weights landmark-directions)
+ (landmark-amble-robot)
)))))))
;;;_ + Misc functions
-;;;_ - lm-init (auto-start save-weights)
-(defvar lm-tree-r "")
+;;;_ - landmark-init (auto-start save-weights)
+(defvar landmark-tree-r "")
-(defun lm-init (auto-start save-weights)
+(defun landmark-init (auto-start save-weights)
- (setq lm-number-of-moves 0)
+ (setq landmark-number-of-moves 0)
- (lm-plot-landmarks)
+ (landmark-plot-landmarks)
- (if lm-debug
+ (if landmark-debug
(save-current-buffer
- (set-buffer (get-buffer-create "*lm-w0*"))
+ (set-buffer (get-buffer-create "*landmark-w0*"))
(erase-buffer)
- (set-buffer (get-buffer-create "*lm-moves*"))
- (set-buffer (get-buffer-create "*lm-wts*"))
+ (set-buffer (get-buffer-create "*landmark-moves*"))
+ (set-buffer (get-buffer-create "*landmark-wts*"))
(erase-buffer)
- (set-buffer (get-buffer-create "*lm-y,s,noise*"))
+ (set-buffer (get-buffer-create "*landmark-y,s,noise*"))
(erase-buffer)
- (set-buffer (get-buffer-create "*lm-smell*"))
+ (set-buffer (get-buffer-create "*landmark-smell*"))
(erase-buffer)
- (set-buffer (get-buffer-create "*lm-blackbox*"))
+ (set-buffer (get-buffer-create "*landmark-blackbox*"))
(erase-buffer)
- (set-buffer (get-buffer-create "*lm-distance*"))
+ (set-buffer (get-buffer-create "*landmark-distance*"))
(erase-buffer)))
- (lm-set-landmark-signal-strengths)
+ (landmark-set-landmark-signal-strengths)
- (dolist (direction lm-directions)
+ (dolist (direction landmark-directions)
(put direction 'y_t 0.0))
(if (not save-weights)
(progn
- (mapc 'lm-fix-weights-for lm-directions)
- (dolist (direction lm-directions)
- (put direction 'w0 lm-initial-w0)))
+ (mapc 'landmark-fix-weights-for landmark-directions)
+ (dolist (direction landmark-directions)
+ (put direction 'w0 landmark-initial-w0)))
(message "Weights preserved for this run."))
(if auto-start
(progn
- (lm-goto-xy (1+ (random lm-board-width)) (1+ (random lm-board-height)))
- (lm-start-robot))))
+ (landmark-goto-xy (1+ (random landmark-board-width)) (1+ (random landmark-board-height)))
+ (landmark-start-robot))))
;;;_ - something which doesn't work
; no-a-worka!!
-;(defum lm-sum-list (list)
+;(defum landmark-sum-list (list)
; (if (> (length list) 0)
-; (+ (car list) (lm-sum-list (cdr list)))
+; (+ (car list) (landmark-sum-list (cdr list)))
; 0))
; this a worka!
; (eval (cons '+ list))
-;;;_ - lm-set-landmark-signal-strengths ()
+;;;_ - landmark-set-landmark-signal-strengths ()
;;; on a screen higher than wide, I noticed that the robot would amble
-;;; left and right and not move forward. examining *lm-blackbox*
+;;; left and right and not move forward. examining *landmark-blackbox*
;;; revealed that there was no scent from the north and south
;;; landmarks, hence, they need less factoring down of the effect of
;;; distance on scent.
-(defun lm-set-landmark-signal-strengths ()
-
- (setq lm-tree-r (* (sqrt (+ (square lm-cx) (square lm-cy))) 1.5))
-
+(defun landmark-set-landmark-signal-strengths ()
+ (setq landmark-tree-r (* (sqrt (+ (square landmark-cx) (square landmark-cy))) 1.5))
(mapc (lambda (direction)
- (put direction 'r (* lm-cx 1.1)))
- lm-ew)
+ (put direction 'r (* landmark-cx 1.1)))
+ landmark-ew)
(mapc (lambda (direction)
- (put direction 'r (* lm-cy 1.1)))
- lm-ns)
- (put 'lm-tree 'r lm-tree-r))
+ (put direction 'r (* landmark-cy 1.1)))
+ landmark-ns)
+ (put 'landmark-tree 'r landmark-tree-r))
-;;;_ + lm-test-run ()
+;;;_ + landmark-test-run ()
;;;###autoload
-(defalias 'landmark-repeat 'lm-test-run)
+(defalias 'landmark-repeat 'landmark-test-run)
;;;###autoload
-(defun lm-test-run ()
- "Run 100 Lm games, each time saving the weights from the previous game."
+(defun landmark-test-run ()
+ "Run 100 Landmark games, each time saving the weights from the previous game."
(interactive)
-
- (lm 1)
-
+ (landmark 1)
(dotimes (scratch-var 100)
+ (landmark 2)))
- (lm 2)))
-
-
-;;;_ + lm: The function you invoke to play
-
-;;;###autoload
-(defalias 'landmark 'lm)
;;;###autoload
-(defun lm (parg)
- "Start or resume an Lm game.
+(defun landmark (parg)
+ "Start or resume an Landmark game.
If a game is in progress, this command allows you to resume it.
Here is the relation between prefix args and game options:
@@ -1644,37 +1633,37 @@ none / 1 | yes | no
3 | no | yes
4 | no | no
-You start by moving to a square and typing \\[lm-start-robot],
+You start by moving to a square and typing \\[landmark-start-robot],
if you did not use a prefix arg to ask for automatic start.
Use \\[describe-mode] for more info."
(interactive "p")
- (setf lm-n nil lm-m nil)
- (lm-switch-to-window)
+ (setf landmark-n nil landmark-m nil)
+ (landmark-switch-to-window)
(cond
- (lm-emacs-is-computing
- (lm-crash-game))
- ((or (not lm-game-in-progress)
- (<= lm-number-of-moves 2))
- (let ((max-width (lm-max-width))
- (max-height (lm-max-height)))
- (or lm-n (setq lm-n max-width))
- (or lm-m (setq lm-m max-height))
- (cond ((< lm-n 1)
+ (landmark-emacs-is-computing
+ (landmark-crash-game))
+ ((or (not landmark-game-in-progress)
+ (<= landmark-number-of-moves 2))
+ (let ((max-width (landmark-max-width))
+ (max-height (landmark-max-height)))
+ (or landmark-n (setq landmark-n max-width))
+ (or landmark-m (setq landmark-m max-height))
+ (cond ((< landmark-n 1)
(error "I need at least 1 column"))
- ((< lm-m 1)
+ ((< landmark-m 1)
(error "I need at least 1 row"))
- ((> lm-n max-width)
- (error "I cannot display %d columns in that window" lm-n)))
- (if (and (> lm-m max-height)
- (not (eq lm-m lm-saved-board-height))
+ ((> landmark-n max-width)
+ (error "I cannot display %d columns in that window" landmark-n)))
+ (if (and (> landmark-m max-height)
+ (not (eq landmark-m landmark-saved-board-height))
;; Use EQ because SAVED-BOARD-HEIGHT may be nil
- (not (y-or-n-p (format "Do you really want %d rows? " lm-m))))
- (setq lm-m max-height)))
- (if lm-one-moment-please
+ (not (y-or-n-p (format "Do you really want %d rows? " landmark-m))))
+ (setq landmark-m max-height)))
+ (if landmark-one-moment-please
(message "One moment, please..."))
- (lm-start-game lm-n lm-m)
- (eval (cons 'lm-init
+ (landmark-start-game landmark-n landmark-m)
+ (eval (cons 'landmark-init
(cond
((= parg 1) '(t nil))
((= parg 2) '(t t))
diff --git a/lisp/play/life.el b/lisp/play/life.el
index 996b0c6144..7cdc413619 100644
--- a/lisp/play/life.el
+++ b/lisp/play/life.el
@@ -1,7 +1,6 @@
;;; life.el --- John Horton Conway's `Life' game for GNU Emacs
-;; Copyright (C) 1988, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 2001-2011 Free Software Foundation, Inc.
;; Author: Kyle Jones <kyleuunet.uu.net>
;; Maintainer: FSF
diff --git a/lisp/play/meese.el b/lisp/play/meese.el
index 115befa6c3..d811dacb9b 100644
--- a/lisp/play/meese.el
+++ b/lisp/play/meese.el
@@ -34,5 +34,4 @@
(add-hook 'find-file-hook 'protect-innocence-hook)
(provide 'meese)
-;; arch-tag: 47af12d2-6a7d-4e2e-a1ea-eae75a77e3f0
;;; meese.el ends here
diff --git a/lisp/play/morse.el b/lisp/play/morse.el
index c5ea7b0552..d4a0224ede 100644
--- a/lisp/play/morse.el
+++ b/lisp/play/morse.el
@@ -1,7 +1,6 @@
;;; morse.el --- convert text to morse code and back -*- coding: utf-8 -*-
-;; Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Rick Farnbach <[email protected]>
;; Keywords: games
@@ -139,5 +138,4 @@
(provide 'morse)
-;; arch-tag: 3331e6c1-9a9e-453f-abfd-163a9c3f93a6
;;; morse.el ends here
diff --git a/lisp/play/mpuz.el b/lisp/play/mpuz.el
index c5b74a8499..269da0a061 100644
--- a/lisp/play/mpuz.el
+++ b/lisp/play/mpuz.el
@@ -1,7 +1,6 @@
;;; mpuz.el --- multiplication puzzle for GNU Emacs
-;; Copyright (C) 1990, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990, 2001-2011 Free Software Foundation, Inc.
;; Author: Philippe Schnoebelen <[email protected]>
;; Overhauled: Daniel Pfeiffer <[email protected]>
@@ -519,5 +518,4 @@ You may abort a game by typing \\<mpuz-mode-map>\\[mpuz-offer-abort]."
(provide 'mpuz)
-;; arch-tag: 2781d6ba-89e7-43b5-85c7-5d3a2e73feb1
;;; mpuz.el ends here
diff --git a/lisp/play/pong.el b/lisp/play/pong.el
index 523b8371a0..a291283170 100644
--- a/lisp/play/pong.el
+++ b/lisp/play/pong.el
@@ -1,7 +1,6 @@
;;; pong.el --- classical implementation of pong
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Benjamin Drieu <[email protected]>
;; Keywords: games
@@ -458,5 +457,4 @@ pong-mode keybindings:\\<pong-mode-map>
(provide 'pong)
-;; arch-tag: 1fdf0fc5-13e2-4de4-aae4-09bdd5af99f3
;;; pong.el ends here
diff --git a/lisp/play/snake.el b/lisp/play/snake.el
index 3ce8ff6ee9..3714e6be4d 100644
--- a/lisp/play/snake.el
+++ b/lisp/play/snake.el
@@ -1,7 +1,6 @@
;;; snake.el --- implementation of Snake for Emacs
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Glynn Clements <[email protected]>
;; Created: 1997-09-10
@@ -412,5 +411,4 @@ Snake mode keybindings:
(provide 'snake)
-;; arch-tag: 512ffc92-cfac-4287-9a4e-92890701a5c8
;;; snake.el ends here
diff --git a/lisp/play/solitaire.el b/lisp/play/solitaire.el
index 63b2a93a3c..d58a81b5ae 100644
--- a/lisp/play/solitaire.el
+++ b/lisp/play/solitaire.el
@@ -1,7 +1,6 @@
;;; solitaire.el --- game of solitaire in Emacs Lisp
-;; Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Jan Schormann <[email protected]>
;; Created: Fri afternoon, Jun 3, 1994
@@ -447,5 +446,4 @@ Seen in info on text lines."
(provide 'solitaire)
-;; arch-tag: 1b18ee1c-1e79-4a5b-8658-9560b82e63dd
;;; solitaire.el ends here
diff --git a/lisp/play/spook.el b/lisp/play/spook.el
index 77062d37a7..6cab994a9c 100644
--- a/lisp/play/spook.el
+++ b/lisp/play/spook.el
@@ -1,7 +1,6 @@
;;; spook.el --- spook phrase utility for overloading the NSA line eater
-;; Copyright (C) 1988, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1993, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: games
@@ -76,5 +75,4 @@
(provide 'spook)
-;; arch-tag: c682b61f-92b6-4492-9c0d-2367e562449c
;;; spook.el ends here
diff --git a/lisp/play/studly.el b/lisp/play/studly.el
index b9bd173d5f..d28304df1e 100644
--- a/lisp/play/studly.el
+++ b/lisp/play/studly.el
@@ -68,5 +68,4 @@
(provide 'studly)
-;; arch-tag: 0dbf5a60-d2e6-48c2-86ae-77fc8575ac67
;;; studly.el ends here
diff --git a/lisp/play/tetris.el b/lisp/play/tetris.el
index 68d1590e57..2935ff04c9 100644
--- a/lisp/play/tetris.el
+++ b/lisp/play/tetris.el
@@ -1,7 +1,6 @@
;;; tetris.el --- implementation of Tetris for Emacs
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Glynn Clements <[email protected]>
;; Version: 2.01
@@ -641,5 +640,4 @@ tetris-mode keybindings:
(provide 'tetris)
-;; arch-tag: fb780d53-3ff0-49f0-8e19-f7f13cf2d49e
;;; tetris.el ends here
diff --git a/lisp/play/yow.el b/lisp/play/yow.el
index 72fd01353b..d75e04eb74 100644
--- a/lisp/play/yow.el
+++ b/lisp/play/yow.el
@@ -1,7 +1,6 @@
;;; yow.el --- quote random zippyisms
-;; Copyright (C) 1993, 1994, 1995, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1995, 2000-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Author: Richard Mlynarik
@@ -128,5 +127,4 @@ If called interactively, display a list of matches."
(provide 'yow)
-;; arch-tag: d13db89b-84f1-4141-a5ce-261d1733a65c
;;; yow.el ends here
diff --git a/lisp/play/zone.el b/lisp/play/zone.el
index 4fa5a8c392..75c3b6fbc7 100644
--- a/lisp/play/zone.el
+++ b/lisp/play/zone.el
@@ -1,7 +1,6 @@
;;; zone.el --- idle display hacks
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Victor Zandy <[email protected]>
;; Maintainer: Thien-Thi Nguyen <[email protected]>
@@ -684,5 +683,4 @@ If nil, `zone-pgm-random-life' chooses a value from 0-3 (inclusive).")
;;;;;;;;;;;;;;;
(provide 'zone)
-;; arch-tag: 7092503d-74a9-4325-a55c-a026ede58cea
;;; zone.el ends here
diff --git a/lisp/printing.el b/lisp/printing.el
index ecbc82e014..99ed8c0426 100644
--- a/lisp/printing.el
+++ b/lisp/printing.el
@@ -1,7 +1,6 @@
;;; printing.el --- printing utilities
-;; Copyright (C) 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2001, 2003-2011 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <[email protected]>
;; Maintainer: Vinicius Jose Latorre <[email protected]>
diff --git a/lisp/proced.el b/lisp/proced.el
index ee4e7b26ca..ce3ad08598 100644
--- a/lisp/proced.el
+++ b/lisp/proced.el
@@ -1,6 +1,6 @@
;;; proced.el --- operate on system processes like dired
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Roland Winkler <[email protected]>
;; Keywords: Processes, Unix
@@ -1880,5 +1880,4 @@ Killed processes cannot be recovered by Emacs."))
(provide 'proced)
-;; arch-tag: a6e312ad-9032-45aa-972d-31a8cfc545af
;;; proced.el ends here
diff --git a/lisp/progmodes/ada-mode.el b/lisp/progmodes/ada-mode.el
index b45c4b1eb7..beb737ba61 100644
--- a/lisp/progmodes/ada-mode.el
+++ b/lisp/progmodes/ada-mode.el
@@ -1,8 +1,6 @@
;;; ada-mode.el --- major-mode for editing Ada sources
-;; Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1994-1995, 1997-2011 Free Software Foundation, Inc.
;; Author: Rolf Ebert <[email protected]>
;; Markus Heritsch <[email protected]>
diff --git a/lisp/progmodes/ada-prj.el b/lisp/progmodes/ada-prj.el
index 3d10e482be..d739714449 100644
--- a/lisp/progmodes/ada-prj.el
+++ b/lisp/progmodes/ada-prj.el
@@ -1,7 +1,6 @@
;;; ada-prj.el --- GUI editing of project files for the ada-mode
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Emmanuel Briot <[email protected]>
;; Maintainer: Stephen Leake <[email protected]>
diff --git a/lisp/progmodes/ada-stmt.el b/lisp/progmodes/ada-stmt.el
index b618b26c73..e48055c9f5 100644
--- a/lisp/progmodes/ada-stmt.el
+++ b/lisp/progmodes/ada-stmt.el
@@ -1,8 +1,6 @@
;;; ada-stmt.el --- an extension to Ada mode for inserting statement templates
-;; Copyright (C) 1987, 1993, 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1987, 1993-1994, 1996-2011 Free Software Foundation, Inc.
;; Authors: Daniel Pfeiffer
;; Markus Heritsch
@@ -484,5 +482,4 @@ Invoke right after `ada-function-spec' or `ada-procedure-spec'."
(provide 'ada-stmt)
-;; arch-tag: 94f51555-cc0e-44e5-8865-8788aae8ecd3
;;; ada-stmt.el ends here
diff --git a/lisp/progmodes/ada-xref.el b/lisp/progmodes/ada-xref.el
index 36e297182c..85659cafd9 100644
--- a/lisp/progmodes/ada-xref.el
+++ b/lisp/progmodes/ada-xref.el
@@ -1,8 +1,6 @@
;; ada-xref.el --- for lookup and completion in Ada mode
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1994-2011 Free Software Foundation, Inc.
;; Author: Markus Heritsch <[email protected]>
;; Rolf Ebert <[email protected]>
diff --git a/lisp/progmodes/antlr-mode.el b/lisp/progmodes/antlr-mode.el
index 3e3e315c50..c520713901 100644
--- a/lisp/progmodes/antlr-mode.el
+++ b/lisp/progmodes/antlr-mode.el
@@ -1,7 +1,6 @@
;;; antlr-mode.el --- major mode for ANTLR grammar files
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: [email protected]
;; Keywords: languages, ANTLR, code generator
@@ -2182,36 +2181,32 @@ grammar file in which CLASS is defined and EVOCAB is the name of the
export vocabulary specified in that file."
(let ((grammar (directory-files dirname t "\\.g\\'")))
(when grammar
- (let ((temp-buffer (get-buffer-create
- (generate-new-buffer-name " *temp*")))
- (antlr-imenu-name nil) ; dynamic-let: no imenu
- (expanded-regexp (concat (format (regexp-quote
- (cadr antlr-special-file-formats))
- ".+")
- "\\'"))
+ (let ((antlr-imenu-name nil) ; dynamic-let: no imenu
+ (expanded-regexp
+ (concat (format (regexp-quote
+ (cadr antlr-special-file-formats))
+ ".+")
+ "\\'"))
classes dependencies)
- (unwind-protect
- (with-current-buffer temp-buffer
- (widen) ; just in case...
- (dolist (file grammar)
- (when (and (file-regular-p file)
- (null (string-match expanded-regexp file)))
- (insert-file-contents file t nil nil t)
- (normal-mode t) ; necessary for major-mode, syntax
+ (with-temp-buffer
+ (dolist (file grammar)
+ (when (and (file-regular-p file)
+ (null (string-match expanded-regexp file)))
+ (insert-file-contents file t nil nil t)
+ (normal-mode t) ; necessary for major-mode, syntax
; table and `antlr-language'
- (when (derived-mode-p 'antlr-mode)
- (let* ((file-deps (antlr-file-dependencies))
- (file (car file-deps)))
- (when file-deps
- (dolist (class-def (caadr file-deps))
- (let ((file-evocab (cons file (cdr class-def)))
- (class-spec (assoc (car class-def) classes)))
- (if class-spec
- (nconc (cdr class-spec) (list file-evocab))
- (push (list (car class-def) file-evocab)
- classes))))
- (push file-deps dependencies)))))))
- (kill-buffer temp-buffer))
+ (when (derived-mode-p 'antlr-mode)
+ (let* ((file-deps (antlr-file-dependencies))
+ (file (car file-deps)))
+ (when file-deps
+ (dolist (class-def (caadr file-deps))
+ (let ((file-evocab (cons file (cdr class-def)))
+ (class-spec (assoc (car class-def) classes)))
+ (if class-spec
+ (nconc (cdr class-spec) (list file-evocab))
+ (push (list (car class-def) file-evocab)
+ classes))))
+ (push file-deps dependencies)))))))
(cons (nreverse classes) (nreverse dependencies))))))
@@ -2667,5 +2662,4 @@ Used in `antlr-mode'. Also a useful function in `java-mode-hook'."
;;; Local IspellPersDict: .ispell_antlr
-;; arch-tag: 5de2be79-3d13-4560-8fbc-f7d0234dcb5c
;;; antlr-mode.el ends here
diff --git a/lisp/progmodes/asm-mode.el b/lisp/progmodes/asm-mode.el
index 12179e8f9b..9d79d22d42 100644
--- a/lisp/progmodes/asm-mode.el
+++ b/lisp/progmodes/asm-mode.el
@@ -1,7 +1,6 @@
;;; asm-mode.el --- mode for editing assembler code
-;; Copyright (C) 1991, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1991, 2001-2011 Free Software Foundation, Inc.
;; Author: Eric S. Raymond <[email protected]>
;; Maintainer: FSF
@@ -243,5 +242,4 @@ repeatedly until you are satisfied with the kind of comment."
(provide 'asm-mode)
-;; arch-tag: 210e695f-f338-4376-8913-a4c5c72ac848
;;; asm-mode.el ends here
diff --git a/lisp/progmodes/autoconf.el b/lisp/progmodes/autoconf.el
index 827949cc70..3aa9a6cfb8 100644
--- a/lisp/progmodes/autoconf.el
+++ b/lisp/progmodes/autoconf.el
@@ -1,7 +1,6 @@
;;; autoconf.el --- mode for editing Autoconf configure.in files
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Keywords: languages
@@ -99,5 +98,4 @@ searching backwards at another AC_... command."
(provide 'autoconf-mode)
(provide 'autoconf)
-;; arch-tag: 4f44778f-2ab3-49a1-a103-f0acb9df2de4
;;; autoconf.el ends here
diff --git a/lisp/progmodes/bug-reference.el b/lisp/progmodes/bug-reference.el
index 4897581252..4d78047268 100644
--- a/lisp/progmodes/bug-reference.el
+++ b/lisp/progmodes/bug-reference.el
@@ -1,6 +1,6 @@
;; bug-reference.el --- buttonize bug references
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Tom Tromey <[email protected]>
;; Created: 21 Mar 2007
@@ -151,5 +151,4 @@ so that it is considered safe, see `enable-local-variables'.")
(widen)
(bug-reference-unfontify (point-min) (point-max)))))
-;; arch-tag: b138abce-e5c3-475e-bd58-7afba40387ea
;;; bug-reference.el ends here
diff --git a/lisp/progmodes/cap-words.el b/lisp/progmodes/cap-words.el
index 225c3b8803..0ce84ae33a 100644
--- a/lisp/progmodes/cap-words.el
+++ b/lisp/progmodes/cap-words.el
@@ -1,7 +1,6 @@
;;; cap-words.el --- minor mode for motion in CapitalizedWordIdentifiers
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Keywords: languages
@@ -92,5 +91,4 @@ Obsoletes `c-forward-into-nomenclature'."
(provide 'cap-words)
-;; arch-tag: 46513b64-fe5a-4c0b-902c-ed235c22975f
;;; cap-words.el ends here
diff --git a/lisp/progmodes/cc-align.el b/lisp/progmodes/cc-align.el
index 8224db79ac..81045d63ab 100644
--- a/lisp/progmodes/cc-align.el
+++ b/lisp/progmodes/cc-align.el
@@ -1,8 +1,6 @@
;;; cc-align.el --- custom indentation functions for CC Mode
-;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1987, 1992-2011 Free Software Foundation, Inc.
;; Authors: 2004- Alan Mackenzie
;; 1998- Martin Stjernholm
@@ -1333,5 +1331,4 @@ For other semicolon contexts, no determination is made."
(cc-provide 'cc-align)
-;; arch-tag: 4d71ed28-bf51-4509-a148-f39669669a2e
;;; cc-align.el ends here
diff --git a/lisp/progmodes/cc-awk.el b/lisp/progmodes/cc-awk.el
index 6c7db25612..d19ba47aa3 100644
--- a/lisp/progmodes/cc-awk.el
+++ b/lisp/progmodes/cc-awk.el
@@ -1,7 +1,6 @@
;;; cc-awk.el --- AWK specific code within cc-mode.
-;; Copyright (C) 1988, 1994, 1996, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1994, 1996, 2000-2011 Free Software Foundation, Inc.
;; Author: Alan Mackenzie <[email protected]> (originally based on awk-mode.el)
;; Maintainer: FSF
@@ -1096,5 +1095,4 @@ comment at the start of cc-engine.el for more info."
(cc-provide 'cc-awk) ; Changed from 'awk-mode, ACM 2002/5/21
-;; arch-tag: c4836289-3aa4-4a59-9934-9ccc2bacccf3
;;; awk-mode.el ends here
diff --git a/lisp/progmodes/cc-bytecomp.el b/lisp/progmodes/cc-bytecomp.el
index 597267d4e5..823430f2d3 100644
--- a/lisp/progmodes/cc-bytecomp.el
+++ b/lisp/progmodes/cc-bytecomp.el
@@ -1,7 +1,6 @@
;;; cc-bytecomp.el --- compile time setup for proper compilation
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Martin Stjernholm
;; Maintainer: [email protected]
@@ -434,5 +433,4 @@ exclude any functions that have been bound during compilation with
(provide 'cc-bytecomp)
-;; arch-tag: 2d71b3ad-57b0-4b13-abd3-ab836e08f975
;;; cc-bytecomp.el ends here
diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el
index 8639ebba3b..327ebea40c 100644
--- a/lisp/progmodes/cc-cmds.el
+++ b/lisp/progmodes/cc-cmds.el
@@ -1,8 +1,6 @@
;;; cc-cmds.el --- user level commands for CC Mode
-;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1987, 1992-2011 Free Software Foundation, Inc.
;; Authors: 2003- Alan Mackenzie
;; 1998- Martin Stjernholm
@@ -4574,5 +4572,4 @@ normally bound to C-o. See `c-context-line-break' for the details."
(cc-provide 'cc-cmds)
-;; arch-tag: bf0611dc-d1f4-449e-9e45-4ec7c6936677
;;; cc-cmds.el ends here
diff --git a/lisp/progmodes/cc-compat.el b/lisp/progmodes/cc-compat.el
index adfac2f5f9..01f7379b1b 100644
--- a/lisp/progmodes/cc-compat.el
+++ b/lisp/progmodes/cc-compat.el
@@ -1,8 +1,6 @@
;;; cc-compat.el --- cc-mode compatibility with c-mode.el confusion
-;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1987, 1992-2011 Free Software Foundation, Inc.
;; Authors: 1998- Martin Stjernholm
;; 1994-1999 Barry A. Warsaw
@@ -163,5 +161,4 @@ This is in addition to c-continued-statement-offset.")
(cc-provide 'cc-compat)
-;; arch-tag: 564dab2f-e6ad-499c-a4a3-fedec3ecc192
;;; cc-compat.el ends here
diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el
index 147a0e2dc2..ce38cf8850 100644
--- a/lisp/progmodes/cc-defs.el
+++ b/lisp/progmodes/cc-defs.el
@@ -1,8 +1,6 @@
;;; cc-defs.el --- compile time definitions for CC Mode
-;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1987, 1992-2011 Free Software Foundation, Inc.
;; Authors: 2003- Alan Mackenzie
;; 1998- Martin Stjernholm
@@ -2259,5 +2257,4 @@ quoted."
(cc-provide 'cc-defs)
-;; arch-tag: 3bb2629d-dd84-4ff0-ad39-584be0fe3cda
;;; cc-defs.el ends here
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index c9e162c91b..406ee1a91d 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -1,8 +1,6 @@
;;; cc-engine.el --- core syntax guessing engine for CC mode
-;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1987, 1992-2011 Free Software Foundation, Inc.
;; Authors: 2001- Alan Mackenzie
;; 1998- Martin Stjernholm
@@ -10337,5 +10335,4 @@ Cannot combine absolute offsets %S and %S in `add' method"
(cc-provide 'cc-engine)
-;; arch-tag: 149add18-4673-4da5-ac47-6805e4eae089
;;; cc-engine.el ends here
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el
index d2e5657d34..0d738700cc 100644
--- a/lisp/progmodes/cc-fonts.el
+++ b/lisp/progmodes/cc-fonts.el
@@ -1,6 +1,6 @@
;;; cc-fonts.el --- font lock support for CC Mode
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Authors: 2003- Alan Mackenzie
;; 2002- Martin Stjernholm
@@ -2460,5 +2460,4 @@ need for `pike-font-lock-extra-types'.")
;; 2006-07-10: awk-font-lock-keywords has been moved back to cc-awk.el.
(cc-provide 'cc-fonts)
-;; arch-tag: 2f65f405-735f-4da5-8d4b-b957844c5203
;;; cc-fonts.el ends here
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index ad6b678765..86a963bcf5 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -1,8 +1,6 @@
;;; cc-langs.el --- language specific settings for CC Mode
-;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1987, 1992-2011 Free Software Foundation, Inc.
;; Authors: 2002- Alan Mackenzie
;; 1998- Martin Stjernholm
@@ -3137,5 +3135,4 @@ evaluated and should not be quoted."
(cc-provide 'cc-langs)
-;; arch-tag: 1ab57482-cfc2-4c5b-b628-3539c3098822
;;; cc-langs.el ends here
diff --git a/lisp/progmodes/cc-menus.el b/lisp/progmodes/cc-menus.el
index e27335e1f5..f53a7da518 100644
--- a/lisp/progmodes/cc-menus.el
+++ b/lisp/progmodes/cc-menus.el
@@ -1,8 +1,6 @@
;;; cc-menus.el --- imenu support for CC Mode
-;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1987, 1992-2011 Free Software Foundation, Inc.
;; Authors: 1998- Martin Stjernholm
;; 1992-1999 Barry A. Warsaw
@@ -442,5 +440,4 @@ Example:
(cc-provide 'cc-menus)
-;; arch-tag: f6b60933-91f0-4145-ab44-70ca6d1b919b
;;; cc-menus.el ends here
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index 3196fc5902..1a2e0027ea 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -1,8 +1,6 @@
;;; cc-mode.el --- major mode for editing C and similar languages
-;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1987, 1992-2011 Free Software Foundation, Inc.
;; Authors: 2003- Alan Mackenzie
;; 1998- Martin Stjernholm
@@ -1685,5 +1683,4 @@ Key bindings:
(cc-provide 'cc-mode)
-;; arch-tag: 7825e5c4-fd09-439f-a04d-4c13208ba3d7
;;; cc-mode.el ends here
diff --git a/lisp/progmodes/cc-styles.el b/lisp/progmodes/cc-styles.el
index 26529411c4..e161eb6d0f 100644
--- a/lisp/progmodes/cc-styles.el
+++ b/lisp/progmodes/cc-styles.el
@@ -1,8 +1,6 @@
;;; cc-styles.el --- support for styles in CC Mode
-;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1987, 1992-2011 Free Software Foundation, Inc.
;; Authors: 2004- Alan Mackenzie
;; 1998- Martin Stjernholm
@@ -656,5 +654,4 @@ any reason to call this function directly."
(cc-provide 'cc-styles)
-;; arch-tag: c764f61a-96ba-484a-a68f-101c0e9d5d2c
;;; cc-styles.el ends here
diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el
index e965cc2192..d2a5d11763 100644
--- a/lisp/progmodes/cc-vars.el
+++ b/lisp/progmodes/cc-vars.el
@@ -1,8 +1,6 @@
;;; cc-vars.el --- user customization variables for CC Mode
-;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1987, 1992-2011 Free Software Foundation, Inc.
;; Authors: 2002- Alan Mackenzie
;; 1998- Martin Stjernholm
@@ -1712,5 +1710,4 @@ It treats escaped EOLs as whitespace.")
(cc-provide 'cc-vars)
-;; arch-tag: d62e9a55-c9fe-409b-b5b6-050b6aa202c9
;;; cc-vars.el ends here
diff --git a/lisp/progmodes/cfengine.el b/lisp/progmodes/cfengine.el
index 07fdbed12d..a475bbd593 100644
--- a/lisp/progmodes/cfengine.el
+++ b/lisp/progmodes/cfengine.el
@@ -1,7 +1,6 @@
;;; cfengine.el --- mode for editing Cfengine files
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Keywords: languages
@@ -250,5 +249,4 @@ to the action header."
(provide 'cfengine)
-;; arch-tag: 6b931be2-1505-4124-afa6-9675971e26d4
;;; cfengine.el ends here
diff --git a/lisp/progmodes/cmacexp.el b/lisp/progmodes/cmacexp.el
index 61b5c22918..322492c556 100644
--- a/lisp/progmodes/cmacexp.el
+++ b/lisp/progmodes/cmacexp.el
@@ -1,7 +1,6 @@
;;; cmacexp.el --- expand C macros in a region
-;; Copyright (C) 1992, 1994, 1996, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1994, 1996, 2000-2011 Free Software Foundation, Inc.
;; Author: Francesco Potorti` <[email protected]>
;; Adapted-By: ESR
@@ -403,5 +402,4 @@ Optional arg DISPLAY non-nil means show messages in the echo area."
;; Cleanup.
(kill-buffer outbuf))))
-;; arch-tag: 4f20253c-71ef-4e6d-a774-19087060910e
;;; cmacexp.el ends here
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index da9b213ad8..5dde9ba9a9 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -1,7 +1,6 @@
;;; compile.el --- run compiler as inferior of Emacs, parse error messages
-;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1987, 1993-1999, 2001-2011
;; Free Software Foundation, Inc.
;; Authors: Roland McGrath <[email protected]>,
@@ -29,57 +28,12 @@
;; This package provides the compile facilities documented in the Emacs user's
;; manual.
-;; This mode uses some complex data-structures:
-
-;; LOC (or location) is a list of (COLUMN LINE FILE-STRUCTURE)
-
-;; COLUMN and LINE are numbers parsed from an error message. COLUMN and maybe
-;; LINE will be nil for a message that doesn't contain them. Then the
-;; location refers to a indented beginning of line or beginning of file.
-;; Once any location in some file has been jumped to, the list is extended to
-;; (COLUMN LINE FILE-STRUCTURE MARKER TIMESTAMP . VISITED)
-;; for all LOCs pertaining to that file.
-;; MARKER initially points to LINE and COLUMN in a buffer visiting that file.
-;; Being a marker it sticks to some text, when the buffer grows or shrinks
-;; before that point. VISITED is t if we have jumped there, else nil.
-;; TIMESTAMP is necessary because of "incremental compilation": `omake -P'
-;; polls filesystem for changes and recompiles when a file is modified
-;; using the same *compilation* buffer. this necessitates re-parsing markers.
-
-;; FILE-STRUCTURE is a list of
-;; ((FILENAME DIRECTORY) FORMATS (LINE LOC ...) ...)
-
-;; FILENAME is a string parsed from an error message. DIRECTORY is a string
-;; obtained by following directory change messages. DIRECTORY will be nil for
-;; an absolute filename. FORMATS is a list of formats to apply to FILENAME if
-;; a file of that name can't be found.
-;; The rest of the list is an alist of elements with LINE as key. The keys
-;; are either nil or line numbers. If present, nil comes first, followed by
-;; the numbers in decreasing order. The LOCs for each line are again an alist
-;; ordered the same way. Note that the whole file structure is referenced in
-;; every LOC.
-
-;; MESSAGE is a list of (LOC TYPE END-LOC)
-
-;; TYPE is 0 for info or 1 for warning if the message matcher identified it as
-;; such, 2 otherwise (for a real error). END-LOC is a LOC pointing to the
-;; other end, if the parsed message contained a range. If the end of the
-;; range didn't specify a COLUMN, it defaults to -1, meaning end of line.
-;; These are the value of the `message' text-properties in the compilation
-;; buffer.
-
;;; Code:
(eval-when-compile (require 'cl))
(require 'tool-bar)
(require 'comint)
-(defvar font-lock-extra-managed-props)
-(defvar font-lock-keywords)
-(defvar font-lock-maximum-size)
-(defvar font-lock-support-mode)
-
-
(defgroup compilation nil
"Run compiler as inferior of Emacs, parse error messages."
:group 'tools
@@ -123,9 +77,7 @@ in the compilation output, and should return a transformed file name.")
"*Function to call to customize the compilation process.
This function is called immediately before the compilation process is
started. It can be used to set any variables or functions that are used
-while processing the output of the compilation process. The function
-is called with variables `compilation-buffer' and `compilation-window'
-bound to the compilation buffer and window, respectively.")
+while processing the output of the compilation process.")
;;;###autoload
(defvar compilation-buffer-name-function nil
@@ -239,7 +191,9 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1))
(gcc-include
"^\\(?:In file included \\| \\|\t\\)from \
-\\(.+\\):\\([0-9]+\\)\\(?:\\(:\\)\\|\\(,\\|$\\)\\)?" 1 2 nil (3 . 4))
+\\([0-9]*[^0-9\n]\\(?:[^\n :]\\| [^-/\n]\\|:[^ \n]\\)*?\\):\
+\\([0-9]+\\)\\(?::\\([0-9]+\\)\\)?\\(?:\\(:\\)\\|\\(,\\|$\\)\\)?"
+ 1 2 3 (4 . 5))
(gnu
;; The first line matches the program name for
@@ -268,12 +222,12 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1))
;; The "in \\|from " exception was added to handle messages from Ruby.
"^\\(?:[[:alpha:]][-[:alnum:].]+: ?\\|[ \t]+\\(?:in \\|from \\)\\)?\
\\([0-9]*[^0-9\n]\\(?:[^\n :]\\| [^-/\n]\\|:[^ \n]\\)*?\\): ?\
-\\([0-9]+\\)\\(?:\\([.:]\\)\\([0-9]+\\)\\)?\
+\\([0-9]+\\)\\(?:[.:]\\([0-9]+\\)\\)?\
\\(?:-\\([0-9]+\\)?\\(?:\\.\\([0-9]+\\)\\)?\\)?:\
\\(?: *\\(\\(?:Future\\|Runtime\\)?[Ww]arning\\|W:\\)\\|\
*\\([Ii]nfo\\(?:\\>\\|rmationa?l?\\)\\|I:\\|instantiated from\\|[Nn]ote\\)\\|\
\[0-9]?\\(?:[^0-9\n]\\|$\\)\\|[0-9][0-9][0-9]\\)"
- 1 (2 . 5) (4 . 6) (7 . 8))
+ 1 (2 . 4) (3 . 5) (6 . 7))
(lcc
"^\\(?:E\\|\\(W\\)\\), \\([^(\n]+\\)(\\([0-9]+\\),[ \t]*\\([0-9]+\\)"
@@ -283,11 +237,15 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1))
"^makepp\\(?:\\(?:: warning\\(:\\).*?\\|\\(: Scanning\\|: [LR]e?l?oading makefile\\|: Imported\\|log:.*?\\) \\|: .*?\\)\
`\\(\\(\\S +?\\)\\(?::\\([0-9]+\\)\\)?\\)['(]\\)"
4 5 nil (1 . 2) 3
- ("`\\(\\(\\S +?\\)\\(?::\\([0-9]+\\)\\)?\\)['(]" nil nil
- (2 compilation-info-face)
- (3 compilation-line-face nil t)
- (1 (compilation-error-properties 2 3 nil nil nil 0 nil)
- append)))
+ (0 (progn (save-match-data
+ (compilation-parse-errors
+ (match-end 0) (line-end-position)
+ `("`\\(\\(\\S +?\\)\\(?::\\([0-9]+\\)\\)?\\)['(]"
+ 2 3 nil
+ ,(cond ((match-end 1) 1) ((match-end 2) 0) (t 2))
+ 1)))
+ (end-of-line)
+ nil)))
;; This regexp is pathologically slow on long lines (Bug#3441).
;; (maven
@@ -310,7 +268,12 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1))
(omake
;; "omake -P" reports "file foo changed"
;; (useful if you do "cvs up" and want to see what has changed)
- "omake: file \\(.*\\) changed" 1)
+ "omake: file \\(.*\\) changed" 1 nil nil nil nil
+ ;; FIXME-omake: This tries to prevent reusing pre-existing markers
+ ;; for subsequent messages, since those messages's line numbers
+ ;; are about another version of the file.
+ (0 (progn (compilation--flush-file-structure (match-string 1))
+ nil)))
(oracle
"^\\(?:Semantic error\\|Error\\|PCC-[0-9]+:\\).* line \\([0-9]+\\)\
@@ -367,12 +330,10 @@ File = \\(.+\\), Line = \\([0-9]+\\)\\(?:, Column = \\([0-9]+\\)\\)?"
(gcov-file
"^ *-: *\\(0\\):Source:\\(.+\\)$"
- 2 1 nil 0 nil
- (1 compilation-line-face prepend) (2 compilation-info-face prepend))
+ 2 1 nil 0 nil)
(gcov-header
"^ *-: *\\(0\\):\\(?:Object\\|Graph\\|Data\\|Runs\\|Programs\\):.+$"
- nil 1 nil 0 nil
- (1 compilation-line-face prepend))
+ nil 1 nil 0 nil)
;; Underlines over all lines of gcov output are too uncomfortable to read.
;; However, hyperlinks embedded in the lines are useful.
;; So I put default face on the lines; and then put
@@ -381,18 +342,18 @@ File = \\(.+\\), Line = \\([0-9]+\\)\\(?:, Column = \\([0-9]+\\)\\)?"
(gcov-nomark
"^ *-: *\\([1-9]\\|[0-9]\\{2,\\}\\):.*$"
nil 1 nil 0 nil
- (0 'default t)
- (1 compilation-line-face prepend))
+ (0 'default)
+ (1 compilation-line-face))
(gcov-called-line
"^ *\\([0-9]+\\): *\\([0-9]+\\):.*$"
nil 2 nil 0 nil
- (0 'default t)
- (1 compilation-info-face prepend) (2 compilation-line-face prepend))
+ (0 'default)
+ (1 compilation-info-face) (2 compilation-line-face))
(gcov-never-called
"^ *\\(#####\\): *\\([0-9]+\\):.*$"
nil 2 nil 2 nil
- (0 'default t)
- (1 compilation-error-face prepend) (2 compilation-line-face prepend))
+ (0 'default)
+ (1 compilation-error-face) (2 compilation-line-face))
(perl--Pod::Checker
;; podchecker error messages, per Pod::Checker.
@@ -504,12 +465,11 @@ What matched the HYPERLINK'th subexpression has `mouse-face' and
`compilation-message-face' applied. If this is nil, the text
matched by the whole REGEXP becomes the hyperlink.
-Additional HIGHLIGHTs as described under `font-lock-keywords' can
-be added."
- :type `(set :menu-tag "Pick"
- ,@(mapcar (lambda (elt)
- (list 'const (car elt)))
- compilation-error-regexp-alist-alist))
+Additional HIGHLIGHTs take the shape (SUBMATCH FACE), where SUBMATCH is
+the number of a submatch that should be highlighted when it matches,
+and FACE is an expression returning the face to use for that submatch.."
+ :type '(repeat (choice (symbol :tag "Predefined symbol")
+ (sexp :tag "Error specification")))
:link `(file-link :tag "example file"
,(expand-file-name "compilation.txt" data-directory))
:group 'compilation)
@@ -545,10 +505,10 @@ you may also want to change `compilation-page-delimiter'.")
(1 font-lock-function-name-face) (3 compilation-line-face nil t))
(" -\\(?:o[= ]?\\|-\\(?:outfile\\|output\\)[= ]\\)\\(\\S +\\)" . 1)
("^Compilation \\(finished\\).*"
- (0 '(face nil message nil help-echo nil mouse-face nil) t)
+ (0 '(face nil compilation-message nil help-echo nil mouse-face nil) t)
(1 compilation-info-face))
("^Compilation \\(exited abnormally\\|interrupt\\|killed\\|terminated\\|segmentation fault\\)\\(?:.*with code \\([0-9]+\\)\\)?.*"
- (0 '(face nil message nil help-echo nil mouse-face nil) t)
+ (0 '(face nil compilation-message nil help-echo nil mouse-face nil) t)
(1 compilation-error-face)
(2 compilation-error-face nil t)))
"Additional things to highlight in Compilation mode.
@@ -739,11 +699,9 @@ Faces `compilation-error-face', `compilation-warning-face',
;; Used for compatibility with the old compile.el.
-(defvaralias 'compilation-last-buffer 'next-error-last-buffer)
-(defvar compilation-parsing-end (make-marker))
(defvar compilation-parse-errors-function nil)
-(defvar compilation-error-list nil)
-(defvar compilation-old-error-list nil)
+(make-obsolete 'compilation-parse-errors-function
+ 'compilation-error-regexp-alist "24.1")
(defcustom compilation-auto-jump-to-first-error nil
"If non-nil, automatically jump to the first error during compilation."
@@ -755,9 +713,9 @@ Faces `compilation-error-face', `compilation-warning-face',
"If non-nil, automatically jump to the next error encountered.")
(make-variable-buffer-local 'compilation-auto-jump-to-next)
-(defvar compilation-buffer-modtime nil
- "The buffer modification time, for buffers not associated with files.")
-(make-variable-buffer-local 'compilation-buffer-modtime)
+;; (defvar compilation-buffer-modtime nil
+;; "The buffer modification time, for buffers not associated with files.")
+;; (make-variable-buffer-local 'compilation-buffer-modtime)
(defvar compilation-skip-to-next-location t
"*If non-nil, skip multiple error messages for the same source location.")
@@ -803,23 +761,155 @@ from a different message."
(and (cdr type) (match-end (cdr type)) compilation-info-face)
compilation-error-face))
+;; LOC (or location) is a list of (COLUMN LINE FILE-STRUCTURE nil nil)
+
+;; COLUMN and LINE are numbers parsed from an error message. COLUMN and maybe
+;; LINE will be nil for a message that doesn't contain them. Then the
+;; location refers to a indented beginning of line or beginning of file.
+;; Once any location in some file has been jumped to, the list is extended to
+;; (COLUMN LINE FILE-STRUCTURE MARKER TIMESTAMP . VISITED)
+;; for all LOCs pertaining to that file.
+;; MARKER initially points to LINE and COLUMN in a buffer visiting that file.
+;; Being a marker it sticks to some text, when the buffer grows or shrinks
+;; before that point. VISITED is t if we have jumped there, else nil.
+;; FIXME-omake: TIMESTAMP was used to try and handle "incremental compilation":
+;; `omake -P' polls filesystem for changes and recompiles when a file is
+;; modified using the same *compilation* buffer. this necessitates
+;; re-parsing markers.
+
+;; (defstruct (compilation--loc
+;; (:constructor nil)
+;; (:copier nil)
+;; (:constructor compilation--make-loc
+;; (file-struct line col marker))
+;; (:conc-name compilation--loc->))
+;; col line file-struct marker timestamp visited)
+
+;; FIXME: We don't use a defstruct because of compilation-assq which looks up
+;; and creates part of the LOC (only the first cons cell containing the COL).
+
+(defmacro compilation--make-cdrloc (line file-struct marker)
+ `(list ,line ,file-struct ,marker nil))
+(defmacro compilation--loc->col (loc) `(car ,loc))
+(defmacro compilation--loc->line (loc) `(cadr ,loc))
+(defmacro compilation--loc->file-struct (loc) `(nth 2 ,loc))
+(defmacro compilation--loc->marker (loc) `(nth 3 ,loc))
+;; (defmacro compilation--loc->timestamp (loc) `(nth 4 ,loc))
+(defmacro compilation--loc->visited (loc) `(nthcdr 5 ,loc))
+
+;; FILE-STRUCTURE is a list of
+;; ((FILENAME DIRECTORY) FORMATS (LINE LOC ...) ...)
+
+;; FILENAME is a string parsed from an error message. DIRECTORY is a string
+;; obtained by following directory change messages. DIRECTORY will be nil for
+;; an absolute filename. FORMATS is a list of formats to apply to FILENAME if
+;; a file of that name can't be found.
+;; The rest of the list is an alist of elements with LINE as key. The keys
+;; are either nil or line numbers. If present, nil comes first, followed by
+;; the numbers in decreasing order. The LOCs for each line are again an alist
+;; ordered the same way. Note that the whole file structure is referenced in
+;; every LOC.
+
+(defmacro compilation--make-file-struct (file-spec formats &optional loc-tree)
+ `(cons ,file-spec (cons ,formats ,loc-tree)))
+(defmacro compilation--file-struct->file-spec (fs) `(car ,fs))
+(defmacro compilation--file-struct->formats (fs) `(cadr ,fs))
+;; The FORMATS field plays the role of ANCHOR in the loc-tree.
+(defmacro compilation--file-struct->loc-tree (fs) `(cdr ,fs))
+
+;; MESSAGE is a list of (LOC TYPE END-LOC)
+
+;; TYPE is 0 for info or 1 for warning if the message matcher identified it as
+;; such, 2 otherwise (for a real error). END-LOC is a LOC pointing to the
+;; other end, if the parsed message contained a range. If the end of the
+;; range didn't specify a COLUMN, it defaults to -1, meaning end of line.
+;; These are the value of the `compilation-message' text-properties in the
+;; compilation buffer.
+
+(defstruct (compilation--message
+ (:constructor nil)
+ (:copier nil)
+ ;; (:type list) ;Old representation.
+ (:constructor compilation--make-message (loc type end-loc))
+ (:conc-name compilation--message->))
+ loc type end-loc)
+
+(defvar compilation--previous-directory-cache nil
+ "A pair (POS . RES) caching the result of previous directory search.
+Basically, this pair says that calling
+ (previous-single-property-change POS 'compilation-directory)
+returned RES, i.e. there is no change of `compilation-directory' between
+POS and RES.")
+(make-variable-buffer-local 'compilation--previous-directory-cache)
+
+(defun compilation--flush-directory-cache (start end)
+ (cond
+ ((or (not compilation--previous-directory-cache)
+ (<= (car compilation--previous-directory-cache) start)))
+ ((or (not (cdr compilation--previous-directory-cache))
+ (<= (cdr compilation--previous-directory-cache) start))
+ (set-marker (car compilation--previous-directory-cache) start))
+ (t (setq compilation--previous-directory-cache nil))))
+
+(defun compilation--previous-directory (pos)
+ "Like (previous-single-property-change POS 'compilation-directory), but faster."
+ ;; This avoids an N² behavior when there's no/few compilation-directory
+ ;; entries, in which case each call to previous-single-property-change
+ ;; ends up having to walk very far back to find the last change.
+ (if (and compilation--previous-directory-cache
+ (< pos (car compilation--previous-directory-cache))
+ (or (null (cdr compilation--previous-directory-cache))
+ (< (cdr compilation--previous-directory-cache) pos)))
+ ;; No need to call previous-single-property-change.
+ (cdr compilation--previous-directory-cache)
+
+ (let* ((cache (and compilation--previous-directory-cache
+ (<= (car compilation--previous-directory-cache) pos)
+ (car compilation--previous-directory-cache)))
+ (prev
+ (previous-single-property-change
+ pos 'compilation-directory nil cache)))
+ (cond
+ ((null cache)
+ (setq compilation--previous-directory-cache
+ (cons (copy-marker pos) (copy-marker prev)))
+ prev)
+ ((eq prev cache)
+ (if cache
+ (set-marker (car compilation--previous-directory-cache) pos)
+ (setq compilation--previous-directory-cache
+ (cons (copy-marker pos) nil)))
+ (cdr compilation--previous-directory-cache))
+ (t
+ (if cache
+ (progn
+ (set-marker (car compilation--previous-directory-cache) pos)
+ (setcdr compilation--previous-directory-cache
+ (copy-marker prev)))
+ (setq compilation--previous-directory-cache
+ (cons (copy-marker pos) (copy-marker prev))))
+ prev)))))
+
;; Internal function for calculating the text properties of a directory
-;; change message. The directory property is important, because it is
-;; the stack of nested enter-messages. Relative filenames on the following
+;; change message. The compilation-directory property is important, because it
+;; is the stack of nested enter-messages. Relative filenames on the following
;; lines are relative to the top of the stack.
(defun compilation-directory-properties (idx leave)
(if leave (setq leave (match-end leave)))
;; find previous stack, and push onto it, or if `leave' pop it
- (let ((dir (previous-single-property-change (point) 'directory)))
- (setq dir (if dir (or (get-text-property (1- dir) 'directory)
- (get-text-property dir 'directory))))
- `(face ,(if leave
- compilation-leave-directory-face
- compilation-enter-directory-face)
- directory ,(if leave
- (or (cdr dir)
- '(nil)) ; nil only isn't a property-change
- (cons (match-string-no-properties idx) dir))
+ (let ((dir (compilation--previous-directory (point))))
+ (setq dir (if dir (or (get-text-property (1- dir) 'compilation-directory)
+ (get-text-property dir 'compilation-directory))))
+ `(font-lock-face ,(if leave
+ compilation-leave-directory-face
+ compilation-enter-directory-face)
+ compilation-directory ,(if leave
+ (or (cdr dir)
+ '(nil)) ; nil only isn't a property-change
+ (cons (match-string-no-properties idx) dir))
+ ;; Place a `compilation-message' everywhere we change text-properties
+ ;; so compilation--remove-properties can know what to remove.
+ compilation-message ,(compilation--make-message nil 0 nil)
mouse-face highlight
keymap compilation-button-map
help-echo "mouse-2: visit destination directory")))
@@ -858,28 +948,28 @@ from a different message."
;; Return a property list with all meta information on this error location.
(defun compilation-error-properties (file line end-line col end-col type fmt)
- (unless (< (next-single-property-change (match-beginning 0)
- 'directory nil (point))
- (point))
+ (unless (text-property-not-all (match-beginning 0) (point)
+ 'compilation-message nil)
(if file
- (if (functionp file)
- (setq file (funcall file))
- (let (dir)
- (setq file (match-string-no-properties file))
+ (when (stringp
+ (setq file (if (functionp file) (funcall file)
+ (match-string-no-properties file))))
+ (let ((dir
(unless (file-name-absolute-p file)
- (setq dir (previous-single-property-change (point) 'directory)
- dir (if dir (or (get-text-property (1- dir) 'directory)
- (get-text-property dir 'directory)))))
+ (let ((pos (compilation--previous-directory (point))))
+ (when pos
+ (or (get-text-property (1- pos) 'compilation-directory)
+ (get-text-property pos 'compilation-directory)))))))
(setq file (cons file (car dir)))))
;; This message didn't mention one, get it from previous
(let ((prev-pos
;; Find the previous message.
- (previous-single-property-change (point) 'message)))
+ (previous-single-property-change (point) 'compilation-message)))
(if prev-pos
;; Get the file structure that belongs to it.
(let* ((prev
- (or (get-text-property (1- prev-pos) 'message)
- (get-text-property prev-pos 'message)))
+ (or (get-text-property (1- prev-pos) 'compilation-message)
+ (get-text-property prev-pos 'compilation-message)))
(prev-struct
(car (nth 2 (car prev)))))
;; Construct FILE . DIR from that.
@@ -918,7 +1008,8 @@ from a different message."
(run-with-timer 0 nil 'compilation-auto-jump
(current-buffer) (match-beginning 0)))
- (compilation-internal-error-properties file line end-line col end-col type fmt)))
+ (compilation-internal-error-properties
+ file line end-line col end-col type fmt)))
(defun compilation-move-to-column (col screen)
"Go to column COL on the current line.
@@ -939,22 +1030,25 @@ FMTS is a list of format specs for transforming the file name.
(let* ((file-struct (compilation-get-file-structure file fmts))
;; Get first already existing marker (if any has one, all have one).
;; Do this first, as the compilation-assq`s may create new nodes.
- (marker-line (car (cddr file-struct))) ; a line structure
- (marker (nth 3 (cadr marker-line))) ; its marker
+ (marker-line ; a line structure
+ (cadr (compilation--file-struct->loc-tree file-struct)))
+ (marker
+ (if marker-line (compilation--loc->marker (cadr marker-line))))
(compilation-error-screen-columns compilation-error-screen-columns)
end-marker loc end-loc)
(if (not (and marker (marker-buffer marker)))
(setq marker nil) ; no valid marker for this file
(setq loc (or line 1)) ; normalize no linenumber to line 1
(catch 'marker ; find nearest loc, at least one exists
- (dolist (x (nthcdr 3 file-struct)) ; loop over remaining lines
+ (dolist (x (cddr (compilation--file-struct->loc-tree
+ file-struct))) ; Loop over remaining lines.
(if (> (car x) loc) ; still bigger
(setq marker-line x)
(if (> (- (or (car marker-line) 1) loc)
(- loc (car x))) ; current line is nearer
(setq marker-line x))
(throw 'marker t))))
- (setq marker (nth 3 (cadr marker-line))
+ (setq marker (compilation--loc->marker (cadr marker-line))
marker-line (or (car marker-line) 1))
(with-current-buffer (marker-buffer marker)
(save-excursion
@@ -967,7 +1061,7 @@ FMTS is a list of format specs for transforming the file name.
(end-of-line)
(compilation-move-to-column
end-col compilation-error-screen-columns))
- (setq end-marker (list (point-marker))))
+ (setq end-marker (point-marker)))
(beginning-of-line (if end-line
(- line end-line -1)
(- loc marker-line -1)))
@@ -975,120 +1069,259 @@ FMTS is a list of format specs for transforming the file name.
(compilation-move-to-column
col compilation-error-screen-columns)
(forward-to-indentation 0))
- (setq marker (list (point-marker)))))))
+ (setq marker (point-marker))))))
- (setq loc (compilation-assq line (cdr file-struct)))
+ (setq loc (compilation-assq line (compilation--file-struct->loc-tree
+ file-struct)))
+ (setq end-loc
(if end-line
- (setq end-loc (compilation-assq end-line (cdr file-struct))
- end-loc (compilation-assq end-col end-loc))
+ (compilation-assq
+ end-col (compilation-assq
+ end-line (compilation--file-struct->loc-tree
+ file-struct)))
(if end-col ; use same line element
- (setq end-loc (compilation-assq end-col loc))))
+ (compilation-assq end-col loc))))
(setq loc (compilation-assq col loc))
;; If they are new, make the loc(s) reference the file they point to.
- (or (cdr loc) (setcdr loc `(,line ,file-struct ,@marker)))
+ ;; FIXME-omake: there's a problem with timestamps here: the markers
+ ;; relative to which we computed the current `marker' have a timestamp
+ ;; almost guaranteed to be different from compilation-buffer-modtime, so if
+ ;; we use their timestamp, we'll never use `loc' since the timestamp won't
+ ;; match compilation-buffer-modtime, and if we use
+ ;; compilation-buffer-modtime then we have different timestamps for
+ ;; locations that were computed together, which doesn't make sense either.
+ ;; I think this points to a fundamental problem in our approach to the
+ ;; "omake -P" problem. --Stef
+ (or (cdr loc)
+ (setcdr loc (compilation--make-cdrloc line file-struct marker)))
(if end-loc
(or (cdr end-loc)
- (setcdr end-loc `(,(or end-line line) ,file-struct ,@end-marker))))
+ (setcdr end-loc
+ (compilation--make-cdrloc (or end-line line) file-struct
+ end-marker))))
;; Must start with face
- `(face ,compilation-message-face
- message (,loc ,type ,end-loc)
- ,@(if compilation-debug
- `(debug (,(assoc (with-no-warnings matcher) font-lock-keywords)
- ,@(match-data))))
- help-echo ,(if col
- "mouse-2: visit this file, line and column"
- (if line
- "mouse-2: visit this file and line"
- "mouse-2: visit this file"))
- keymap compilation-button-map
- mouse-face highlight)))
+ `(font-lock-face ,compilation-message-face
+ compilation-message ,(compilation--make-message loc type end-loc)
+ help-echo ,(if col
+ "mouse-2: visit this file, line and column"
+ (if line
+ "mouse-2: visit this file and line"
+ "mouse-2: visit this file"))
+ keymap compilation-button-map
+ mouse-face highlight)))
+
+(defun compilation--put-prop (matchnum prop val)
+ (when (and (integerp matchnum) (match-beginning matchnum))
+ (put-text-property
+ (match-beginning matchnum) (match-end matchnum)
+ prop val)))
+
+(defun compilation--remove-properties (&optional start end)
+ (with-silent-modifications
+ ;; When compile.el used font-lock directly, we could just remove all
+ ;; our text-properties in one go, but now that we manually place
+ ;; font-lock-face, we have to be careful to only remove the font-lock-face
+ ;; we placed.
+ ;; (remove-list-of-text-properties
+ ;; (or start (point-min)) (or end (point-max))
+ ;; '(compilation-debug compilation-directory compilation-message
+ ;; font-lock-face help-echo mouse-face))
+ (let (next)
+ (unless start (setq start (point-min)))
+ (unless end (setq end (point-max)))
+ (compilation--flush-directory-cache start end)
+ (while
+ (progn
+ (setq next (or (next-single-property-change
+ start 'compilation-message nil end)
+ end))
+ (when (get-text-property start 'compilation-message)
+ (remove-list-of-text-properties
+ start next
+ '(compilation-debug compilation-directory compilation-message
+ font-lock-face help-echo mouse-face)))
+ (< next end))
+ (setq start next)))))
+
+(defun compilation--parse-region (start end)
+ (goto-char end)
+ (unless (bolp)
+ ;; We generally don't like to parse partial lines.
+ (assert (eobp))
+ (when (let ((proc (get-buffer-process (current-buffer))))
+ (and proc (memq (process-status proc) '(run open))))
+ (setq end (line-beginning-position))))
+ (compilation--remove-properties start end)
+ (if compilation-parse-errors-function
+ ;; An old package! Try the compatibility code.
+ (progn
+ (goto-char start)
+ (compilation--compat-parse-errors end))
+
+ ;; compilation-directory-matcher is the only part that really needs to be
+ ;; parsed sequentially. So we could split it out, handle directories
+ ;; like syntax-propertize, and the rest as font-lock-keywords. But since
+ ;; we want to have it work even when font-lock is off, we'd then need to
+ ;; use our own compilation-parsed text-property to keep track of the parts
+ ;; that have already been parsed.
+ (goto-char start)
+ (while (re-search-forward (car compilation-directory-matcher)
+ end t)
+ (compilation--flush-directory-cache (match-beginning 0) (match-end 0))
+ (when compilation-debug
+ (font-lock-append-text-property
+ (match-beginning 0) (match-end 0)
+ 'compilation-debug
+ (vector 'directory compilation-directory-matcher)))
+ (dolist (elt (cdr compilation-directory-matcher))
+ (add-text-properties (match-beginning (car elt))
+ (match-end (car elt))
+ (compilation-directory-properties
+ (car elt) (cdr elt)))))
+
+ (compilation-parse-errors start end)))
+
+(defun compilation-parse-errors (start end &rest rules)
+ "Parse errors between START and END.
+The errors recognized are the ones specified in RULES which default
+to `compilation-error-regexp-alist' if RULES is nil."
+ (dolist (item (or rules compilation-error-regexp-alist))
+ (if (symbolp item)
+ (setq item (cdr (assq item
+ compilation-error-regexp-alist-alist))))
+ (let ((file (nth 1 item))
+ (line (nth 2 item))
+ (col (nth 3 item))
+ (type (nth 4 item))
+ (pat (car item))
+ end-line end-col fmt
+ props)
+
+ ;; omake reports some error indented, so skip the indentation.
+ ;; another solution is to modify (some?) regexps in
+ ;; `compilation-error-regexp-alist'.
+ ;; note that omake usage is not limited to ocaml and C (for stubs).
+ ;; FIXME-omake: Doing it here seems wrong, at least it should depend on
+ ;; whether or not omake's own error messages are recognized.
+ (cond
+ ((not (memq 'omake compilation-error-regexp-alist)) nil)
+ ((string-match "\\`\\([^^]\\|^\\( \\*\\|\\[\\)\\)" pat)
+ nil) ;; Not anchored or anchored but already allows empty spaces.
+ (t (setq pat (concat "^ *" (substring pat 1)))))
+
+ (if (consp file) (setq fmt (cdr file) file (car file)))
+ (if (consp line) (setq end-line (cdr line) line (car line)))
+ (if (consp col) (setq end-col (cdr col) col (car col)))
+
+ (if (functionp line)
+ ;; The old compile.el had here an undocumented hook that
+ ;; allowed `line' to be a function that computed the actual
+ ;; error location. Let's do our best.
+ (progn
+ (goto-char start)
+ (while (re-search-forward pat end t)
+ (save-match-data
+ (when compilation-debug
+ (font-lock-append-text-property
+ (match-beginning 0) (match-end 0)
+ 'compilation-debug (vector 'functionp item)))
+ (add-text-properties
+ (match-beginning 0) (match-end 0)
+ (compilation--compat-error-properties
+ (funcall line (cons (match-string file)
+ (cons default-directory
+ (nthcdr 4 item)))
+ (if col (match-string col))))))
+ (compilation--put-prop
+ file 'font-lock-face compilation-error-face)))
+
+ (unless (or (null (nth 5 item)) (integerp (nth 5 item)))
+ (error "HYPERLINK should be an integer: %s" (nth 5 item)))
+
+ (goto-char start)
+ (while (re-search-forward pat end t)
+ (when (setq props (compilation-error-properties
+ file line end-line col end-col (or type 2) fmt))
+
+ (when (integerp file)
+ (compilation--put-prop
+ file 'font-lock-face
+ (if (consp type)
+ (compilation-face type)
+ (symbol-value (aref [compilation-info-face
+ compilation-warning-face
+ compilation-error-face]
+ (or type 2))))))
+
+ (compilation--put-prop
+ line 'font-lock-face compilation-line-face)
+ (compilation--put-prop
+ end-line 'font-lock-face compilation-line-face)
+
+ (compilation--put-prop
+ col 'font-lock-face compilation-column-face)
+ (compilation--put-prop
+ end-col 'font-lock-face compilation-column-face)
+
+ (dolist (extra-item (nthcdr 6 item))
+ (let ((mn (pop extra-item)))
+ (when (match-beginning mn)
+ (let ((face (eval (car extra-item))))
+ (cond
+ ((null face))
+ ((symbolp face)
+ (put-text-property
+ (match-beginning mn) (match-end mn)
+ 'font-lock-face face))
+ (t
+ (error "Don't know how to handle face %S"
+ face)))))))
+ (let ((mn (or (nth 5 item) 0)))
+ (when compilation-debug
+ (font-lock-append-text-property
+ (match-beginning 0) (match-end 0)
+ 'compilation-debug (vector 'std item props)))
+ (add-text-properties
+ (match-beginning mn) (match-end mn)
+ (cddr props))
+ (font-lock-append-text-property
+ (match-beginning mn) (match-end mn)
+ 'font-lock-face (cadr props)))))))))
+
+(defvar compilation--parsed -1)
+(make-variable-buffer-local 'compilation--parsed)
+
+(defun compilation--ensure-parse (limit)
+ "Make sure the text has been parsed up to LIMIT."
+ (save-excursion
+ (goto-char limit)
+ (setq limit (line-beginning-position 2))
+ (unless (markerp compilation--parsed)
+ ;; We use a marker for compilation--parsed so that users (such as
+ ;; grep.el) don't need to flush-parse when they modify the buffer
+ ;; in a way that impacts buffer positions but does not require
+ ;; re-parsing.
+ (setq compilation--parsed (point-min-marker)))
+ (when (< compilation--parsed limit)
+ (let ((start (max compilation--parsed (point-min))))
+ (move-marker compilation--parsed limit)
+ (goto-char start)
+ (forward-line 0) ;Not line-beginning-position: ignore (comint) fields.
+ (with-silent-modifications
+ (compilation--parse-region (point) compilation--parsed)))))
+ nil)
+
+(defun compilation--flush-parse (start end)
+ "Mark the region between START and END for re-parsing."
+ (if (markerp compilation--parsed)
+ (move-marker compilation--parsed (min start compilation--parsed))))
(defun compilation-mode-font-lock-keywords ()
"Return expressions to highlight in Compilation mode."
- (if compilation-parse-errors-function
- ;; An old package! Try the compatibility code.
- '((compilation-compat-parse-errors))
- (append
- ;; make directory tracking
- (if compilation-directory-matcher
- `((,(car compilation-directory-matcher)
- ,@(mapcar (lambda (elt)
- `(,(car elt)
- (compilation-directory-properties
- ,(car elt) ,(cdr elt))
- t t))
- (cdr compilation-directory-matcher)))))
-
- ;; Compiler warning/error lines.
- (mapcar
- (lambda (item)
- (if (symbolp item)
- (setq item (cdr (assq item
- compilation-error-regexp-alist-alist))))
- (let ((file (nth 1 item))
- (line (nth 2 item))
- (col (nth 3 item))
- (type (nth 4 item))
- (pat (car item))
- end-line end-col fmt)
- ;; omake reports some error indented, so skip the indentation.
- ;; another solution is to modify (some?) regexps in
- ;; `compilation-error-regexp-alist'.
- ;; note that omake usage is not limited to ocaml and C (for stubs).
- (when (and (= ?^ (aref pat 0)) ; anchored: starts with "^"
- ;; but does not allow an arbitrary number of leading spaces
- (not (and (= ? (aref pat 1)) (= ?* (aref pat 2)))))
- (setq pat (concat "^ *" (substring pat 1))))
- (if (consp file) (setq fmt (cdr file) file (car file)))
- (if (consp line) (setq end-line (cdr line) line (car line)))
- (if (consp col) (setq end-col (cdr col) col (car col)))
-
- (if (functionp line)
- ;; The old compile.el had here an undocumented hook that
- ;; allowed `line' to be a function that computed the actual
- ;; error location. Let's do our best.
- `(,pat
- (0 (save-match-data
- (compilation-compat-error-properties
- (funcall ',line (cons (match-string ,file)
- (cons default-directory
- ',(nthcdr 4 item)))
- ,(if col `(match-string ,col))))))
- (,file compilation-error-face t))
-
- (unless (or (null (nth 5 item)) (integerp (nth 5 item)))
- (error "HYPERLINK should be an integer: %s" (nth 5 item)))
-
- `(,pat
-
- ,@(when (integerp file)
- `((,file ,(if (consp type)
- `(compilation-face ',type)
- (aref [compilation-info-face
- compilation-warning-face
- compilation-error-face]
- (or type 2))))))
-
- ,@(when line
- `((,line compilation-line-face nil t)))
- ,@(when end-line
- `((,end-line compilation-line-face nil t)))
-
- ,@(when (integerp col)
- `((,col compilation-column-face nil t)))
- ,@(when (integerp end-col)
- `((,end-col compilation-column-face nil t)))
-
- ,@(nthcdr 6 item)
- (,(or (nth 5 item) 0)
- (compilation-error-properties ',file ,line ,end-line
- ,col ,end-col ',(or type 2)
- ',fmt)
- append))))) ; for compilation-message-face
- compilation-error-regexp-alist)
-
- compilation-mode-font-lock-keywords)))
+ (append
+ '((compilation--ensure-parse))
+ compilation-mode-font-lock-keywords))
(defun compilation-read-command (command)
(read-shell-command "Compile command: " command
@@ -1384,7 +1617,7 @@ Returns the compilation buffer created."
;; Insert the output at the end, after the initial text,
;; regardless of where the user sees point.
(goto-char (point-max))
- (let* ((buffer-read-only nil) ; call-process needs to modify outbuf
+ (let* ((inhibit-read-only t) ; call-process needs to modify outbuf
(status (call-process shell-file-name nil outbuf nil "-c"
command)))
(cond ((numberp status)
@@ -1398,10 +1631,6 @@ Returns the compilation buffer created."
(concat status "\n")))
(t
(compilation-handle-exit 'bizarre status status)))))
- ;; Without async subprocesses, the buffer is not yet
- ;; fontified, so fontify it now.
- (let ((font-lock-verbose nil)) ; shut up font-lock messages
- (font-lock-fontify-buffer))
(set-buffer-modified-p nil)
(message "Executing `%s'...done" command)))
;; Now finally cd to where the shell started make/grep/...
@@ -1567,9 +1796,11 @@ Returns the compilation buffer created."
(defvar compilation-mode-tool-bar-map
;; When bootstrapping, tool-bar-map is not properly initialized yet,
;; so don't do anything.
- (when (keymapp (butlast tool-bar-map))
- (let ((map (butlast (copy-keymap tool-bar-map)))
- (help (last tool-bar-map))) ;; Keep Help last in tool bar
+ (when (keymapp tool-bar-map)
+ (let ((map (copy-keymap tool-bar-map)))
+ (define-key map [undo] nil)
+ (define-key map [separator-2] nil)
+ (define-key-after map [separator-compile] menu-bar-separator)
(tool-bar-local-item
"left-arrow" 'previous-error-no-select 'previous-error-no-select map
:rtl "right-arrow"
@@ -1586,7 +1817,7 @@ Returns the compilation buffer created."
(tool-bar-local-item
"refresh" 'recompile 'recompile map
:help "Restart compilation")
- (append map help))))
+ map)))
(put 'compilation-mode 'mode-class 'special)
@@ -1610,7 +1841,7 @@ Runs `compilation-mode-hook' with `run-mode-hooks' (which see).
mode-name (or name-of-mode "Compilation"))
(set (make-local-variable 'page-delimiter)
compilation-page-delimiter)
- (set (make-local-variable 'compilation-buffer-modtime) nil)
+ ;; (set (make-local-variable 'compilation-buffer-modtime) nil)
(compilation-setup)
(setq buffer-read-only t)
(run-mode-hooks 'compilation-mode-hook))
@@ -1631,6 +1862,7 @@ by replacing the first word, e.g `compilation-scroll-output' from
(symbol-name v)))))
(and (cdr v)
(or (boundp (cdr v))
+ ;; FIXME: This is hackish, using undocumented info.
(if (boundp 'byte-compile-bound-variables)
(memq (cdr v) byte-compile-bound-variables)))
`(set (make-local-variable ',(car v)) ,(cdr v))))
@@ -1668,9 +1900,6 @@ The global commands next/previous/first-error/goto-error use this.")
"Buffer position of the beginning of the compilation messages.
If nil, use the beginning of buffer.")
-;; A function name can't be a hook, must be something with a value.
-(defconst compilation-turn-on-font-lock 'turn-on-font-lock)
-
(defun compilation-setup (&optional minor)
"Prepare the buffer for the compilation parsing commands to work.
Optional argument MINOR indicates this is called from
@@ -1689,26 +1918,29 @@ Optional argument MINOR indicates this is called from
(setq next-error-function 'compilation-next-error-function)
(set (make-local-variable 'comint-file-name-prefix)
(or (file-remote-p default-directory) ""))
- (set (make-local-variable 'font-lock-extra-managed-props)
- '(directory message help-echo mouse-face debug))
(set (make-local-variable 'compilation-locs)
(make-hash-table :test 'equal :weakness 'value))
- ;; lazy-lock would never find the message unless it's scrolled to.
- ;; jit-lock might fontify some things too late.
- (set (make-local-variable 'font-lock-support-mode) nil)
- (set (make-local-variable 'font-lock-maximum-size) nil)
+ ;; It's generally preferable to use after-change-functions since they
+ ;; can be subject to combine-after-change-calls, but if we do that, we risk
+ ;; running our hook after font-lock, resulting in incorrect refontification.
+ (add-hook 'before-change-functions 'compilation--flush-parse nil t)
+ ;; Also for minor mode, since it's not permanent-local.
+ (add-hook 'change-major-mode-hook #'compilation--remove-properties nil t)
(if minor
- (let ((fld font-lock-defaults))
+ (progn
(font-lock-add-keywords nil (compilation-mode-font-lock-keywords))
(if font-lock-mode
- (if fld
- (font-lock-fontify-buffer)
- (font-lock-change-mode)
- (turn-on-font-lock))
- (turn-on-font-lock)))
- (setq font-lock-defaults '(compilation-mode-font-lock-keywords t))
- ;; maybe defer font-lock till after derived mode is set up
- (run-mode-hooks 'compilation-turn-on-font-lock)))
+ (font-lock-fontify-buffer)))
+ (setq font-lock-defaults '(compilation-mode-font-lock-keywords t))))
+
+(defun compilation--unsetup ()
+ ;; Only for minor mode.
+ (font-lock-remove-keywords nil (compilation-mode-font-lock-keywords))
+ (remove-hook 'before-change-functions 'compilation--flush-parse t)
+ (kill-local-variable 'compilation--parsed)
+ (compilation--remove-properties)
+ (if font-lock-mode
+ (font-lock-fontify-buffer)))
;;;###autoload
(define-minor-mode compilation-shell-minor-mode
@@ -1722,8 +1954,7 @@ Turning the mode on runs the normal hook `compilation-shell-minor-mode-hook'."
:group 'compilation
(if compilation-shell-minor-mode
(compilation-setup t)
- (font-lock-remove-keywords nil (compilation-mode-font-lock-keywords))
- (font-lock-fontify-buffer)))
+ (compilation--unsetup)))
;;;###autoload
(define-minor-mode compilation-minor-mode
@@ -1736,8 +1967,7 @@ Turning the mode on runs the normal hook `compilation-minor-mode-hook'."
:group 'compilation
(if compilation-minor-mode
(compilation-setup t)
- (font-lock-remove-keywords nil (compilation-mode-font-lock-keywords))
- (font-lock-fontify-buffer)))
+ (compilation--unsetup)))
(defun compilation-handle-exit (process-status exit-status msg)
"Write MSG in the current buffer and hack its `mode-line-process'."
@@ -1765,7 +1995,8 @@ Turning the mode on runs the normal hook `compilation-minor-mode-hook'."
(setq mode-line-process
(let ((out-string (format ":%s [%s]" process-status (cdr status)))
(msg (format "%s %s" mode-name
- (replace-regexp-in-string "\n?$" "" (car status)))))
+ (replace-regexp-in-string "\n?$" ""
+ (car status)))))
(message "%s" msg)
(propertize out-string
'help-echo msg 'face (if (> exit-status 0)
@@ -1810,13 +2041,13 @@ and runs `compilation-filter-hook'."
(let ((inhibit-read-only t)
;; `save-excursion' doesn't use the right insertion-type for us.
(pos (copy-marker (point) t))
+ ;; `save-restriction' doesn't use the right insertion type either:
+ ;; If we are inserting at the end of the accessible part of the
+ ;; buffer, keep the inserted text visible.
(min (point-min-marker))
- (max (point-max-marker)))
+ (max (copy-marker (point-max) t)))
(unwind-protect
(progn
- ;; If we are inserting at the end of the accessible part
- ;; of the buffer, keep the inserted text visible.
- (set-marker-insertion-type max t)
(widen)
(goto-char (process-mark proc))
;; We used to use `insert-before-markers', so that windows with
@@ -1826,10 +2057,12 @@ and runs `compilation-filter-hook'."
(unless comint-inhibit-carriage-motion
(comint-carriage-motion (process-mark proc) (point)))
(set-marker (process-mark proc) (point))
- (set (make-local-variable 'compilation-buffer-modtime) (current-time))
+ ;; (set (make-local-variable 'compilation-buffer-modtime)
+ ;; (current-time))
(run-hooks 'compilation-filter-hook))
(goto-char pos)
(narrow-to-region min max)
+ (set-marker pos nil)
(set-marker min nil)
(set-marker max nil))))))
@@ -1848,31 +2081,50 @@ and runs `compilation-filter-hook'."
`(let (opt)
(while (,< n 0)
(setq opt pt)
- (or (setq pt (,property-change pt 'message))
+ (or (setq pt (,property-change pt 'compilation-message))
;; Handle the case where where the first error message is
;; at the start of the buffer, and n < 0.
- (if (or (eq (get-text-property ,limit 'message)
- (get-text-property opt 'message))
+ (if (or (eq (get-text-property ,limit 'compilation-message)
+ (get-text-property opt 'compilation-message))
(eq pt opt))
(error ,error compilation-error)
(setq pt ,limit)))
- ;; prop 'message usually has 2 changes, on and off, so
+ ;; prop 'compilation-message usually has 2 changes, on and off, so
;; re-search if off
- (or (setq msg (get-text-property pt 'message))
- (if (setq pt (,property-change pt 'message nil ,limit))
- (setq msg (get-text-property pt 'message)))
+ (or (setq msg (get-text-property pt 'compilation-message))
+ (if (setq pt (,property-change pt 'compilation-message nil ,limit))
+ (setq msg (get-text-property pt 'compilation-message)))
(error ,error compilation-error))
- (or (< (cadr msg) compilation-skip-threshold)
+ (or (< (compilation--message->type msg) compilation-skip-threshold)
(if different-file
- (eq (prog1 last (setq last (nth 2 (car msg))))
+ (eq (prog1 last
+ (setq last (compilation--loc->file-struct
+ (compilation--message->loc msg))))
last))
(if compilation-skip-visited
- (nthcdr 5 (car msg)))
+ (compilation--loc->visited (compilation--message->loc msg)))
(if compilation-skip-to-next-location
- (eq (car msg) loc))
+ (eq (compilation--message->loc msg) loc))
;; count this message only if none of the above are true
(setq n (,1+ n))))))
+(defun compilation-next-single-property-change (position prop
+ &optional object limit)
+ (let (parsed res)
+ (while (progn
+ ;; We parse the buffer here "on-demand" by chunks of 500 chars.
+ ;; But we could also just parse the whole buffer.
+ (compilation--ensure-parse
+ (setq parsed (max compilation--parsed
+ (min (+ position 500)
+ (or limit (point-max))))))
+ (and (or (not (setq res (next-single-property-change
+ position prop object limit)))
+ (eq res limit))
+ (< position (or limit (point-max)))))
+ (setq position parsed))
+ res))
+
(defun compilation-next-error (n &optional different-file pt)
"Move point to the next error in the compilation buffer.
This function does NOT find the source line like \\[next-error].
@@ -1886,31 +2138,35 @@ looking for the next message."
(or (compilation-buffer-p (current-buffer))
(error "Not in a compilation buffer"))
(or pt (setq pt (point)))
- (let* ((msg (get-text-property pt 'message))
- ;; `loc' is used by the compilation-loop macro.
- (loc (car msg))
+ (let* ((msg (get-text-property pt 'compilation-message))
+ ;; `loc', `msg', and `last' are used by the compilation-loop macro.
+ (loc (compilation--message->loc msg))
last)
(if (zerop n)
(unless (or msg ; find message near here
(setq msg (get-text-property (max (1- pt) (point-min))
- 'message)))
- (setq pt (previous-single-property-change pt 'message nil
+ 'compilation-message)))
+ (setq pt (previous-single-property-change pt 'compilation-message nil
(line-beginning-position)))
- (unless (setq msg (get-text-property (max (1- pt) (point-min)) 'message))
- (setq pt (next-single-property-change pt 'message nil
+ (unless (setq msg (get-text-property (max (1- pt) (point-min))
+ 'compilation-message))
+ (setq pt (next-single-property-change pt 'compilation-message nil
(line-end-position)))
- (or (setq msg (get-text-property pt 'message))
+ (or (setq msg (get-text-property pt 'compilation-message))
(setq pt (point)))))
- (setq last (nth 2 (car msg)))
+ (setq last (compilation--loc->file-struct
+ (compilation--message->loc msg)))
(if (>= n 0)
- (compilation-loop > next-single-property-change 1-
+ (compilation-loop > compilation-next-single-property-change 1-
(if (get-buffer-process (current-buffer))
"No more %ss yet"
"Moved past last %s")
(point-max))
+ (compilation--ensure-parse pt)
;; Don't move "back" to message at or before point.
;; Pass an explicit (point-min) to make sure pt is non-nil.
- (setq pt (previous-single-property-change pt 'message nil (point-min)))
+ (setq pt (previous-single-property-change
+ pt 'compilation-message nil (point-min)))
(compilation-loop < previous-single-property-change 1+
"Moved back before first %s" (point-min))))
(goto-char pt)
@@ -1954,12 +2210,16 @@ Use this command in a compilation log buffer. Sets the mark at point there."
(if event (posn-set-point (event-end event)))
(or (compilation-buffer-p (current-buffer))
(error "Not in a compilation buffer"))
- (if (get-text-property (point) 'directory)
- (dired-other-window (car (get-text-property (point) 'directory)))
+ (compilation--ensure-parse (point))
+ (if (get-text-property (point) 'compilation-directory)
+ (dired-other-window
+ (car (get-text-property (point) 'compilation-directory)))
(push-mark)
(setq compilation-current-error (point))
(next-error-internal)))
+;; This is mostly unused, but we keep it for the sake of some external
+;; packages which seem to make use of it.
(defun compilation-find-buffer (&optional avoid-current)
"Return a compilation buffer.
If AVOID-CURRENT is nil, and the current buffer is a compilation buffer,
@@ -1978,53 +2238,65 @@ This is the value of `next-error-function' in Compilation buffers."
(setq compilation-current-error nil))
(let* ((columns compilation-error-screen-columns) ; buffer's local value
(last 1) timestamp
- (loc (compilation-next-error (or n 1) nil
+ (msg (compilation-next-error (or n 1) nil
(or compilation-current-error
compilation-messages-start
(point-min))))
- (end-loc (nth 2 loc))
+ (loc (compilation--message->loc msg))
+ (end-loc (compilation--message->end-loc msg))
(marker (point-marker)))
(setq compilation-current-error (point-marker)
overlay-arrow-position
(if (bolp)
compilation-current-error
- (copy-marker (line-beginning-position)))
- loc (car loc))
+ (copy-marker (line-beginning-position))))
;; If loc contains no marker, no error in that file has been visited.
;; If the marker is invalid the buffer has been killed.
- ;; If the file is newer than the timestamp, it has been modified
- ;; (`omake -P' polls filesystem for changes and recompiles when needed
- ;; in the same process and buffer).
;; So, recalculate all markers for that file.
- (unless (and (nth 3 loc) (marker-buffer (nth 3 loc)) (nthcdr 4 loc)
- ;; There may be no timestamp info if the loc is a `fake-loc',
- ;; but we just checked that the file has been visited before!
- (equal (nth 4 loc)
- (setq timestamp compilation-buffer-modtime)))
- (with-current-buffer (compilation-find-file marker (caar (nth 2 loc))
- (cadr (car (nth 2 loc))))
+ (unless (and (compilation--loc->marker loc)
+ (marker-buffer (compilation--loc->marker loc))
+ ;; FIXME-omake: For "omake -P", which automatically recompiles
+ ;; when the file is modified, the line numbers of new output
+ ;; may not be related to line numbers from earlier output
+ ;; (earlier markers), so we used to try to detect it here and
+ ;; force a reparse. But that caused more problems elsewhere,
+ ;; so instead we now flush the file-structure when we see
+ ;; omake's message telling it's about to recompile a file.
+ ;; (or (null (compilation--loc->timestamp loc)) ;A fake-loc
+ ;; (equal (compilation--loc->timestamp loc)
+ ;; (setq timestamp compilation-buffer-modtime)))
+ )
+ (with-current-buffer
+ (compilation-find-file
+ marker
+ (caar (compilation--loc->file-struct loc))
+ (cadr (car (compilation--loc->file-struct loc))))
(save-restriction
(widen)
(goto-char (point-min))
;; Treat file's found lines in forward order, 1 by 1.
- (dolist (line (reverse (cddr (nth 2 loc))))
+ (dolist (line (reverse (cddr (compilation--loc->file-struct loc))))
(when (car line) ; else this is a filename w/o a line#
(beginning-of-line (- (car line) last -1))
(setq last (car line)))
;; Treat line's found columns and store/update a marker for each.
(dolist (col (cdr line))
- (if (car col)
- (if (eq (car col) -1) ; special case for range end
+ (if (compilation--loc->col col)
+ (if (eq (compilation--loc->col col) -1)
+ ;; Special case for range end.
(end-of-line)
- (compilation-move-to-column (car col) columns))
+ (compilation-move-to-column (compilation--loc->col col)
+ columns))
(beginning-of-line)
(skip-chars-forward " \t"))
- (if (nth 3 col)
- (set-marker (nth 3 col) (point))
- (setcdr (nthcdr 2 col) `(,(point-marker)))))))))
- (compilation-goto-locus marker (nth 3 loc) (nth 3 end-loc))
- (setcdr (nthcdr 3 loc) (list timestamp))
- (setcdr (nthcdr 4 loc) t))) ; Set this one as visited.
+ (if (compilation--loc->marker col)
+ (set-marker (compilation--loc->marker col) (point))
+ (setf (compilation--loc->marker col) (point-marker)))
+ ;; (setf (compilation--loc->timestamp col) timestamp)
+ )))))
+ (compilation-goto-locus marker (compilation--loc->marker loc)
+ (compilation--loc->marker end-loc))
+ (setf (compilation--loc->visited loc) t)))
(defvar compilation-gcpro nil
"Internal variable used to keep some values from being GC'd.")
@@ -2035,8 +2307,8 @@ This is the value of `next-error-function' in Compilation buffers."
FILE should be ABSOLUTE-FILENAME or (RELATIVE-FILENAME . DIRNAME).
This is useful when you compile temporary files, but want
automatic translation of the messages to the real buffer from
-which the temporary file came. This only works if done before a
-message about FILE appears!
+which the temporary file came. This may also affect previous messages
+about FILE.
Optional args LINE and COL default to 1 and beginning of
indentation respectively. The marker is expected to reflect
@@ -2048,18 +2320,19 @@ header with variable assignments and a code region), you must
call this several times, once each for the last line of one
region and the first line of the next region."
(or (consp file) (setq file (list file)))
- (setq file (compilation-get-file-structure file))
- ;; Between the current call to compilation-fake-loc and the first occurrence
- ;; of an error message referring to `file', the data is only kept in the
- ;; weak hash-table compilation-locs, so we need to prevent this entry
- ;; in compilation-locs from being GC'd away. --Stef
- (push file compilation-gcpro)
- (let ((loc (compilation-assq (or line 1) (cdr file))))
- (setq loc (compilation-assq col loc))
- (if (cdr loc)
- (setcdr (cddr loc) (list marker))
- (setcdr loc (list line file marker)))
- loc))
+ (compilation--flush-file-structure file)
+ (let ((fs (compilation-get-file-structure file)))
+ ;; Between the current call to compilation-fake-loc and the first
+ ;; occurrence of an error message referring to `file', the data is
+ ;; only kept in the weak hash-table compilation-locs, so we need
+ ;; to prevent this entry in compilation-locs from being GC'd
+ ;; away. --Stef
+ (push fs compilation-gcpro)
+ (let ((loc (compilation-assq (or line 1) (cdr fs))))
+ (setq loc (compilation-assq col loc))
+ (assert (null (cdr loc)))
+ (setcdr loc (compilation--make-cdrloc line fs marker))
+ loc)))
(defcustom compilation-context-lines nil
"Display this many lines of leading context before the current message.
@@ -2277,7 +2550,7 @@ FILE should be (FILENAME) or (RELATIVE-FILENAME . DIRNAME).
In the former case, FILENAME may be relative or absolute.
The file-structure looks like this:
- (list (list FILENAME [DIR-FROM-PREV-MSG]) FMT LINE-STRUCT...)"
+ ((FILENAME [DIR-FROM-PREV-MSG]) FMT LINE-STRUCT...)"
(or (gethash file compilation-locs)
;; File was not previously encountered, at least not in the form passed.
;; Let's normalize it and look again.
@@ -2322,25 +2595,41 @@ The file-structure looks like this:
;; http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg00463.html
(or (gethash (cons filename spec-directory) compilation-locs)
(puthash (cons filename spec-directory)
- (list (list filename spec-directory) fmt)
+ (compilation--make-file-struct
+ (list filename spec-directory) fmt)
compilation-locs))
compilation-locs))))
-(add-to-list 'debug-ignored-errors "^No more [-a-z ]+s yet$")
+(defun compilation--flush-file-structure (file)
+ (or (consp file) (setq file (list file)))
+ (let ((fs (compilation-get-file-structure file)))
+ (assert (eq fs (gethash file compilation-locs)))
+ (assert (eq fs (gethash (cons (caar fs) (cadr (car fs)))
+ compilation-locs)))
+ (maphash (lambda (k v)
+ (if (eq v fs) (remhash k compilation-locs)))
+ compilation-locs)))
+
+(add-to-list 'debug-ignored-errors "\\`No more [-a-z ]+s yet\\'")
+(add-to-list 'debug-ignored-errors "\\`Moved past last .*")
;;; Compatibility with the old compile.el.
-(defun compile-buffer-substring (n) (if n (match-string n)))
+(defvaralias 'compilation-last-buffer 'next-error-last-buffer)
+(defvar compilation-parsing-end (make-marker))
+(defvar compilation-error-list nil)
+(defvar compilation-old-error-list nil)
-(defun compilation-compat-error-properties (err)
+(defun compilation--compat-error-properties (err)
"Map old-style error ERR to new-style message."
;; Old-style structure is (MARKER (FILE DIR) LINE COL) or
;; (MARKER . MARKER).
(let ((dst (cdr err)))
(if (markerp dst)
- ;; Must start with a face, for font-lock.
- `(face nil
- message ,(list (list nil nil nil dst) 2)
+ `(compilation-message ,(compilation--make-message
+ (cons nil (compilation--make-cdrloc
+ nil nil dst))
+ 2 nil)
help-echo "mouse-2: visit the source location"
keymap compilation-button-map
mouse-face highlight)
@@ -2354,19 +2643,19 @@ The file-structure looks like this:
(compilation-internal-error-properties
(cons filename dirname) line nil col nil 2 fmt)))))
-(defun compilation-compat-parse-errors (limit)
+(defun compilation--compat-parse-errors (limit)
(when compilation-parse-errors-function
;; FIXME: We should remove the rest of the compilation keywords
;; but we can't do that from here because font-lock is using
- ;; the value right now. --stef
+ ;; the value right now. --Stef
(save-excursion
(setq compilation-error-list nil)
;; Reset compilation-parsing-end each time because font-lock
;; might force us the re-parse many times (typically because
;; some code adds some text-property to the output that we
;; already parsed). You might say "why reparse", well:
- ;; because font-lock has just removed the `message' property so
- ;; have to do it all over again.
+ ;; because font-lock has just removed the `compilation-message' property
+ ;; so have to do it all over again.
(if compilation-parsing-end
(set-marker compilation-parsing-end (point))
(setq compilation-parsing-end (point-marker)))
@@ -2378,19 +2667,26 @@ The file-structure looks like this:
(dolist (err (if (listp compilation-error-list) compilation-error-list))
(let* ((src (car err))
(dst (cdr err))
- (loc (cond ((markerp dst) (list nil nil nil dst))
+ (loc (cond ((markerp dst)
+ (cons nil
+ (compilation--make-cdrloc nil nil dst)))
((consp dst)
- (list (nth 2 dst) (nth 1 dst)
- (cons (cdar dst) (caar dst)))))))
+ (cons (nth 2 dst)
+ (compilation--make-cdrloc
+ (nth 1 dst)
+ (cons (cdar dst) (caar dst))
+ nil))))))
(when loc
(goto-char src)
- ;; (put-text-property src (line-end-position) 'font-lock-face 'font-lock-warning-face)
+ ;; (put-text-property src (line-end-position)
+ ;; 'font-lock-face 'font-lock-warning-face)
(put-text-property src (line-end-position)
- 'message (list loc 2)))))))
+ 'compilation-message
+ (compilation--make-message loc 2 nil)))))))
(goto-char limit)
nil)
-;; Beware: this is not only compatibility code. New code stil uses it. --Stef
+;; Beware! this is not only compatibility code. New code also uses it. --Stef
(defun compilation-forget-errors ()
;; In case we hit the same file/line specs, we want to recompute a new
;; marker for them, so flush our cache.
@@ -2427,5 +2723,4 @@ The file-structure looks like this:
(provide 'compile)
-;; arch-tag: 12465727-7382-4f72-b234-79855a00dd8c
;;; compile.el ends here
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 6f8c126151..7c634d14e6 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -1,8 +1,6 @@
;;; cperl-mode.el --- Perl code editing commands for Emacs
-;; Copyright (C) 1985, 1986, 1987, 1991, 1992, 1993, 1994, 1995, 1996,
-;; 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1991-2011 Free Software Foundation, Inc.
;; Author: Ilya Zakharevich
;; Bob Olson
diff --git a/lisp/progmodes/cpp.el b/lisp/progmodes/cpp.el
index 77a30521e9..d7b8b0e874 100644
--- a/lisp/progmodes/cpp.el
+++ b/lisp/progmodes/cpp.el
@@ -1,7 +1,6 @@
;;; cpp.el --- highlight or hide text according to cpp conditionals
-;; Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation
+;; Copyright (C) 1994-1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Per Abrahamsen <[email protected]>
;; Keywords: c, faces, tools
@@ -826,5 +825,4 @@ BRANCH should be either nil (false branch), t (true branch) or 'both."
(provide 'cpp)
-;; arch-tag: fb7d433d-745d-495a-96f0-86908ab63f74
;;; cpp.el ends here
diff --git a/lisp/progmodes/cwarn.el b/lisp/progmodes/cwarn.el
index 00c11086ce..211c856f9b 100644
--- a/lisp/progmodes/cwarn.el
+++ b/lisp/progmodes/cwarn.el
@@ -1,7 +1,6 @@
;;; cwarn.el --- highlight suspicious C and C++ constructions
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Anders Lindgren <[email protected]>
;; Keywords: c, languages, faces
@@ -381,5 +380,4 @@ The mode is turned if some feature is enabled for the current
;;}}}
-;; arch-tag: 225fb5e2-0838-4eb1-88ce-3811c5e4d738
;;; cwarn.el ends here
diff --git a/lisp/progmodes/dcl-mode.el b/lisp/progmodes/dcl-mode.el
index 9aea53705c..902848ef00 100644
--- a/lisp/progmodes/dcl-mode.el
+++ b/lisp/progmodes/dcl-mode.el
@@ -1,7 +1,6 @@
;;; dcl-mode.el --- major mode for editing DCL command files
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Odd Gripenstam <[email protected]>
;; Maintainer: Odd Gripenstam <[email protected]>
diff --git a/lisp/progmodes/delphi.el b/lisp/progmodes/delphi.el
index 77d88e5a81..c376b25fae 100644
--- a/lisp/progmodes/delphi.el
+++ b/lisp/progmodes/delphi.el
@@ -1,7 +1,6 @@
;;; delphi.el --- major mode for editing Delphi source (Object Pascal) in Emacs
-;; Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-1999, 2001-2011 Free Software Foundation, Inc.
;; Authors: Ray Blaak <[email protected]>,
;; Simon South <[email protected]>
@@ -2047,5 +2046,4 @@ no args, if that value is non-nil."
(run-mode-hooks 'delphi-mode-hook))
-;; arch-tag: 410e192d-e9b5-4397-ad62-12340fc3fa41
;;; delphi.el ends here
diff --git a/lisp/progmodes/ebnf-abn.el b/lisp/progmodes/ebnf-abn.el
index a8741a30cf..b45a47f8a3 100644
--- a/lisp/progmodes/ebnf-abn.el
+++ b/lisp/progmodes/ebnf-abn.el
@@ -1,7 +1,6 @@
;;; ebnf-abn.el --- parser for ABNF (Augmented BNF)
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <[email protected]>
;; Maintainer: Vinicius Jose Latorre <[email protected]>
@@ -664,5 +663,4 @@ See documentation for variable `ebnf-abn-lex'."
(provide 'ebnf-abn)
-;; arch-tag: 8d1b3c4d-4226-4393-b9ae-b7ccf07cf779
;;; ebnf-abn.el ends here
diff --git a/lisp/progmodes/ebnf-bnf.el b/lisp/progmodes/ebnf-bnf.el
index 45f2fe727e..cb8ebf8aab 100644
--- a/lisp/progmodes/ebnf-bnf.el
+++ b/lisp/progmodes/ebnf-bnf.el
@@ -1,7 +1,6 @@
;;; ebnf-bnf.el --- parser for EBNF
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <[email protected]>
;; Maintainer: Vinicius Jose Latorre <[email protected]>
@@ -605,5 +604,4 @@ See documentation for variable `ebnf-bnf-lex'."
(provide 'ebnf-bnf)
-;; arch-tag: 3b1834d3-8367-475b-80d5-8e0bbd00ce50
;;; ebnf-bnf.el ends here
diff --git a/lisp/progmodes/ebnf-dtd.el b/lisp/progmodes/ebnf-dtd.el
index 2ca38406d4..204b6a91b0 100644
--- a/lisp/progmodes/ebnf-dtd.el
+++ b/lisp/progmodes/ebnf-dtd.el
@@ -1,7 +1,6 @@
;;; ebnf-dtd.el --- parser for DTD (Data Type Description for XML)
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <[email protected]>
;; Maintainer: Vinicius Jose Latorre <[email protected]>
@@ -1350,5 +1349,4 @@ See documentation for variable `ebnf-dtd-lex'."
(provide 'ebnf-dtd)
-;; arch-tag: c21bb640-135f-4afa-8712-fa11d86301c4
;;; ebnf-dtd.el ends here
diff --git a/lisp/progmodes/ebnf-ebx.el b/lisp/progmodes/ebnf-ebx.el
index dd94f9e638..7d697e889b 100644
--- a/lisp/progmodes/ebnf-ebx.el
+++ b/lisp/progmodes/ebnf-ebx.el
@@ -1,7 +1,6 @@
;;; ebnf-ebx.el --- parser for EBNF used to specify XML (EBNFX)
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <[email protected]>
;; Maintainer: Vinicius Jose Latorre <[email protected]>
@@ -669,5 +668,4 @@ See documentation for variable `ebnf-ebx-lex'."
(provide 'ebnf-ebx)
-;; arch-tag: bfe2f95b-66bc-4dc6-8b7e-b7831e68f5fb
;;; ebnf-ebx.el ends here
diff --git a/lisp/progmodes/ebnf-iso.el b/lisp/progmodes/ebnf-iso.el
index fa1592bb17..d33167093a 100644
--- a/lisp/progmodes/ebnf-iso.el
+++ b/lisp/progmodes/ebnf-iso.el
@@ -1,7 +1,6 @@
;;; ebnf-iso.el --- parser for ISO EBNF
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <[email protected]>
;; Maintainer: Vinicius Jose Latorre <[email protected]>
@@ -612,5 +611,4 @@ See documentation for variable `ebnf-iso-lex'."
(provide 'ebnf-iso)
-;; arch-tag: 03315eef-8f64-404a-bf9d-256d42442ee3
;;; ebnf-iso.el ends here
diff --git a/lisp/progmodes/ebnf-otz.el b/lisp/progmodes/ebnf-otz.el
index b005d95a80..0392505972 100644
--- a/lisp/progmodes/ebnf-otz.el
+++ b/lisp/progmodes/ebnf-otz.el
@@ -1,7 +1,6 @@
;;; ebnf-otz.el --- syntactic chart OpTimiZer
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <[email protected]>
;; Maintainer: Vinicius Jose Latorre <[email protected]>
@@ -697,5 +696,4 @@
(provide 'ebnf-otz)
-;; arch-tag: 7ef2249d-9e8b-4bc1-999f-95d784690636
;;; ebnf-otz.el ends here
diff --git a/lisp/progmodes/ebnf-yac.el b/lisp/progmodes/ebnf-yac.el
index a7f1851cff..5ff239bfa2 100644
--- a/lisp/progmodes/ebnf-yac.el
+++ b/lisp/progmodes/ebnf-yac.el
@@ -1,7 +1,6 @@
;;; ebnf-yac.el --- parser for Yacc/Bison
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <[email protected]>
;; Maintainer: Vinicius Jose Latorre <[email protected]>
@@ -513,5 +512,4 @@ See documentation for variable `ebnf-yac-lex'."
(provide 'ebnf-yac)
-;; arch-tag: 8a96989c-0b1d-42ba-a020-b2901f9a2a4d
;;; ebnf-yac.el ends here
diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el
index a4d1fe85c3..9f8dd79e0f 100644
--- a/lisp/progmodes/ebnf2ps.el
+++ b/lisp/progmodes/ebnf2ps.el
@@ -1,7 +1,6 @@
;;; ebnf2ps.el --- translate an EBNF to a syntactic chart on PostScript
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <[email protected]>
;; Maintainer: Vinicius Jose Latorre <[email protected]>
diff --git a/lisp/progmodes/ebrowse.el b/lisp/progmodes/ebrowse.el
index 6b7c70208e..d674484345 100644
--- a/lisp/progmodes/ebrowse.el
+++ b/lisp/progmodes/ebrowse.el
@@ -1,8 +1,6 @@
;;; ebrowse.el --- Emacs C++ class browser & tags facility
-;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation Inc.
+;; Copyright (C) 1992-2011 Free Software Foundation, Inc.
;; Author: Gerd Moellmann <[email protected]>
;; Maintainer: FSF
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index 885ad0796b..d22d03fbe9 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -1,8 +1,7 @@
;;; etags.el --- etags facility for Emacs
-;; Copyright (C) 1985, 1986, 1988, 1989, 1992, 1993, 1994, 1995, 1996,
-;; 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1986, 1988-1989, 1992-1996, 1998, 2000-2011
+;; Free Software Foundation, Inc.
;; Author: Roland McGrath <[email protected]>
;; Maintainer: FSF
diff --git a/lisp/progmodes/executable.el b/lisp/progmodes/executable.el
index 1f27d33cda..9313df9f58 100644
--- a/lisp/progmodes/executable.el
+++ b/lisp/progmodes/executable.el
@@ -1,7 +1,6 @@
;;; executable.el --- base functionality for executable interpreter scripts -*- byte-compile-dynamic: t -*-
-;; Copyright (C) 1994, 1995, 1996, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1996, 2000-2011 Free Software Foundation, Inc.
;; Author: Daniel Pfeiffer <[email protected]>
;; Keywords: languages, unix
@@ -276,5 +275,4 @@ file modes."
(provide 'executable)
-;; arch-tag: 58458d1c-d9db-45ec-942b-8bbb1d5e319d
;;; executable.el ends here
diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el
index 906ed4588c..c46120bbd6 100644
--- a/lisp/progmodes/f90.el
+++ b/lisp/progmodes/f90.el
@@ -1,7 +1,6 @@
;;; f90.el --- Fortran-90 mode (free format)
-;; Copyright (C) 1995, 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Torbj\"orn Einarsson <[email protected]>
;; Maintainer: Glenn Morris <[email protected]>
@@ -2214,5 +2213,4 @@ escape character."
(provide 'f90)
-;; arch-tag: fceac97c-c147-44bd-aec0-172d4b560ef8
;;; f90.el ends here
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index a90f380d1c..4461ec2745 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -1,7 +1,6 @@
;;; flymake.el -- a universal on-the-fly syntax checker
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Pavel Kobyakov <[email protected]>
;; Maintainer: Pavel Kobyakov <[email protected]>
diff --git a/lisp/progmodes/fortran.el b/lisp/progmodes/fortran.el
index c8bbbf4834..67a214977b 100644
--- a/lisp/progmodes/fortran.el
+++ b/lisp/progmodes/fortran.el
@@ -1,8 +1,6 @@
;;; fortran.el --- Fortran mode for GNU Emacs
-;; Copyright (C) 1986, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001,
-;; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1993-1995, 1997-2011 Free Software Foundation, Inc.
;; Author: Michael D. Prange <[email protected]>
;; Maintainer: Glenn Morris <[email protected]>
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index f3f7e61737..ce7de946b5 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -1,6 +1,6 @@
;;; gdb-mi.el --- User Interface for running GDB
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Nick Roberts <[email protected]>
;; Maintainer: FSF
diff --git a/lisp/progmodes/glasses.el b/lisp/progmodes/glasses.el
index 95f76adc86..a1dc19da1e 100644
--- a/lisp/progmodes/glasses.el
+++ b/lisp/progmodes/glasses.el
@@ -1,7 +1,6 @@
;;; glasses.el --- make cantReadThis readable
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Milan Zamazal <[email protected]>
;; Maintainer: Milan Zamazal <[email protected]>
@@ -329,5 +328,4 @@ at places they belong to."
(provide 'glasses)
-;; arch-tag: a3515167-c89e-484f-90a1-d85143e52b12
;;; glasses.el ends here
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index 06ab8c389d..4bab8a18de 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -1,7 +1,6 @@
;;; grep.el --- run Grep as inferior of Emacs, parse match messages
-;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1987, 1993-1999, 2001-2011
;; Free Software Foundation, Inc.
;; Author: Roland McGrath <[email protected]>
@@ -342,7 +341,7 @@ Notice that using \\[next-error] or \\[compile-goto-error] modifies
;;;###autoload
(defconst grep-regexp-alist
- '(("^\\(.+?\\)\\(:[ \t]*\\)\\([0-9]+\\)\\2"
+ '(("^\\(.+?\\)\\(:[ \t]*\\)\\([1-9][0-9]*\\)\\2"
1 3)
;; Rule to match column numbers is commented out since no known grep
;; produces them
@@ -385,7 +384,6 @@ Notice that using \\[next-error] or \\[compile-goto-error] modifies
(defvar grep-mode-font-lock-keywords
'(;; Command output lines.
- ("^\\([A-Za-z_0-9/\.+-]+\\)[ \t]*:" 1 font-lock-function-name-face)
(": \\(.+\\): \\(?:Permission denied\\|No such \\(?:file or directory\\|device or address\\)\\)$"
1 grep-error-face)
;; remove match from grep-regexp-alist before fontifying
@@ -400,7 +398,8 @@ Notice that using \\[next-error] or \\[compile-goto-error] modifies
(1 grep-error-face)
(2 grep-error-face nil t))
("^.+?-[0-9]+-.*\n" (0 grep-context-face))
- ;; Highlight grep matches and delete markers
+ ;; Highlight grep matches and delete markers.
+ ;; FIXME: Modifying the buffer text from font-lock is a bad idea!
("\\(\033\\[01;31m\\)\\(.*?\\)\\(\033\\[[0-9]*m\\)"
;; Refontification does not work after the markers have been
;; deleted. So we use the font-lock-face property here as Font
@@ -410,12 +409,14 @@ Notice that using \\[next-error] or \\[compile-goto-error] modifies
(progn
;; Delete markers with `replace-match' because it updates
;; the match-data, whereas `delete-region' would render it obsolete.
+ (syntax-ppss-flush-cache (match-beginning 0))
(replace-match "" t t nil 3)
(replace-match "" t t nil 1))))
- ("\\(\033\\[[0-9;]*[mK]\\)"
+ ("\033\\[[0-9;]*[mK]"
;; Delete all remaining escape sequences
((lambda (bound))
- (replace-match "" t t nil 1))))
+ (syntax-ppss-flush-cache (match-beginning 0))
+ (replace-match "" t t))))
"Additional things to highlight in grep output.
This gets tacked on the end of the generated expressions.")
@@ -565,7 +566,10 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
(unless grep-find-command
(setq grep-find-command
(cond ((eq grep-find-use-xargs 'gnu)
- (format "%s . -type f -print0 | %s -0 -e %s"
+ ;; 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"
find-program xargs-program grep-command))
((eq grep-find-use-xargs 'exec)
(let ((cmd0 (format "%s . -type f -exec %s"
@@ -576,21 +580,21 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
(shell-quote-argument ";"))
(1+ (length cmd0)))))
(t
- (format "%s . -type f -print | %s %s"
+ (format "%s . -type f -print | \"%s\" %s"
find-program xargs-program grep-command)))))
(unless grep-find-template
(setq grep-find-template
(let ((gcmd (format "%s <C> %s <R>"
grep-program grep-options)))
(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 -e %s"
find-program xargs-program gcmd))
((eq grep-find-use-xargs 'exec)
(format "%s . <X> -type f <F> -exec %s {} %s %s"
find-program gcmd null-device
(shell-quote-argument ";")))
(t
- (format "%s . <X> -type f <F> -print | %s %s"
+ (format "%s . <X> -type f <F> -print | \"%s\" %s"
find-program xargs-program gcmd))))))))
(when (eq grep-highlight-matches 'auto-detect)
(setq grep-highlight-matches
@@ -1046,5 +1050,4 @@ file name to `*.gz', and sets `grep-highlight-matches' to `always'."
(provide 'grep)
-;; arch-tag: 5a5b9169-a79d-4f38-9c38-f69615f39c4d
;;; grep.el ends here
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index ef35b118be..6e175da141 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -1,7 +1,6 @@
;;; gud.el --- Grand Unified Debugger mode for running GDB and other debuggers
-;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992-1996, 1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Eric S. Raymond <[email protected]>
;; Maintainer: FSF
@@ -3471,5 +3470,4 @@ so they have been disabled."))
(provide 'gud)
-;; arch-tag: 6d990948-df65-461a-be39-1c7fb83ac4c4
;;; gud.el ends here
diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el
index b21cd9c89e..76a91c4b00 100644
--- a/lisp/progmodes/hideif.el
+++ b/lisp/progmodes/hideif.el
@@ -1,7 +1,6 @@
;;; hideif.el --- hides selected code within ifdef
-;; Copyright (C) 1988, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Brian Marick
;; Daniel LaLiberte <[email protected]>
diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el
index 48831509aa..15a94d6873 100644
--- a/lisp/progmodes/hideshow.el
+++ b/lisp/progmodes/hideshow.el
@@ -1,7 +1,6 @@
;;; hideshow.el --- minor mode cmds to selectively display code/comment blocks
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-2011 Free Software Foundation, Inc.
;; Author: Thien-Thi Nguyen <[email protected]>
;; Dan Nicolaescu <[email protected]>
@@ -965,5 +964,4 @@ Key bindings:
(provide 'hideshow)
-;; arch-tag: 378b6852-e82a-466a-aee8-d9c73859a65e
;;; hideshow.el ends here
diff --git a/lisp/progmodes/icon.el b/lisp/progmodes/icon.el
index b1c8dc2b33..9a8b8064be 100644
--- a/lisp/progmodes/icon.el
+++ b/lisp/progmodes/icon.el
@@ -1,7 +1,6 @@
;;; icon.el --- mode for editing Icon code
-;; Copyright (C) 1989, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1989, 2001-2011 Free Software Foundation, Inc.
;; Author: Chris Smith <[email protected]>
;; Created: 15 Feb 89
diff --git a/lisp/progmodes/idlw-complete-structtag.el b/lisp/progmodes/idlw-complete-structtag.el
index a2457eead0..a967fc03e4 100644
--- a/lisp/progmodes/idlw-complete-structtag.el
+++ b/lisp/progmodes/idlw-complete-structtag.el
@@ -1,7 +1,6 @@
;;; idlw-complete-structtag.el --- Completion of structure tags.
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <[email protected]>
;; Maintainer: J.D. Smith <[email protected]>
diff --git a/lisp/progmodes/idlw-help.el b/lisp/progmodes/idlw-help.el
index 0674ccf730..1b32c7807c 100644
--- a/lisp/progmodes/idlw-help.el
+++ b/lisp/progmodes/idlw-help.el
@@ -1,7 +1,6 @@
;;; idlw-help.el --- HTML Help code for IDLWAVE
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;;
;; Authors: J.D. Smith <[email protected]>
;; Carsten Dominik <[email protected]>
@@ -195,8 +194,7 @@ support."
:type 'string)
(defface idlwave-help-link
- '((((class color)) (:foreground "Blue"))
- (t (:weight bold)))
+ '((t :inherit link))
"Face for highlighting links into IDLWAVE online help."
:group 'idlwave-online-help)
diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el
index 0cad8cce51..93a3bf1b7f 100644
--- a/lisp/progmodes/idlw-shell.el
+++ b/lisp/progmodes/idlw-shell.el
@@ -1,7 +1,6 @@
;; idlw-shell.el --- run IDL as an inferior process of Emacs.
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Authors: J.D. Smith <[email protected]>
;; Carsten Dominik <[email protected]>
diff --git a/lisp/progmodes/idlw-toolbar.el b/lisp/progmodes/idlw-toolbar.el
index e6137e4686..d4eddee972 100644
--- a/lisp/progmodes/idlw-toolbar.el
+++ b/lisp/progmodes/idlw-toolbar.el
@@ -1,7 +1,6 @@
;;; idlw-toolbar.el --- a debugging toolbar for IDLWAVE
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <[email protected]>
;; Maintainer: J.D. Smith <[email protected]>
@@ -969,5 +968,4 @@ static char * file[] = {
(provide 'idlw-toolbar)
(provide 'idlwave-toolbar)
-;; arch-tag: ec9a3717-c44c-4716-9bda-cdacbe5ddb62
;;; idlw-toolbar.el ends here
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 4788cb3078..72b7914e21 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -1,7 +1,6 @@
;; idlwave.el --- IDL editing mode for GNU Emacs
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Authors: J.D. Smith <[email protected]>
;; Carsten Dominik <[email protected]>
diff --git a/lisp/progmodes/inf-lisp.el b/lisp/progmodes/inf-lisp.el
index 109bda8017..e4e56054f9 100644
--- a/lisp/progmodes/inf-lisp.el
+++ b/lisp/progmodes/inf-lisp.el
@@ -1,7 +1,6 @@
;;; inf-lisp.el --- an inferior-lisp mode
-;; Copyright (C) 1988, 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1993-1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Olin Shivers <[email protected]>
;; Keywords: processes, lisp
@@ -653,5 +652,4 @@ See variable `lisp-describe-sym-command'."
(provide 'inf-lisp)
-;; arch-tag: 5b74abc3-a085-4b91-8ab8-8da6899d3b92
;;; inf-lisp.el ends here
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index fdb11aa7d8..f495e35dc8 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -1,6 +1,6 @@
;;; js.el --- Major mode for editing JavaScript
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Karl Landstrom <[email protected]>
;; Daniel Colascione <[email protected]>
@@ -47,12 +47,9 @@
(require 'cc-mode)
-(require 'font-lock)
(require 'newcomment)
+(require 'thingatpt) ; forward-symbol etc
(require 'imenu)
-(require 'etags)
-(require 'thingatpt)
-(require 'easymenu)
(require 'moz nil t)
(require 'json nil t)
@@ -1662,12 +1659,11 @@ This performs fontification according to `js--class-styles'."
;; below.
(eval-and-compile
(defconst js--regexp-literal
- "[=(,:]\\(?:\\s-\\|\n\\)*\\(/\\)\\(?:\\\\/\\|[^/*]\\)\\(?:\\\\/\\|[^/]\\)*\\(/\\)"
+ "[=(,:]\\(?:\\s-\\|\n\\)*\\(/\\)\\(?:\\\\.\\|[^/*\\]\\)\\(?:\\\\.\\|[^/\\]\\)*\\(/\\)"
"Regexp matching a JavaScript regular expression literal.
Match groups 1 and 2 are the characters forming the beginning and
end of the literal."))
-
(defconst js-syntax-propertize-function
(syntax-propertize-rules
;; We want to match regular expressions only at the beginning of
@@ -2171,12 +2167,15 @@ marker."
(setf (car bounds) (point))))
(buffer-substring (car bounds) (cdr bounds)))))
+(defvar find-tag-marker-ring) ; etags
+
(defun js-find-symbol (&optional arg)
"Read a JavaScript symbol and jump to it.
With a prefix argument, restrict symbols to those from the
current buffer. Pushes a mark onto the tag ring just like
`find-tag'."
(interactive "P")
+ (require 'etags)
(let (symbols marker)
(if (not arg)
(setq symbols (js--get-all-known-symbols))
diff --git a/lisp/progmodes/ld-script.el b/lisp/progmodes/ld-script.el
index 318456e953..8a8112c965 100644
--- a/lisp/progmodes/ld-script.el
+++ b/lisp/progmodes/ld-script.el
@@ -1,7 +1,6 @@
;;; ld-script.el --- GNU linker script editing mode for Emacs
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: Masatake YAMATO<[email protected]>
;; Keywords: languages, faces
@@ -167,5 +166,4 @@
(provide 'ld-script)
-;; arch-tag: 83280b6b-e6fc-4d00-a630-922d7aec5593
;;; ld-script.el ends here
diff --git a/lisp/progmodes/m4-mode.el b/lisp/progmodes/m4-mode.el
index 39c46d69ae..98df1c6946 100644
--- a/lisp/progmodes/m4-mode.el
+++ b/lisp/progmodes/m4-mode.el
@@ -1,7 +1,6 @@
;;; m4-mode.el --- m4 code editing commands for Emacs
-;; Copyright (C) 1996, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1996-1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Andrew Csillag <[email protected]>
;; Maintainer: Andrew Csillag <[email protected]>
@@ -172,5 +171,4 @@
;;; "m4_syscmd" "m4_sysval" "m4_traceoff" "m4_traceon" "m4_translit"
;;; "m4_m4_undefine" "m4_undivert"))
-;; arch-tag: 87811d86-94c1-474b-9666-587f6da74af1
;;; m4-mode.el ends here
diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el
index 187c838382..fd9a576002 100644
--- a/lisp/progmodes/make-mode.el
+++ b/lisp/progmodes/make-mode.el
@@ -1,7 +1,6 @@
;;; make-mode.el --- makefile editing commands for Emacs
-;; Copyright (C) 1992, 1994, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1994, 1999-2011 Free Software Foundation, Inc.
;; Author: Thomas Neumann <[email protected]>
;; Eric S. Raymond <[email protected]>
@@ -1839,5 +1838,4 @@ If it isn't in one, return nil."
(provide 'make-mode)
-;; arch-tag: bd23545a-de91-44fb-b1b2-feafbb2635a0
;;; make-mode.el ends here
diff --git a/lisp/progmodes/mantemp.el b/lisp/progmodes/mantemp.el
index 94de2d88d8..c8963d2a6d 100644
--- a/lisp/progmodes/mantemp.el
+++ b/lisp/progmodes/mantemp.el
@@ -1,7 +1,6 @@
;;; mantemp.el --- create manual template instantiations from g++ 2.7.2 output
-;; Copyright (C) 1996, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Tom Houlder <[email protected]>
;; Created: 10 Dec 1996
@@ -202,5 +201,4 @@ but operates on the region."
(provide 'mantemp)
-;; arch-tag: 49794712-3b1b-4baa-9785-39556cb52c94
;;; mantemp.el ends here
diff --git a/lisp/progmodes/meta-mode.el b/lisp/progmodes/meta-mode.el
index 7e679f7fe3..b36104bf49 100644
--- a/lisp/progmodes/meta-mode.el
+++ b/lisp/progmodes/meta-mode.el
@@ -1,7 +1,6 @@
;;; meta-mode.el --- major mode for editing Metafont or MetaPost sources
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Ulrik Vieth <[email protected]>
;; Version: 1.0
diff --git a/lisp/progmodes/mixal-mode.el b/lisp/progmodes/mixal-mode.el
index bdf222376f..bf5662cdfa 100644
--- a/lisp/progmodes/mixal-mode.el
+++ b/lisp/progmodes/mixal-mode.el
@@ -1,7 +1,6 @@
;;; mixal-mode.el --- Major mode for the mix asm language.
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Pieter E.J. Pareit <[email protected]>
;; Maintainer: Pieter E.J. Pareit <[email protected]>
@@ -1120,5 +1119,4 @@ Assumes that file has been compiled with debugging support."
(provide 'mixal-mode)
-;; arch-tag: be7c128a-bf61-4951-a90e-9398267ce3f3
;;; mixal-mode.el ends here
diff --git a/lisp/progmodes/modula2.el b/lisp/progmodes/modula2.el
index 2fc3bc59d8..f0b8f7cbca 100644
--- a/lisp/progmodes/modula2.el
+++ b/lisp/progmodes/modula2.el
@@ -613,5 +613,4 @@ followed by the first character of the construct.
(provide 'modula2)
-;; arch-tag: a21df1cb-5ece-4709-9219-1e7cd2d85d90
;;; modula2.el ends here
diff --git a/lisp/progmodes/octave-inf.el b/lisp/progmodes/octave-inf.el
index 1003ffd646..e1d41c2ebd 100644
--- a/lisp/progmodes/octave-inf.el
+++ b/lisp/progmodes/octave-inf.el
@@ -1,7 +1,6 @@
;;; octave-inf.el --- running Octave as an inferior Emacs process
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Kurt Hornik <[email protected]>
;; Author: John Eaton <[email protected]>
@@ -391,5 +390,4 @@ directory and makes this the current buffer's default directory."
(provide 'octave-inf)
-;; arch-tag: bdce0395-24d1-4bb4-bfba-6fb1eeb1a660
;;; octave-inf.el ends here
diff --git a/lisp/progmodes/octave-mod.el b/lisp/progmodes/octave-mod.el
index 3e6c289675..7ec4cf3d94 100644
--- a/lisp/progmodes/octave-mod.el
+++ b/lisp/progmodes/octave-mod.el
@@ -1,7 +1,6 @@
;;; octave-mod.el --- editing Octave source files under Emacs
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Kurt Hornik <[email protected]>
;; Author: John Eaton <[email protected]>
diff --git a/lisp/progmodes/pascal.el b/lisp/progmodes/pascal.el
index a93e97efed..2a243a99ff 100644
--- a/lisp/progmodes/pascal.el
+++ b/lisp/progmodes/pascal.el
@@ -1,8 +1,6 @@
;;; pascal.el --- major mode for editing pascal source in Emacs
-;; Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-;; 2002 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1993-2011 Free Software Foundation, Inc.
;; Author: Espen Skoglund <[email protected]>
;; Keywords: languages
diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el
index 63b77fca43..9b446e49b5 100644
--- a/lisp/progmodes/perl-mode.el
+++ b/lisp/progmodes/perl-mode.el
@@ -1,7 +1,6 @@
;;; perl-mode.el --- Perl code editing commands for GNU Emacs
-;; Copyright (C) 1990, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990, 1994, 2001-2011 Free Software Foundation, Inc.
;; Author: William F. Mann
;; Maintainer: FSF
@@ -360,7 +359,8 @@ The expansion is entirely correct because it uses the C preprocessor."
(t
;; This is regexp like quote thingy.
(setq char (char-after (nth 8 state)))
- (let ((twoargs (save-excursion
+ (let ((startpos (point))
+ (twoargs (save-excursion
(goto-char (nth 8 state))
(skip-syntax-backward " ")
(skip-syntax-backward "w")
@@ -384,7 +384,8 @@ The expansion is entirely correct because it uses the C preprocessor."
(goto-char (1+ (nth 8 state)))
(up-list 1)
t)
- (scan-error nil))
+ ;; In case of error, make sure we don't move backward.
+ (scan-error (goto-char startpos) nil))
(not (or (nth 8 (parse-partial-sexp
(point) limit nil nil state 'syntax-table))
;; If we have a self-paired opener and a twoargs
diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el
index 822e6d9b6f..fd79cfd239 100644
--- a/lisp/progmodes/prolog.el
+++ b/lisp/progmodes/prolog.el
@@ -1,10 +1,16 @@
-;;; prolog.el --- major mode for editing and running Prolog under Emacs
+;;; prolog.el --- major mode for editing and running Prolog (and Mercury) code
-;; Copyright (C) 1986, 1987, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986-1987, 1997-1999, 2002-2003, 2011
+;; Free Software Foundation, Inc.
-;; Author: Masanobu UMEDA <[email protected]>
-;; Keywords: languages
+;; Authors: Emil �str�m <emil_astrom(at)hotmail(dot)com>
+;; Milan Zamazal <pdm(at)freesoft(dot)cz>
+;; Stefan Bruda <stefan(at)bruda(dot)ca> (current maintainer)
+;; * See below for more details
+;; Keywords: prolog major mode sicstus swi mercury
+
+(defvar prolog-mode-version "1.22"
+ "Prolog mode version number.")
;; This file is part of GNU Emacs.
@@ -21,409 +27,4117 @@
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+;; Original author: Masanobu UMEDA <umerin(at)mse(dot)kyutech(dot)ac(dot)jp>
+;; Parts of this file was taken from a modified version of the original
+;; by Johan Andersson, Peter Olin, Mats Carlsson, Johan Bevemyr, Stefan
+;; Andersson, and Per Danielsson (all SICS people), and Henrik B�kman
+;; at Uppsala University, Sweden.
+;;
+;; Some ideas and also a few lines of code have been borrowed (not stolen ;-)
+;; from Oz.el, the Emacs major mode for the Oz programming language,
+;; Copyright (C) 1993 DFKI GmbH, Germany, with permission.
+;; Authors: Ralf Scheidhauer and Michael Mehl ([scheidhr|mehl](at)dfki(dot)uni-sb(dot)de)
+;;
+;; More ideas and code have been taken from the SICStus debugger mode
+;; (http://www.csd.uu.se/~perm/source_debug/index.shtml -- broken link
+;; as of Mon May 5 08:23:48 EDT 2003) by Per Mildner.
+;;
+;; Additions for ECLiPSe and other helpful suggestions: Stephan Heuel
+;; <heuel(at)ipb(dot)uni-bonn(dot)de>
+
;;; Commentary:
+;;
+;; This package provides a major mode for editing Prolog code, with
+;; all the bells and whistles one would expect, including syntax
+;; highlighting and auto indentation. It can also send regions to an
+;; inferior Prolog process.
+;;
+;; The code requires the comint, easymenu, info, imenu, and font-lock
+;; libraries. These are normally distributed with GNU Emacs and
+;; XEmacs.
+
+;;; Installation:
+;;
+;; Insert the following lines in your init file--typically ~/.emacs
+;; (GNU Emacs and XEmacs <21.4), or ~/.xemacs/init.el (XEmacs
+;; 21.4)--to use this mode when editing Prolog files under Emacs:
+;;
+;; (setq load-path (cons "/usr/lib/xemacs/site-lisp" load-path))
+;; (autoload 'run-prolog "prolog" "Start a Prolog sub-process." t)
+;; (autoload 'prolog-mode "prolog" "Major mode for editing Prolog programs." t)
+;; (autoload 'mercury-mode "prolog" "Major mode for editing Mercury programs." t)
+;; (setq prolog-system 'swi) ; optional, the system you are using;
+;; ; see `prolog-system' below for possible values
+;; (setq auto-mode-alist (append '(("\\.pl$" . prolog-mode)
+;; ("\\.m$" . mercury-mode))
+;; auto-mode-alist))
+;;
+;; where the path in the first line is the file system path to this file.
+;; MSDOS paths can be written like "d:/programs/emacs-19.34/site-lisp".
+;; Note: In XEmacs, either `/usr/lib/xemacs/site-lisp' (RPM default in
+;; Red Hat-based distributions) or `/usr/local/lib/xemacs/site-lisp'
+;; (default when compiling from sources) are automatically added to
+;; `load-path', so the first line is not necessary provided that you
+;; put this file in the appropriate place.
+;;
+;; The last s-expression above makes sure that files ending with .pl
+;; are assumed to be Prolog files and not Perl, which is the default
+;; Emacs setting. If this is not wanted, remove this line. It is then
+;; necessary to either
+;;
+;; o insert in your Prolog files the following comment as the first line:
+;;
+;; % -*- Mode: Prolog -*-
+;;
+;; and then the file will be open in Prolog mode no matter its
+;; extension, or
+;;
+;; o manually switch to prolog mode after opening a Prolog file, by typing
+;; M-x prolog-mode.
+;;
+;; If the command to start the prolog process ('sicstus', 'pl' or
+;; 'swipl' for SWI prolog, etc.) is not available in the default path,
+;; then it is necessary to set the value of the environment variable
+;; EPROLOG to a shell command to invoke the prolog process. In XEmacs
+;; and Emacs 20+ you can also customize the variable
+;; `prolog-program-name' (in the group `prolog-inferior') and provide
+;; a full path for your Prolog system (swi, scitus, etc.).
+;;
+;; Note: I (Stefan, the current maintainer) work under XEmacs. Future
+;; developments will thus be biased towards XEmacs (OK, I admit it,
+;; I am biased towards XEmacs in general), though I will do my best
+;; to keep the GNU Emacs compatibility. So if you work under Emacs
+;; and see something that does not work do drop me a line, as I have
+;; a smaller chance to notice this kind of bugs otherwise.
+
+;; Changelog:
-;; This package provides a major mode for editing Prolog. It knows
-;; about Prolog syntax and comments, and can send regions to an inferior
-;; Prolog interpreter process. Font locking is tuned towards GNU Prolog.
+;; Version 1.22:
+;; o Allowed both 'swipl' and 'pl' as names for the SWI Prolog
+;; interpreter.
+;; o Atoms that start a line are not blindly coloured as
+;; predicates. Instead we check that they are followed by ( or
+;; :- first. Patch suggested by Guy Wiener.
+;; Version 1.21:
+;; o Cleaned up the code that defines faces. The missing face
+;; warnings on some Emacsen should disappear.
+;; Version 1.20:
+;; o Improved the handling of clause start detection and multi-line
+;; comments: `prolog-clause-start' no longer finds non-predicate
+;; (e.g., capitalized strings) beginning of clauses.
+;; `prolog-tokenize' recognizes when the end point is within a
+;; multi-line comment.
+;; Version 1.19:
+;; o Minimal changes for Aquamacs inclusion and in general for
+;; better coping with finding the Prolog executable. Patch
+;; provided by David Reitter
+;; Version 1.18:
+;; o Fixed syntax highlighting for clause heads that do not begin at
+;; the beginning of the line.
+;; o Fixed compilation warnings under Emacs.
+;; o Updated the email address of the current maintainer.
+;; Version 1.17:
+;; o Minor indentation fix (patch by Markus Triska)
+;; o `prolog-underscore-wordchar-flag' defaults now to nil (more
+;; consistent to other Emacs modes)
+;; Version 1.16:
+;; o Eliminated a possible compilation warning.
+;; Version 1.15:
+;; o Introduced three new customizable variables: electric colon
+;; (`prolog-electric-colon-flag', default nil), electric dash
+;; (`prolog-electric-dash-flag', default nil), and a possibility
+;; to prevent the predicate template insertion from adding commata
+;; (`prolog-electric-dot-full-predicate-template', defaults to t
+;; since it seems quicker to me to just type those commata). A
+;; trivial adaptation of a patch by Markus Triska.
+;; o Improved the behaviour of electric if-then-else to only skip
+;; forward if the parenthesis/semicolon is preceded by
+;; whitespace. Once more a trivial adaptation of a patch by
+;; Markus Triska.
+;; Version 1.14:
+;; o Cleaned up align code. `prolog-align-flag' is eliminated (since
+;; on a second thought it does not do anything useful). Added key
+;; binding (C-c C-a) and menu entry for alignment.
+;; o Condensed regular expressions for lower and upper case
+;; characters (GNU Emacs seems to go over the regexp length limit
+;; with the original form). My code on the matter was improved
+;; considerably by Markus Triska.
+;; o Fixed `prolog-insert-spaces-after-paren' (which used an
+;; unitialized variable).
+;; o Minor changes to clean up the code and avoid some implicit
+;; package requirements.
+;; Version 1.13:
+;; o Removed the use of `map-char-table' in `prolog-build-case-strings'
+;; which appears to cause prblems in (at least) Emacs 23.0.0.1.
+;; o Added if-then-else indentation + corresponding electric
+;; characters. New customization: `prolog-electric-if-then-else-flag'
+;; o Align support (requires `align'). New customization:
+;; `prolog-align-flag'.
+;; o Temporary consult files have now the same name throughout the
+;; session. This prevents issues with reconsulting a buffer
+;; (this event is no longer passed to Prolog as a request to
+;; consult a new file).
+;; o Adaptive fill mode is now turned on. Comment indentation is
+;; still worse than it could be though, I am working on it.
+;; o Improved filling and auto-filling capabilities. Now block
+;; comments should be [auto-]filled correctly most of the time;
+;; the following pattern in particular is worth noting as being
+;; filled correctly:
+;; <some code here> % some comment here that goes beyond the
+;; % rightmost column, possibly combined with
+;; % subsequent comment lines
+;; o `prolog-char-quote-workaround' now defaults to nil.
+;; o Note: Many of the above improvements have been suggested by
+;; Markus Triska, who also provided useful patches on the matter
+;; when he realized that I was slow in responding. Many thanks.
+;; Version 1.11 / 1.12
+;; o GNU Emacs compatibility fix for paragraph filling (fixed
+;; incorrectly in 1.11, fix fixed in 1.12).
+;; Version 1.10
+;; o Added paragraph filling in comment blocks and also correct auto
+;; filling for comments.
+;; o Fixed the possible "Regular expression too big" error in
+;; `prolog-electric-dot'.
+;; Version 1.9
+;; o Parenthesis expressions are now indented by default so that
+;; components go one underneath the other, just as for compound
+;; terms. You can use the old style (the second and subsequent
+;; lines being indented to the right in a parenthesis expression)
+;; by setting the customizable variable `prolog-paren-indent-p'
+;; (group "Prolog Indentation") to t.
+;; o (Somehow awkward) handling of the 0' character escape
+;; sequence. I am looking into a better way of doing it but
+;; prospects look bleak. If this breaks things for you please let
+;; me know and also set the `prolog-char-quote-workaround' (group
+;; "Prolog Other") to nil.
+;; Version 1.8
+;; o Key binding fix.
+;; Version 1.7
+;; o Fixed a number of issues with the syntax of single quotes,
+;; including Debian bug #324520.
+;; Version 1.6
+;; o Fixed mercury mode menu initialization (Debian bug #226121).
+;; o Fixed (i.e., eliminated) Delete remapping (Debian bug #229636).
+;; o Corrected indentation for clauses defining quoted atoms.
+;; Version 1.5:
+;; o Keywords fontifying should work in console mode so this is
+;; enabled everywhere.
+;; Version 1.4:
+;; o Now supports GNU Prolog--minor adaptation of a patch by Stefan
+;; Moeding.
+;; Version 1.3:
+;; o Info-follow-nearest-node now called correctly under Emacs too
+;; (thanks to Nicolas Pelletier). Should be implemented more
+;; elegantly (i.e., without compilation warnings) in the future.
+;; Version 1.2:
+;; o Another prompt fix, still in SWI mode (people seem to have
+;; changed the prompt of SWI Prolog).
+;; Version 1.1:
+;; o Fixed dots in the end of line comments causing indentation
+;; problems. The following code is now correctly indented (note
+;; the dot terminating the comment):
+;; a(X) :- b(X),
+;; c(X). % comment here.
+;; a(X).
+;; and so is this (and variants):
+;; a(X) :- b(X),
+;; c(X). /* comment here. */
+;; a(X).
+;; Version 1.0:
+;; o Revamped the menu system.
+;; o Yet another prompt recognition fix (SWI mode).
+;; o This is more of a renumbering than a new edition. I promoted
+;; the mode to version 1.0 to emphasize the fact that it is now
+;; mature and stable enough to be considered production (in my
+;; opinion anyway).
+;; Version 0.1.41:
+;; o GNU Emacs compatibility fixes.
+;; Version 0.1.40:
+;; o prolog-get-predspec is now suitable to be called as
+;; imenu-extract-index-name-function. The predicate index works.
+;; o Since imenu works now as advertised, prolog-imenu-flag is t
+;; by default.
+;; o Eliminated prolog-create-predicate-index since the imenu
+;; utilities now work well. Actually, this function is also
+;; buggy, and I see no reason to fix it since we do not need it
+;; anyway.
+;; o Fixed prolog-pred-start, prolog-clause-start, prolog-clause-info.
+;; o Fix for prolog-build-case-strings; now prolog-upper-case-string
+;; and prolog-lower-case-string are correctly initialized,
+;; o Various font-lock changes; most importantly, block comments (/*
+;; ... */) are now correctly fontified in XEmacs even when they
+;; extend on multiple lines.
+;; Version 0.1.36:
+;; o The debug prompt of SWI Prolog is now correctly recognized.
+;; Version 0.1.35:
+;; o Minor font-lock bug fixes.
+;;; TODO:
+
+;; Replace ":type 'sexp" with more precise Custom types.
+
;;; Code:
-(defvar comint-prompt-regexp)
-(defvar comint-process-echoes)
-(require 'smie)
+(eval-when-compile
+ (require 'compile)
+ (require 'font-lock)
+ ;; We need imenu everywhere because of the predicate index!
+ (require 'imenu)
+ ;)
+ (require 'info)
+ (require 'shell)
+ )
+
+(require 'comint)
+(require 'easymenu)
+(require 'align)
+
(defgroup prolog nil
- "Major mode for editing and running Prolog under Emacs."
- :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
+ "Major modes for editing and running Prolog and Mercury files."
:group 'languages)
+(defgroup prolog-faces nil
+ "Prolog mode specific faces."
+ :group 'font-lock)
-(defcustom prolog-program-name
- (let ((names '("prolog" "gprolog" "swipl")))
- (while (and names
- (not (executable-find (car names))))
- (setq names (cdr names)))
- (or (car names) "prolog"))
- "Program name for invoking an inferior Prolog with `run-prolog'."
- :type 'string
+(defgroup prolog-indentation nil
+ "Prolog mode indentation configuration."
:group 'prolog)
-(defcustom prolog-consult-string "reconsult(user).\n"
- "(Re)Consult mode (for C-Prolog and Quintus Prolog). "
- :type 'string
+(defgroup prolog-font-lock nil
+ "Prolog mode font locking patterns."
:group 'prolog)
-(defcustom prolog-compile-string "compile(user).\n"
- "Compile mode (for Quintus Prolog)."
- :type 'string
+(defgroup prolog-keyboard nil
+ "Prolog mode keyboard flags."
:group 'prolog)
-(defcustom prolog-eof-string "end_of_file.\n"
- "String that represents end of file for Prolog.
-When nil, send actual operating system end of file."
- :type 'string
+(defgroup prolog-inferior nil
+ "Inferior Prolog mode options."
:group 'prolog)
-(defcustom prolog-indent-width 4
- "Level of indentation in Prolog buffers."
- :type 'integer
+(defgroup prolog-other nil
+ "Other Prolog mode options."
+ :group 'prolog)
+
+
+;;-------------------------------------------------------------------
+;; User configurable variables
+;;-------------------------------------------------------------------
+
+;; General configuration
+
+(defcustom prolog-system nil
+ "*Prolog interpreter/compiler used.
+The value of this variable is nil or a symbol.
+If it is a symbol, it determines default values of other configuration
+variables with respect to properties of the specified Prolog
+interpreter/compiler.
+
+Currently recognized symbol values are:
+eclipse - Eclipse Prolog
+mercury - Mercury
+sicstus - SICStus Prolog
+swi - SWI Prolog
+gnu - GNU Prolog"
+ :group 'prolog
+ :type '(choice (const :tag "SICStus" :value sicstus)
+ (const :tag "SWI Prolog" :value swi)
+ (const :tag "GNU Prolog" :value gnu)
+ (const :tag "ECLiPSe Prolog" :value eclipse)
+ ;; Mercury shouldn't be needed since we have a separate
+ ;; major mode for it.
+ (const :tag "Default" :value nil)))
+(make-variable-buffer-local 'prolog-system)
+
+;; NB: This alist can not be processed in prolog-mode-variables to
+;; create a prolog-system-version-i variable since it is needed
+;; prior to the call to prolog-mode-variables.
+(defcustom prolog-system-version
+ '((sicstus (3 . 6))
+ (swi (0 . 0))
+ (mercury (0 . 0))
+ (eclipse (3 . 7))
+ (gnu (0 . 0)))
+ ;; FIXME: This should be auto-detected instead of user-provided.
+ "*Alist of Prolog system versions.
+The version numbers are of the format (Major . Minor)."
:group 'prolog)
-(defvar prolog-font-lock-keywords
- '(("\\(#[<=]=>\\|:-\\)\\|\\(#=\\)\\|\\(#[#<>\\/][=\\/]*\\|!\\)"
- 0 font-lock-keyword-face)
- ("\\<\\(is\\|write\\|nl\\|read_\\sw+\\)\\>"
- 1 font-lock-keyword-face)
- ("^\\(\\sw+\\)\\s-*\\((\\(.+\\))\\)*"
- (1 font-lock-function-name-face)
- (3 font-lock-variable-name-face)))
- "Font-lock keywords for Prolog mode.")
+;; Indentation
+
+(defcustom prolog-indent-width 4
+ "*The indentation width used by the editing buffer."
+ :group 'prolog-indentation
+ :type 'integer)
+
+(defcustom prolog-align-comments-flag t
+ "*Non-nil means automatically align comments when indenting."
+ :group 'prolog-indentation
+ :type 'boolean)
+
+(defcustom prolog-indent-mline-comments-flag t
+ "*Non-nil means indent contents of /* */ comments.
+Otherwise leave such lines as they are."
+ :group 'prolog-indentation
+ :type 'boolean)
+
+(defcustom prolog-object-end-to-0-flag t
+ "*Non-nil means indent closing '}' in SICStus object definitions to level 0.
+Otherwise indent to `prolog-indent-width'."
+ :group 'prolog-indentation
+ :type 'boolean)
+
+(defcustom prolog-left-indent-regexp "\\(;\\|\\*?->\\)"
+ "*Regexp for character sequences after which next line is indented.
+Next line after such a regexp is indented to the opening paranthesis level."
+ :group 'prolog-indentation
+ :type 'regexp)
+
+(defcustom prolog-paren-indent-p nil
+ "*If non-nil, increase indentation for parenthesis expressions.
+The second and subsequent line in a parenthesis expression other than
+a compound term can either be indented `prolog-paren-indent' to the
+right (if this variable is non-nil) or in the same way as for compound
+terms (if this variable is nil, default)."
+ :group 'prolog-indentation
+ :type 'boolean)
+
+(defcustom prolog-paren-indent 4
+ "*The indentation increase for parenthesis expressions.
+Only used in ( If -> Then ; Else) and ( Disj1 ; Disj2 ) style expressions."
+ :group 'prolog-indentation
+ :type 'integer)
+
+(defcustom prolog-parse-mode 'beg-of-clause
+ "*The parse mode used (decides from which point parsing is done).
+Legal values:
+'beg-of-line - starts parsing at the beginning of a line, unless the
+ previous line ends with a backslash. Fast, but has
+ problems detecting multiline /* */ comments.
+'beg-of-clause - starts parsing at the beginning of the current clause.
+ Slow, but copes better with /* */ comments."
+ :group 'prolog-indentation
+ :type '(choice (const :value beg-of-line)
+ (const :value beg-of-clause)))
+
+;; Font locking
+
+(defcustom prolog-keywords
+ '((eclipse
+ ("use_module" "begin_module" "module_interface" "dynamic"
+ "external" "export" "dbgcomp" "nodbgcomp" "compile"))
+ (mercury
+ ("all" "else" "end_module" "equality" "external" "fail" "func" "if"
+ "implementation" "import_module" "include_module" "inst" "instance"
+ "interface" "mode" "module" "not" "pragma" "pred" "some" "then" "true"
+ "type" "typeclass" "use_module" "where"))
+ (sicstus
+ ("block" "dynamic" "mode" "module" "multifile" "meta_predicate"
+ "parallel" "public" "sequential" "volatile"))
+ (swi
+ ("discontiguous" "dynamic" "ensure_loaded" "export" "export_list" "import"
+ "meta_predicate" "module" "module_transparent" "multifile" "require"
+ "use_module" "volatile"))
+ (gnu
+ ("built_in" "char_conversion" "discontiguous" "dynamic" "ensure_linked"
+ "ensure_loaded" "foreign" "include" "initialization" "multifile" "op"
+ "public" "set_prolog_flag"))
+ (t
+ ;; FIXME: Shouldn't we just use the union of all the above here?
+ ("dynamic" "module")))
+ "*Alist of Prolog keywords which is used for font locking of directives."
+ :group 'prolog-font-lock
+ :type 'sexp)
+
+(defcustom prolog-types
+ '((mercury
+ ("char" "float" "int" "io__state" "string" "univ"))
+ (t nil))
+ "*Alist of Prolog types used by font locking."
+ :group 'prolog-font-lock
+ :type 'sexp)
+
+(defcustom prolog-mode-specificators
+ '((mercury
+ ("bound" "di" "free" "ground" "in" "mdi" "mui" "muo" "out" "ui" "uo"))
+ (t nil))
+ "*Alist of Prolog mode specificators used by font locking."
+ :group 'prolog-font-lock
+ :type 'sexp)
+
+(defcustom prolog-determinism-specificators
+ '((mercury
+ ("cc_multi" "cc_nondet" "det" "erroneous" "failure" "multi" "nondet"
+ "semidet"))
+ (t nil))
+ "*Alist of Prolog determinism specificators used by font locking."
+ :group 'prolog-font-lock
+ :type 'sexp)
+
+(defcustom prolog-directives
+ '((mercury
+ ("^#[0-9]+"))
+ (t nil))
+ "*Alist of Prolog source code directives used by font locking."
+ :group 'prolog-font-lock
+ :type 'sexp)
+
+
+;; Keyboard
+
+(defcustom prolog-electric-newline-flag (not (fboundp 'electric-indent-mode))
+ "*Non-nil means automatically indent the next line when the user types RET."
+ :group 'prolog-keyboard
+ :type 'boolean)
+
+(defcustom prolog-hungry-delete-key-flag nil
+ "*Non-nil means delete key consumes all preceding spaces."
+ :group 'prolog-keyboard
+ :type 'boolean)
+
+(defcustom prolog-electric-dot-flag nil
+ "*Non-nil means make dot key electric.
+Electric dot appends newline or inserts head of a new clause.
+If dot is pressed at the end of a line where at least one white space
+precedes the point, it inserts a recursive call to the current predicate.
+If dot is pressed at the beginning of an empty line, it inserts the head
+of a new clause for the current predicate. It does not apply in strings
+and comments.
+It does not apply in strings and comments."
+ :group 'prolog-keyboard
+ :type 'boolean)
+
+(defcustom prolog-electric-dot-full-predicate-template nil
+ "*If nil, electric dot inserts only the current predicate's name and `('
+for recursive calls or new clause heads. Non-nil means to also
+insert enough commata to cover the predicate's arity and `)',
+and dot and newline for recursive calls."
+ :group 'prolog-keyboard
+ :type 'boolean)
+
+(defcustom prolog-electric-underscore-flag nil
+ "*Non-nil means make underscore key electric.
+Electric underscore replaces the current variable with underscore.
+If underscore is pressed not on a variable then it behaves as usual."
+ :group 'prolog-keyboard
+ :type 'boolean)
+
+(defcustom prolog-electric-tab-flag nil
+ "*Non-nil means make TAB key electric.
+Electric TAB inserts spaces after parentheses, ->, and ;
+in ( If -> Then ; Else) and ( Disj1 ; Disj2 ) style expressions."
+ :group 'prolog-keyboard
+ :type 'boolean)
+
+(defcustom prolog-electric-if-then-else-flag nil
+ "*Non-nil makes `(', `>' and `;' electric
+to automatically indent if-then-else constructs."
+ :group 'prolog-keyboard
+ :type 'boolean)
+
+(defcustom prolog-electric-colon-flag nil
+ "*Makes `:' electric (inserts `:-' on a new line).
+If non-nil, pressing `:' at the end of a line that starts in
+the first column (i.e., clause heads) inserts ` :-' and newline."
+ :group 'prolog-keyboard
+ :type 'boolean)
+
+(defcustom prolog-electric-dash-flag nil
+ "*Makes `-' electric (inserts a `-->' on a new line).
+If non-nil, pressing `-' at the end of a line that starts in
+the first column (i.e., DCG heads) inserts ` -->' and newline."
+ :group 'prolog-keyboard
+ :type 'boolean)
+
+(defcustom prolog-old-sicstus-keys-flag nil
+ "*Non-nil means old SICStus Prolog mode keybindings are used."
+ :group 'prolog-keyboard
+ :type 'boolean)
+
+;; Inferior mode
+
+(defcustom prolog-program-name
+ `(((getenv "EPROLOG") (eval (getenv "EPROLOG")))
+ (eclipse "eclipse")
+ (mercury nil)
+ (sicstus "sicstus")
+ (swi ,(if (not (executable-find "swipl")) "pl" "swipl"))
+ (gnu "gprolog")
+ (t ,(let ((names '("prolog" "gprolog" "swipl" "pl")))
+ (while (and names
+ (not (executable-find (car names))))
+ (setq names (cdr names)))
+ (or (car names) "prolog"))))
+ "*Alist of program names for invoking an inferior Prolog with `run-prolog'."
+ :group 'prolog-inferior
+ :type 'sexp)
+(defun prolog-program-name ()
+ (prolog-find-value-by-system prolog-program-name))
+
+(defcustom prolog-program-switches
+ '((sicstus ("-i"))
+ (t nil))
+ "*Alist of switches given to inferior Prolog run with `run-prolog'."
+ :group 'prolog-inferior
+ :type 'sexp)
+(defun prolog-program-switches ()
+ (prolog-find-value-by-system prolog-program-switches))
+
+(defcustom prolog-consult-string
+ '((eclipse "[%f].")
+ (mercury nil)
+ (sicstus (eval (if (prolog-atleast-version '(3 . 7))
+ "prolog:zap_file(%m,%b,consult,%l)."
+ "prolog:zap_file(%m,%b,consult).")))
+ (swi "[%f].")
+ (gnu "[%f].")
+ (t "reconsult(%f)."))
+ "*Alist of strings defining predicate for reconsulting.
+
+Some parts of the string are replaced:
+`%f' by the name of the consulted file (can be a temporary file)
+`%b' by the file name of the buffer to consult
+`%m' by the module name and name of the consulted file separated by colon
+`%l' by the line offset into the file. This is 0 unless consulting a
+ region of a buffer, in which case it is the number of lines before
+ the region."
+ :group 'prolog-inferior
+ :type 'sexp)
+(defun prolog-consult-string ()
+ (prolog-find-value-by-system prolog-consult-string))
+
+(defcustom prolog-compile-string
+ '((eclipse "[%f].")
+ (mercury "mmake ")
+ (sicstus (eval (if (prolog-atleast-version '(3 . 7))
+ "prolog:zap_file(%m,%b,compile,%l)."
+ "prolog:zap_file(%m,%b,compile).")))
+ (swi "[%f].")
+ (t "compile(%f)."))
+ "*Alist of strings and lists defining predicate for recompilation.
+
+Some parts of the string are replaced:
+`%f' by the name of the compiled file (can be a temporary file)
+`%b' by the file name of the buffer to compile
+`%m' by the module name and name of the compiled file separated by colon
+`%l' by the line offset into the file. This is 0 unless compiling a
+ region of a buffer, in which case it is the number of lines before
+ the region.
+
+If `prolog-program-name' is non-nil, it is a string sent to a Prolog process.
+If `prolog-program-name' is nil, it is an argument to the `compile' function."
+ :group 'prolog-inferior
+ :type 'sexp)
+(defun prolog-compile-string ()
+ (prolog-find-value-by-system prolog-compile-string))
+
+(defcustom prolog-eof-string "end_of_file.\n"
+ "*Alist of strings that represent end of file for prolog.
+nil means send actual operating system end of file."
+ :group 'prolog-inferior
+ :type 'sexp)
+
+(defcustom prolog-prompt-regexp
+ '((eclipse "^[a-zA-Z0-9()]* *\\?- \\|^\\[[a-zA-Z]* [0-9]*\\]:")
+ (sicstus "| [ ?][- ] *")
+ (swi "^\\(\\[[a-zA-Z]*\\] \\)?[1-9]?[0-9]*[ ]?\\?- \\|^| +")
+ (gnu "^| \\?-")
+ (t "^|? *\\?-"))
+ "*Alist of prompts of the prolog system command line."
+ :group 'prolog-inferior
+ :type 'sexp)
+(defun prolog-prompt-regexp ()
+ (prolog-find-value-by-system prolog-prompt-regexp))
+
+;; (defcustom prolog-continued-prompt-regexp
+;; '((sicstus "^\\(| +\\| +\\)")
+;; (t "^|: +"))
+;; "*Alist of regexps matching the prompt when consulting `user'."
+;; :group 'prolog-inferior
+;; :type 'sexp)
+
+(defcustom prolog-debug-on-string "debug.\n"
+ "*Predicate for enabling debug mode."
+ :group 'prolog-inferior
+ :type 'string)
+
+(defcustom prolog-debug-off-string "nodebug.\n"
+ "*Predicate for disabling debug mode."
+ :group 'prolog-inferior
+ :type 'string)
+
+(defcustom prolog-trace-on-string "trace.\n"
+ "*Predicate for enabling tracing."
+ :group 'prolog-inferior
+ :type 'string)
+
+(defcustom prolog-trace-off-string "notrace.\n"
+ "*Predicate for disabling tracing."
+ :group 'prolog-inferior
+ :type 'string)
+
+(defcustom prolog-zip-on-string "zip.\n"
+ "*Predicate for enabling zip mode for SICStus."
+ :group 'prolog-inferior
+ :type 'string)
+
+(defcustom prolog-zip-off-string "nozip.\n"
+ "*Predicate for disabling zip mode for SICStus."
+ :group 'prolog-inferior
+ :type 'string)
+
+(defcustom prolog-use-standard-consult-compile-method-flag t
+ "*Non-nil means use the standard compilation method.
+Otherwise the new compilation method will be used. This
+utilises a special compilation buffer with the associated
+features such as parsing of error messages and automatically
+jumping to the source code responsible for the error.
+
+Warning: the new method is so far only experimental and
+does contain bugs. The recommended setting for the novice user
+is non-nil for this variable."
+ :group 'prolog-inferior
+ :type 'boolean)
+
+
+;; Miscellaneous
+
+(defcustom prolog-use-prolog-tokenizer-flag
+ (not (fboundp 'syntax-propertize-rules))
+ "*Non-nil means use the internal prolog tokenizer for indentation etc.
+Otherwise use `parse-partial-sexp' which is faster but sometimes incorrect."
+ :group 'prolog-other
+ :type 'boolean)
+
+(defcustom prolog-imenu-flag t
+ "*Non-nil means add a clause index menu for all prolog files."
+ :group 'prolog-other
+ :type 'boolean)
+
+(defcustom prolog-imenu-max-lines 3000
+ "*The maximum number of lines of the file for imenu to be enabled.
+Relevant only when `prolog-imenu-flag' is non-nil."
+ :group 'prolog-other
+ :type 'integer)
+
+(defcustom prolog-info-predicate-index
+ "(sicstus)Predicate Index"
+ "*The info node for the SICStus predicate index."
+ :group 'prolog-other
+ :type 'string)
+
+(defcustom prolog-underscore-wordchar-flag nil
+ "*Non-nil means underscore (_) is a word-constituent character."
+ :group 'prolog-other
+ :type 'boolean)
+
+(defcustom prolog-use-sicstus-sd nil
+ "*If non-nil, use the source level debugger of SICStus 3#7 and later."
+ :group 'prolog-other
+ :type 'boolean)
+
+(defcustom prolog-char-quote-workaround nil
+ "*If non-nil, declare 0 as a quote character to handle 0'<char>.
+This is really kludgy, and unneeded (i.e. obsolete) in Emacs>=24."
+ :group 'prolog-other
+ :type 'boolean)
+
+
+;;-------------------------------------------------------------------
+;; Internal variables
+;;-------------------------------------------------------------------
+
+;;(defvar prolog-temp-filename "") ; Later set by `prolog-temporary-file'
(defvar prolog-mode-syntax-table
+ ;; The syntax accepted varies depending on the implementation used.
+ ;; Here are some of the differences:
+ ;; - SWI-Prolog accepts nested /*..*/ comments.
+ ;; - Edinburgh-style Prologs take <radix>'<number> for non-decimal number,
+ ;; whereas ISO-style Prologs use 0[obx]<number> instead.
+ ;; - In atoms \x<hex> sometimes needs a terminating \ (ISO-style)
+ ;; and sometimes not.
(let ((table (make-syntax-table)))
- (modify-syntax-entry ?_ "w" table)
- (modify-syntax-entry ?\\ "\\" table)
- (modify-syntax-entry ?/ ". 14" table)
- (modify-syntax-entry ?* ". 23" table)
+ (if prolog-underscore-wordchar-flag
+ (modify-syntax-entry ?_ "w" table)
+ (modify-syntax-entry ?_ "_" table))
+
(modify-syntax-entry ?+ "." table)
(modify-syntax-entry ?- "." table)
(modify-syntax-entry ?= "." table)
- (modify-syntax-entry ?% "<" table)
- (modify-syntax-entry ?\n ">" table)
(modify-syntax-entry ?< "." table)
(modify-syntax-entry ?> "." table)
+ (modify-syntax-entry ?| "." table)
(modify-syntax-entry ?\' "\"" table)
- table))
+ ;; Any better way to handle the 0'<char> construct?!?
+ (when prolog-char-quote-workaround
+ (modify-syntax-entry ?0 "\\" table))
+
+ (modify-syntax-entry ?% "<" table)
+ (modify-syntax-entry ?\n ">" table)
+ (if (featurep 'xemacs)
+ (progn
+ (modify-syntax-entry ?* ". 67" table)
+ (modify-syntax-entry ?/ ". 58" table)
+ )
+ ;; Emacs wants to see this it seems:
+ (modify-syntax-entry ?* ". 23b" table)
+ (modify-syntax-entry ?/ ". 14" table)
+ )
+ table))
(defvar prolog-mode-abbrev-table nil)
+(defvar prolog-upper-case-string ""
+ "A string containing all upper case characters.
+Set by prolog-build-case-strings.")
+(defvar prolog-lower-case-string ""
+ "A string containing all lower case characters.
+Set by prolog-build-case-strings.")
+
+(defvar prolog-atom-char-regexp ""
+ "Set by prolog-set-atom-regexps.")
+;; "Regexp specifying characters which constitute atoms without quoting.")
+(defvar prolog-atom-regexp ""
+ "Set by prolog-set-atom-regexps.")
+
+(defconst prolog-left-paren "[[({]" ;FIXME: Why not \\s(?
+ "The characters used as left parentheses for the indentation code.")
+(defconst prolog-right-paren "[])}]" ;FIXME: Why not \\s)?
+ "The characters used as right parentheses for the indentation code.")
+
+(defconst prolog-quoted-atom-regexp
+ "\\(^\\|[^0-9]\\)\\('\\([^\n']\\|\\\\'\\)*'\\)"
+ "Regexp matching a quoted atom.")
+(defconst prolog-string-regexp
+ "\\(\"\\([^\n\"]\\|\\\\\"\\)*\"\\)"
+ "Regexp matching a string.")
+(defconst prolog-head-delimiter "\\(:-\\|\\+:\\|-:\\|\\+\\?\\|-\\?\\|-->\\)"
+ "A regexp for matching on the end delimiter of a head (e.g. \":-\").")
+
+(defvar prolog-compilation-buffer "*prolog-compilation*"
+ "Name of the output buffer for Prolog compilation/consulting.")
+
+(defvar prolog-temporary-file-name nil)
+(defvar prolog-keywords-i nil)
+(defvar prolog-types-i nil)
+(defvar prolog-mode-specificators-i nil)
+(defvar prolog-determinism-specificators-i nil)
+(defvar prolog-directives-i nil)
+(defvar prolog-eof-string-i nil)
+;; (defvar prolog-continued-prompt-regexp-i nil)
+(defvar prolog-help-function-i nil)
+
+(defvar prolog-align-rules
+ (eval-when-compile
+ (mapcar
+ (lambda (x)
+ (let ((name (car x))
+ (sym (cdr x)))
+ `(,(intern (format "prolog-%s" name))
+ (regexp . ,(format "\\(\\s-*\\)%s\\(\\s-*\\)" sym))
+ (tab-stop . nil)
+ (modes . '(prolog-mode))
+ (group . (1 2)))))
+ '(("dcg" . "-->") ("rule" . ":-") ("simplification" . "<=>")
+ ("propagation" . "==>")))))
+
+
+
+;;-------------------------------------------------------------------
+;; Prolog mode
+;;-------------------------------------------------------------------
+
+;; Example: (prolog-atleast-version '(3 . 6))
+(defun prolog-atleast-version (version)
+ "Return t if the version of the current prolog system is VERSION or later.
+VERSION is of the format (Major . Minor)"
+ ;; Version.major < major or
+ ;; Version.major = major and Version.minor <= minor
+ (let* ((thisversion (prolog-find-value-by-system prolog-system-version))
+ (thismajor (car thisversion))
+ (thisminor (cdr thisversion)))
+ (or (< (car version) thismajor)
+ (and (= (car version) thismajor)
+ (<= (cdr version) thisminor)))
+ ))
+
(define-abbrev-table 'prolog-mode-abbrev-table ())
-(defun prolog-smie-forward-token ()
- (forward-comment (point-max))
- (buffer-substring-no-properties
- (point)
- (progn (cond
- ((looking-at "[!;]") (forward-char 1))
- ((not (zerop (skip-chars-forward "#&*+-./:<=>?@\\^`~"))))
- ((not (zerop (skip-syntax-forward "w_'"))))
- ;; In case of non-ASCII punctuation.
- ((not (zerop (skip-syntax-forward ".")))))
- (point))))
-
-(defun prolog-smie-backward-token ()
- (forward-comment (- (point-max)))
- (buffer-substring-no-properties
- (point)
- (progn (cond
- ((memq (char-before) '(?! ?\;)) (forward-char -1))
- ((not (zerop (skip-chars-backward "#&*+-./:<=>?@\\^`~"))))
- ((not (zerop (skip-syntax-backward "w_'"))))
- ;; In case of non-ASCII punctuation.
- ((not (zerop (skip-syntax-backward ".")))))
- (point))))
-
-(defconst prolog-smie-grammar
- ;; Rather than construct the operator levels table from the BNF,
- ;; we directly provide the operator precedences from GNU Prolog's
- ;; manual (7.14.10 op/3). The only problem is that GNU Prolog's
- ;; manual uses precedence levels in the opposite sense (higher
- ;; numbers bind less tightly) than SMIE, so we use negative numbers.
- '(("." -10000 -10000)
- (":-" -1200 -1200)
- ("-->" -1200 -1200)
- (";" -1100 -1100)
- ("->" -1050 -1050)
- ("," -1000 -1000)
- ("\\+" -900 -900)
- ("=" -700 -700)
- ("\\=" -700 -700)
- ("=.." -700 -700)
- ("==" -700 -700)
- ("\\==" -700 -700)
- ("@<" -700 -700)
- ("@=<" -700 -700)
- ("@>" -700 -700)
- ("@>=" -700 -700)
- ("is" -700 -700)
- ("=:=" -700 -700)
- ("=\\=" -700 -700)
- ("<" -700 -700)
- ("=<" -700 -700)
- (">" -700 -700)
- (">=" -700 -700)
- (":" -600 -600)
- ("+" -500 -500)
- ("-" -500 -500)
- ("/\\" -500 -500)
- ("\\/" -500 -500)
- ("*" -400 -400)
- ("/" -400 -400)
- ("//" -400 -400)
- ("rem" -400 -400)
- ("mod" -400 -400)
- ("<<" -400 -400)
- (">>" -400 -400)
- ("**" -200 -200)
- ("^" -200 -200)
- ;; Prefix
- ;; ("+" 200 200)
- ;; ("-" 200 200)
- ;; ("\\" 200 200)
- )
- "Precedence levels of infix operators.")
-
-(defun prolog-smie-rules (kind token)
- (pcase (cons kind token)
- (`(:elem . basic) prolog-indent-width)
- (`(:after . ".") 0) ;; To work around smie-closer-alist.
- (`(:after . ,(or `":-" `"->")) prolog-indent-width)))
+(defun prolog-find-value-by-system (alist)
+ "Get value from ALIST according to `prolog-system'."
+ (let ((system (or prolog-system
+ (buffer-local-value 'prolog-system
+ (prolog-inferior-buffer 'dont-run)))))
+ (if (listp alist)
+ (let (result
+ id)
+ (while alist
+ (setq id (car (car alist)))
+ (if (or (eq id system)
+ (eq id t)
+ (and (listp id)
+ (eval id)))
+ (progn
+ (setq result (car (cdr (car alist))))
+ (if (and (listp result)
+ (eq (car result) 'eval))
+ (setq result (eval (car (cdr result)))))
+ (setq alist nil))
+ (setq alist (cdr alist))))
+ result)
+ alist)))
+
+(defconst prolog-syntax-propertize-function
+ (when (fboundp 'syntax-propertize-rules)
+ (syntax-propertize-rules
+ ;; GNU Prolog only accepts 0'\' rather than 0'', but the only
+ ;; possible meaning of 0'' is rather clear.
+ ("\\<0\\(''?\\)"
+ (1 (unless (save-excursion (nth 8 (syntax-ppss (match-beginning 0))))
+ (string-to-syntax "_"))))
+ ;; We could check that we're not inside an atom, but I don't think
+ ;; that 'foo 8'z could be a valid syntax anyway, so why bother?
+ ("\\<[1-9][0-9]*\\('\\)[0-9a-zA-Z]" (1 "_"))
+ ;; Supposedly, ISO-Prolog wants \NNN\ for octal and \xNNN\ for hexadecimal
+ ;; escape sequences in atoms, so be careful not to let the terminating \
+ ;; escape a subsequent quote.
+ ("\\\\[x0-7][0-9a-fA-F]*\\(\\\\\\)" (1 "_"))
+ )))
(defun prolog-mode-variables ()
- (set (make-local-variable 'paragraph-separate) (concat "%%\\|$\\|" page-delimiter)) ;'%%..'
+ "Set some common variables to Prolog code specific values."
+ (setq local-abbrev-table prolog-mode-abbrev-table)
+ (set (make-local-variable 'paragraph-start)
+ (concat "[ \t]*$\\|" page-delimiter)) ;'%%..'
+ (set (make-local-variable 'paragraph-separate) paragraph-start)
(set (make-local-variable 'paragraph-ignore-fill-prefix) t)
- (set (make-local-variable 'imenu-generic-expression) '((nil "^\\sw+" 0)))
-
- ;; Setup SMIE.
- (smie-setup prolog-smie-grammar #'prolog-smie-rules
- :forward-token #'prolog-smie-forward-token
- :backward-token #'prolog-smie-backward-token)
- (set (make-local-variable 'smie-blink-matching-triggers) '(?.))
- (set (make-local-variable 'smie-closer-alist) '((t . ".")))
- (add-hook 'post-self-insert-hook #'smie-blink-matching-open 'append 'local)
- ;; There's no real closer in Prolog anyway.
- (set (make-local-variable 'smie-blink-matching-inners) t)
-
+ (set (make-local-variable 'normal-auto-fill-function) 'prolog-do-auto-fill)
+ (set (make-local-variable 'indent-line-function) 'prolog-indent-line)
(set (make-local-variable 'comment-start) "%")
- (set (make-local-variable 'comment-start-skip) "\\(?:%+\\|/\\*+\\)[ \t]*")
- (set (make-local-variable 'comment-end-skip) "[ \t]*\\(\n\\|\\*+/\\)")
- (set (make-local-variable 'comment-column) 48))
+ (set (make-local-variable 'comment-end) "")
+ (set (make-local-variable 'comment-add) 1)
+ (set (make-local-variable 'comment-start-skip)
+ ;; This complex regexp makes sure that comments cannot start
+ ;; inside quoted atoms or strings
+ (format "^\\(\\(%s\\|%s\\|[^\n\'\"%%]\\)*\\)\\(/\\*+ *\\|%%+ *\\)"
+ prolog-quoted-atom-regexp prolog-string-regexp))
+ (set (make-local-variable 'comment-indent-function) 'prolog-comment-indent)
+ (set (make-local-variable 'parens-require-spaces) nil)
+ ;; Initialize Prolog system specific variables
+ (dolist (var '(prolog-keywords prolog-types prolog-mode-specificators
+ prolog-determinism-specificators prolog-directives
+ prolog-eof-string
+ ;; prolog-continued-prompt-regexp
+ prolog-help-function))
+ (set (intern (concat (symbol-name var) "-i"))
+ (prolog-find-value-by-system (symbol-value var))))
+ (when (null (prolog-program-name))
+ (set (make-local-variable 'compile-command) (prolog-compile-string)))
+ (set (make-local-variable 'font-lock-defaults)
+ '(prolog-font-lock-keywords nil nil ((?_ . "w"))))
+ (set (make-local-variable 'syntax-propertize-function)
+ prolog-syntax-propertize-function)
+ )
+
+(defun prolog-mode-keybindings-common (map)
+ "Define keybindings common to both Prolog modes in MAP."
+ (define-key map "\C-c?" 'prolog-help-on-predicate)
+ (define-key map "\C-c/" 'prolog-help-apropos)
+ (define-key map "\C-c\C-d" 'prolog-debug-on)
+ (define-key map "\C-c\C-t" 'prolog-trace-on)
+ (define-key map "\C-c\C-z" 'prolog-zip-on)
+ (define-key map "\C-c\r" 'run-prolog))
+
+(defun prolog-mode-keybindings-edit (map)
+ "Define keybindings for Prolog mode in MAP."
+ (define-key map "\M-a" 'prolog-beginning-of-clause)
+ (define-key map "\M-e" 'prolog-end-of-clause)
+ (define-key map "\M-q" 'prolog-fill-paragraph)
+ (define-key map "\C-c\C-a" 'align)
+ (define-key map "\C-\M-a" 'prolog-beginning-of-predicate)
+ (define-key map "\C-\M-e" 'prolog-end-of-predicate)
+ (define-key map "\M-\C-c" 'prolog-mark-clause)
+ (define-key map "\M-\C-h" 'prolog-mark-predicate)
+ (define-key map "\M-\C-n" 'prolog-forward-list)
+ (define-key map "\M-\C-p" 'prolog-backward-list)
+ (define-key map "\C-c\C-n" 'prolog-insert-predicate-template)
+ (define-key map "\C-c\C-s" 'prolog-insert-predspec)
+ (define-key map "\M-\r" 'prolog-insert-next-clause)
+ (define-key map "\C-c\C-va" 'prolog-variables-to-anonymous)
+ (define-key map "\C-c\C-v\C-s" 'prolog-view-predspec)
+
+ (define-key map [Backspace] 'prolog-electric-delete)
+ (define-key map "." 'prolog-electric-dot)
+ (define-key map "_" 'prolog-electric-underscore)
+ (define-key map "(" 'prolog-electric-if-then-else)
+ (define-key map ";" 'prolog-electric-if-then-else)
+ (define-key map ">" 'prolog-electric-if-then-else)
+ (define-key map ":" 'prolog-electric-colon)
+ (define-key map "-" 'prolog-electric-dash)
+ (if prolog-electric-newline-flag
+ (define-key map "\r" 'newline-and-indent))
+
+ ;; If we're running SICStus, then map C-c C-c e/d to enabling
+ ;; and disabling of the source-level debugging facilities.
+ ;(if (and (eq prolog-system 'sicstus)
+ ; (prolog-atleast-version '(3 . 7)))
+ ; (progn
+ ; (define-key map "\C-c\C-ce" 'prolog-enable-sicstus-sd)
+ ; (define-key map "\C-c\C-cd" 'prolog-disable-sicstus-sd)
+ ; ))
+
+ (if prolog-old-sicstus-keys-flag
+ (progn
+ (define-key map "\C-c\C-c" 'prolog-consult-predicate)
+ (define-key map "\C-cc" 'prolog-consult-region)
+ (define-key map "\C-cC" 'prolog-consult-buffer)
+ (define-key map "\C-c\C-k" 'prolog-compile-predicate)
+ (define-key map "\C-ck" 'prolog-compile-region)
+ (define-key map "\C-cK" 'prolog-compile-buffer))
+ (define-key map "\C-c\C-p" 'prolog-consult-predicate)
+ (define-key map "\C-c\C-r" 'prolog-consult-region)
+ (define-key map "\C-c\C-b" 'prolog-consult-buffer)
+ (define-key map "\C-c\C-f" 'prolog-consult-file)
+ (define-key map "\C-c\C-cp" 'prolog-compile-predicate)
+ (define-key map "\C-c\C-cr" 'prolog-compile-region)
+ (define-key map "\C-c\C-cb" 'prolog-compile-buffer)
+ (define-key map "\C-c\C-cf" 'prolog-compile-file))
+
+ ;; Inherited from the old prolog.el.
+ (define-key map "\e\C-x" 'prolog-consult-region)
+ (define-key map "\C-c\C-l" 'prolog-consult-file)
+ (define-key map "\C-c\C-z" 'switch-to-prolog))
+
+(defun prolog-mode-keybindings-inferior (map)
+ "Define keybindings for inferior Prolog mode in MAP."
+ ;; No inferior mode specific keybindings now.
+ )
(defvar prolog-mode-map
(let ((map (make-sparse-keymap)))
- (define-key map "\e\C-x" 'prolog-consult-region)
- (define-key map "\C-c\C-l" 'inferior-prolog-load-file)
- (define-key map "\C-c\C-z" 'switch-to-prolog)
+ (prolog-mode-keybindings-common map)
+ (prolog-mode-keybindings-edit map)
map))
-(easy-menu-define prolog-mode-menu prolog-mode-map "Menu for Prolog mode."
- ;; Mostly copied from scheme-mode's menu.
- ;; Not tremendously useful, but it's a start.
- '("Prolog"
- ["Indent line" indent-according-to-mode t]
- ["Indent region" indent-region t]
- ["Comment region" comment-region t]
- ["Uncomment region" uncomment-region t]
- "--"
- ["Run interactive Prolog session" run-prolog t]
- ))
+(defvar prolog-mode-hook nil
+ "List of functions to call after the prolog mode has initialised.")
+
+(unless (fboundp 'prog-mode)
+ (defalias 'prog-mode 'fundamental-mode))
;;;###autoload
(define-derived-mode prolog-mode prog-mode "Prolog"
- "Major mode for editing Prolog code for Prologs.
-Blank lines and `%%...' separate paragraphs. `%'s start comments.
+ "Major mode for editing Prolog code.
+
+Blank lines and `%%...' separate paragraphs. `%'s starts a comment
+line and comments can also be enclosed in /* ... */.
+
+If an optional argument SYSTEM is non-nil, set up mode for the given system.
+
+To find out what version of Prolog mode you are running, enter
+`\\[prolog-mode-version]'.
+
Commands:
\\{prolog-mode-map}
Entry to this mode calls the value of `prolog-mode-hook'
if that value is non-nil."
+ (setq mode-name (concat "Prolog"
+ (cond
+ ((eq prolog-system 'eclipse) "[ECLiPSe]")
+ ((eq prolog-system 'sicstus) "[SICStus]")
+ ((eq prolog-system 'swi) "[SWI]")
+ ((eq prolog-system 'gnu) "[GNU]")
+ (t ""))))
(prolog-mode-variables)
- (set (make-local-variable 'comment-add) 1)
- (setq font-lock-defaults '(prolog-font-lock-keywords
- nil nil nil
- beginning-of-line)))
-
-(defun end-of-prolog-clause ()
- "Go to end of clause in this line."
- (beginning-of-line 1)
- (let* ((eolpos (line-end-position)))
- (if (re-search-forward comment-start-skip eolpos 'move)
- (goto-char (match-beginning 0)))
- (skip-chars-backward " \t")))
+ (prolog-build-case-strings)
+ (prolog-set-atom-regexps)
+ (dolist (ar prolog-align-rules) (add-to-list 'align-rules-list ar))
+
+ ;; imenu entry moved to the appropriate hook for consistency
+
+ ;; Load SICStus debugger if suitable
+ (if (and (eq prolog-system 'sicstus)
+ (prolog-atleast-version '(3 . 7))
+ prolog-use-sicstus-sd)
+ (prolog-enable-sicstus-sd))
+
+ (prolog-menu))
+
+(defvar mercury-mode-map
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map prolog-mode-map)
+ map))
+
+;;;###autoload
+(define-derived-mode mercury-mode prolog-mode "Prolog[Mercury]"
+ "Major mode for editing Mercury programs.
+Actually this is just customized `prolog-mode'."
+ (set (make-local-variable 'prolog-system) 'mercury))
+
-;;;
-;;; Inferior prolog mode
-;;;
-(defvar inferior-prolog-mode-map
+;;-------------------------------------------------------------------
+;; Inferior prolog mode
+;;-------------------------------------------------------------------
+
+(defvar prolog-inferior-mode-map
(let ((map (make-sparse-keymap)))
- ;; This map will inherit from `comint-mode-map' when entering
- ;; inferior-prolog-mode.
+ (prolog-mode-keybindings-common map)
+ (prolog-mode-keybindings-inferior map)
(define-key map [remap self-insert-command]
- 'inferior-prolog-self-insert-command)
+ 'prolog-inferior-self-insert-command)
map))
-(defvar inferior-prolog-mode-syntax-table prolog-mode-syntax-table)
-(defvar inferior-prolog-mode-abbrev-table prolog-mode-abbrev-table)
+(defvar prolog-inferior-mode-hook nil
+ "List of functions to call after the inferior prolog mode has initialised.")
-(defvar inferior-prolog-error-regexp-alist
- ;; GNU Prolog used to not follow the GNU standard format.
- '(("^\\(.*?\\):\\([0-9]+\\) error: .*(char:\\([0-9]+\\)" 1 2 3)
+(defvar prolog-inferior-error-regexp-alist
+ '(;; GNU Prolog used to not follow the GNU standard format.
+ ;; ("^\\(.*?\\):\\([0-9]+\\) error: .*(char:\\([0-9]+\\)" 1 2 3)
+ ;; SWI-Prolog.
+ ("^\\(?:\\?- *\\)?\\(\\(?:ERROR\\|\\(W\\)arning\\): *\\(.*?\\):\\([1-9][0-9]*\\):\\(?:\\([0-9]*\\):\\)?\\)\\(?:$\\| \\)"
+ 3 4 5 (2 . nil) 1)
+ ;; GNU-Prolog now uses the GNU standard format.
gnu))
-(declare-function comint-mode "comint")
-(declare-function comint-send-string "comint" (process string))
-(declare-function comint-send-region "comint" (process start end))
-(declare-function comint-send-eof "comint" ())
-(defvar compilation-error-regexp-alist)
+(defun prolog-inferior-self-insert-command ()
+ "Insert the char in the buffer or pass it directly to the process."
+ (interactive)
+ (let* ((proc (get-buffer-process (current-buffer)))
+ (pmark (and proc (marker-position (process-mark proc)))))
+ ;; FIXME: the same treatment would be needed for SWI-Prolog, but I can't
+ ;; seem to find any way for Emacs to figure out when to use it because
+ ;; SWI doesn't include a " ? " or some such recognizable marker.
+ (if (and (eq prolog-system 'gnu)
+ pmark
+ (null current-prefix-arg)
+ (eobp)
+ (eq (point) pmark)
+ (save-excursion
+ (goto-char (- pmark 3))
+ ;; FIXME: check this comes from the process's output, maybe?
+ (looking-at " \\? ")))
+ ;; This is GNU prolog waiting to know whether you want more answers
+ ;; or not (or abort, etc...). The answer is a single char, not
+ ;; a line, so pass this char directly rather than wait for RET to
+ ;; send a whole line.
+ (comint-send-string proc (string last-command-event))
+ (call-interactively 'self-insert-command))))
+
-(define-derived-mode inferior-prolog-mode comint-mode "Inferior Prolog"
+(define-derived-mode prolog-inferior-mode comint-mode "Inferior Prolog"
"Major mode for interacting with an inferior Prolog process.
The following commands are available:
-\\{inferior-prolog-mode-map}
+\\{prolog-inferior-mode-map}
Entry to this mode calls the value of `prolog-mode-hook' with no arguments,
if that value is non-nil. Likewise with the value of `comint-mode-hook'.
`prolog-mode-hook' is called after `comint-mode-hook'.
-You can send text to the inferior Prolog from other buffers using the commands
-`process-send-region', `process-send-string' and \\[prolog-consult-region].
+You can send text to the inferior Prolog from other buffers
+using the commands `send-region', `send-string' and \\[prolog-consult-region].
Commands:
Tab indents for Prolog; with argument, shifts rest
of expression rigidly with the current line.
-Paragraphs are separated only by blank lines and '%%'.
-'%'s start comments.
+Paragraphs are separated only by blank lines and '%%'. '%'s start comments.
Return at end of buffer sends line as input.
Return not at end copies rest of line to end and sends it.
-\\[comint-kill-input] and \\[backward-kill-word] are kill commands, imitating normal Unix input editing.
+\\[comint-delchar-or-maybe-eof] sends end-of-file as input.
+\\[comint-kill-input] and \\[backward-kill-word] are kill commands,
+imitating normal Unix input editing.
\\[comint-interrupt-subjob] interrupts the shell or its current subjob if any.
-\\[comint-stop-subjob] stops. \\[comint-quit-subjob] sends quit signal."
- (setq comint-prompt-regexp "^| [ ?][- ] *")
+\\[comint-stop-subjob] stops, likewise.
+\\[comint-quit-subjob] sends quit signal, likewise.
+
+To find out what version of Prolog mode you are running, enter
+`\\[prolog-mode-version]'."
+ (setq comint-input-filter 'prolog-input-filter)
+ (setq mode-line-process '(": %s"))
+ (prolog-mode-variables)
+ (setq comint-prompt-regexp (prolog-prompt-regexp))
+ (set (make-local-variable 'shell-dirstack-query) "pwd.")
(set (make-local-variable 'compilation-error-regexp-alist)
- inferior-prolog-error-regexp-alist)
+ prolog-inferior-error-regexp-alist)
(compilation-shell-minor-mode)
- (prolog-mode-variables))
-
-(defvar inferior-prolog-buffer nil)
-
-(defvar inferior-prolog-flavor 'unknown
- "Either a symbol or a buffer position offset by one.
-If a buffer position, the flavor has not been determined yet and
-it is expected that the process's output has been or will
-be inserted at that position plus one.")
-
-(defun inferior-prolog-run (&optional name)
- (with-current-buffer (make-comint "prolog" (or name prolog-program-name))
- (inferior-prolog-mode)
- (setq-default inferior-prolog-buffer (current-buffer))
- (make-local-variable 'inferior-prolog-buffer)
- (when (and name (not (equal name prolog-program-name)))
- (set (make-local-variable 'prolog-program-name) name))
- (set (make-local-variable 'inferior-prolog-flavor)
- ;; Force re-detection.
- (let* ((proc (get-buffer-process (current-buffer)))
- (pmark (and proc (marker-position (process-mark proc)))))
- (cond
- ((null pmark) (1- (point-min)))
- ;; The use of insert-before-markers in comint.el together with
- ;; the potential use of comint-truncate-buffer in the output
- ;; filter, means that it's difficult to reliably keep track of
- ;; the buffer position where the process's output started.
- ;; If possible we use a marker at "start - 1", so that
- ;; insert-before-marker at `start' won't shift it. And if not,
- ;; we fall back on using a plain integer.
- ((> pmark (point-min)) (copy-marker (1- pmark)))
- (t (1- pmark)))))
- (add-hook 'comint-output-filter-functions
- 'inferior-prolog-guess-flavor nil t)))
-
-(defun inferior-prolog-process (&optional dontstart)
- (or (and (buffer-live-p inferior-prolog-buffer)
- (get-buffer-process inferior-prolog-buffer))
- (unless dontstart
- (inferior-prolog-run)
- ;; Try again.
- (inferior-prolog-process))))
-
-(defun inferior-prolog-guess-flavor (&optional ignored)
- (save-excursion
- (goto-char (1+ inferior-prolog-flavor))
- (setq inferior-prolog-flavor
- (cond
- ((looking-at "GNU Prolog") 'gnu)
- ((looking-at "Welcome to SWI-Prolog") 'swi)
- ((looking-at ".*\n") 'unknown) ;There's at least one line.
- (t inferior-prolog-flavor))))
- (when (symbolp inferior-prolog-flavor)
- (remove-hook 'comint-output-filter-functions
- 'inferior-prolog-guess-flavor t)
- (if (eq inferior-prolog-flavor 'gnu)
- (set (make-local-variable 'comint-process-echoes) t))))
+ (prolog-inferior-menu))
+
+(defun prolog-input-filter (str)
+ (cond ((string-match "\\`\\s *\\'" str) nil) ;whitespace
+ ((not (derived-mode-p 'prolog-inferior-mode)) t)
+ ((= (length str) 1) nil) ;one character
+ ((string-match "\\`[rf] *[0-9]*\\'" str) nil) ;r(edo) or f(ail)
+ (t t)))
;;;###autoload
-(defalias 'run-prolog 'switch-to-prolog)
-;;;###autoload
-(defun switch-to-prolog (&optional name)
+(defun run-prolog (arg)
"Run an inferior Prolog process, input and output via buffer *prolog*.
-With prefix argument \\[universal-prefix], prompt for the program to use."
- (interactive
- (list (when current-prefix-arg
- (let ((proc (inferior-prolog-process 'dontstart)))
- (if proc
- (if (yes-or-no-p "Kill current process before starting new one? ")
- (kill-process proc)
- (error "Abort")))
- (read-string "Run Prolog: " prolog-program-name)))))
- (unless (inferior-prolog-process 'dontstart)
- (inferior-prolog-run name))
- (pop-to-buffer inferior-prolog-buffer))
-
-(defun inferior-prolog-self-insert-command ()
- "Insert the char in the buffer or pass it directly to the process."
+With prefix argument ARG, restart the Prolog process if running before."
+ (interactive "P")
+ ;; FIXME: It should be possible to interactively specify the command to use
+ ;; to run prolog.
+ (if (and arg (get-process "prolog"))
+ (progn
+ (process-send-string "prolog" "halt.\n")
+ (while (get-process "prolog") (sit-for 0.1))))
+ (let ((buff (buffer-name)))
+ (if (not (string= buff "*prolog*"))
+ (prolog-goto-prolog-process-buffer))
+ ;; Load SICStus debugger if suitable
+ (if (and (eq prolog-system 'sicstus)
+ (prolog-atleast-version '(3 . 7))
+ prolog-use-sicstus-sd)
+ (prolog-enable-sicstus-sd))
+ (prolog-mode-variables)
+ (prolog-ensure-process)
+ ))
+
+(defun prolog-inferior-guess-flavor (&optional ignored)
+ (setq prolog-system
+ (when (or (numberp prolog-system) (markerp prolog-system))
+ (save-excursion
+ (goto-char (1+ prolog-system))
+ (cond
+ ((looking-at "GNU Prolog") 'gnu)
+ ((looking-at "Welcome to SWI-Prolog\\|%.*\\<swi_") 'swi)
+ ((looking-at ".*\n") nil) ;There's at least one line.
+ (t prolog-system)))))
+ (when (symbolp prolog-system)
+ (remove-hook 'comint-output-filter-functions
+ 'prolog-inferior-guess-flavor t)
+ (when prolog-system
+ (setq comint-prompt-regexp (prolog-prompt-regexp))
+ (if (eq prolog-system 'gnu)
+ (set (make-local-variable 'comint-process-echoes) t)))))
+
+(defun prolog-ensure-process (&optional wait)
+ "If Prolog process is not running, run it.
+If the optional argument WAIT is non-nil, wait for Prolog prompt specified by
+the variable `prolog-prompt-regexp'."
+ (if (null (prolog-program-name))
+ (error "This Prolog system has defined no interpreter."))
+ (if (comint-check-proc "*prolog*")
+ ()
+ (with-current-buffer (get-buffer-create "*prolog*")
+ (prolog-inferior-mode)
+ (apply 'make-comint-in-buffer "prolog" (current-buffer)
+ (prolog-program-name) nil (prolog-program-switches))
+ (unless prolog-system
+ ;; Setup auto-detection.
+ (set (make-local-variable 'prolog-system)
+ ;; Force re-detection.
+ (let* ((proc (get-buffer-process (current-buffer)))
+ (pmark (and proc (marker-position (process-mark proc)))))
+ (cond
+ ((null pmark) (1- (point-min)))
+ ;; The use of insert-before-markers in comint.el together with
+ ;; the potential use of comint-truncate-buffer in the output
+ ;; filter, means that it's difficult to reliably keep track of
+ ;; the buffer position where the process's output started.
+ ;; If possible we use a marker at "start - 1", so that
+ ;; insert-before-marker at `start' won't shift it. And if not,
+ ;; we fall back on using a plain integer.
+ ((> pmark (point-min)) (copy-marker (1- pmark)))
+ (t (1- pmark)))))
+ (add-hook 'comint-output-filter-functions
+ 'prolog-inferior-guess-flavor nil t))
+ (if wait
+ (progn
+ (goto-char (point-max))
+ (while
+ (save-excursion
+ (not
+ (re-search-backward
+ (concat "\\(" (prolog-prompt-regexp) "\\)" "\\=")
+ nil t)))
+ (sit-for 0.1)))))))
+
+(defun prolog-inferior-buffer (&optional dont-run)
+ (or (get-buffer "*prolog*")
+ (unless dont-run
+ (prolog-ensure-process)
+ (get-buffer "*prolog*"))))
+
+(defun prolog-process-insert-string (process string)
+ "Insert STRING into inferior Prolog buffer running PROCESS."
+ ;; Copied from elisp manual, greek to me
+ (with-current-buffer (process-buffer process)
+ ;; FIXME: Use window-point-insertion-type instead.
+ (let ((moving (= (point) (process-mark process))))
+ (save-excursion
+ ;; Insert the text, moving the process-marker.
+ (goto-char (process-mark process))
+ (insert string)
+ (set-marker (process-mark process) (point)))
+ (if moving (goto-char (process-mark process))))))
+
+;;------------------------------------------------------------
+;; Old consulting and compiling functions
+;;------------------------------------------------------------
+
+(defun prolog-old-process-region (compilep start end)
+ "Process the region limited by START and END positions.
+If COMPILEP is non-nil then use compilation, otherwise consulting."
+ (prolog-ensure-process)
+ ;(let ((tmpfile prolog-temp-filename)
+ (let ((tmpfile (prolog-temporary-file))
+ ;(process (get-process "prolog"))
+ (first-line (1+ (count-lines
+ (point-min)
+ (save-excursion
+ (goto-char start)
+ (point))))))
+ (write-region start end tmpfile)
+ (setq start (copy-marker start))
+ (with-current-buffer (prolog-inferior-buffer)
+ (compilation-forget-errors)
+ (compilation-fake-loc start tmpfile))
+ (process-send-string
+ "prolog" (prolog-build-prolog-command
+ compilep tmpfile (prolog-bsts buffer-file-name)
+ first-line))
+ (prolog-goto-prolog-process-buffer)))
+
+(defun prolog-old-process-predicate (compilep)
+ "Process the predicate around point.
+If COMPILEP is non-nil then use compilation, otherwise consulting."
+ (prolog-old-process-region
+ compilep (prolog-pred-start) (prolog-pred-end)))
+
+(defun prolog-old-process-buffer (compilep)
+ "Process the entire buffer.
+If COMPILEP is non-nil then use compilation, otherwise consulting."
+ (prolog-old-process-region compilep (point-min) (point-max)))
+
+(defun prolog-old-process-file (compilep)
+ "Process the file of the current buffer.
+If COMPILEP is non-nil then use compilation, otherwise consulting."
+ (save-some-buffers)
+ (prolog-ensure-process)
+ (with-current-buffer (prolog-inferior-buffer)
+ (compilation-forget-errors))
+ (process-send-string
+ "prolog" (prolog-build-prolog-command
+ compilep buffer-file-name
+ (prolog-bsts buffer-file-name)))
+ (prolog-goto-prolog-process-buffer))
+
+
+;;------------------------------------------------------------
+;; Consulting and compiling
+;;------------------------------------------------------------
+
+;; Interactive interface functions, used by both the standard
+;; and the experimental consultation and compilation functions
+(defun prolog-consult-file ()
+ "Consult file of current buffer."
(interactive)
- (let* ((proc (get-buffer-process (current-buffer)))
- (pmark (and proc (marker-position (process-mark proc)))))
- (if (and (eq inferior-prolog-flavor 'gnu)
- pmark
- (null current-prefix-arg)
- (eobp)
- (eq (point) pmark)
+ (if prolog-use-standard-consult-compile-method-flag
+ (prolog-old-process-file nil)
+ (prolog-consult-compile-file nil)))
+
+(defun prolog-consult-buffer ()
+ "Consult buffer."
+ (interactive)
+ (if prolog-use-standard-consult-compile-method-flag
+ (prolog-old-process-buffer nil)
+ (prolog-consult-compile-buffer nil)))
+
+(defun prolog-consult-region (beg end)
+ "Consult region between BEG and END."
+ (interactive "r")
+ (if prolog-use-standard-consult-compile-method-flag
+ (prolog-old-process-region nil beg end)
+ (prolog-consult-compile-region nil beg end)))
+
+(defun prolog-consult-predicate ()
+ "Consult the predicate around current point."
+ (interactive)
+ (if prolog-use-standard-consult-compile-method-flag
+ (prolog-old-process-predicate nil)
+ (prolog-consult-compile-predicate nil)))
+
+(defun prolog-compile-file ()
+ "Compile file of current buffer."
+ (interactive)
+ (if prolog-use-standard-consult-compile-method-flag
+ (prolog-old-process-file t)
+ (prolog-consult-compile-file t)))
+
+(defun prolog-compile-buffer ()
+ "Compile buffer."
+ (interactive)
+ (if prolog-use-standard-consult-compile-method-flag
+ (prolog-old-process-buffer t)
+ (prolog-consult-compile-buffer t)))
+
+(defun prolog-compile-region (beg end)
+ "Compile region between BEG and END."
+ (interactive "r")
+ (if prolog-use-standard-consult-compile-method-flag
+ (prolog-old-process-region t beg end)
+ (prolog-consult-compile-region t beg end)))
+
+(defun prolog-compile-predicate ()
+ "Compile the predicate around current point."
+ (interactive)
+ (if prolog-use-standard-consult-compile-method-flag
+ (prolog-old-process-predicate t)
+ (prolog-consult-compile-predicate t)))
+
+(defun prolog-buffer-module ()
+ "Select Prolog module name appropriate for current buffer.
+Bases decision on buffer contents (-*- line)."
+ ;; Look for -*- ... module: MODULENAME; ... -*-
+ (let (beg end)
+ (save-excursion
+ (goto-char (point-min))
+ (skip-chars-forward " \t")
+ (and (search-forward "-*-" (line-end-position) t)
+ (progn
+ (skip-chars-forward " \t")
+ (setq beg (point))
+ (search-forward "-*-" (line-end-position) t))
+ (progn
+ (forward-char -3)
+ (skip-chars-backward " \t")
+ (setq end (point))
+ (goto-char beg)
+ (and (let ((case-fold-search t))
+ (search-forward "module:" end t))
+ (progn
+ (skip-chars-forward " \t")
+ (setq beg (point))
+ (if (search-forward ";" end t)
+ (forward-char -1)
+ (goto-char end))
+ (skip-chars-backward " \t")
+ (buffer-substring beg (point)))))))))
+
+(defun prolog-build-prolog-command (compilep file buffername
+ &optional first-line)
+ "Make Prolog command for FILE compilation/consulting.
+If COMPILEP is non-nil, consider compilation, otherwise consulting."
+ (let* ((compile-string
+ ;; FIXME: If the process is not running yet, the auto-detection of
+ ;; prolog-system won't help here, so we should make sure
+ ;; we first run Prolog and then build the command.
+ (if compilep (prolog-compile-string) (prolog-consult-string)))
+ (module (prolog-buffer-module))
+ (file-name (concat "'" (prolog-bsts file) "'"))
+ (module-name (if module (concat "'" module "'")))
+ (module-file (if module
+ (concat module-name ":" file-name)
+ file-name))
+ strbeg strend
+ (lineoffset (if first-line
+ (- first-line 1)
+ 0)))
+
+ ;; Assure that there is a buffer name
+ (if (not buffername)
+ (error "The buffer is not saved"))
+
+ (if (not (string-match "\\`'.*'\\'" buffername)) ; Add quotes
+ (setq buffername (concat "'" buffername "'")))
+ (while (string-match "%m" compile-string)
+ (setq strbeg (substring compile-string 0 (match-beginning 0)))
+ (setq strend (substring compile-string (match-end 0)))
+ (setq compile-string (concat strbeg module-file strend)))
+ ;; FIXME: The code below will %-expand any %[fbl] that appears in
+ ;; module-file.
+ (while (string-match "%f" compile-string)
+ (setq strbeg (substring compile-string 0 (match-beginning 0)))
+ (setq strend (substring compile-string (match-end 0)))
+ (setq compile-string (concat strbeg file-name strend)))
+ (while (string-match "%b" compile-string)
+ (setq strbeg (substring compile-string 0 (match-beginning 0)))
+ (setq strend (substring compile-string (match-end 0)))
+ (setq compile-string (concat strbeg buffername strend)))
+ (while (string-match "%l" compile-string)
+ (setq strbeg (substring compile-string 0 (match-beginning 0)))
+ (setq strend (substring compile-string (match-end 0)))
+ (setq compile-string (concat strbeg (format "%d" lineoffset) strend)))
+ (concat compile-string "\n")))
+
+;; The rest of this page is experimental code!
+
+;; Global variables for process filter function
+(defvar prolog-process-flag nil
+ "Non-nil means that a prolog task (i.e. a consultation or compilation job)
+is running.")
+(defvar prolog-consult-compile-output ""
+ "Hold the unprocessed output from the current prolog task.")
+(defvar prolog-consult-compile-first-line 1
+ "The number of the first line of the file to consult/compile.
+Used for temporary files.")
+(defvar prolog-consult-compile-file nil
+ "The file to compile/consult (can be a temporary file).")
+(defvar prolog-consult-compile-real-file nil
+ "The file name of the buffer to compile/consult.")
+
+(defun prolog-consult-compile (compilep file &optional first-line)
+ "Consult/compile FILE.
+If COMPILEP is non-nil, perform compilation, otherwise perform CONSULTING.
+COMMAND is a string described by the variables `prolog-consult-string'
+and `prolog-compile-string'.
+Optional argument FIRST-LINE is the number of the first line in the compiled
+region.
+
+This function must be called from the source code buffer."
+ (if prolog-process-flag
+ (error "Another Prolog task is running."))
+ (prolog-ensure-process t)
+ (let* ((buffer (get-buffer-create prolog-compilation-buffer))
+ (real-file buffer-file-name)
+ (command-string (prolog-build-prolog-command compilep file
+ real-file first-line))
+ (process (get-process "prolog"))
+ (old-filter (process-filter process)))
+ (with-current-buffer buffer
+ (delete-region (point-min) (point-max))
+ ;; FIXME: Wasn't this supposed to use prolog-inferior-mode?
+ (compilation-mode)
+ ;; FIXME: This doesn't seem to cooperate well with new(ish) compile.el.
+ ;; Setting up font-locking for this buffer
+ (set (make-local-variable 'font-lock-defaults)
+ '(prolog-font-lock-keywords nil nil ((?_ . "w"))))
+ (if (eq prolog-system 'sicstus)
+ ;; FIXME: This looks really problematic: not only is this using
+ ;; the old compilation-parse-errors-function, but
+ ;; prolog-parse-sicstus-compilation-errors only accepts one argument
+ ;; whereas compile.el calls it with 2 (and did so at least since
+ ;; Emacs-20).
+ (set (make-local-variable 'compilation-parse-errors-function)
+ 'prolog-parse-sicstus-compilation-errors))
+ (toggle-read-only 0)
+ (insert command-string "\n"))
+ (save-selected-window
+ (pop-to-buffer buffer))
+ (setq prolog-process-flag t
+ prolog-consult-compile-output ""
+ prolog-consult-compile-first-line (if first-line (1- first-line) 0)
+ prolog-consult-compile-file file
+ prolog-consult-compile-real-file (if (string=
+ file buffer-file-name)
+ nil
+ real-file))
+ (with-current-buffer buffer
+ (goto-char (point-max))
+ (set-process-filter process 'prolog-consult-compile-filter)
+ (process-send-string "prolog" command-string)
+ ;; (prolog-build-prolog-command compilep file real-file first-line))
+ (while (and prolog-process-flag
+ (accept-process-output process 10)) ; 10 secs is ok?
+ (sit-for 0.1)
+ (unless (get-process "prolog")
+ (setq prolog-process-flag nil)))
+ (insert (if compilep
+ "\nCompilation finished.\n"
+ "\nConsulted.\n"))
+ (set-process-filter process old-filter))))
+
+(defun prolog-parse-sicstus-compilation-errors (limit)
+ "Parse the prolog compilation buffer for errors.
+Argument LIMIT is a buffer position limiting searching.
+For use with the `compilation-parse-errors-function' variable."
+ (setq compilation-error-list nil)
+ (message "Parsing SICStus error messages...")
+ (let (filepath dir file errorline)
+ (while
+ (re-search-backward
+ "{\\([a-zA-Z ]* ERROR\\|Warning\\):.* in line[s ]*\\([0-9]+\\)"
+ limit t)
+ (setq errorline (string-to-number (match-string 2)))
+ (save-excursion
+ (re-search-backward
+ "{\\(consulting\\|compiling\\|processing\\) \\(.*\\)\\.\\.\\.}"
+ limit t)
+ (setq filepath (match-string 2)))
+
+ ;; ###### Does this work with SICStus under Windows (i.e. backslahes and stuff?)
+ (if (string-match "\\(.*/\\)\\([^/]*\\)$" filepath)
+ (progn
+ (setq dir (match-string 1 filepath))
+ (setq file (match-string 2 filepath))))
+
+ (setq compilation-error-list
+ (cons
+ (cons (save-excursion
+ (beginning-of-line)
+ (point-marker))
+ (list (list file dir) errorline))
+ compilation-error-list)
+ ))
+ ))
+
+(defun prolog-consult-compile-filter (process output)
+ "Filter function for Prolog compilation PROCESS.
+Argument OUTPUT is a name of the output file."
+ ;;(message "start")
+ (setq prolog-consult-compile-output
+ (concat prolog-consult-compile-output output))
+ ;;(message "pccf1: %s" prolog-consult-compile-output)
+ ;; Iterate through the lines of prolog-consult-compile-output
+ (let (outputtype)
+ (while (and prolog-process-flag
+ (or
+ ;; Trace question
+ (progn
+ (setq outputtype 'trace)
+ (and (eq prolog-system 'sicstus)
+ (string-match
+ "^[ \t]*[0-9]+[ \t]*[0-9]+[ \t]*Call:.*? "
+ prolog-consult-compile-output)))
+
+ ;; Match anything
+ (progn
+ (setq outputtype 'normal)
+ (string-match "^.*\n" prolog-consult-compile-output))
+ ))
+ ;;(message "outputtype: %s" outputtype)
+
+ (setq output (match-string 0 prolog-consult-compile-output))
+ ;; remove the text in output from prolog-consult-compile-output
+ (setq prolog-consult-compile-output
+ (substring prolog-consult-compile-output (length output)))
+ ;;(message "pccf2: %s" prolog-consult-compile-output)
+
+ ;; If temporary files were used, then we change the error
+ ;; messages to point to the original source file.
+ ;; FIXME: Use compilation-fake-loc instead.
+ (cond
+
+ ;; If the prolog process was in trace mode then it requires
+ ;; user input
+ ((and (eq prolog-system 'sicstus)
+ (eq outputtype 'trace))
+ (let ((input (concat (read-string output) "\n")))
+ (process-send-string process input)
+ (setq output (concat output input))))
+
+ ((eq prolog-system 'sicstus)
+ (if (and prolog-consult-compile-real-file
+ (string-match
+ "\\({.*:.* in line[s ]*\\)\\([0-9]+\\)-\\([0-9]+\\)" output))
+ (setq output (replace-match
+ ;; Adds a {processing ...} line so that
+ ;; `prolog-parse-sicstus-compilation-errors'
+ ;; finds the real file instead of the temporary one.
+ ;; Also fixes the line numbers.
+ (format "Added by Emacs: {processing %s...}\n%s%d-%d"
+ prolog-consult-compile-real-file
+ (match-string 1 output)
+ (+ prolog-consult-compile-first-line
+ (string-to-number
+ (match-string 2 output)))
+ (+ prolog-consult-compile-first-line
+ (string-to-number
+ (match-string 3 output))))
+ t t output)))
+ )
+
+ ((eq prolog-system 'swi)
+ (if (and prolog-consult-compile-real-file
+ (string-match (format
+ "%s\\([ \t]*:[ \t]*\\)\\([0-9]+\\)"
+ prolog-consult-compile-file)
+ output))
+ (setq output (replace-match
+ ;; Real filename + text + fixed linenum
+ (format "%s%s%d"
+ prolog-consult-compile-real-file
+ (match-string 1 output)
+ (+ prolog-consult-compile-first-line
+ (string-to-number
+ (match-string 2 output))))
+ t t output)))
+ )
+
+ (t ())
+ )
+ ;; Write the output in the *prolog-compilation* buffer
+ (insert output)))
+
+ ;; If the prompt is visible, then the task is finished
+ (if (string-match (prolog-prompt-regexp) prolog-consult-compile-output)
+ (setq prolog-process-flag nil)))
+
+(defun prolog-consult-compile-file (compilep)
+ "Consult/compile file of current buffer.
+If COMPILEP is non-nil, compile, otherwise consult."
+ (let ((file buffer-file-name))
+ (if file
+ (progn
+ (save-some-buffers)
+ (prolog-consult-compile compilep file))
+ (prolog-consult-compile-region compilep (point-min) (point-max)))))
+
+(defun prolog-consult-compile-buffer (compilep)
+ "Consult/compile current buffer.
+If COMPILEP is non-nil, compile, otherwise consult."
+ (prolog-consult-compile-region compilep (point-min) (point-max)))
+
+(defun prolog-consult-compile-region (compilep beg end)
+ "Consult/compile region between BEG and END.
+If COMPILEP is non-nil, compile, otherwise consult."
+ ;(let ((file prolog-temp-filename)
+ (let ((file (prolog-bsts (prolog-temporary-file)))
+ (lines (count-lines 1 beg)))
+ (write-region beg end file nil 'no-message)
+ (write-region "\n" nil file t 'no-message)
+ (prolog-consult-compile compilep file
+ (if (bolp) (1+ lines) lines))
+ (delete-file file)))
+
+(defun prolog-consult-compile-predicate (compilep)
+ "Consult/compile the predicate around current point.
+If COMPILEP is non-nil, compile, otherwise consult."
+ (prolog-consult-compile-region
+ compilep (prolog-pred-start) (prolog-pred-end)))
+
+
+;;-------------------------------------------------------------------
+;; Font-lock stuff
+;;-------------------------------------------------------------------
+
+;; Auxilliary functions
+(defun prolog-make-keywords-regexp (keywords &optional protect)
+ "Create regexp from the list of strings KEYWORDS.
+If PROTECT is non-nil, surround the result regexp by word breaks."
+ (let ((regexp
+ (if (fboundp 'regexp-opt)
+ ;; Emacs 20
+ ;; Avoid compile warnings under earlier versions by using eval
+ (eval '(regexp-opt keywords))
+ ;; Older Emacsen
+ (concat (mapconcat 'regexp-quote keywords "\\|")))
+ ))
+ (if protect
+ (concat "\\<\\(" regexp "\\)\\>")
+ regexp)))
+
+(defun prolog-font-lock-object-matcher (bound)
+ "Find SICStus objects method name for font lock.
+Argument BOUND is a buffer position limiting searching."
+ (let (point
+ (case-fold-search nil))
+ (while (and (not point)
+ (re-search-forward "\\(::[ \t\n]*{\\|&\\)[ \t]*"
+ bound t))
+ (while (or (re-search-forward "\\=\n[ \t]*" bound t)
+ (re-search-forward "\\=%.*" bound t)
+ (and (re-search-forward "\\=/\\*" bound t)
+ (re-search-forward "\\*/[ \t]*" bound t))))
+ (setq point (re-search-forward
+ (format "\\=\\(%s\\)" prolog-atom-regexp)
+ bound t)))
+ point))
+
+(defsubst prolog-face-name-p (facename)
+ ;; Return t if FACENAME is the name of a face. This method is
+ ;; necessary since facep in XEmacs only returns t for the actual
+ ;; face objects (while it's only their names that are used just
+ ;; about anywhere else) without providing a predicate that tests
+ ;; face names. This function (including the above commentary) is
+ ;; borrowed from cc-mode.
+ (memq facename (face-list)))
+
+;; Set everything up
+(defun prolog-font-lock-keywords ()
+ "Set up font lock keywords for the current Prolog system."
+ ;(when window-system
+ (require 'font-lock)
+
+ ;; Define Prolog faces
+ (defface prolog-redo-face
+ '((((class grayscale)) (:italic t))
+ (((class color)) (:foreground "darkorchid"))
+ (t (:italic t)))
+ "Prolog mode face for highlighting redo trace lines."
+ :group 'prolog-faces)
+ (defface prolog-exit-face
+ '((((class grayscale)) (:underline t))
+ (((class color) (background dark)) (:foreground "green"))
+ (((class color) (background light)) (:foreground "ForestGreen"))
+ (t (:underline t)))
+ "Prolog mode face for highlighting exit trace lines."
+ :group 'prolog-faces)
+ (defface prolog-exception-face
+ '((((class grayscale)) (:bold t :italic t :underline t))
+ (((class color)) (:bold t :foreground "black" :background "Khaki"))
+ (t (:bold t :italic t :underline t)))
+ "Prolog mode face for highlighting exception trace lines."
+ :group 'prolog-faces)
+ (defface prolog-warning-face
+ '((((class grayscale)) (:underline t))
+ (((class color) (background dark)) (:foreground "blue"))
+ (((class color) (background light)) (:foreground "MidnightBlue"))
+ (t (:underline t)))
+ "Face name to use for compiler warnings."
+ :group 'prolog-faces)
+ (defface prolog-builtin-face
+ '((((class color) (background light)) (:foreground "Purple"))
+ (((class color) (background dark)) (:foreground "Cyan"))
+ (((class grayscale) (background light)) (:foreground "LightGray" :bold t))
+ (((class grayscale) (background dark)) (:foreground "DimGray" :bold t))
+ (t (:bold t)))
+ "Face name to use for compiler warnings."
+ :group 'prolog-faces)
+ (defvar prolog-warning-face
+ (if (prolog-face-name-p 'font-lock-warning-face)
+ 'font-lock-warning-face
+ 'prolog-warning-face)
+ "Face name to use for built in predicates.")
+ (defvar prolog-builtin-face
+ (if (prolog-face-name-p 'font-lock-builtin-face)
+ 'font-lock-builtin-face
+ 'prolog-builtin-face)
+ "Face name to use for built in predicates.")
+ (defvar prolog-redo-face 'prolog-redo-face
+ "Face name to use for redo trace lines.")
+ (defvar prolog-exit-face 'prolog-exit-face
+ "Face name to use for exit trace lines.")
+ (defvar prolog-exception-face 'prolog-exception-face
+ "Face name to use for exception trace lines.")
+
+ ;; Font Lock Patterns
+ (let (
+ ;; "Native" Prolog patterns
+ (head-predicates
+ (list (format "^\\(%s\\)\\((\\|[ \t]*:-\\)" prolog-atom-regexp)
+ 1 font-lock-function-name-face))
+ ;(list (format "^%s" prolog-atom-regexp)
+ ; 0 font-lock-function-name-face))
+ (head-predicates-1
+ (list (format "\\.[ \t]*\\(%s\\)" prolog-atom-regexp)
+ 1 font-lock-function-name-face) )
+ (variables
+ '("\\<\\([_A-Z][a-zA-Z0-9_]*\\)"
+ 1 font-lock-variable-name-face))
+ (important-elements
+ (list (if (eq prolog-system 'mercury)
+ "[][}{;|]\\|\\\\[+=]\\|<?=>?"
+ "[][}{!;|]\\|\\*->")
+ 0 'font-lock-keyword-face))
+ (important-elements-1
+ '("[^-*]\\(->\\)" 1 font-lock-keyword-face))
+ (predspecs ; module:predicate/cardinality
+ (list (format "\\<\\(%s:\\|\\)%s/[0-9]+"
+ prolog-atom-regexp prolog-atom-regexp)
+ 0 font-lock-function-name-face 'prepend))
+ (keywords ; directives (queries)
+ (list
+ (if (eq prolog-system 'mercury)
+ (concat
+ "\\<\\("
+ (prolog-make-keywords-regexp prolog-keywords-i)
+ "\\|"
+ (prolog-make-keywords-regexp
+ prolog-determinism-specificators-i)
+ "\\)\\>")
+ (concat
+ "^[?:]- *\\("
+ (prolog-make-keywords-regexp prolog-keywords-i)
+ "\\)\\>"))
+ 1 prolog-builtin-face))
+ (quoted_atom (list prolog-quoted-atom-regexp
+ 2 'font-lock-string-face 'append))
+ (string (list prolog-string-regexp
+ 1 'font-lock-string-face 'append))
+ ;; SICStus specific patterns
+ (sicstus-object-methods
+ (if (eq prolog-system 'sicstus)
+ '(prolog-font-lock-object-matcher
+ 1 font-lock-function-name-face)))
+ ;; Mercury specific patterns
+ (types
+ (if (eq prolog-system 'mercury)
+ (list
+ (prolog-make-keywords-regexp prolog-types-i t)
+ 0 'font-lock-type-face)))
+ (modes
+ (if (eq prolog-system 'mercury)
+ (list
+ (prolog-make-keywords-regexp prolog-mode-specificators-i t)
+ 0 'font-lock-reference-face)))
+ (directives
+ (if (eq prolog-system 'mercury)
+ (list
+ (prolog-make-keywords-regexp prolog-directives-i t)
+ 0 'prolog-warning-face)))
+ ;; Inferior mode specific patterns
+ (prompt
+ ;; FIXME: Should be handled by comint already.
+ (list (prolog-prompt-regexp) 0 'font-lock-keyword-face))
+ (trace-exit
+ ;; FIXME: Add to compilation-error-regexp-alist instead.
+ (cond
+ ((eq prolog-system 'sicstus)
+ '("[ \t]*[0-9]+[ \t]+[0-9]+[ \t]*\\(Exit\\):"
+ 1 prolog-exit-face))
+ ((eq prolog-system 'swi)
+ '("[ \t]*\\(Exit\\):[ \t]*([ \t0-9]*)" 1 prolog-exit-face))
+ (t nil)))
+ (trace-fail
+ ;; FIXME: Add to compilation-error-regexp-alist instead.
+ (cond
+ ((eq prolog-system 'sicstus)
+ '("[ \t]*[0-9]+[ \t]+[0-9]+[ \t]*\\(Fail\\):"
+ 1 prolog-warning-face))
+ ((eq prolog-system 'swi)
+ '("[ \t]*\\(Fail\\):[ \t]*([ \t0-9]*)" 1 prolog-warning-face))
+ (t nil)))
+ (trace-redo
+ ;; FIXME: Add to compilation-error-regexp-alist instead.
+ (cond
+ ((eq prolog-system 'sicstus)
+ '("[ \t]*[0-9]+[ \t]+[0-9]+[ \t]*\\(Redo\\):"
+ 1 prolog-redo-face))
+ ((eq prolog-system 'swi)
+ '("[ \t]*\\(Redo\\):[ \t]*([ \t0-9]*)" 1 prolog-redo-face))
+ (t nil)))
+ (trace-call
+ ;; FIXME: Add to compilation-error-regexp-alist instead.
+ (cond
+ ((eq prolog-system 'sicstus)
+ '("[ \t]*[0-9]+[ \t]+[0-9]+[ \t]*\\(Call\\):"
+ 1 font-lock-function-name-face))
+ ((eq prolog-system 'swi)
+ '("[ \t]*\\(Call\\):[ \t]*([ \t0-9]*)"
+ 1 font-lock-function-name-face))
+ (t nil)))
+ (trace-exception
+ ;; FIXME: Add to compilation-error-regexp-alist instead.
+ (cond
+ ((eq prolog-system 'sicstus)
+ '("[ \t]*[0-9]+[ \t]+[0-9]+[ \t]*\\(Exception\\):"
+ 1 prolog-exception-face))
+ ((eq prolog-system 'swi)
+ '("[ \t]*\\(Exception\\):[ \t]*([ \t0-9]*)"
+ 1 prolog-exception-face))
+ (t nil)))
+ (error-message-identifier
+ ;; FIXME: Add to compilation-error-regexp-alist instead.
+ (cond
+ ((eq prolog-system 'sicstus)
+ '("{\\([A-Z]* ?ERROR:\\)" 1 prolog-exception-face prepend))
+ ((eq prolog-system 'swi)
+ '("^[[]\\(WARNING:\\)" 1 prolog-builtin-face prepend))
+ (t nil)))
+ (error-whole-messages
+ ;; FIXME: Add to compilation-error-regexp-alist instead.
+ (cond
+ ((eq prolog-system 'sicstus)
+ '("{\\([A-Z]* ?ERROR:.*\\)}[ \t]*$"
+ 1 font-lock-comment-face append))
+ ((eq prolog-system 'swi)
+ '("^[[]WARNING:[^]]*[]]$" 0 font-lock-comment-face append))
+ (t nil)))
+ (error-warning-messages
+ ;; FIXME: Add to compilation-error-regexp-alist instead.
+ ;; Mostly errors that SICStus asks the user about how to solve,
+ ;; such as "NAME CLASH:" for example.
+ (cond
+ ((eq prolog-system 'sicstus)
+ '("^[A-Z ]*[A-Z]+:" 0 prolog-warning-face))
+ (t nil)))
+ (warning-messages
+ ;; FIXME: Add to compilation-error-regexp-alist instead.
+ (cond
+ ((eq prolog-system 'sicstus)
+ '("\\({ ?\\(Warning\\|WARNING\\) ?:.*}\\)[ \t]*$"
+ 2 prolog-warning-face prepend))
+ (t nil))))
+
+ ;; Make font lock list
+ (delq
+ nil
+ (cond
+ ((eq major-mode 'prolog-mode)
+ (list
+ head-predicates
+ head-predicates-1
+ quoted_atom
+ string
+ variables
+ important-elements
+ important-elements-1
+ predspecs
+ keywords
+ sicstus-object-methods
+ types
+ modes
+ directives))
+ ((eq major-mode 'prolog-inferior-mode)
+ (list
+ prompt
+ error-message-identifier
+ error-whole-messages
+ error-warning-messages
+ warning-messages
+ predspecs
+ trace-exit
+ trace-fail
+ trace-redo
+ trace-call
+ trace-exception))
+ ((eq major-mode 'compilation-mode)
+ (list
+ error-message-identifier
+ error-whole-messages
+ error-warning-messages
+ warning-messages
+ predspecs))))
+ ))
+
+
+;;-------------------------------------------------------------------
+;; Indentation stuff
+;;-------------------------------------------------------------------
+
+;; NB: This function *MUST* have this optional argument since XEmacs
+;; assumes it. This does not mean we have to use it...
+(defun prolog-indent-line (&optional whole-exp)
+ "Indent current line as Prolog code.
+With argument, indent any additional lines of the same clause
+rigidly along with this one (not yet)."
+ (interactive "p")
+ (let ((indent (prolog-indent-level))
+ (pos (- (point-max) (point))) beg)
+ (beginning-of-line)
+ (setq beg (point))
+ (skip-chars-forward " \t")
+ (indent-line-to indent)
+ (if (> (- (point-max) pos) (point))
+ (goto-char (- (point-max) pos)))
+
+ ;; Align comments
+ (if (and prolog-align-comments-flag
(save-excursion
- (goto-char (- pmark 3))
- (looking-at " \\? ")))
- ;; This is GNU prolog waiting to know whether you want more answers
- ;; or not (or abort, etc...). The answer is a single char, not
- ;; a line, so pass this char directly rather than wait for RET to
- ;; send a whole line.
- (comint-send-string proc (string last-command-event))
- (call-interactively 'self-insert-command))))
+ (line-beginning-position)
+ ;; (let ((start (comment-search-forward (line-end-position) t)))
+ ;; (and start ;There's a comment to indent.
+ ;; ;; If it's first on the line, we've indented it already
+ ;; ;; and prolog-goto-comment-column would inf-loop.
+ ;; (progn (goto-char start) (skip-chars-backward " \t")
+ ;; (not (bolp)))))))
+ (and (looking-at comment-start-skip)
+ ;; The definition of comment-start-skip used in this
+ ;; mode is unusual in that it only matches at BOL.
+ (progn (skip-chars-forward " \t")
+ (not (eq (point) (match-end 1)))))))
+ (save-excursion
+ (prolog-goto-comment-column t)))
+
+ ;; Insert spaces if needed
+ (if (or prolog-electric-tab-flag prolog-electric-if-then-else-flag)
+ (prolog-insert-spaces-after-paren))
+ ))
+
+(defun prolog-comment-indent ()
+ "Compute prolog comment indentation."
+ ;; FIXME: Only difference with default behavior is that %%% is not
+ ;; flushed to column 0 but just left where the user put it.
+ (cond ((looking-at "%%%") (prolog-indentation-level-of-line))
+ ((looking-at "%%") (prolog-indent-level))
+ (t
+ (save-excursion
+ (skip-chars-backward " \t")
+ ;; Insert one space at least, except at left margin.
+ (max (+ (current-column) (if (bolp) 0 1))
+ comment-column)))
+ ))
+
+(defun prolog-indent-level ()
+ "Compute prolog indentation level."
+ (save-excursion
+ (beginning-of-line)
+ (let ((totbal (prolog-region-paren-balance
+ (prolog-clause-start t) (point)))
+ (oldpoint (point)))
+ (skip-chars-forward " \t")
+ (cond
+ ((looking-at "%%%") (prolog-indentation-level-of-line))
+ ;Large comment starts
+ ((looking-at "%[^%]") comment-column) ;Small comment starts
+ ((bobp) 0) ;Beginning of buffer
+
+ ;; If we found '}' then we must check if it's the
+ ;; end of an object declaration or something else.
+ ((and (looking-at "}")
+ (save-excursion
+ (forward-char 1)
+ ;; Goto to matching {
+ (if prolog-use-prolog-tokenizer-flag
+ (prolog-backward-list)
+ (backward-list))
+ (skip-chars-backward " \t")
+ (backward-char 2)
+ (looking-at "::")))
+ ;; It was an object
+ (if prolog-object-end-to-0-flag
+ 0
+ prolog-indent-width))
+
+ ;;End of /* */ comment
+ ((looking-at "\\*/")
+ (save-excursion
+ (prolog-find-start-of-mline-comment)
+ (skip-chars-backward " \t")
+ (- (current-column) 2)))
+
+ ;; Here we check if the current line is within a /* */ pair
+ ((and (looking-at "[^%/]")
+ (eq (prolog-in-string-or-comment) 'cmt))
+ (if prolog-indent-mline-comments-flag
+ (prolog-find-start-of-mline-comment)
+ ;; Same as before
+ (prolog-indentation-level-of-line)))
+
+ (t
+ (let ((empty t) ind linebal)
+ ;; See previous indentation
+ (while empty
+ (forward-line -1)
+ (beginning-of-line)
+ (if (bobp)
+ (setq empty nil)
+ (skip-chars-forward " \t")
+ (if (not (or (not (member (prolog-in-string-or-comment)
+ '(nil txt)))
+ (looking-at "%")
+ (looking-at "\n")))
+ (setq empty nil))))
+
+ ;; Store this line's indentation
+ (setq ind (if (bobp)
+ 0 ;Beginning of buffer.
+ (current-column))) ;Beginning of clause.
+
+ ;; Compute the balance of the line
+ (setq linebal (prolog-paren-balance))
+ ;;(message "bal of previous line %d totbal %d" linebal totbal)
+ (if (< linebal 0)
+ (progn
+ ;; Add 'indent-level' mode to find-unmatched-paren instead?
+ (end-of-line)
+ (setq ind (prolog-find-indent-of-matching-paren))))
+
+ ;;(message "ind %d" ind)
+ (beginning-of-line)
+
+ ;; Check if the line ends with ":-", ".", ":: {", "}" (might be
+ ;; unnecessary), "&" or ")" (The last four concerns SICStus objects)
+ (cond
+ ;; If the last char of the line is a '&' then set the indent level
+ ;; to prolog-indent-width (used in SICStus objects)
+ ((and (eq prolog-system 'sicstus)
+ (looking-at ".+&[ \t]*\\(%.*\\|\\)$"))
+ (setq ind prolog-indent-width))
+
+ ;; Increase indentation if the previous line was the head of a rule
+ ;; and does not contain a '.'
+ ((and (looking-at (format ".*%s[^\\.]*[ \t]*\\(%%.*\\|\\)$"
+ prolog-head-delimiter))
+ ;; We must check that the match is at a paren balance of 0.
+ (save-excursion
+ (let ((p (point)))
+ (re-search-forward prolog-head-delimiter)
+ (>= 0 (prolog-region-paren-balance p (point))))))
+ (let ((headindent
+ (if (< (prolog-paren-balance) 0)
+ (save-excursion
+ (end-of-line)
+ (prolog-find-indent-of-matching-paren))
+ (prolog-indentation-level-of-line))))
+ (setq ind (+ headindent prolog-indent-width))))
+
+ ;; The previous line was the head of an object
+ ((looking-at ".+ *::.*{[ \t]*$")
+ (setq ind prolog-indent-width))
+
+ ;; If a '.' is found at the end of the previous line, then
+ ;; decrease the indentation. (The \\(%.*\\|\\) part of the
+ ;; regexp is for comments at the end of the line)
+ ((and (looking-at "^.+\\.[ \t]*\\(%.*\\|\\)$")
+ ;; Make sure that the '.' found is not in a comment or string
+ (save-excursion
+ (end-of-line)
+ (re-search-backward "\\.[ \t]*\\(%.*\\|\\)$" (point-min))
+ ;; Guard against the real '.' being followed by a
+ ;; commented '.'.
+ (if (eq (prolog-in-string-or-comment) 'cmt)
+ ;; commented out '.'
+ (let ((here (line-beginning-position)))
+ (end-of-line)
+ (re-search-backward "\\.[ \t]*%.*$" here t))
+ (not (prolog-in-string-or-comment))
+ )
+ ))
+ (setq ind 0))
+
+ ;; If a '.' is found at the end of the previous line, then
+ ;; decrease the indentation. (The /\\*.*\\*/ part of the
+ ;; regexp is for C-like comments at the end of the
+ ;; line--can we merge with the case above?).
+ ((and (looking-at "^.+\\.[ \t]*\\(/\\*.*\\|\\)$")
+ ;; Make sure that the '.' found is not in a comment or string
+ (save-excursion
+ (end-of-line)
+ (re-search-backward "\\.[ \t]*\\(/\\*.*\\|\\)$" (point-min))
+ ;; Guard against the real '.' being followed by a
+ ;; commented '.'.
+ (if (eq (prolog-in-string-or-comment) 'cmt)
+ ;; commented out '.'
+ (let ((here (line-beginning-position)))
+ (end-of-line)
+ (re-search-backward "\\.[ \t]*/\\*.*$" here t))
+ (not (prolog-in-string-or-comment))
+ )
+ ))
+ (setq ind 0))
+
+ )
+
+ ;; If the last non comment char is a ',' or left paren or a left-
+ ;; indent-regexp then indent to open parenthesis level
+ (if (and
+ (> totbal 0)
+ ;; SICStus objects have special syntax rules if point is
+ ;; not inside additional parens (objects are defined
+ ;; within {...})
+ (not (and (eq prolog-system 'sicstus)
+ (= totbal 1)
+ (prolog-in-object))))
+ (if (looking-at
+ (format "\\(%s\\|%s\\|0'.\\|[0-9]+'[0-9a-zA-Z]+\\|[^\n\'\"%%]\\)*\\(,\\|%s\\|%s\\)\[ \t]*\\(%%.*\\|\\)$"
+ prolog-quoted-atom-regexp prolog-string-regexp
+ prolog-left-paren prolog-left-indent-regexp))
+ (progn
+ (goto-char oldpoint)
+ (setq ind (prolog-find-unmatched-paren
+ (if prolog-paren-indent-p
+ 'termdependent
+ 'skipwhite)))
+ ;;(setq ind (prolog-find-unmatched-paren 'termdependent))
+ )
+ (goto-char oldpoint)
+ (setq ind (prolog-find-unmatched-paren nil))
+ ))
+
+
+ ;; Return the indentation level
+ ind
+ ))))))
+
+(defun prolog-find-indent-of-matching-paren ()
+ "Find the indentation level based on the matching parenthesis.
+Indentation level is set to the one the point is after when the function is
+called."
+ (save-excursion
+ ;; Go to the matching paren
+ (if prolog-use-prolog-tokenizer-flag
+ (prolog-backward-list)
+ (backward-list))
+
+ ;; If this was the first paren on the line then return this line's
+ ;; indentation level
+ (if (prolog-paren-is-the-first-on-line-p)
+ (prolog-indentation-level-of-line)
+ ;; It was not the first one
+ (progn
+ ;; Find the next paren
+ (prolog-goto-next-paren 0)
+
+ ;; If this paren is a left one then use its column as indent level,
+ ;; if not then recurse this function
+ (if (looking-at prolog-left-paren)
+ (+ (current-column) 1)
+ (progn
+ (forward-char 1)
+ (prolog-find-indent-of-matching-paren)))
+ ))
+ ))
+
+(defun prolog-indentation-level-of-line ()
+ "Return the indentation level of the current line."
+ (save-excursion
+ (beginning-of-line)
+ (skip-chars-forward " \t")
+ (current-column)))
+
+(defun prolog-paren-is-the-first-on-line-p ()
+ "Return t if the parenthesis under the point is the first one on the line.
+Return nil otherwise.
+Note: does not check if the point is actually at a parenthesis!"
+ (save-excursion
+ (let ((begofline (line-beginning-position)))
+ (if (= begofline (point))
+ t
+ (if (prolog-goto-next-paren begofline)
+ nil
+ t)))))
+
+(defun prolog-find-unmatched-paren (&optional mode)
+ "Return the column of the last unmatched left parenthesis.
+If MODE is `skipwhite' then any white space after the parenthesis is added to
+the answer.
+If MODE is `plusone' then the parenthesis' column +1 is returned.
+If MODE is `termdependent' then if the unmatched parenthesis is part of
+a compound term the function will work as `skipwhite', otherwise
+it will return the column paren plus the value of `prolog-paren-indent'.
+If MODE is nil or not set then the parenthesis' exact column is returned."
+ (save-excursion
+ ;; If the next paren we find is a left one we're finished, if it's
+ ;; a right one then we go back one step and recurse
+ (prolog-goto-next-paren 0)
+
+ (let ((roundparen (looking-at "(")))
+ (if (looking-at prolog-left-paren)
+ (let ((not-part-of-term
+ (save-excursion
+ (backward-char 1)
+ (looking-at "[ \t]"))))
+ (if (eq mode nil)
+ (current-column)
+ (if (and roundparen
+ (eq mode 'termdependent)
+ not-part-of-term)
+ (+ (current-column)
+ (if prolog-electric-tab-flag
+ ;; Electric TAB
+ prolog-paren-indent
+ ;; Not electric TAB
+ (if (looking-at ".[ \t]*$")
+ 2
+ prolog-paren-indent))
+ )
+
+ (forward-char 1)
+ (if (or (eq mode 'skipwhite) (eq mode 'termdependent) )
+ (skip-chars-forward " \t"))
+ (current-column))))
+ ;; Not looking at left paren
+ (progn
+ (forward-char 1)
+ ;; Go to the matching paren. When we get there we have a total
+ ;; balance of 0.
+ (if prolog-use-prolog-tokenizer-flag
+ (prolog-backward-list)
+ (backward-list))
+ (prolog-find-unmatched-paren mode)))
+ )))
+
+
+(defun prolog-paren-balance ()
+ "Return the parenthesis balance of the current line.
+A return value of n means n more left parentheses than right ones."
+ (save-excursion
+ (end-of-line)
+ (prolog-region-paren-balance (line-beginning-position) (point))))
+
+(defun prolog-region-paren-balance (beg end)
+ "Return the summed parenthesis balance in the region.
+The region is limited by BEG and END positions."
+ (save-excursion
+ (let ((state (if prolog-use-prolog-tokenizer-flag
+ (prolog-tokenize beg end)
+ (parse-partial-sexp beg end))))
+ (nth 0 state))))
+
+(defun prolog-goto-next-paren (limit-pos)
+ "Move the point to the next parenthesis earlier in the buffer.
+Return t if a match was found before LIMIT-POS. Return nil otherwise."
+ (let ((retval (re-search-backward
+ (concat prolog-left-paren "\\|" prolog-right-paren)
+ limit-pos t)))
+
+ ;; If a match was found but it was in a string or comment, then recurse
+ (if (and retval (prolog-in-string-or-comment))
+ (prolog-goto-next-paren limit-pos)
+ retval)
+ ))
+
+(defun prolog-in-string-or-comment ()
+ "Check whether string, atom, or comment is under current point.
+Return:
+ `txt' if the point is in a string, atom, or character code expression
+ `cmt' if the point is in a comment
+ nil otherwise."
+ (save-excursion
+ (let* ((start
+ (if (eq prolog-parse-mode 'beg-of-line)
+ ;; 'beg-of-line
+ (save-excursion
+ (let (safepoint)
+ (beginning-of-line)
+ (setq safepoint (point))
+ (while (and (> (point) (point-min))
+ (progn
+ (forward-line -1)
+ (end-of-line)
+ (if (not (bobp))
+ (backward-char 1))
+ (looking-at "\\\\"))
+ )
+ (beginning-of-line)
+ (setq safepoint (point)))
+ safepoint))
+ ;; 'beg-of-clause
+ (prolog-clause-start)))
+ (end (point))
+ (state (if prolog-use-prolog-tokenizer-flag
+ (prolog-tokenize start end)
+ (if (fboundp 'syntax-ppss)
+ (syntax-ppss)
+ (parse-partial-sexp start end)))))
+ (cond
+ ((nth 3 state) 'txt) ; String
+ ((nth 4 state) 'cmt) ; Comment
+ (t
+ (cond
+ ((looking-at "%") 'cmt) ; Start of a comment
+ ((looking-at "/\\*") 'cmt) ; Start of a comment
+ ((looking-at "\'") 'txt) ; Start of an atom
+ ((looking-at "\"") 'txt) ; Start of a string
+ (t nil)
+ ))))
+ ))
+
+(defun prolog-find-start-of-mline-comment ()
+ "Return the start column of a /* */ comment.
+This assumes that the point is inside a comment."
+ (re-search-backward "/\\*" (point-min) t)
+ (forward-char 2)
+ (skip-chars-forward " \t")
+ (current-column))
+
+(defun prolog-insert-spaces-after-paren ()
+ "Insert spaces after the opening parenthesis, \"then\" (->) and \"else\" (;) branches.
+Spaces are inserted if all preceding objects on the line are
+whitespace characters, parentheses, or then/else branches."
+ (save-excursion
+ (let ((regexp (concat "(\\|" prolog-left-indent-regexp))
+ level)
+ (beginning-of-line)
+ (skip-chars-forward " \t")
+ (when (looking-at regexp)
+ ;; Treat "( If -> " lines specially.
+ ;;(setq incr (if (looking-at "(.*->")
+ ;; 2
+ ;; prolog-paren-indent))
+
+ ;; work on all subsequent "->", "(", ";"
+ (while (looking-at regexp)
+ (goto-char (match-end 0))
+ (setq level (+ (prolog-find-unmatched-paren) prolog-paren-indent))
+
+ ;; Remove old white space
+ (let ((start (point)))
+ (skip-chars-forward " \t")
+ (delete-region start (point)))
+ (indent-to level)
+ (skip-chars-forward " \t"))
+ )))
+ (when (save-excursion
+ (backward-char 2)
+ (looking-at "\\s ;\\|\\s (\\|->")) ; (looking-at "\\s \\((\\|;\\)"))
+ (skip-chars-forward " \t"))
+ )
+
+;;;; Comment filling
+
+(defun prolog-comment-limits ()
+ "Return the current comment limits plus the comment type (block or line).
+The comment limits are the range of a block comment or the range that
+contains all adjacent line comments (i.e. all comments that starts in
+the same column with no empty lines or non-whitespace characters
+between them)."
+ (let ((here (point))
+ lit-limits-b lit-limits-e lit-type beg end
+ )
+ (save-restriction
+ ;; Widen to catch comment limits correctly.
+ (widen)
+ (setq end (line-end-position)
+ beg (line-beginning-position))
+ (save-excursion
+ (beginning-of-line)
+ (setq lit-type (if (search-forward-regexp "%" end t) 'line 'block))
+ ; (setq lit-type 'line)
+ ;(if (search-forward-regexp "^[ \t]*%" end t)
+ ; (setq lit-type 'line)
+ ; (if (not (search-forward-regexp "%" end t))
+ ; (setq lit-type 'block)
+ ; (if (not (= (forward-line 1) 0))
+ ; (setq lit-type 'block)
+ ; (setq done t
+ ; ret (prolog-comment-limits)))
+ ; ))
+ (if (eq lit-type 'block)
+ (progn
+ (goto-char here)
+ (when (looking-at "/\\*") (forward-char 2))
+ (when (and (looking-at "\\*") (> (point) (point-min))
+ (forward-char -1) (looking-at "/"))
+ (forward-char 1))
+ (when (save-excursion (search-backward "/*" nil t))
+ (list (save-excursion (search-backward "/*") (point))
+ (or (search-forward "*/" nil t) (point-max)) lit-type)))
+ ;; line comment
+ (setq lit-limits-b (- (point) 1)
+ lit-limits-e end)
+ (condition-case nil
+ (if (progn (goto-char lit-limits-b)
+ (looking-at "%"))
+ (let ((col (current-column)) done)
+ (setq beg (point)
+ end lit-limits-e)
+ ;; Always at the beginning of the comment
+ ;; Go backward now
+ (beginning-of-line)
+ (while (and (zerop (setq done (forward-line -1)))
+ (search-forward-regexp "^[ \t]*%"
+ (line-end-position) t)
+ (= (+ 1 col) (current-column)))
+ (setq beg (- (point) 1)))
+ (when (= done 0)
+ (forward-line 1))
+ ;; We may have a line with code above...
+ (when (and (zerop (setq done (forward-line -1)))
+ (search-forward "%" (line-end-position) t)
+ (= (+ 1 col) (current-column)))
+ (setq beg (- (point) 1)))
+ (when (= done 0)
+ (forward-line 1))
+ ;; Go forward
+ (goto-char lit-limits-b)
+ (beginning-of-line)
+ (while (and (zerop (forward-line 1))
+ (search-forward-regexp "^[ \t]*%"
+ (line-end-position) t)
+ (= (+ 1 col) (current-column)))
+ (setq end (line-end-position)))
+ (list beg end lit-type))
+ (list lit-limits-b lit-limits-e lit-type)
+ )
+ (error (list lit-limits-b lit-limits-e lit-type))))
+ ))))
+
+(defun prolog-guess-fill-prefix ()
+ ;; fill 'txt entities?
+ (when (save-excursion
+ (end-of-line)
+ (equal (prolog-in-string-or-comment) 'cmt))
+ (let* ((bounds (prolog-comment-limits))
+ (cbeg (car bounds))
+ (type (nth 2 bounds))
+ beg end)
+ (save-excursion
+ (end-of-line)
+ (setq end (point))
+ (beginning-of-line)
+ (setq beg (point))
+ (if (and (eq type 'line)
+ (> cbeg beg)
+ (save-excursion (not (search-forward-regexp "^[ \t]*%"
+ cbeg t))))
+ (progn
+ (goto-char cbeg)
+ (search-forward-regexp "%+[ \t]*" end t)
+ (prolog-replace-in-string (buffer-substring beg (point))
+ "[^ \t%]" " "))
+ ;(goto-char beg)
+ (if (search-forward-regexp "^[ \t]*\\(%+\\|\\*+\\|/\\*+\\)[ \t]*"
+ end t)
+ (prolog-replace-in-string (buffer-substring beg (point)) "/" " ")
+ (beginning-of-line)
+ (when (search-forward-regexp "^[ \t]+" end t)
+ (buffer-substring beg (point)))))))))
+
+(defun prolog-fill-paragraph ()
+ "Fill paragraph comment at or after point."
+ (interactive)
+ (let* ((bounds (prolog-comment-limits))
+ (type (nth 2 bounds)))
+ (if (eq type 'line)
+ (let ((fill-prefix (prolog-guess-fill-prefix)))
+ (fill-paragraph nil))
+ (save-excursion
+ (save-restriction
+ ;; exclude surrounding lines that delimit a multiline comment
+ ;; and don't contain alphabetic characters, like "/*******",
+ ;; "- - - */" etc.
+ (save-excursion
+ (backward-paragraph)
+ (unless (bobp) (forward-line))
+ (if (string-match "^/\\*[^a-zA-Z]*$" (thing-at-point 'line))
+ (narrow-to-region (point-at-eol) (point-max))))
+ (save-excursion
+ (forward-paragraph)
+ (forward-line -1)
+ (if (string-match "^[^a-zA-Z]*\\*/$" (thing-at-point 'line))
+ (narrow-to-region (point-min) (point-at-bol))))
+ (let ((fill-prefix (prolog-guess-fill-prefix)))
+ (fill-paragraph nil))))
+ )))
+
+(defun prolog-do-auto-fill ()
+ "Carry out Auto Fill for Prolog mode.
+In effect it sets the `fill-prefix' when inside comments and then calls
+`do-auto-fill'."
+ (let ((fill-prefix (prolog-guess-fill-prefix)))
+ (do-auto-fill)
+ ))
+
+(defalias 'prolog-replace-in-string
+ (if (fboundp 'replace-in-string)
+ #'replace-in-string
+ (lambda (str regexp newtext &optional literal)
+ (replace-regexp-in-string regexp newtext str nil literal))))
+
+;;-------------------------------------------------------------------
+;; The tokenizer
+;;-------------------------------------------------------------------
+
+(defconst prolog-tokenize-searchkey
+ (concat "[0-9]+'"
+ "\\|"
+ "['\"]"
+ "\\|"
+ prolog-left-paren
+ "\\|"
+ prolog-right-paren
+ "\\|"
+ "%"
+ "\\|"
+ "/\\*"
+ ))
+
+(defun prolog-tokenize (beg end &optional stopcond)
+ "Tokenize a region of prolog code between BEG and END.
+STOPCOND decides the stop condition of the parsing. Valid values
+are 'zerodepth which stops the parsing at the first right parenthesis
+where the parenthesis depth is zero, 'skipover which skips over
+the current entity (e.g. a list, a string, etc.) and nil.
+
+The function returns a list with the following information:
+ 0. parenthesis depth
+ 3. 'atm if END is inside an atom
+ 'str if END is inside a string
+ 'chr if END is in a character code expression (0'x)
+ nil otherwise
+ 4. non-nil if END is inside a comment
+ 5. end position (always equal to END if STOPCOND is nil)
+The rest of the elements are undefined."
+ (save-excursion
+ (let* ((end2 (1+ end))
+ oldp
+ (depth 0)
+ (quoted nil)
+ inside_cmt
+ (endpos end2)
+ skiptype ; The type of entity we'll skip over
+ )
+ (goto-char beg)
+
+ (if (and (eq stopcond 'skipover)
+ (looking-at "[^[({'\"]"))
+ (setq endpos (point)) ; Stay where we are
+ (while (and
+ (re-search-forward prolog-tokenize-searchkey end2 t)
+ (< (point) end2))
+ (progn
+ (setq oldp (point))
+ (goto-char (match-beginning 0))
+ (cond
+ ;; Atoms and strings
+ ((looking-at "'")
+ ;; Find end of atom
+ (if (re-search-forward "[^\\]'" end2 'limit)
+ ;; Found end of atom
+ (progn
+ (setq oldp end2)
+ (if (and (eq stopcond 'skipover)
+ (not skiptype))
+ (setq endpos (point))
+ (setq oldp (point)))) ; Continue tokenizing
+ (setq quoted 'atm)))
+
+ ((looking-at "\"")
+ ;; Find end of string
+ (if (re-search-forward "[^\\]\"" end2 'limit)
+ ;; Found end of string
+ (progn
+ (setq oldp end2)
+ (if (and (eq stopcond 'skipover)
+ (not skiptype))
+ (setq endpos (point))
+ (setq oldp (point)))) ; Continue tokenizing
+ (setq quoted 'str)))
+
+ ;; Paren stuff
+ ((looking-at prolog-left-paren)
+ (setq depth (1+ depth))
+ (setq skiptype 'paren))
+
+ ((looking-at prolog-right-paren)
+ (setq depth (1- depth))
+ (if (and
+ (or (eq stopcond 'zerodepth)
+ (and (eq stopcond 'skipover)
+ (eq skiptype 'paren)))
+ (= depth 0))
+ (progn
+ (setq endpos (1+ (point)))
+ (setq oldp end2))))
+
+ ;; Comment stuff
+ ((looking-at comment-start)
+ (end-of-line)
+ ;; (if (>= (point) end2)
+ (if (>= (point) end)
+ (progn
+ (setq inside_cmt t)
+ (setq oldp end2))
+ (setq oldp (point))))
+
+ ((looking-at "/\\*")
+ (if (re-search-forward "\\*/" end2 'limit)
+ (setq oldp (point))
+ (setq inside_cmt t)
+ (setq oldp end2)))
+
+ ;; 0'char
+ ((looking-at "0'")
+ (setq oldp (1+ (match-end 0)))
+ (if (> oldp end)
+ (setq quoted 'chr)))
+
+ ;; base'number
+ ((looking-at "[0-9]+'")
+ (goto-char (match-end 0))
+ (skip-chars-forward "0-9a-zA-Z")
+ (setq oldp (point)))
+
+
+ )
+ (goto-char oldp)
+ )) ; End of while
+ )
+
+ ;; Deal with multi-line comments
+ (and (prolog-inside-mline-comment end)
+ (setq inside_cmt t))
+
+ ;; Create return list
+ (list depth nil nil quoted inside_cmt endpos)
+ )))
+
+(defun prolog-inside-mline-comment (here)
+ (save-excursion
+ (goto-char here)
+ (let* ((next-close (save-excursion (search-forward "*/" nil t)))
+ (next-open (save-excursion (search-forward "/*" nil t)))
+ (prev-open (save-excursion (search-backward "/*" nil t)))
+ (prev-close (save-excursion (search-backward "*/" nil t)))
+ (unmatched-next-close (and next-close
+ (or (not next-open)
+ (> next-open next-close))))
+ (unmatched-prev-open (and prev-open
+ (or (not prev-close)
+ (> prev-open prev-close))))
+ )
+ (or unmatched-next-close unmatched-prev-open)
+ )))
+
+
+;;-------------------------------------------------------------------
+;; Online help
+;;-------------------------------------------------------------------
+
+(defvar prolog-help-function
+ '((mercury nil)
+ (eclipse prolog-help-online)
+ ;; (sicstus prolog-help-info)
+ (sicstus prolog-find-documentation)
+ (swi prolog-help-online)
+ (t prolog-help-online))
+ "Alist for the name of the function for finding help on a predicate.")
+
+(defun prolog-help-on-predicate ()
+ "Invoke online help on the atom under cursor."
+ (interactive)
+
+ (cond
+ ;; Redirect help for SICStus to `prolog-find-documentation'.
+ ((eq prolog-help-function-i 'prolog-find-documentation)
+ (prolog-find-documentation))
+
+ ;; Otherwise, ask for the predicate name and then call the function
+ ;; in prolog-help-function-i
+ (t
+ (let* ((word (prolog-atom-under-point))
+ (predicate (read-string
+ (format "Help on predicate%s: "
+ (if word
+ (concat " (default " word ")")
+ ""))
+ nil nil word))
+ ;;point
+ )
+ (if prolog-help-function-i
+ (funcall prolog-help-function-i predicate)
+ (error "Sorry, no help method defined for this Prolog system."))))
+ ))
+
+(defun prolog-help-info (predicate)
+ (let ((buffer (current-buffer))
+ oldp
+ (str (concat "^\\* " (regexp-quote predicate) " */")))
+ (require 'info)
+ (pop-to-buffer nil)
+ (Info-goto-node prolog-info-predicate-index)
+ (if (not (re-search-forward str nil t))
+ (error (format "Help on predicate `%s' not found." predicate)))
+
+ (setq oldp (point))
+ (if (re-search-forward str nil t)
+ ;; Multiple matches, ask user
+ (let ((max 2)
+ n)
+ ;; Count matches
+ (while (re-search-forward str nil t)
+ (setq max (1+ max)))
+
+ (goto-char oldp)
+ (re-search-backward "[^ /]" nil t)
+ (recenter 0)
+ (setq n (read-string ;; was read-input, which is obsolete
+ (format "Several matches, choose (1-%d): " max) "1"))
+ (forward-line (- (string-to-number n) 1)))
+ ;; Single match
+ (re-search-backward "[^ /]" nil t))
+
+ ;; (Info-follow-nearest-node (point))
+ (prolog-Info-follow-nearest-node)
+ (re-search-forward (concat "^`" (regexp-quote predicate)) nil t)
+ (beginning-of-line)
+ (recenter 0)
+ (pop-to-buffer buffer)))
+
+(defun prolog-Info-follow-nearest-node ()
+ (if (featurep 'xemacs)
+ (Info-follow-nearest-node (point))
+ (Info-follow-nearest-node)))
+
+(defun prolog-help-online (predicate)
+ (prolog-ensure-process)
+ (process-send-string "prolog" (concat "help(" predicate ").\n"))
+ (display-buffer "*prolog*"))
+
+(defun prolog-help-apropos (string)
+ "Find Prolog apropos on given STRING.
+This function is only available when `prolog-system' is set to `swi'."
+ (interactive "sApropos: ")
+ (cond
+ ((eq prolog-system 'swi)
+ (prolog-ensure-process)
+ (process-send-string "prolog" (concat "apropos(" string ").\n"))
+ (display-buffer "*prolog*"))
+ (t
+ (error "Sorry, no Prolog apropos available for this Prolog system."))))
+
+(defun prolog-atom-under-point ()
+ "Return the atom under or left to the point."
+ (save-excursion
+ (let ((nonatom_chars "[](){},\. \t\n")
+ start)
+ (skip-chars-forward (concat "^" nonatom_chars))
+ (skip-chars-backward nonatom_chars)
+ (skip-chars-backward (concat "^" nonatom_chars))
+ (setq start (point))
+ (skip-chars-forward (concat "^" nonatom_chars))
+ (buffer-substring-no-properties start (point))
+ )))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Help function with completion
+;; Stolen from Per Mildner's SICStus debugger mode and modified
+
+(defun prolog-find-documentation ()
+ "Go to the Info node for a predicate in the SICStus Info manual."
+ (interactive)
+ (let ((pred (prolog-read-predicate)))
+ (prolog-goto-predicate-info pred)))
+
+(defvar prolog-info-alist nil
+ "Alist with all builtin predicates.
+Only for internal use by `prolog-find-documentation'")
+
+;; Very similar to prolog-help-info except that that function cannot
+;; cope with arity and that it asks the user if there are several
+;; functors with different arity. This function also uses
+;; prolog-info-alist for finding the info node, rather than parsing
+;; the predicate index.
+(defun prolog-goto-predicate-info (predicate)
+ "Go to the info page for PREDICATE, which is a PredSpec."
+ (interactive)
+ (require 'info)
+ (string-match "\\(.*\\)/\\([0-9]+\\).*$" predicate)
+ (let ((buffer (current-buffer))
+ (name (match-string 1 predicate))
+ (arity (string-to-number (match-string 2 predicate)))
+ ;oldp
+ ;(str (regexp-quote predicate))
+ )
+ (pop-to-buffer nil)
+
+ (Info-goto-node
+ prolog-info-predicate-index) ;; We must be in the SICStus pages
+ (Info-goto-node (car (cdr (assoc predicate prolog-info-alist))))
+
+ (prolog-find-term (regexp-quote name) arity "^`")
+
+ (recenter 0)
+ (pop-to-buffer buffer))
+)
+
+(defun prolog-read-predicate ()
+ "Read a PredSpec from the user.
+Returned value is a string \"FUNCTOR/ARITY\".
+Interaction supports completion."
+ (let ((default (prolog-atom-under-point)))
+ ;; If the predicate index is not yet built, do it now
+ (if (not prolog-info-alist)
+ (prolog-build-info-alist))
+ ;; Test if the default string could be the base for completion.
+ ;; Discard it if not.
+ (if (eq (try-completion default prolog-info-alist) nil)
+ (setq default nil))
+ ;; Read the PredSpec from the user
+ (completing-read
+ (if (zerop (length default))
+ "Help on predicate: "
+ (concat "Help on predicate (default " default "): "))
+ prolog-info-alist nil t nil nil default)))
+
+(defun prolog-build-info-alist (&optional verbose)
+ "Build an alist of all builtins and library predicates.
+Each element is of the form (\"NAME/ARITY\" . (INFO-NODE1 INFO-NODE2 ...)).
+Typically there is just one Info node associated with each name
+If an optional argument VERBOSE is non-nil, print messages at the beginning
+and end of list building."
+ (if verbose
+ (message "Building info alist..."))
+ (setq prolog-info-alist
+ (let ((l ())
+ (last-entry (cons "" ())))
+ (save-excursion
+ (save-window-excursion
+ ;; select any window but the minibuffer (as we cannot switch
+ ;; buffers in minibuffer window.
+ ;; I am not sure this is the right/best way
+ (if (active-minibuffer-window) ; nil if none active
+ (select-window (next-window)))
+ ;; Do this after going away from minibuffer window
+ (save-window-excursion
+ (info))
+ (Info-goto-node prolog-info-predicate-index)
+ (goto-char (point-min))
+ (while (re-search-forward
+ "^\\* \\(.+\\)/\\([0-9]+\\)\\([^\n:*]*\\):" nil t)
+ (let* ((name (match-string 1))
+ (arity (string-to-number (match-string 2)))
+ (comment (match-string 3))
+ (fa (format "%s/%d%s" name arity comment))
+ info-node)
+ (beginning-of-line)
+ ;; Extract the info node name
+ (setq info-node (progn
+ (re-search-forward ":[ \t]*\\([^:]+\\).$")
+ (match-string 1)
+ ))
+ ;; ###### Easier? (from Milan version 0.1.28)
+ ;; (setq info-node (Info-extract-menu-node-name))
+ (if (equal fa (car last-entry))
+ (setcdr last-entry (cons info-node (cdr last-entry)))
+ (setq last-entry (cons fa (list info-node))
+ l (cons last-entry l)))))
+ (nreverse l)
+ ))))
+ (if verbose
+ (message "Building info alist... done.")))
+
+
+;;-------------------------------------------------------------------
+;; Miscellaneous functions
+;;-------------------------------------------------------------------
+
+;; For Windows. Change backslash to slash. SICStus handles either
+;; path separator but backslash must be doubled, therefore use slash.
+(defun prolog-bsts (string)
+ "Change backslashes to slashes in STRING."
+ (let ((str1 (copy-sequence string))
+ (len (length string))
+ (i 0))
+ (while (< i len)
+ (if (char-equal (aref str1 i) ?\\)
+ (aset str1 i ?/))
+ (setq i (1+ i)))
+ str1))
+
+;;(defun prolog-temporary-file ()
+;; "Make temporary file name for compilation."
+;; (make-temp-name
+;; (concat
+;; (or
+;; (getenv "TMPDIR")
+;; (getenv "TEMP")
+;; (getenv "TMP")
+;; (getenv "SYSTEMP")
+;; "/tmp")
+;; "/prolcomp")))
+;;(setq prolog-temp-filename (prolog-bsts (prolog-temporary-file)))
+
+(defun prolog-temporary-file ()
+ "Make temporary file name for compilation."
+ (if prolog-temporary-file-name
+ ;; We already have a file, erase content and continue
+ (progn
+ (write-region "" nil prolog-temporary-file-name nil 'silent)
+ prolog-temporary-file-name)
+ ;; Actually create the file and set `prolog-temporary-file-name'
+ ;; accordingly.
+ (setq prolog-temporary-file-name
+ (make-temp-file "prolcomp" nil ".pl"))))
+
+(defun prolog-goto-prolog-process-buffer ()
+ "Switch to the prolog process buffer and go to its end."
+ (switch-to-buffer-other-window "*prolog*")
+ (goto-char (point-max))
+)
+
+(defun prolog-enable-sicstus-sd ()
+ "Enable the source level debugging facilities of SICStus 3.7 and later."
+ (interactive)
+ (require 'pltrace) ; Load the SICStus debugger code
+ ;; Turn on the source level debugging by default
+ (add-hook 'prolog-inferior-mode-hook 'pltrace-on)
+ (if (not prolog-use-sicstus-sd)
+ (progn
+ ;; If there is a *prolog* buffer, then call pltrace-on
+ (if (get-buffer "*prolog*")
+ ;; Avoid compilation warnings by using eval
+ (eval '(pltrace-on)))
+ (setq prolog-use-sicstus-sd t)
+ )))
+
+(defun prolog-disable-sicstus-sd ()
+ "Disable the source level debugging facilities of SICStus 3.7 and later."
+ (interactive)
+ (setq prolog-use-sicstus-sd nil)
+ ;; Remove the hook
+ (remove-hook 'prolog-inferior-mode-hook 'pltrace-on)
+ ;; If there is a *prolog* buffer, then call pltrace-off
+ (if (get-buffer "*prolog*")
+ ;; Avoid compile warnings by using eval
+ (eval '(pltrace-off))))
-(defun prolog-consult-region (compile beg end)
- "Send the region to the Prolog process made by \"M-x run-prolog\".
-If COMPILE (prefix arg) is not nil, use compile mode rather than consult mode."
- (interactive "P\nr")
- (let ((proc (inferior-prolog-process)))
- (comint-send-string proc
- (if compile prolog-compile-string
- prolog-consult-string))
- (comint-send-region proc beg end)
- (comint-send-string proc "\n") ;May be unnecessary
- (if prolog-eof-string
- (comint-send-string proc prolog-eof-string)
- (with-current-buffer (process-buffer proc)
- (comint-send-eof))))) ;Send eof to prolog process.
-
-(defun prolog-consult-region-and-go (compile beg end)
- "Send the region to the inferior Prolog, and switch to *prolog* buffer.
-If COMPILE (prefix arg) is not nil, use compile mode rather than consult mode."
- (interactive "P\nr")
- (prolog-consult-region compile beg end)
- (pop-to-buffer inferior-prolog-buffer))
-
-;; inferior-prolog-mode uses the autoloaded compilation-shell-minor-mode.
-(declare-function compilation-forget-errors "compile" ())
-
-(defun inferior-prolog-load-file ()
- "Pass the current buffer's file to the inferior prolog process."
- (interactive)
- (save-buffer)
- (let ((file buffer-file-name)
- (proc (inferior-prolog-process)))
- (with-current-buffer (process-buffer proc)
- (compilation-forget-errors)
- (comint-send-string proc (concat "['" (file-relative-name file) "'].\n"))
- (pop-to-buffer (current-buffer)))))
+(defun prolog-toggle-sicstus-sd ()
+ ;; FIXME: Use define-minor-mode.
+ "Toggle the source level debugging facilities of SICStus 3.7 and later."
+ (interactive)
+ (if prolog-use-sicstus-sd
+ (prolog-disable-sicstus-sd)
+ (prolog-enable-sicstus-sd)))
+
+(defun prolog-debug-on (&optional arg)
+ "Enable debugging.
+When called with prefix argument ARG, disable debugging instead."
+ (interactive "P")
+ (if arg
+ (prolog-debug-off)
+ (prolog-process-insert-string (get-process "prolog")
+ prolog-debug-on-string)
+ (process-send-string "prolog" prolog-debug-on-string)))
+
+(defun prolog-debug-off ()
+ "Disable debugging."
+ (interactive)
+ (prolog-process-insert-string (get-process "prolog")
+ prolog-debug-off-string)
+ (process-send-string "prolog" prolog-debug-off-string))
+
+(defun prolog-trace-on (&optional arg)
+ "Enable tracing.
+When called with prefix argument ARG, disable tracing instead."
+ (interactive "P")
+ (if arg
+ (prolog-trace-off)
+ (prolog-process-insert-string (get-process "prolog")
+ prolog-trace-on-string)
+ (process-send-string "prolog" prolog-trace-on-string)))
+
+(defun prolog-trace-off ()
+ "Disable tracing."
+ (interactive)
+ (prolog-process-insert-string (get-process "prolog")
+ prolog-trace-off-string)
+ (process-send-string "prolog" prolog-trace-off-string))
+
+(defun prolog-zip-on (&optional arg)
+ "Enable zipping (for SICStus 3.7 and later).
+When called with prefix argument ARG, disable zipping instead."
+ (interactive "P")
+ (if (not (and (eq prolog-system 'sicstus)
+ (prolog-atleast-version '(3 . 7))))
+ (error "Only works for SICStus 3.7 and later"))
+ (if arg
+ (prolog-zip-off)
+ (prolog-process-insert-string (get-process "prolog")
+ prolog-zip-on-string)
+ (process-send-string "prolog" prolog-zip-on-string)))
+
+(defun prolog-zip-off ()
+ "Disable zipping (for SICStus 3.7 and later)."
+ (interactive)
+ (prolog-process-insert-string (get-process "prolog")
+ prolog-zip-off-string)
+ (process-send-string "prolog" prolog-zip-off-string))
+
+;; (defun prolog-create-predicate-index ()
+;; "Create an index for all predicates in the buffer."
+;; (let ((predlist '())
+;; clauseinfo
+;; object
+;; pos
+;; )
+;; (goto-char (point-min))
+;; ;; Replace with prolog-clause-start!
+;; (while (re-search-forward "^.+:-" nil t)
+;; (setq pos (match-beginning 0))
+;; (setq clauseinfo (prolog-clause-info))
+;; (setq object (prolog-in-object))
+;; (setq predlist (append
+;; predlist
+;; (list (cons
+;; (if (and (eq prolog-system 'sicstus)
+;; (prolog-in-object))
+;; (format "%s::%s/%d"
+;; object
+;; (nth 0 clauseinfo)
+;; (nth 1 clauseinfo))
+;; (format "%s/%d"
+;; (nth 0 clauseinfo)
+;; (nth 1 clauseinfo)))
+;; pos
+;; ))))
+;; (prolog-end-of-predicate))
+;; predlist))
+
+(defun prolog-get-predspec ()
+ (save-excursion
+ (let ((state (prolog-clause-info))
+ (object (prolog-in-object)))
+ (if (or (equal (nth 0 state) "") (equal (prolog-in-string-or-comment) 'cmt))
+ nil
+ (if (and (eq prolog-system 'sicstus)
+ object)
+ (format "%s::%s/%d"
+ object
+ (nth 0 state)
+ (nth 1 state))
+ (format "%s/%d"
+ (nth 0 state)
+ (nth 1 state)))
+ ))))
+
+;; For backward compatibility. Stolen from custom.el.
+(or (fboundp 'match-string)
+ ;; Introduced in Emacs 19.29.
+ (defun match-string (num &optional string)
+ "Return string of text matched by last search.
+NUM specifies which parenthesized expression in the last regexp.
+ Value is nil if NUMth pair didn't match, or there were less than NUM pairs.
+Zero means the entire text matched by the whole regexp or whole string.
+STRING should be given if the last search was by `string-match' on STRING."
+ (if (match-beginning num)
+ (if string
+ (substring string (match-beginning num) (match-end num))
+ (buffer-substring (match-beginning num) (match-end num))))))
+
+(defun prolog-pred-start ()
+ "Return the starting point of the first clause of the current predicate."
+ (save-excursion
+ (goto-char (prolog-clause-start))
+ ;; Find first clause, unless it was a directive
+ (if (and (not (looking-at "[:?]-"))
+ (not (looking-at "[ \t]*[%/]")) ; Comment
+
+ )
+ (let* ((pinfo (prolog-clause-info))
+ (predname (nth 0 pinfo))
+ (arity (nth 1 pinfo))
+ (op (point)))
+ (while (and (re-search-backward
+ (format "^%s\\([(\\.]\\| *%s\\)"
+ predname prolog-head-delimiter) nil t)
+ (= arity (nth 1 (prolog-clause-info)))
+ )
+ (setq op (point)))
+ (if (eq prolog-system 'mercury)
+ ;; Skip to the beginning of declarations of the predicate
+ (progn
+ (goto-char (prolog-beginning-of-clause))
+ (while (and (not (eq (point) op))
+ (looking-at
+ (format ":-[ \t]*\\(pred\\|mode\\)[ \t]+%s"
+ predname)))
+ (setq op (point))
+ (goto-char (prolog-beginning-of-clause)))))
+ op)
+ (point))))
+
+(defun prolog-pred-end ()
+ "Return the position at the end of the last clause of the current predicate."
+ (save-excursion
+ (goto-char (prolog-clause-end)) ; if we are before the first predicate
+ (goto-char (prolog-clause-start))
+ (let* ((pinfo (prolog-clause-info))
+ (predname (nth 0 pinfo))
+ (arity (nth 1 pinfo))
+ oldp
+ (notdone t)
+ (op (point)))
+ (if (looking-at "[:?]-")
+ ;; This was a directive
+ (progn
+ (if (and (eq prolog-system 'mercury)
+ (looking-at
+ (format ":-[ \t]*\\(pred\\|mode\\)[ \t]+\\(%s+\\)"
+ prolog-atom-regexp)))
+ ;; Skip predicate declarations
+ (progn
+ (setq predname (buffer-substring-no-properties
+ (match-beginning 2) (match-end 2)))
+ (while (re-search-forward
+ (format
+ "\n*\\(:-[ \t]*\\(pred\\|mode\\)[ \t]+\\)?%s[( \t]"
+ predname)
+ nil t))))
+ (goto-char (prolog-clause-end))
+ (setq op (point)))
+ ;; It was not a directive, find the last clause
+ (while (and notdone
+ (re-search-forward
+ (format "^%s\\([(\\.]\\| *%s\\)"
+ predname prolog-head-delimiter) nil t)
+ (= arity (nth 1 (prolog-clause-info))))
+ (setq oldp (point))
+ (setq op (prolog-clause-end))
+ (if (>= oldp op)
+ ;; End of clause not found.
+ (setq notdone nil)
+ ;; Continue while loop
+ (goto-char op))))
+ op)))
+
+(defun prolog-clause-start (&optional not-allow-methods)
+ "Return the position at the start of the head of the current clause.
+If NOTALLOWMETHODS is non-nil then do not match on methods in
+objects (relevent only if 'prolog-system' is set to 'sicstus)."
+ (save-excursion
+ (let ((notdone t)
+ (retval (point-min)))
+ (end-of-line)
+
+ ;; SICStus object?
+ (if (and (not not-allow-methods)
+ (eq prolog-system 'sicstus)
+ (prolog-in-object))
+ (while (and
+ notdone
+ ;; Search for a head or a fact
+ (re-search-backward
+ ;; If in object, then find method start.
+ ;; "^[ \t]+[a-z$].*\\(:-\\|&\\|:: {\\|,\\)"
+ "^[ \t]+[a-z$].*\\(:-\\|&\\|:: {\\)" ; The comma causes
+ ; problems since we cannot assume
+ ; that the line starts at column 0,
+ ; thus we don't know if the line
+ ; is a head or a subgoal
+ (point-min) t))
+ (if (>= (prolog-paren-balance) 0) ; To no match on " a) :-"
+ ;; Start of method found
+ (progn
+ (setq retval (point))
+ (setq notdone nil)))
+ ) ; End of while
+
+ ;; Not in object
+ (while (and
+ notdone
+ ;; Search for a text at beginning of a line
+ ;; ######
+ ;; (re-search-backward "^[a-z$']" nil t))
+ (let ((case-fold-search nil))
+ (re-search-backward
+ ;; (format "^[%s$']" prolog-lower-case-string)
+ ;; FIXME: Use [:lower:]
+ (format "^\\([%s$']\\|[:?]-\\)" prolog-lower-case-string)
+ nil t)))
+ (let ((bal (prolog-paren-balance)))
+ (cond
+ ((> bal 0)
+ ;; Start of clause found
+ (progn
+ (setq retval (point))
+ (setq notdone nil)))
+ ((and (= bal 0)
+ (looking-at
+ (format ".*\\(\\.\\|%s\\|!,\\)[ \t]*\\(%%.*\\|\\)$"
+ prolog-head-delimiter)))
+ ;; Start of clause found if the line ends with a '.' or
+ ;; a prolog-head-delimiter
+ (progn
+ (setq retval (point))
+ (setq notdone nil))
+ )
+ (t nil) ; Do nothing
+ ))))
+
+ retval)))
+
+(defun prolog-clause-end (&optional not-allow-methods)
+ "Return the position at the end of the current clause.
+If NOTALLOWMETHODS is non-nil then do not match on methods in
+objects (relevent only if 'prolog-system' is set to 'sicstus)."
+ (save-excursion
+ (beginning-of-line) ; Necessary since we use "^...." for the search.
+ (if (re-search-forward
+ (if (and (not not-allow-methods)
+ (eq prolog-system 'sicstus)
+ (prolog-in-object))
+ (format
+ "^\\(%s\\|%s\\|[^\n\'\"%%]\\)*&[ \t]*\\(\\|%%.*\\)$\\|[ \t]*}"
+ prolog-quoted-atom-regexp prolog-string-regexp)
+ (format
+ "^\\(%s\\|%s\\|[^\n\'\"%%]\\)*\\.[ \t]*\\(\\|%%.*\\)$"
+ prolog-quoted-atom-regexp prolog-string-regexp))
+ nil t)
+ (if (and (prolog-in-string-or-comment)
+ (not (eobp)))
+ (progn
+ (forward-char)
+ (prolog-clause-end))
+ (point))
+ (point))))
+
+(defun prolog-clause-info ()
+ "Return a (name arity) list for the current clause."
+ (save-excursion
+ (goto-char (prolog-clause-start))
+ (let* ((op (point))
+ (predname
+ (if (looking-at prolog-atom-char-regexp)
+ (progn
+ (skip-chars-forward "^ (\\.")
+ (buffer-substring op (point)))
+ ""))
+ (arity 0))
+ ;; Retrieve the arity.
+ (if (looking-at prolog-left-paren)
+ (let ((endp (save-excursion
+ (prolog-forward-list) (point))))
+ (setq arity 1)
+ (forward-char 1) ; Skip the opening paren.
+ (while (progn
+ (skip-chars-forward "^[({,'\"")
+ (< (point) endp))
+ (if (looking-at ",")
+ (progn
+ (setq arity (1+ arity))
+ (forward-char 1) ; Skip the comma.
+ )
+ ;; We found a string, list or something else we want
+ ;; to skip over. Always use prolog-tokenize,
+ ;; parse-partial-sexp does not have a 'skipover mode.
+ (goto-char (nth 5 (prolog-tokenize (point) endp 'skipover))))
+ )))
+ (list predname arity))))
+
+(defun prolog-in-object ()
+ "Return object name if the point is inside a SICStus object definition."
+ ;; Return object name if the last line that starts with a character
+ ;; that is neither white space nor a comment start
+ (save-excursion
+ (if (save-excursion
+ (beginning-of-line)
+ (looking-at "\\([^\n ]+\\)[ \t]*::[ \t]*{"))
+ ;; We were in the head of the object
+ (match-string 1)
+ ;; We were not in the head
+ (if (and (re-search-backward "^[a-z$'}]" nil t)
+ (looking-at "\\([^\n ]+\\)[ \t]*::[ \t]*{"))
+ (match-string 1)
+ nil))))
+
+(defun prolog-forward-list ()
+ "Move the point to the matching right parenthesis."
+ (interactive)
+ (if prolog-use-prolog-tokenizer-flag
+ (let ((state (prolog-tokenize (point) (point-max) 'zerodepth)))
+ (goto-char (nth 5 state)))
+ (forward-list)))
+
+;; NB: This could be done more efficiently!
+(defun prolog-backward-list ()
+ "Move the point to the matching left parenthesis."
+ (interactive)
+ (if prolog-use-prolog-tokenizer-flag
+ (let ((bal 0)
+ (paren-regexp (concat prolog-left-paren "\\|" prolog-right-paren))
+ (notdone t))
+ ;; FIXME: Doesn't this incorrectly count 0'( and 0') ?
+ (while (and notdone (re-search-backward paren-regexp nil t))
+ (cond
+ ((looking-at prolog-left-paren)
+ (if (not (prolog-in-string-or-comment))
+ (setq bal (1+ bal)))
+ (if (= bal 0)
+ (setq notdone nil)))
+ ((looking-at prolog-right-paren)
+ (if (not (prolog-in-string-or-comment))
+ (setq bal (1- bal))))
+ )))
+ (backward-list)))
+
+(defun prolog-beginning-of-clause ()
+ "Move to the beginning of current clause.
+If already at the beginning of clause, move to previous clause."
+ (interactive)
+ (let ((point (point))
+ (new-point (prolog-clause-start)))
+ (if (and (>= new-point point)
+ (> point 1))
+ (progn
+ (goto-char (1- point))
+ (goto-char (prolog-clause-start)))
+ (goto-char new-point)
+ (skip-chars-forward " \t"))))
+
+;; (defun prolog-previous-clause ()
+;; "Move to the beginning of the previous clause."
+;; (interactive)
+;; (forward-char -1)
+;; (prolog-beginning-of-clause))
+
+(defun prolog-end-of-clause ()
+ "Move to the end of clause.
+If already at the end of clause, move to next clause."
+ (interactive)
+ (let ((point (point))
+ (new-point (prolog-clause-end)))
+ (if (and (<= new-point point)
+ (not (eq new-point (point-max))))
+ (progn
+ (goto-char (1+ point))
+ (goto-char (prolog-clause-end)))
+ (goto-char new-point))))
+
+;; (defun prolog-next-clause ()
+;; "Move to the beginning of the next clause."
+;; (interactive)
+;; (prolog-end-of-clause)
+;; (forward-char)
+;; (prolog-end-of-clause)
+;; (prolog-beginning-of-clause))
+
+(defun prolog-beginning-of-predicate ()
+ "Go to the nearest beginning of predicate before current point.
+Return the final point or nil if no such a beginning was found."
+ (interactive)
+ (let ((op (point))
+ (pos (prolog-pred-start)))
+ (if pos
+ (if (= op pos)
+ (if (not (bobp))
+ (progn
+ (goto-char pos)
+ (backward-char 1)
+ (setq pos (prolog-pred-start))
+ (if pos
+ (progn
+ (goto-char pos)
+ (point)))))
+ (goto-char pos)
+ (point)))))
+
+(defun prolog-end-of-predicate ()
+ "Go to the end of the current predicate."
+ (interactive)
+ (let ((op (point)))
+ (goto-char (prolog-pred-end))
+ (if (= op (point))
+ (progn
+ (forward-line 1)
+ (prolog-end-of-predicate)))))
+
+(defun prolog-insert-predspec ()
+ "Insert the predspec for the current predicate."
+ (interactive)
+ (let* ((pinfo (prolog-clause-info))
+ (predname (nth 0 pinfo))
+ (arity (nth 1 pinfo)))
+ (insert (format "%s/%d" predname arity))))
+
+(defun prolog-view-predspec ()
+ "Insert the predspec for the current predicate."
+ (interactive)
+ (let* ((pinfo (prolog-clause-info))
+ (predname (nth 0 pinfo))
+ (arity (nth 1 pinfo)))
+ (message (format "%s/%d" predname arity))))
+
+(defun prolog-insert-predicate-template ()
+ "Insert the template for the current clause."
+ (interactive)
+ (let* ((n 1)
+ oldp
+ (pinfo (prolog-clause-info))
+ (predname (nth 0 pinfo))
+ (arity (nth 1 pinfo)))
+ (insert predname)
+ (if (> arity 0)
+ (progn
+ (insert "(")
+ (when prolog-electric-dot-full-predicate-template
+ (setq oldp (point))
+ (while (< n arity)
+ (insert ",")
+ (setq n (1+ n)))
+ (insert ")")
+ (goto-char oldp))
+ ))
+ ))
+
+(defun prolog-insert-next-clause ()
+ "Insert newline and the name of the current clause."
+ (interactive)
+ (insert "\n")
+ (prolog-insert-predicate-template))
+
+(defun prolog-insert-module-modeline ()
+ "Insert a modeline for module specification.
+This line should be first in the buffer.
+The module name should be written manually just before the semi-colon."
+ (interactive)
+ (insert "%%% -*- Module: ; -*-\n")
+ (backward-char 6))
+
+(defalias 'prolog-uncomment-region
+ (if (fboundp 'uncomment-region) #'uncomment-region
+ (lambda (beg end)
+ "Uncomment the region between BEG and END."
+ (interactive "r")
+ (comment-region beg end -1))))
+
+(defun prolog-goto-comment-column (&optional nocreate)
+ "Move comments on the current line to the correct position.
+If NOCREATE is nil (or omitted) and there is no comment on the line, then
+a new comment is created."
+ (interactive)
+ (beginning-of-line)
+ (if (or (not nocreate)
+ (and
+ (re-search-forward
+ (format "^\\(\\(%s\\|%s\\|[^\n\'\"%%]\\)*\\)%% *"
+ prolog-quoted-atom-regexp prolog-string-regexp)
+ (line-end-position) 'limit)
+ (progn
+ (goto-char (match-beginning 0))
+ (not (eq (prolog-in-string-or-comment) 'txt)))))
+ (indent-for-comment)))
+
+(defun prolog-indent-predicate ()
+ "*Indent the current predicate."
+ (interactive)
+ (indent-region (prolog-pred-start) (prolog-pred-end) nil))
+
+(defun prolog-indent-buffer ()
+ "*Indent the entire buffer."
+ (interactive)
+ (indent-region (point-min) (point-max) nil))
+
+(defun prolog-mark-clause ()
+ "Put mark at the end of this clause and move point to the beginning."
+ (interactive)
+ (let ((pos (point)))
+ (goto-char (prolog-clause-end))
+ (forward-line 1)
+ (beginning-of-line)
+ (set-mark (point))
+ (goto-char pos)
+ (goto-char (prolog-clause-start))))
+
+(defun prolog-mark-predicate ()
+ "Put mark at the end of this predicate and move point to the beginning."
+ (interactive)
+ (goto-char (prolog-pred-end))
+ (let ((pos (point)))
+ (forward-line 1)
+ (beginning-of-line)
+ (set-mark (point))
+ (goto-char pos)
+ (goto-char (prolog-pred-start))))
+
+;; Stolen from `cc-mode.el':
+(defun prolog-electric-delete (arg)
+ "Delete preceding character or whitespace.
+If `prolog-hungry-delete-key-flag' is non-nil, then all preceding whitespace is
+consumed. If however an ARG is supplied, or `prolog-hungry-delete-key-flag' is
+nil, or point is inside a literal then the function in the variable
+`backward-delete-char' is called."
+ (interactive "P")
+ (if (or (not prolog-hungry-delete-key-flag)
+ arg
+ (prolog-in-string-or-comment))
+ (funcall 'backward-delete-char (prefix-numeric-value arg))
+ (let ((here (point)))
+ (skip-chars-backward " \t\n")
+ (if (/= (point) here)
+ (delete-region (point) here)
+ (funcall 'backward-delete-char 1)
+ ))))
+
+;; For XEmacs compatibility (suggested by Per Mildner)
+(put 'prolog-electric-delete 'pending-delete 'supersede)
+
+(defun prolog-electric-if-then-else (arg)
+ "If `prolog-electric-if-then-else-flag' is non-nil, indent if-then-else constructs.
+Bound to the >, ; and ( keys."
+ (interactive "P")
+ (self-insert-command (prefix-numeric-value arg))
+ (if prolog-electric-if-then-else-flag (prolog-insert-spaces-after-paren)))
+
+(defun prolog-electric-colon (arg)
+ "If `prolog-electric-colon-flag' is non-nil, insert the electric `:' construct.
+That is, insert space (if appropriate), `:-' and newline if colon is pressed
+at the end of a line that starts in the first column (i.e., clause
+heads)."
+ (interactive "P")
+ (if (and prolog-electric-colon-flag
+ (null arg)
+ (eolp)
+ ;(not (string-match "^\\s " (thing-at-point 'line))))
+ (not (string-match "^\\(\\s \\|%\\)" (thing-at-point 'line))))
+ (progn
+ (unless (save-excursion (backward-char 1) (looking-at "\\s "))
+ (insert " "))
+ (insert ":-\n")
+ (prolog-indent-line))
+ (self-insert-command (prefix-numeric-value arg))))
+
+(defun prolog-electric-dash (arg)
+ "If `prolog-electric-dash-flag' is non-nil, insert the electric `-' construct.
+that is, insert space (if appropriate), `-->' and newline if dash is pressed
+at the end of a line that starts in the first column (i.e., DCG
+heads)."
+ (interactive "P")
+ (if (and prolog-electric-dash-flag
+ (null arg)
+ (eolp)
+ ;(not (string-match "^\\s " (thing-at-point 'line))))
+ (not (string-match "^\\(\\s \\|%\\)" (thing-at-point 'line))))
+ (progn
+ (unless (save-excursion (backward-char 1) (looking-at "\\s "))
+ (insert " "))
+ (insert "-->\n")
+ (prolog-indent-line))
+ (self-insert-command (prefix-numeric-value arg))))
+
+(defun prolog-electric-dot (arg)
+ "Insert dot and newline or a head of a new clause.
+
+If `prolog-electric-dot-flag' is nil, then simply insert dot.
+Otherwise::
+When invoked at the end of nonempty line, insert dot and newline.
+When invoked at the end of an empty line, insert a recursive call to
+the current predicate.
+When invoked at the beginning of line, insert a head of a new clause
+of the current predicate.
+
+When called with prefix argument ARG, insert just dot."
+ (interactive "P")
+ ;; Check for situations when the electricity should not be active
+ (if (or (not prolog-electric-dot-flag)
+ arg
+ (prolog-in-string-or-comment)
+ ;; Do not be electric in a floating point number or an operator
+ (not
+ (or
+ ;; (re-search-backward
+ ;; ######
+ ;; "\\(^\\|[])}a-zA-Z_!'0-9]+\\)[ \t]*\\=" nil t)))
+ (save-excursion
+ (re-search-backward
+ ;; "\\(^\\|[])}_!'0-9]+\\)[ \t]*\\=" nil t)))
+ "\\(^\\|[])}_!'0-9]+\\)[ \t]*\\="
+ nil t))
+ (save-excursion
+ (re-search-backward
+ ;; "\\(^\\|[])}a-zA-Z]+\\)[ \t]*\\=" nil t)))
+ (format "\\(^\\|[])}%s]+\\)[ \t]*\\="
+ prolog-lower-case-string) ;FIXME: [:lower:]
+ nil t))
+ (save-excursion
+ (re-search-backward
+ ;; "\\(^\\|[])}a-zA-Z]+\\)[ \t]*\\=" nil t)))
+ (format "\\(^\\|[])}%s]+\\)[ \t]*\\="
+ prolog-upper-case-string) ;FIXME: [:upper:]
+ nil t))
+ )
+ )
+ ;; Do not be electric if inside a parenthesis pair.
+ (not (= (prolog-region-paren-balance (prolog-clause-start) (point))
+ 0))
+ )
+ (funcall 'self-insert-command (prefix-numeric-value arg))
+ (cond
+ ;; Beginning of line
+ ((bolp)
+ (prolog-insert-predicate-template))
+ ;; At an empty line with at least one whitespace
+ ((save-excursion
+ (beginning-of-line)
+ (looking-at "[ \t]+$"))
+ (prolog-insert-predicate-template)
+ (when prolog-electric-dot-full-predicate-template
+ (save-excursion
+ (end-of-line)
+ (insert ".\n"))))
+ ;; Default
+ (t
+ (insert ".\n"))
+ )))
+
+(defun prolog-electric-underscore ()
+ "Replace variable with an underscore.
+If `prolog-electric-underscore-flag' is non-nil and the point is
+on a variable then replace the variable with underscore and skip
+the following comma and whitespace, if any.
+If the point is not on a variable then insert underscore."
+ (interactive)
+ (if prolog-electric-underscore-flag
+ (let (;start
+ (case-fold-search nil)
+ (oldp (point)))
+ ;; ######
+ ;;(skip-chars-backward "a-zA-Z_")
+ (skip-chars-backward
+ (format "%s%s_"
+ ;; FIXME: Why not "a-zA-Z"?
+ prolog-lower-case-string
+ prolog-upper-case-string))
+
+ ;(setq start (point))
+ (if (and (not (prolog-in-string-or-comment))
+ ;; ######
+ ;; (looking-at "\\<[_A-Z][a-zA-Z_0-9]*\\>"))
+ (looking-at (format "\\<[_%s][%s%s_0-9]*\\>"
+ ;; FIXME: Use [:upper:] and friends.
+ prolog-upper-case-string
+ prolog-lower-case-string
+ prolog-upper-case-string)))
+ (progn
+ (replace-match "_")
+ (skip-chars-forward ", \t\n"))
+ (goto-char oldp)
+ (self-insert-command 1))
+ )
+ (self-insert-command 1))
+ )
+
+
+(defun prolog-find-term (functor arity &optional prefix)
+ "Go to the position at the start of the next occurance of a term.
+The term is specified with FUNCTOR and ARITY. The optional argument
+PREFIX is the prefix of the search regexp."
+ (let* (;; If prefix is not set then use the default "\\<"
+ (prefix (if (not prefix)
+ "\\<"
+ prefix))
+ (regexp (concat prefix functor))
+ (i 1))
+
+ ;; Build regexp for the search if the arity is > 0
+ (if (= arity 0)
+ ;; Add that the functor must be at the end of a word. This
+ ;; does not work if the arity is > 0 since the closing )
+ ;; is not a word constituent.
+ (setq regexp (concat regexp "\\>"))
+ ;; Arity is > 0, add parens and commas
+ (setq regexp (concat regexp "("))
+ (while (< i arity)
+ (setq regexp (concat regexp ".+,"))
+ (setq i (1+ i)))
+ (setq regexp (concat regexp ".+)")))
+
+ ;; Search, and return position
+ (if (re-search-forward regexp nil t)
+ (goto-char (match-beginning 0))
+ (error "Term not found"))
+ ))
+
+(defun prolog-variables-to-anonymous (beg end)
+ "Replace all variables within a region BEG to END by anonymous variables."
+ (interactive "r")
+ (save-excursion
+ (let ((case-fold-search nil))
+ (goto-char end)
+ (while (re-search-backward "\\<[A-Z_][a-zA-Z_0-9]*\\>" beg t)
+ (progn
+ (replace-match "_")
+ (backward-char)))
+ )))
+
+
+(defun prolog-set-atom-regexps ()
+ "Set the `prolog-atom-char-regexp' and `prolog-atom-regexp' variables.
+Must be called after `prolog-build-case-strings'."
+ (setq prolog-atom-char-regexp
+ (format "[%s%s0-9_$]"
+ ;; FIXME: why not a-zA-Z?
+ prolog-lower-case-string
+ prolog-upper-case-string))
+ (setq prolog-atom-regexp
+ (format "[%s$]%s*"
+ prolog-lower-case-string
+ prolog-atom-char-regexp))
+ )
+
+(defun prolog-build-case-strings ()
+ "Set `prolog-upper-case-string' and `prolog-lower-case-string'.
+Uses the current case-table for extracting the relevant information."
+ (let ((up_string "")
+ (low_string ""))
+ ;; Use `map-char-table' if it is defined. Otherwise enumerate all
+ ;; numbers between 0 and 255. `map-char-table' is probably safer.
+ ;;
+ ;; `map-char-table' causes problems under Emacs 23.0.0.1, the
+ ;; while loop seems to do its job well (Ryszard Szopa)
+ ;;
+ ;;(if (and (not (featurep 'xemacs))
+ ;; (fboundp 'map-char-table))
+ ;; (map-char-table
+ ;; (lambda (key value)
+ ;; (cond
+ ;; ((and
+ ;; (eq (prolog-int-to-char key) (downcase key))
+ ;; (eq (prolog-int-to-char key) (upcase key)))
+ ;; ;; Do nothing if upper and lower case are the same
+ ;; )
+ ;; ((eq (prolog-int-to-char key) (downcase key))
+ ;; ;; The char is lower case
+ ;; (setq low_string (format "%s%c" low_string key)))
+ ;; ((eq (prolog-int-to-char key) (upcase key))
+ ;; ;; The char is upper case
+ ;; (setq up_string (format "%s%c" up_string key)))
+ ;; ))
+ ;; (current-case-table))
+ ;; `map-char-table' was undefined.
+ (let ((key 0))
+ (while (< key 256)
+ (cond
+ ((and
+ (eq (prolog-int-to-char key) (downcase key))
+ (eq (prolog-int-to-char key) (upcase key)))
+ ;; Do nothing if upper and lower case are the same
+ )
+ ((eq (prolog-int-to-char key) (downcase key))
+ ;; The char is lower case
+ (setq low_string (format "%s%c" low_string key)))
+ ((eq (prolog-int-to-char key) (upcase key))
+ ;; The char is upper case
+ (setq up_string (format "%s%c" up_string key)))
+ )
+ (setq key (1+ key))))
+ ;; )
+ ;; The strings are single-byte strings
+ (setq prolog-upper-case-string (prolog-dash-letters up_string))
+ (setq prolog-lower-case-string (prolog-dash-letters low_string))
+ ))
+
+;(defun prolog-regexp-dash-continuous-chars (chars)
+; (let ((ints (mapcar #'prolog-char-to-int (string-to-list chars)))
+; (beg 0)
+; (end 0))
+; (if (null ints)
+; chars
+; (while (and (< (+ beg 1) (length chars))
+; (not (or (= (+ (nth beg ints) 1) (nth (+ beg 1) ints))
+; (= (nth beg ints) (nth (+ beg 1) ints)))))
+; (setq beg (+ beg 1)))
+; (setq beg (+ beg 1)
+; end beg)
+; (while (and (< (+ end 1) (length chars))
+; (or (= (+ (nth end ints) 1) (nth (+ end 1) ints))
+; (= (nth end ints) (nth (+ end 1) ints))))
+; (setq end (+ end 1)))
+; (if (equal (substring chars end) "")
+; (substring chars 0 beg)
+; (concat (substring chars 0 beg) "-"
+; (prolog-regexp-dash-continuous-chars (substring chars end))))
+; )))
+
+(defun prolog-ints-intervals (ints)
+ "Return a list of intervals (from . to) covering INTS."
+ (when ints
+ (setq ints (sort ints '<))
+ (let ((prev (car ints))
+ (interval-start (car ints))
+ intervals)
+ (while ints
+ (let ((next (car ints)))
+ (when (> next (1+ prev)) ; start of new interval
+ (setq intervals (cons (cons interval-start prev) intervals))
+ (setq interval-start next))
+ (setq prev next)
+ (setq ints (cdr ints))))
+ (setq intervals (cons (cons interval-start prev) intervals))
+ (reverse intervals))))
+
+(defun prolog-dash-letters (string)
+ "Return a condensed regexp covering all letters in STRING."
+ (let ((intervals (prolog-ints-intervals (mapcar #'prolog-char-to-int
+ (string-to-list string))))
+ codes)
+ (while intervals
+ (let* ((i (car intervals))
+ (from (car i))
+ (to (cdr i))
+ (c (cond ((= from to) `(,from))
+ ((= (1+ from) to) `(,from ,to))
+ (t `(,from ?- ,to)))))
+ (setq codes (cons c codes)))
+ (setq intervals (cdr intervals)))
+ (apply 'concat (reverse codes))))
+
+;(defun prolog-condense-character-sets (regexp)
+; "Condense adjacent characters in character sets of REGEXP."
+; (let ((next -1))
+; (while (setq next (string-match "\\[\\(.*?\\)\\]" regexp (1+ next)))
+; (setq regexp (replace-match (prolog-dash-letters (match-string 1 regexp))
+; t t regexp 1))))
+; regexp)
+
+;; GNU Emacs compatibility: GNU Emacs does not differentiate between
+;; ints and chars, or at least these two are interchangeable.
+(defalias 'prolog-int-to-char
+ (if (fboundp 'int-to-char) #'int-to-char #'identity))
+
+(defalias 'prolog-char-to-int
+ (if (fboundp 'char-to-int) #'char-to-int #'identity))
+
+;;-------------------------------------------------------------------
+;; Menu stuff (both for the editing buffer and for the inferior
+;; prolog buffer)
+;;-------------------------------------------------------------------
+
+(unless (fboundp 'region-exists-p)
+ (defun region-exists-p ()
+ "Non-nil iff the mark is set. Lobotomized version for Emacsen that do not provide their own."
+ (mark)))
+
+
+;; GNU Emacs ignores `easy-menu-add' so the order in which the menus
+;; are defined _is_ important!
+
+(easy-menu-define
+ prolog-menu-help (list prolog-mode-map prolog-inferior-mode-map)
+ "Help menu for the Prolog mode."
+ ;; FIXME: Does it really deserve a whole menu to itself?
+ `(,(if (featurep 'xemacs) "Help"
+ ;; Not sure it's worth the trouble. --Stef
+ ;; (add-to-list 'menu-bar-final-items
+ ;; (easy-menu-intern "Prolog-Help"))
+ "Prolog-help")
+ ["On predicate" prolog-help-on-predicate prolog-help-function-i]
+ ["Apropos" prolog-help-apropos (eq prolog-system 'swi)]
+ "---"
+ ["Describe mode" describe-mode t]))
+
+(easy-menu-define
+ prolog-edit-menu-runtime prolog-mode-map
+ "Runtime Prolog commands available from the editing buffer"
+ ;; FIXME: Don't use a whole menu for just "Run Mercury". --Stef
+ `("System"
+ ;; Runtime menu name.
+ ,@(unless (featurep 'xemacs)
+ '(:label (cond ((eq prolog-system 'eclipse) "ECLiPSe")
+ ((eq prolog-system 'mercury) "Mercury")
+ (t "System"))))
+
+ ;; Consult items, NIL for mercury.
+ ["Consult file" prolog-consult-file
+ :included (not (eq prolog-system 'mercury))]
+ ["Consult buffer" prolog-consult-buffer
+ :included (not (eq prolog-system 'mercury))]
+ ["Consult region" prolog-consult-region :active (region-exists-p)
+ :included (not (eq prolog-system 'mercury))]
+ ["Consult predicate" prolog-consult-predicate
+ :included (not (eq prolog-system 'mercury))]
+
+ ;; Compile items, NIL for everything but SICSTUS.
+ ,(if (featurep 'xemacs) "---"
+ ["---" nil :included (eq prolog-system 'sicstus)])
+ ["Compile file" prolog-compile-file
+ :included (eq prolog-system 'sicstus)]
+ ["Compile buffer" prolog-compile-buffer
+ :included (eq prolog-system 'sicstus)]
+ ["Compile region" prolog-compile-region :active (region-exists-p)
+ :included (eq prolog-system 'sicstus)]
+ ["Compile predicate" prolog-compile-predicate
+ :included (eq prolog-system 'sicstus)]
+
+ ;; Debug items, NIL for Mercury.
+ ,(if (featurep 'xemacs) "---"
+ ["---" nil :included (not (eq prolog-system 'mercury))])
+ ;; FIXME: Could we use toggle or radio buttons? --Stef
+ ["Debug" prolog-debug-on :included (not (eq prolog-system 'mercury))]
+ ["Debug off" prolog-debug-off
+ ;; In SICStus, these are pairwise disjunctive,
+ ;; so it's enough with a single "off"-command
+ :included (not (memq prolog-system '(mercury sicstus)))]
+ ["Trace" prolog-trace-on :included (not (eq prolog-system 'mercury))]
+ ["Trace off" prolog-trace-off
+ :included (not (memq prolog-system '(mercury sicstus)))]
+ ["Zip" prolog-zip-on :included (and (eq prolog-system 'sicstus)
+ (prolog-atleast-version '(3 . 7)))]
+ ["All debug off" prolog-debug-off
+ :included (eq prolog-system 'sicstus)]
+ ["Source level debugging"
+ prolog-toggle-sicstus-sd
+ :included (and (eq prolog-system 'sicstus)
+ (prolog-atleast-version '(3 . 7)))
+ :style toggle
+ :selected prolog-use-sicstus-sd]
+
+ "---"
+ ["Run" run-prolog
+ :suffix (cond ((eq prolog-system 'eclipse) "ECLiPSe")
+ ((eq prolog-system 'mercury) "Mercury")
+ (t "Prolog"))]))
+
+(easy-menu-define
+ prolog-edit-menu-insert-move prolog-mode-map
+ "Commands for Prolog code manipulation."
+ '("Prolog"
+ ["Comment region" comment-region (region-exists-p)]
+ ["Uncomment region" prolog-uncomment-region (region-exists-p)]
+ ["Add comment/move to comment" indent-for-comment t]
+ ["Convert variables in region to '_'" prolog-variables-to-anonymous
+ :active (region-exists-p) :included (not (eq prolog-system 'mercury))]
+ "---"
+ ["Insert predicate template" prolog-insert-predicate-template t]
+ ["Insert next clause head" prolog-insert-next-clause t]
+ ["Insert predicate spec" prolog-insert-predspec t]
+ ["Insert module modeline" prolog-insert-module-modeline t]
+ "---"
+ ["Beginning of clause" prolog-beginning-of-clause t]
+ ["End of clause" prolog-end-of-clause t]
+ ["Beginning of predicate" prolog-beginning-of-predicate t]
+ ["End of predicate" prolog-end-of-predicate t]
+ "---"
+ ["Indent line" prolog-indent-line t]
+ ["Indent region" indent-region (region-exists-p)]
+ ["Indent predicate" prolog-indent-predicate t]
+ ["Indent buffer" prolog-indent-buffer t]
+ ["Align region" align (region-exists-p)]
+ "---"
+ ["Mark clause" prolog-mark-clause t]
+ ["Mark predicate" prolog-mark-predicate t]
+ ["Mark paragraph" mark-paragraph t]
+ ;;"---"
+ ;;["Fontify buffer" font-lock-fontify-buffer t]
+ ))
+
+(defun prolog-menu ()
+ "Add the menus for the Prolog editing buffers."
+
+ (easy-menu-add prolog-edit-menu-insert-move)
+ (easy-menu-add prolog-edit-menu-runtime)
+
+ ;; Add predicate index menu
+ (set (make-local-variable 'imenu-create-index-function)
+ 'imenu-default-create-index-function)
+ ;;Milan (this has problems with object methods...) ###### Does it? (Stefan)
+ (setq imenu-prev-index-position-function 'prolog-beginning-of-predicate)
+ (setq imenu-extract-index-name-function 'prolog-get-predspec)
+
+ (if (and prolog-imenu-flag
+ (< (count-lines (point-min) (point-max)) prolog-imenu-max-lines))
+ (imenu-add-to-menubar "Predicates"))
+
+ (easy-menu-add prolog-menu-help))
+
+(easy-menu-define
+ prolog-inferior-menu-all prolog-inferior-mode-map
+ "Menu for the inferior Prolog buffer."
+ `("Prolog"
+ ;; Runtime menu name.
+ ,@(unless (featurep 'xemacs)
+ '(:label (cond ((eq prolog-system 'eclipse) "ECLiPSe")
+ ((eq prolog-system 'mercury) "Mercury")
+ (t "Prolog"))))
+
+ ;; Debug items, NIL for Mercury.
+ ,(if (featurep 'xemacs) "---"
+ ["---" nil :included (not (eq prolog-system 'mercury))])
+ ;; FIXME: Could we use toggle or radio buttons? --Stef
+ ["Debug" prolog-debug-on :included (not (eq prolog-system 'mercury))]
+ ["Debug off" prolog-debug-off
+ ;; In SICStus, these are pairwise disjunctive,
+ ;; so it's enough with a single "off"-command
+ :included (not (memq prolog-system '(mercury sicstus)))]
+ ["Trace" prolog-trace-on :included (not (eq prolog-system 'mercury))]
+ ["Trace off" prolog-trace-off
+ :included (not (memq prolog-system '(mercury sicstus)))]
+ ["Zip" prolog-zip-on :included (and (eq prolog-system 'sicstus)
+ (prolog-atleast-version '(3 . 7)))]
+ ["All debug off" prolog-debug-off
+ :included (eq prolog-system 'sicstus)]
+ ["Source level debugging"
+ prolog-toggle-sicstus-sd
+ :included (and (eq prolog-system 'sicstus)
+ (prolog-atleast-version '(3 . 7)))
+ :style toggle
+ :selected prolog-use-sicstus-sd]
+
+ ;; Runtime.
+ "---"
+ ["Interrupt Prolog" comint-interrupt-subjob t]
+ ["Quit Prolog" comint-quit-subjob t]
+ ["Kill Prolog" comint-kill-subjob t]))
+
+
+(defun prolog-inferior-menu ()
+ "Create the menus for the Prolog inferior buffer.
+This menu is dynamically created because one may change systems during
+the life of an Emacs session."
+ (easy-menu-add prolog-inferior-menu-all)
+ (easy-menu-add prolog-menu-help))
+
+(defun prolog-mode-version ()
+ "Echo the current version of Prolog mode in the minibuffer."
+ (interactive)
+ (message "Using Prolog mode version %s" prolog-mode-version))
(provide 'prolog)
diff --git a/lisp/progmodes/ps-mode.el b/lisp/progmodes/ps-mode.el
index 6158952772..f3418a6072 100644
--- a/lisp/progmodes/ps-mode.el
+++ b/lisp/progmodes/ps-mode.el
@@ -1,7 +1,6 @@
;;; ps-mode.el --- PostScript mode for GNU Emacs
-;; Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Peter Kleiweg <[email protected]>
;; Maintainer: Peter Kleiweg <[email protected]>
@@ -1167,5 +1166,4 @@ Use line numbers if `ps-run-error-line-numbers' is not nil"
(provide 'ps-mode)
-;; arch-tag: dce13d2d-69fb-4ec4-9d5d-6dd29c3f0e6e
;;; ps-mode.el ends here
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 2428ecb755..4246177495 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -1,7 +1,6 @@
;;; python.el --- silly walks for Python -*- coding: iso-8859-1 -*-
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Maintainer: FSF
@@ -2549,7 +2548,6 @@ with skeleton expansions for compound statement templates.
(^ '(- (1+ (current-indentation))))))
;; Python defines TABs as being 8-char wide.
(set (make-local-variable 'tab-width) 8)
- (unless font-lock-mode (font-lock-mode 1))
(when python-guess-indent (python-guess-indent))
;; Let's make it harder for the user to shoot himself in the foot.
(unless (= tab-width python-indent)
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index b6158a0e58..9d40b4d8fd 100644
--- a/lisp/progmodes/ruby-mode.el
+++ b/lisp/progmodes/ruby-mode.el
@@ -1,8 +1,6 @@
;;; ruby-mode.el --- Major mode for editing Ruby files
-;; Copyright (C) 1994, 1995, 1996 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1994-2011 Free Software Foundation, Inc.
;; Authors: Yukihiro Matsumoto
;; Nobuyoshi Nakada
@@ -153,6 +151,7 @@ This should only be called after matching against `ruby-here-doc-beg-re'."
(define-key map (kbd "C-M-h") 'backward-kill-word)
(define-key map (kbd "C-j") 'reindent-then-newline-and-indent)
(define-key map (kbd "C-m") 'newline)
+ (define-key map (kbd "C-c C-c") 'comment-region)
map)
"Keymap used in Ruby mode.")
@@ -319,7 +318,7 @@ Also ignores spaces after parenthesis when 'space."
(cdr (assq coding-system ruby-encoding-map)))
coding-system))
"ascii-8bit"))
- (if (looking-at "^#![^\n]*ruby") (beginning-of-line 2))
+ (if (looking-at "^#!") (beginning-of-line 2))
(cond ((looking-at "\\s *#.*-\*-\\s *\\(en\\)?coding\\s *:\\s *\\([-a-z0-9_]*\\)\\s *\\(;\\|-\*-\\)")
(unless (string= (match-string 2) coding-system)
(goto-char (match-beginning 2))
@@ -927,6 +926,7 @@ With ARG, do it many times. Negative ARG means move backward."
(condition-case nil
(while (> i 0)
(skip-syntax-forward " ")
+ (if (looking-at ",\\s *") (goto-char (match-end 0)))
(cond ((looking-at "\\?\\(\\\\[CM]-\\)*\\\\?\\S ")
(goto-char (match-end 0)))
((progn
@@ -1121,16 +1121,15 @@ See `add-log-current-defun-function'."
(syntax-propertize-rules
;; #{ }, #$hoge, #@foo are not comments
("\\(#\\)[{$@]" (1 "."))
- ;; the last $', $", $` in the respective string is not variable
- ;; the last ?', ?", ?` in the respective string is not ascii code
- ("\\(^\\|[\[ \t\n<+\(,=]\\)\\(['\"`]\\)\\(\\\\.\\|\\2\\|[^'\"`\n\\\\]\\)*?\\\\?[?$]\\(\\2\\)"
- (2 "\"")
- (4 "\""))
;; $' $" $` .... are variables
;; ?' ?" ?` are ascii codes
- ("\\(^\\|[^\\\\]\\)\\(\\\\\\\\\\)*[?$]\\([#\"'`]\\)" (3 "."))
+ ("\\([?$]\\)[#\"'`]"
+ (1 (unless (save-excursion
+ ;; Not within a string.
+ (nth 3 (syntax-ppss (match-beginning 0))))
+ (string-to-syntax "\\"))))
;; regexps
- ("\\(^\\|[=(,~?:;<>]\\|\\(^\\|\\s \\)\\(if\\|elsif\\|unless\\|while\\|until\\|when\\|and\\|or\\|&&\\|||\\)\\|g?sub!?\\|scan\\|split!?\\)\\s *\\(/\\)[^/\n\\\\]*\\(\\\\.[^/\n\\\\]*\\)*\\(/\\)"
+ ("\\(^\\|[[=(,~?:;<>]\\|\\(^\\|\\s \\)\\(if\\|elsif\\|unless\\|while\\|until\\|when\\|and\\|or\\|&&\\|||\\)\\|g?sub!?\\|scan\\|split!?\\)\\s *\\(/\\)[^/\n\\\\]*\\(\\\\.[^/\n\\\\]*\\)*\\(/\\)"
(4 "\"/")
(6 "\"/"))
("^=en\\(d\\)\\_>" (1 "!"))
@@ -1180,56 +1179,59 @@ It's useful in that it divides up the match string so that
"Return a regexp to find the beginning of a heredoc.
This should only be called after matching against `ruby-here-doc-end-re'."
- (let ((contents (regexp-quote (match-string 2))))
+ (let ((contents (concat
+ (regexp-quote (concat (match-string 2) (match-string 3)))
+ (if (string= (match-string 3) "_") "\\B" "\\b"))))
(concat "<<"
(let ((match (match-string 1)))
(if (and match (> (length match) 0))
- (concat "\\(?:-\\([\"']?\\)\\|\\([\"']\\)" match "\\)"
- contents "\\b\\(\\1\\|\\2\\)")
- (concat "-?\\([\"']\\|\\)" contents "\\b\\1"))))))
+ (concat "\\(?:-\\([\"']?\\)\\|\\([\"']\\)"
+ (match-string 1) "\\)"
+ contents "\\(\\1\\|\\2\\)")
+ (concat "-?\\([\"']\\|\\)" contents "\\1"))))))
(defconst ruby-font-lock-syntactic-keywords
`( ;; #{ }, #$hoge, #@foo are not comments
- ("\\(#\\)[{$@]" 1 (1 . nil))
- ;; the last $', $", $` in the respective string is not variable
- ;; the last ?', ?", ?` in the respective string is not ascii code
- ("\\(^\\|[\[ \t\n<+\(,=]\\)\\(['\"`]\\)\\(\\\\.\\|\\2\\|[^'\"`\n\\\\]\\)*?\\\\?[?$]\\(\\2\\)"
- (2 (7 . nil))
- (4 (7 . nil)))
- ;; $' $" $` .... are variables
- ;; ?' ?" ?` are ascii codes
- ("\\(^\\|[^\\\\]\\)\\(\\\\\\\\\\)*[?$]\\([#\"'`]\\)" 3 (1 . nil))
- ;; regexps
- ("\\(^\\|[=(,~?:;<>]\\|\\(^\\|\\s \\)\\(if\\|elsif\\|unless\\|while\\|until\\|when\\|and\\|or\\|&&\\|||\\)\\|g?sub!?\\|scan\\|split!?\\)\\s *\\(/\\)[^/\n\\\\]*\\(\\\\.[^/\n\\\\]*\\)*\\(/\\)"
- (4 (7 . ?/))
- (6 (7 . ?/)))
- ("^=en\\(d\\)\\_>" 1 "!")
- ("^\\(=\\)begin\\_>" 1 (ruby-comment-beg-syntax))
- ;; Currently, the following case is highlighted incorrectly:
- ;;
- ;; <<FOO
- ;; FOO
- ;; <<BAR
- ;; <<BAZ
- ;; BAZ
- ;; BAR
- ;;
- ;; This is because all here-doc beginnings are highlighted before any endings,
- ;; so although <<BAR is properly marked as a beginning, when we get to <<BAZ
- ;; it thinks <<BAR is part of a string so it's marked as well.
- ;;
- ;; This may be fixable by modifying ruby-in-here-doc-p to use
- ;; ruby-in-non-here-doc-string-p rather than syntax-ppss-context,
- ;; but I don't want to try that until we've got unit tests set up
- ;; to make sure I don't break anything else.
- (,(concat ruby-here-doc-beg-re ".*\\(\n\\)")
- ,(+ 1 (regexp-opt-depth ruby-here-doc-beg-re))
- (ruby-here-doc-beg-syntax))
- (,ruby-here-doc-end-re 3 (ruby-here-doc-end-syntax)))
- "Syntactic keywords for Ruby mode. See `font-lock-syntactic-keywords'.")
+ ("\\(#\\)[{$@]" 1 (1 . nil))
+ ;; the last $', $", $` in the respective string is not variable
+ ;; the last ?', ?", ?` in the respective string is not ascii code
+ ("\\(^\\|[\[ \t\n<+\(,=]\\)\\(['\"`]\\)\\(\\\\.\\|\\2\\|[^'\"`\n\\\\]\\)*?\\\\?[?$]\\(\\2\\)"
+ (2 (7 . nil))
+ (4 (7 . nil)))
+ ;; $' $" $` .... are variables
+ ;; ?' ?" ?` are ascii codes
+ ("\\(^\\|[^\\\\]\\)\\(\\\\\\\\\\)*[?$]\\([#\"'`]\\)" 3 (1 . nil))
+ ;; regexps
+ ("\\(^\\|[[=(,~?:;<>]\\|\\(^\\|\\s \\)\\(if\\|elsif\\|unless\\|while\\|until\\|when\\|and\\|or\\|&&\\|||\\)\\|g?sub!?\\|scan\\|split!?\\)\\s *\\(/\\)[^/\n\\\\]*\\(\\\\.[^/\n\\\\]*\\)*\\(/\\)"
+ (4 (7 . ?/))
+ (6 (7 . ?/)))
+ ("^=en\\(d\\)\\_>" 1 "!")
+ ("^\\(=\\)begin\\_>" 1 (ruby-comment-beg-syntax))
+ ;; Currently, the following case is highlighted incorrectly:
+ ;;
+ ;; <<FOO
+ ;; FOO
+ ;; <<BAR
+ ;; <<BAZ
+ ;; BAZ
+ ;; BAR
+ ;;
+ ;; This is because all here-doc beginnings are highlighted before any endings,
+ ;; so although <<BAR is properly marked as a beginning, when we get to <<BAZ
+ ;; it thinks <<BAR is part of a string so it's marked as well.
+ ;;
+ ;; This may be fixable by modifying ruby-in-here-doc-p to use
+ ;; ruby-in-non-here-doc-string-p rather than syntax-ppss-context,
+ ;; but I don't want to try that until we've got unit tests set up
+ ;; to make sure I don't break anything else.
+ (,(concat ruby-here-doc-beg-re ".*\\(\n\\)")
+ ,(+ 1 (regexp-opt-depth ruby-here-doc-beg-re))
+ (ruby-here-doc-beg-syntax))
+ (,ruby-here-doc-end-re 3 (ruby-here-doc-end-syntax)))
+ "Syntactic keywords for Ruby mode. See `font-lock-syntactic-keywords'.")
(defun ruby-comment-beg-syntax ()
- "Return the syntax cell for a the first character of a =begin.
+ "Return the syntax cell for a the first character of a =begin.
See the definition of `ruby-font-lock-syntactic-keywords'.
This returns a comment-delimiter cell as long as the =begin
@@ -1421,6 +1423,7 @@ See `font-lock-syntax-table'.")
;; symbols
'("\\(^\\|[^:]\\)\\(:\\([-+~]@?\\|[/%&|^`]\\|\\*\\*?\\|<\\(<\\|=>?\\)?\\|>[>=]?\\|===?\\|=~\\|![~=]?\\|\\[\\]=?\\|\\(\\w\\|_\\)+\\([!?=]\\|\\b_*\\)\\|#{[^}\n\\\\]*\\(\\\\.[^}\n\\\\]*\\)*}\\)\\)"
2 font-lock-reference-face)
+ '("\\(^\\s *\\|[\[\{\(,]\\s *\\|\\sw\\s +\\)\\(\\(\\sw\\|_\\)+\\):[^:]" 2 font-lock-reference-face)
;; expression expansion
'("#\\({[^}\n\\\\]*\\(\\\\.[^}\n\\\\]*\\)*}\\|\\(\\$\\|@\\|@@\\)\\(\\w\\|_\\)+\\)"
0 font-lock-variable-name-face t)
diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el
index fa4c02a744..4151e2bb79 100644
--- a/lisp/progmodes/scheme.el
+++ b/lisp/progmodes/scheme.el
@@ -1,7 +1,7 @@
;;; scheme.el --- Scheme (and DSSSL) editing mode
-;; Copyright (C) 1986, 1987, 1988, 1997, 1998, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986-1988, 1997-1998, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Bill Rozas <[email protected]>
;; Adapted-by: Dave Love <[email protected]>
@@ -580,5 +580,4 @@ that variable's value is a string."
(provide 'scheme)
-;; arch-tag: a8f06bc1-ad11-42d2-9e36-ce651df37a90
;;; scheme.el ends here
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index ee7e4c3b1b..64f8c62377 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -1,8 +1,6 @@
;;; sh-script.el --- shell-script editing commands for Emacs
-;; Copyright (C) 1993, 1994, 1995, 1996, 1997, 1999, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1993-1997, 1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Daniel Pfeiffer <[email protected]>
;; Version: 2.0f
@@ -762,7 +760,7 @@ flow of control or syntax. See `sh-feature'."
(shell "break" "case" "continue" "exec" "exit")
(zsh sh-append bash
- "select"))
+ "select" "foreach"))
"List of keywords not in `sh-leading-keywords'.
See `sh-feature'."
:type '(repeat (cons (symbol :tag "Shell")
diff --git a/lisp/progmodes/simula.el b/lisp/progmodes/simula.el
index bccbbf245d..976ec20248 100644
--- a/lisp/progmodes/simula.el
+++ b/lisp/progmodes/simula.el
@@ -1,7 +1,6 @@
;;; simula.el --- SIMULA 87 code editing commands for Emacs
-;; Copyright (C) 1992, 1994, 1996, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1994, 1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Hans Henrik Eriksen <[email protected]>
;; Maintainer: [email protected]
diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el
index 053816d028..9e49f0e775 100644
--- a/lisp/progmodes/sql.el
+++ b/lisp/progmodes/sql.el
@@ -1,7 +1,6 @@
;;; sql.el --- specialized comint.el for SQL interpreters
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Alex Schroeder <[email protected]>
;; Maintainer: Michael Mauger <[email protected]>
diff --git a/lisp/progmodes/subword.el b/lisp/progmodes/subword.el
index 7df42c8b9a..1a403f50b1 100644
--- a/lisp/progmodes/subword.el
+++ b/lisp/progmodes/subword.el
@@ -1,6 +1,6 @@
;;; subword.el --- Handling capitalized subwords in a nomenclature
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Masatake YAMATO
@@ -277,5 +277,4 @@ Optional argument ARG is the same as for `capitalize-word'."
(provide 'subword)
-;; arch-tag: b8a01202-8a52-4a71-ae0a-d753fafd67ef
;;; subword.el ends here
diff --git a/lisp/progmodes/tcl.el b/lisp/progmodes/tcl.el
index 44ccd134a3..eb25467646 100644
--- a/lisp/progmodes/tcl.el
+++ b/lisp/progmodes/tcl.el
@@ -1,7 +1,6 @@
;;; tcl.el --- Tcl code editing commands for Emacs
-;; Copyright (C) 1994, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1998-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Author: Tom Tromey <[email protected]>
diff --git a/lisp/progmodes/vera-mode.el b/lisp/progmodes/vera-mode.el
index 7a22bec425..f2842721f2 100644
--- a/lisp/progmodes/vera-mode.el
+++ b/lisp/progmodes/vera-mode.el
@@ -1,7 +1,6 @@
;;; vera-mode.el --- major mode for editing Vera files.
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Reto Zimmermann <[email protected]>
;; Maintainer: Reto Zimmermann <[email protected]>
diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el
index 77dcac7f67..8bb9256078 100644
--- a/lisp/progmodes/verilog-mode.el
+++ b/lisp/progmodes/verilog-mode.el
@@ -1,7 +1,6 @@
;; verilog-mode.el --- major mode for editing verilog source in Emacs
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Michael McNamara ([email protected]),
;; Wilson Snyder ([email protected])
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index f9d68af931..cb1d3c24a9 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -1,8 +1,6 @@
;;; vhdl-mode.el --- major mode for editing VHDL code
-;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1992-2011 Free Software Foundation, Inc.
;; Authors: Reto Zimmermann <[email protected]>
;; Rodney J. Whitby <[email protected]>
diff --git a/lisp/progmodes/which-func.el b/lisp/progmodes/which-func.el
index e06dbf46a9..ae18486c43 100644
--- a/lisp/progmodes/which-func.el
+++ b/lisp/progmodes/which-func.el
@@ -1,7 +1,6 @@
;;; which-func.el --- print current function in mode line
-;; Copyright (C) 1994, 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1997-1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Alex Rezinsky <[email protected]>
;; (doesn't seem to be responsive any more)
@@ -332,5 +331,4 @@ If no function name is found, return nil."
(provide 'which-func)
-;; arch-tag: fa8a55c7-bfe3-4ffc-95ab-01bf21796827
;;; which-func.el ends here
diff --git a/lisp/progmodes/xscheme.el b/lisp/progmodes/xscheme.el
index f83a67f4ad..cd50174f8c 100644
--- a/lisp/progmodes/xscheme.el
+++ b/lisp/progmodes/xscheme.el
@@ -1,7 +1,7 @@
;;; xscheme.el --- run MIT Scheme under Emacs
-;; Copyright (C) 1986, 1987, 1989, 1990, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986-1987, 1989-1990, 2001-2011
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: languages, lisp
diff --git a/lisp/ps-bdf.el b/lisp/ps-bdf.el
index 585b5f9eb6..608b266df8 100644
--- a/lisp/ps-bdf.el
+++ b/lisp/ps-bdf.el
@@ -1,10 +1,8 @@
;;; ps-bdf.el --- BDF font file handler for ps-print
-;; Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1998-1999, 2001-2011 Free Software Foundation, Inc.
;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010
+;; 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
@@ -448,5 +446,4 @@ BITMAP-STRING is a string representing bits by hexadecimal digits."
(provide 'ps-bdf)
-;; arch-tag: 9b875ba8-565a-4ecf-acaa-30cee732c898
;;; ps-bdf.el ends here
diff --git a/lisp/ps-def.el b/lisp/ps-def.el
index 9122b8fdc9..fd499c964d 100644
--- a/lisp/ps-def.el
+++ b/lisp/ps-def.el
@@ -1,6 +1,6 @@
;;; ps-def.el --- XEmacs and Emacs definitions for ps-print
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <[email protected]>
;; Kenichi Handa <[email protected]> (multi-byte characters)
@@ -402,5 +402,4 @@
(provide 'ps-def)
-;; arch-tag: 4edde45b-af10-4685-b8ee-7cd0f951095a
;;; ps-def.el ends here
diff --git a/lisp/ps-mule.el b/lisp/ps-mule.el
index 95a982f29a..67c12b0054 100644
--- a/lisp/ps-mule.el
+++ b/lisp/ps-mule.el
@@ -1,7 +1,6 @@
;;; ps-mule.el --- provide multi-byte character facility to ps-print
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <[email protected]>
;; Kenichi Handa <[email protected]> (multi-byte characters)
@@ -1211,5 +1210,4 @@ V%s 0 /%s-latin1 /%s Latin1Encoding put\n"
;; generated-autoload-file: "ps-print.el"
;; End:
-;; arch-tag: bca017b2-66a7-4e59-8584-103e749eadbe
;;; ps-mule.el ends here
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index 885fe68be2..5432674410 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -1,8 +1,6 @@
;;; ps-print.el --- print text from the buffer as PostScript
-;; Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-;; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1993-2011 Free Software Foundation, Inc.
;; Author: Jim Thompson (was <[email protected]>)
;; Jacques Duthen (was <[email protected]>)
@@ -4328,14 +4326,17 @@ Try: pr -t file | awk '{printf \"%3d %s\n\", length($0), $0}' | sort -r | head"
(ps-header-font-size-internal
(or ps-header-font-size-internal
(ps-get-font-size 'ps-header-font-size)))
+ (ps-footer-font-size-internal
+ (or ps-footer-font-size-internal
+ (ps-get-font-size 'ps-footer-font-size)))
(ps-header-title-font-size-internal
(or ps-header-title-font-size-internal
(ps-get-font-size 'ps-header-title-font-size)))
(buf (get-buffer-create "*Line-lengths*"))
(ifs ps-font-size-internal) ; initial font size
- (icw (ps-avg-char-width 'ps-font-for-text)) ; initial character width
(print-width (progn (ps-get-page-dimensions)
ps-print-width))
+ (icw (ps-avg-char-width 'ps-font-for-text)) ; initial character width
(ps-setup (ps-setup)) ; setup for the current buffer
(fs-min 5) ; minimum font size
cw-min ; minimum character width
@@ -4375,6 +4376,9 @@ and on the current ps-print setup."
(ps-header-font-size-internal
(or ps-header-font-size-internal
(ps-get-font-size 'ps-header-font-size)))
+ (ps-footer-font-size-internal
+ (or ps-footer-font-size-internal
+ (ps-get-font-size 'ps-footer-font-size)))
(ps-header-title-font-size-internal
(or ps-header-title-font-size-internal
(ps-get-font-size 'ps-header-title-font-size)))
@@ -4384,9 +4388,9 @@ and on the current ps-print setup."
(buf (get-buffer-create "*Nb-Pages*"))
(ils ps-line-spacing-internal) ; initial line spacing
(ifs ps-font-size-internal) ; initial font size
- (ilh (ps-line-height 'ps-font-for-text)) ; initial line height
(page-height (progn (ps-get-page-dimensions)
ps-print-height))
+ (ilh (ps-line-height 'ps-font-for-text)) ; initial line height
(ps-setup (ps-setup)) ; setup for the current buffer
(fs-min 4) ; minimum font size
lh-min ; minimum line height
@@ -6653,7 +6657,7 @@ If FACE is not a valid face name, use default face."
;; But autoload them here to make the separation invisible.
;;;### (autoloads (ps-mule-end-job ps-mule-begin-job ps-mule-initialize
-;;;;;; ps-multibyte-buffer) "ps-mule" "ps-mule.el" "26f1d5db9476d0e84ab55627fbb72b1b")
+;;;;;; ps-multibyte-buffer) "ps-mule" "ps-mule.el" "0e9db04f70d1221af96488068afa1192")
;;; Generated autoloads from ps-mule.el
(defvar ps-multibyte-buffer nil "\
diff --git a/lisp/ps-samp.el b/lisp/ps-samp.el
index 9fab290fc5..d4d4124993 100644
--- a/lisp/ps-samp.el
+++ b/lisp/ps-samp.el
@@ -1,6 +1,6 @@
;;; ps-samp.el --- ps-print sample setup code
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Jim Thompson (was <[email protected]>)
;; Jacques Duthen (was <[email protected]>)
@@ -309,5 +309,4 @@
(provide 'ps-samp)
-;; arch-tag: 99c415d3-be39-43c6-aa32-7ee33ba19600
;;; ps-samp.el ends here
diff --git a/lisp/recentf.el b/lisp/recentf.el
index 817434bdd5..d0be69b51f 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -1,7 +1,6 @@
;;; recentf.el --- setup a menu of recently opened files
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: David Ponce <[email protected]>
;; Created: July 19 1999
@@ -1355,11 +1354,7 @@ that were operated on recently."
(recentf-auto-cleanup)
(let ((hook-setup (if recentf-mode 'add-hook 'remove-hook)))
(dolist (hook recentf-used-hooks)
- (apply hook-setup hook)))
- (run-hooks 'recentf-mode-hook)
- (when (called-interactively-p 'interactive)
- (message "Recentf mode %sabled" (if recentf-mode "en" "dis"))))
- recentf-mode)
+ (apply hook-setup hook)))))
(defun recentf-unload-function ()
"Unload the recentf library."
@@ -1371,5 +1366,4 @@ that were operated on recently."
(run-hooks 'recentf-load-hook)
-;; arch-tag: 78f1eec9-0d16-4d19-a4eb-2e4529edb62a
;;; recentf.el ends here
diff --git a/lisp/rect.el b/lisp/rect.el
index 6658408991..174e31f87d 100644
--- a/lisp/rect.el
+++ b/lisp/rect.el
@@ -1,7 +1,6 @@
;;; rect.el --- rectangle functions for GNU Emacs
-;; Copyright (C) 1985, 1999, 2000, 2001, 2002, 2003, 2004
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1999-2011 Free Software Foundation, Inc.
;; Maintainer: Didier Verna <[email protected]>
;; Keywords: internal
@@ -27,10 +26,8 @@
;; This package provides the operations on rectangles that are documented
;; in the Emacs manual.
-;; ### NOTE: this file has been almost completely rewritten by Didier Verna
-;; <[email protected]> in July 1999. The purpose of this rewrite is to be less
-;; intrusive and fill lines with whitespaces only when needed. A few functions
-;; are untouched though, as noted above their definition.
+;; ### NOTE: this file was almost completely rewritten by Didier Verna
+;; <[email protected]> in July 1999.
;;; Global key bindings
@@ -40,26 +37,11 @@
;;;###autoload (define-key ctl-x-r-map "y" 'yank-rectangle)
;;;###autoload (define-key ctl-x-r-map "o" 'open-rectangle)
;;;###autoload (define-key ctl-x-r-map "t" 'string-rectangle)
+;;;###autoload (define-key ctl-x-r-map "N" 'rectangle-number-lines)
;;; Code:
-;;;###autoload
-(defun move-to-column-force (column &optional flag)
- "If COLUMN is within a multi-column character, replace it by spaces and tab.
-As for `move-to-column', passing anything but nil or t in FLAG will move to
-the desired column only if the line is long enough."
- (move-to-column column (or flag t)))
-
-;;;###autoload
-(make-obsolete 'move-to-column-force 'move-to-column "21.2")
-
-;; not used any more --dv
-;; extract-rectangle-line stores lines into this list
-;; to accumulate them for extract-rectangle and delete-extract-rectangle.
-(defvar operate-on-rectangle-lines)
-
-;; ### NOTE: this function is untouched, but not used anymore apart from
-;; `delete-whitespace-rectangle'. `apply-on-rectangle' is used instead. --dv
+;; FIXME: this function should be replaced by `apply-on-rectangle'
(defun operate-on-rectangle (function start end coerce-tabs)
"Call FUNCTION for each line of rectangle with corners at START, END.
If COERCE-TABS is non-nil, convert multi-column characters
@@ -107,7 +89,6 @@ Point is at the end of the segment of this line within the rectangle."
(forward-line 1)))
(- endcol startcol)))
-;; The replacement for `operate-on-rectangle' -- dv
(defun apply-on-rectangle (function start end &rest args)
"Call FUNCTION for each line of rectangle with corners at START, END.
FUNCTION is called with two arguments: the start and end columns of the
@@ -151,9 +132,9 @@ the function is called."
(setcdr lines (cons (filter-buffer-substring pt (point) t) (cdr lines))))
))
-;; ### NOTE: this is actually the only function that needs to do complicated
-;; stuff like what's happening in `operate-on-rectangle', because the buffer
-;; might be read-only. --dv
+;; This is actually the only function that needs to do complicated
+;; stuff like what's happening in `operate-on-rectangle', because the
+;; buffer might be read-only.
(defun extract-rectangle-line (startcol endcol lines)
(let (start end begextra endextra line)
(move-to-column startcol)
@@ -186,7 +167,6 @@ the function is called."
(defconst spaces-strings
'["" " " " " " " " " " " " " " " " "])
-;; this one is untouched --dv
(defun spaces-string (n)
"Return a string with N spaces."
(if (<= n 8) (aref spaces-strings n)
@@ -253,14 +233,12 @@ even beep.)"
(barf-if-buffer-read-only)
(signal 'text-read-only (list (current-buffer)))))))
-;; this one is untouched --dv
;;;###autoload
(defun yank-rectangle ()
"Yank the last killed rectangle with upper left corner at point."
(interactive "*")
(insert-rectangle killed-rectangle))
-;; this one is untoutched --dv
;;;###autoload
(defun insert-rectangle (rectangle)
"Insert text of RECTANGLE with upper left corner at point.
@@ -323,10 +301,6 @@ With a prefix (or a FILL) argument, also fill too short lines."
(interactive "*r\nP")
(apply-on-rectangle 'delete-whitespace-rectangle-line start end fill))
-;; not used any more --dv
-;; string-rectangle uses this variable to pass the string
-;; to string-rectangle-line.
-(defvar string-rectangle-string)
(defvar string-rectangle-history nil)
(defun string-rectangle-line (startcol endcol string delete)
(move-to-column startcol t)
@@ -396,7 +370,45 @@ rectangle which were empty."
(delete-region pt (point))
(indent-to endcol)))))
+;; Line numbers for `rectangle-number-line-callback'.
+(defvar rectangle-number-line-counter)
+
+(defun rectangle-number-line-callback (start end format-string)
+ (move-to-column start t)
+ (insert (format format-string rectangle-number-line-counter))
+ (setq rectangle-number-line-counter
+ (1+ rectangle-number-line-counter)))
+
+(defun rectange--default-line-number-format (start end start-at)
+ (concat "%"
+ (int-to-string (length (int-to-string (+ (count-lines start end)
+ start-at))))
+ "d "))
+
+;;;###autoload
+(defun rectangle-number-lines (start end start-at &optional format)
+ "Insert numbers in front of the region-rectangle.
+
+START-AT, if non-nil, should be a number from which to begin
+counting. FORMAT, if non-nil, should be a format string to pass
+to `format' along with the line count. When called interactively
+with a prefix argument, prompt for START-AT and FORMAT."
+ (interactive
+ (if current-prefix-arg
+ (let* ((start (region-beginning))
+ (end (region-end))
+ (start-at (read-number "Number to count from: " 1)))
+ (list start end start-at
+ (read-string "Format string: "
+ (rectange--default-line-number-format
+ start end start-at))))
+ (list (region-beginning) (region-end) 1 nil)))
+ (unless format
+ (setq format (rectange--default-line-number-format start end start-at)))
+ (let ((rectangle-number-line-counter start-at))
+ (apply-on-rectangle 'rectangle-number-line-callback
+ start end format)))
+
(provide 'rect)
-;; arch-tag: 178847b3-1f50-4b03-83de-a6e911cc1d16
;;; rect.el ends here
diff --git a/lisp/register.el b/lisp/register.el
index 97b6eb0dfc..517c50ee1e 100644
--- a/lisp/register.el
+++ b/lisp/register.el
@@ -1,7 +1,6 @@
;;; register.el --- register commands for Emacs
-;; Copyright (C) 1985, 1993, 1994, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1993-1994, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
@@ -353,5 +352,4 @@ START and END are buffer positions giving two corners of rectangle."
(extract-rectangle start end))))
(provide 'register)
-;; arch-tag: ce14dd68-8265-475f-9341-5d4ec5a53035
;;; register.el ends here
diff --git a/lisp/repeat.el b/lisp/repeat.el
index abab47e7dc..b33039b609 100644
--- a/lisp/repeat.el
+++ b/lisp/repeat.el
@@ -1,7 +1,6 @@
;;; repeat.el --- convenient way to repeat the previous command
-;; Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Will Mengarini <[email protected]>
;; Created: Mo 02 Mar 98
@@ -392,5 +391,4 @@ recently executed command not bound to an input event\"."
(provide 'repeat)
-;; arch-tag: cd569600-a1ad-4fa7-9062-bb91dfeaf1db
;;; repeat.el ends here
diff --git a/lisp/replace.el b/lisp/replace.el
index 28f3a845c2..d89a511a09 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -1,7 +1,6 @@
;;; replace.el --- replace commands for Emacs
-;; Copyright (C) 1985, 1986, 1987, 1992, 1994, 1996, 1997, 2000, 2001,
-;; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1987, 1992, 1994, 1996-1997, 2000-2011
;; Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -2047,5 +2046,4 @@ make, or the user didn't cancel the call."
(lazy-highlight-cleanup lazy-highlight-cleanup)
(setq isearch-lazy-highlight-last-string nil)))
-;; arch-tag: 16b4cd61-fd40-497b-b86f-b667c4cf88e4
;;; replace.el ends here
diff --git a/lisp/reposition.el b/lisp/reposition.el
index f6699f8c08..51dd630a0c 100644
--- a/lisp/reposition.el
+++ b/lisp/reposition.el
@@ -1,7 +1,6 @@
;;; reposition.el --- center a Lisp function or comment on the screen
-;; Copyright (C) 1991, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1991, 1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Michael D. Ernst <[email protected]>
;; Created: Jan 1991
diff --git a/lisp/reveal.el b/lisp/reveal.el
index ff5c8807de..574c86a0fa 100644
--- a/lisp/reveal.el
+++ b/lisp/reveal.el
@@ -1,7 +1,6 @@
;;; reveal.el --- Automatically reveal hidden text at point
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Keywords: outlines
@@ -225,5 +224,4 @@ With zero or negative ARG turn mode off."
(provide 'reveal)
-;; arch-tag: 96ba0242-2274-4ed7-8e10-26bc0707b4d8
;;; reveal.el ends here
diff --git a/lisp/rfn-eshadow.el b/lisp/rfn-eshadow.el
index fa7a933615..9eb2d2abde 100644
--- a/lisp/rfn-eshadow.el
+++ b/lisp/rfn-eshadow.el
@@ -1,7 +1,6 @@
;;; rfn-eshadow.el --- Highlight `shadowed' part of read-file-name input text
;;
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;;
;; Author: Miles Bader <[email protected]>
;; Keywords: convenience minibuffer
@@ -240,5 +239,4 @@ Returns non-nil if the new state is enabled."
(provide 'rfn-eshadow)
-;; arch-tag: dcf70a52-0115-4ec2-b1e3-4f8d3541a888
;;; rfn-eshadow.el ends here
diff --git a/lisp/rot13.el b/lisp/rot13.el
index f4a8ea92bc..89b687efdc 100644
--- a/lisp/rot13.el
+++ b/lisp/rot13.el
@@ -1,7 +1,6 @@
;;; rot13.el --- display a buffer in ROT13
-;; Copyright (C) 1988, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 2001-2011 Free Software Foundation, Inc.
;; Author: Howard Gayle
;; Maintainer: FSF
@@ -109,5 +108,4 @@ See also `toggle-rot13-mode'."
(provide 'rot13)
-;; arch-tag: ad5b9ca8-946c-4414-996f-e9b1bf9ec79f
;;; rot13.el ends here
diff --git a/lisp/ruler-mode.el b/lisp/ruler-mode.el
index 1c809bbd7e..fc62bf6b63 100644
--- a/lisp/ruler-mode.el
+++ b/lisp/ruler-mode.el
@@ -1,7 +1,6 @@
;;; ruler-mode.el --- display a ruler in the header line
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; Author: David Ponce <[email protected]>
;; Maintainer: David Ponce <[email protected]>
@@ -776,5 +775,4 @@ Optional argument PROPS specifies other text properties to apply."
;; coding: iso-latin-1
;; End:
-;; arch-tag: b2f24546-5605-44c4-b67b-c9a4eeba3ee8
;;; ruler-mode.el ends here
diff --git a/lisp/savehist.el b/lisp/savehist.el
index 15c841ac9c..f1060fb515 100644
--- a/lisp/savehist.el
+++ b/lisp/savehist.el
@@ -1,7 +1,6 @@
;;; savehist.el --- Save minibuffer history.
-;; Copyright (C) 1997, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2005-2011 Free Software Foundation, Inc.
;; Author: Hrvoje Niksic <[email protected]>
;; Maintainer: FSF
@@ -389,6 +388,5 @@ trimming of history lists to `history-length' items."
(provide 'savehist)
-;; arch-tag: b3ce47f4-c5ad-4ebc-ad02-73aba705cf9f
;;; savehist.el ends here
diff --git a/lisp/saveplace.el b/lisp/saveplace.el
index 35625ca276..b7d43bd230 100644
--- a/lisp/saveplace.el
+++ b/lisp/saveplace.el
@@ -1,7 +1,6 @@
;;; saveplace.el --- automatically save place in files
-;; Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Karl Fogel <[email protected]>
;; Maintainer: FSF
@@ -213,7 +212,9 @@ may have changed\) back to `save-place-alist'."
(symbol-name coding-system-for-write)))
(let ((print-length nil)
(print-level nil))
- (print save-place-alist (current-buffer)))
+ (pp (sort save-place-alist
+ (lambda (a b) (string< (car a) (car b))))
+ (current-buffer)))
(let ((version-control
(cond
((null save-place-version-control) nil)
@@ -305,5 +306,4 @@ may have changed\) back to `save-place-alist'."
(provide 'saveplace) ; why not...
-;; arch-tag: 3c2ef47b-0a22-4558-b116-118c9ef454a0
;;; saveplace.el ends here
diff --git a/lisp/sb-image.el b/lisp/sb-image.el
index 808cf6b072..843186218a 100644
--- a/lisp/sb-image.el
+++ b/lisp/sb-image.el
@@ -1,7 +1,6 @@
;;; sb-image --- Image management for speedbar
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2003, 2005-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: file, tags, tools
@@ -105,5 +104,4 @@ See `speedbar-expand-image-button-alist' for details."
(provide 'sb-image)
-;; arch-tag: 6b05accd-e8b8-4290-8379-f063f3dacabb
;;; sb-image.el ends here
diff --git a/lisp/scroll-all.el b/lisp/scroll-all.el
index 4f9747cb90..6dbdc9ab90 100644
--- a/lisp/scroll-all.el
+++ b/lisp/scroll-all.el
@@ -1,7 +1,6 @@
;;; scroll-all.el --- scroll all buffers together minor mode
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Gary D. Foster <[email protected]>
;; Keywords: scroll crisp brief lock
@@ -116,5 +115,4 @@ apply to all visible windows in the same frame."
(provide 'scroll-all)
-;; arch-tag: db20089a-b157-45df-b5d4-2430e60acdd8
;;; scroll-all.el ends here
diff --git a/lisp/scroll-bar.el b/lisp/scroll-bar.el
index 8b8edab000..87c24018c0 100644
--- a/lisp/scroll-bar.el
+++ b/lisp/scroll-bar.el
@@ -1,7 +1,6 @@
;;; scroll-bar.el --- window system-independent scroll bar support
-;; Copyright (C) 1993, 1994, 1995, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1995, 1999-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: hardware
@@ -351,5 +350,4 @@ EVENT should be a scroll bar click."
(provide 'scroll-bar)
-;; arch-tag: 6f1d01d0-0b1e-4bf8-86db-d491e0f399f3
;;; scroll-bar.el ends here
diff --git a/lisp/scroll-lock.el b/lisp/scroll-lock.el
index b42b26e98a..0fe39c2ac3 100644
--- a/lisp/scroll-lock.el
+++ b/lisp/scroll-lock.el
@@ -1,6 +1,6 @@
;;; scroll-lock.el --- Scroll lock scrolling.
-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2005-2011 Free Software Foundation, Inc.
;; Author: Ralf Angeli <[email protected]>
;; Maintainer: FSF
@@ -123,5 +123,4 @@ during scrolling."
(provide 'scroll-lock)
-;; arch-tag: 148fc8e8-67e0-4638-bb34-3291595ab7e1
;;; scroll-lock.el ends here
diff --git a/lisp/select.el b/lisp/select.el
index 0f43ce0582..7ca5c3a432 100644
--- a/lisp/select.el
+++ b/lisp/select.el
@@ -1,7 +1,6 @@
;;; select.el --- lisp portion of standard selection support
-;; Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
diff --git a/lisp/server.el b/lisp/server.el
index e3af82231a..62c59b41ce 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -1,8 +1,6 @@
;;; server.el --- Lisp code for GNU Emacs running as server process
-;; Copyright (C) 1986, 1987, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1986-1987, 1992, 1994-2011 Free Software Foundation, Inc.
;; Author: William Sommerfeld <[email protected]>
;; Maintainer: FSF
diff --git a/lisp/ses.el b/lisp/ses.el
index 1d2b326c74..2fc85d27df 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -1,7 +1,6 @@
;;; ses.el -- Simple Emacs Spreadsheet -*- coding: utf-8 -*-
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Jonathan Yavner <[email protected]>
;; Maintainer: Jonathan Yavner <[email protected]>
@@ -3017,5 +3016,4 @@ current column and continues until the next nonblank column."
(provide 'ses)
-;; arch-tag: 88c1ccf0-4293-4824-8c5d-0757b52217f3
;;; ses.el ends here
diff --git a/lisp/sha1.el b/lisp/sha1.el
index 0d97ac6ce4..3f2e8f2a69 100644
--- a/lisp/sha1.el
+++ b/lisp/sha1.el
@@ -1,7 +1,6 @@
;;; sha1.el --- SHA1 Secure Hash Algorithm in Emacs-Lisp
-;; Copyright (C) 1999, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Shuhei KOBAYASHI <[email protected]>
;; Keywords: SHA1, FIPS 180-1
diff --git a/lisp/shadowfile.el b/lisp/shadowfile.el
index 4250e459f0..c88b55e964 100644
--- a/lisp/shadowfile.el
+++ b/lisp/shadowfile.el
@@ -1,7 +1,6 @@
;;; shadowfile.el --- automatic file copying
-;; Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Boris Goldowsky <[email protected]>
;; Keywords: comm files
@@ -832,5 +831,4 @@ look for files that have been changed and need to be copied to other systems."
(provide 'shadowfile)
-;; arch-tag: e2f4cdd7-2bab-4def-9130-9e69b412b79e
;;; shadowfile.el ends here
diff --git a/lisp/shell.el b/lisp/shell.el
index 815add7650..fcffc2317d 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -1,8 +1,6 @@
;;; shell.el --- specialized comint.el for running the shell
-;; Copyright (C) 1988, 1993, 1994, 1995, 1996, 1997, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1993-1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Olin Shivers <[email protected]>
;; Simon Marshall <[email protected]>
diff --git a/lisp/simple.el b/lisp/simple.el
index a977be7cf8..77d096fd79 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1,8 +1,6 @@
;;; simple.el --- basic editing commands for Emacs
-;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998,
-;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1993-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
@@ -762,7 +760,7 @@ If BACKWARD-ONLY is non-nil, only delete them before point."
(defun just-one-space (&optional n)
"Delete all spaces and tabs around point, leaving one space (or N spaces).
-If N is negative, deletes carriage return and linefeed characters as well."
+If N is negative, delete newlines as well."
(interactive "*p")
(unless n (setq n 1))
(let ((orig-pos (point))
@@ -1142,8 +1140,6 @@ in *Help* buffer. See also the command `describe-char'."
(set-keymap-parent m minibuffer-local-map)
(setq read-expression-map m))
-(defvar read-expression-history nil)
-
(defvar minibuffer-completing-symbol nil
"Non-nil means completing a Lisp symbol in the minibuffer.")
@@ -2341,7 +2337,11 @@ the use of a shell (with its need to quote arguments)."
(error "Shell command in progress")))
(with-current-buffer buffer
(setq buffer-read-only nil)
- (erase-buffer)
+ ;; Setting buffer-read-only to nil doesn't suffice
+ ;; if some text has a non-nil read-only property,
+ ;; which comint sometimes adds for prompts.
+ (let ((inhibit-read-only t))
+ (erase-buffer))
(display-buffer buffer)
(setq default-directory directory)
(setq proc (start-process "Shell" buffer shell-file-name
@@ -4219,9 +4219,11 @@ Outline mode sets this."
"When non-nil, `line-move' moves point by visual lines.
This movement is based on where the cursor is displayed on the
screen, instead of relying on buffer contents alone. It takes
-into account variable-width characters and line continuation."
+into account variable-width characters and line continuation.
+If nil, `line-move' moves point by logical lines."
:type 'boolean
- :group 'editing-basics)
+ :group 'editing-basics
+ :version "23.1")
;; Returns non-nil if partial move was done.
(defun line-move-partial (arg noerror to-end)
@@ -5100,12 +5102,10 @@ If optional arg REALLY-WORD is non-nil, it finds just a word."
regexp)
:group 'fill)
-;; This function is used as the auto-fill-function of a buffer
-;; when Auto-Fill mode is enabled.
-;; It returns t if it really did any work.
-;; (Actually some major modes use a different auto-fill function,
-;; but this one is the default one.)
(defun do-auto-fill ()
+ "The default value for `normal-auto-fill-function'.
+This is the default auto-fill function, some major modes use a different one.
+Returns t if it really did any work."
(let (fc justify give-up
(fill-prefix fill-prefix))
(if (or (not (setq justify (current-justification)))
@@ -5712,10 +5712,6 @@ appears to have customizations applying to the old default,
:version "23.2"
:group 'mail)
-(define-mail-user-agent 'sendmail-user-agent
- 'sendmail-user-agent-compose
- 'mail-send-and-exit)
-
(defun rfc822-goto-eoh ()
;; Go to header delimiter line in a mail message, following RFC822 rules
(goto-char (point-min))
@@ -5723,37 +5719,9 @@ appears to have customizations applying to the old default,
"^\\([:\n]\\|[^: \t\n]+[ \t\n]\\)" nil 'move)
(goto-char (match-beginning 0))))
-(defun sendmail-user-agent-compose (&optional to subject other-headers continue
- switch-function yank-action
- send-actions)
- (if switch-function
- (let ((special-display-buffer-names nil)
- (special-display-regexps nil)
- (same-window-buffer-names nil)
- (same-window-regexps nil))
- (funcall switch-function "*mail*")))
- (let ((cc (cdr (assoc-string "cc" other-headers t)))
- (in-reply-to (cdr (assoc-string "in-reply-to" other-headers t)))
- (body (cdr (assoc-string "body" other-headers t))))
- (or (mail continue to subject in-reply-to cc yank-action send-actions)
- continue
- (error "Message aborted"))
- (save-excursion
- (rfc822-goto-eoh)
- (while other-headers
- (unless (member-ignore-case (car (car other-headers))
- '("in-reply-to" "cc" "body"))
- (insert (car (car other-headers)) ": "
- (cdr (car other-headers))
- (if use-hard-newlines hard-newline "\n")))
- (setq other-headers (cdr other-headers)))
- (when body
- (forward-line 1)
- (insert body))
- t)))
-
(defun compose-mail (&optional to subject other-headers continue
- switch-function yank-action send-actions)
+ switch-function yank-action send-actions
+ return-action)
"Start composing a mail message to send.
This uses the user's chosen mail composition package
as selected with the variable `mail-user-agent'.
@@ -5778,7 +5746,12 @@ FUNCTION to ARGS, to insert the raw text of the original message.
original text has been inserted in this way.)
SEND-ACTIONS is a list of actions to call when the message is sent.
-Each action has the form (FUNCTION . ARGS)."
+Each action has the form (FUNCTION . ARGS).
+
+RETURN-ACTION, if non-nil, is an action for returning to the
+caller. It has the form (FUNCTION . ARGS). The function is
+called after the mail has been sent or put aside, and the mail
+buffer buried."
(interactive
(list nil nil nil current-prefix-arg))
@@ -5808,25 +5781,27 @@ To disable this warning, set `compose-mail-user-agent-warnings' to nil."
warn-vars " "))))))
(let ((function (get mail-user-agent 'composefunc)))
- (funcall function to subject other-headers continue
- switch-function yank-action send-actions)))
+ (funcall function to subject other-headers continue switch-function
+ yank-action send-actions return-action)))
(defun compose-mail-other-window (&optional to subject other-headers continue
- yank-action send-actions)
+ yank-action send-actions
+ return-action)
"Like \\[compose-mail], but edit the outgoing message in another window."
- (interactive
- (list nil nil nil current-prefix-arg))
+ (interactive (list nil nil nil current-prefix-arg))
(compose-mail to subject other-headers continue
- 'switch-to-buffer-other-window yank-action send-actions))
-
+ 'switch-to-buffer-other-window yank-action send-actions
+ return-action))
(defun compose-mail-other-frame (&optional to subject other-headers continue
- yank-action send-actions)
+ yank-action send-actions
+ return-action)
"Like \\[compose-mail], but edit the outgoing message in another frame."
- (interactive
- (list nil nil nil current-prefix-arg))
+ (interactive (list nil nil nil current-prefix-arg))
(compose-mail to subject other-headers continue
- 'switch-to-buffer-other-frame yank-action send-actions))
+ 'switch-to-buffer-other-frame yank-action send-actions
+ return-action))
+
(defvar set-variable-value-history nil
"History of values entered with `set-variable'.
diff --git a/lisp/skeleton.el b/lisp/skeleton.el
index 0c3e0e8c41..946e0a4480 100644
--- a/lisp/skeleton.el
+++ b/lisp/skeleton.el
@@ -1,7 +1,6 @@
;;; skeleton.el --- Lisp language extension for writing statement skeletons -*- coding: utf-8 -*-
-;; Copyright (C) 1993, 1994, 1995, 1996, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Daniel Pfeiffer <[email protected]>
;; Maintainer: FSF
diff --git a/lisp/sort.el b/lisp/sort.el
index d4bbf6df05..8ea3decb76 100644
--- a/lisp/sort.el
+++ b/lisp/sort.el
@@ -1,7 +1,7 @@
;;; sort.el --- commands to sort text in an Emacs buffer
-;; Copyright (C) 1986, 1987, 1994, 1995, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986-1987, 1994-1995, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Howie Kaye
;; Maintainer: FSF
diff --git a/lisp/soundex.el b/lisp/soundex.el
index bbadf43a5f..dbe92dc267 100644
--- a/lisp/soundex.el
+++ b/lisp/soundex.el
@@ -1,7 +1,6 @@
;;; soundex.el --- implement Soundex algorithm
-;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
;; Author: Christian Plaunt <[email protected]>
;; Maintainer: FSF
@@ -72,5 +71,4 @@ and Searching\", Addison-Wesley (1973), pp. 391-392."
(provide 'soundex)
-;; arch-tag: b2615a98-feb7-430e-a717-171086738953
;;; soundex.el ends here
diff --git a/lisp/speedbar.el b/lisp/speedbar.el
index 7413f73ee5..b84afd797d 100644
--- a/lisp/speedbar.el
+++ b/lisp/speedbar.el
@@ -1,8 +1,6 @@
;;; speedbar --- quick access to files and tags in a frame
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
;; Keywords: file, tags, tools
@@ -515,7 +513,7 @@ hierarchy would be replaced with the new directory."
:type 'hook)
(defcustom speedbar-mode-hook nil
- "Hooks called after creating a speedbar buffer."
+ "Hook run after creating a speedbar buffer."
:group 'speedbar
:type 'hook)
@@ -769,99 +767,95 @@ to toggle this value.")
(defvar speedbar-update-flag-disable nil
"Permanently disable changing of the update flag.")
-(defvar speedbar-syntax-table nil
+(defvar speedbar-mode-syntax-table
+ (let ((st (make-syntax-table)))
+ ;; Turn off paren matching around here.
+ (modify-syntax-entry ?\' " " st)
+ (modify-syntax-entry ?\" " " st)
+ (modify-syntax-entry ?\( " " st)
+ (modify-syntax-entry ?\) " " st)
+ (modify-syntax-entry ?\{ " " st)
+ (modify-syntax-entry ?\} " " st)
+ (modify-syntax-entry ?\[ " " st)
+ (modify-syntax-entry ?\] " " st)
+ st)
"Syntax-table used on the speedbar.")
-
-(if speedbar-syntax-table
- nil
- (setq speedbar-syntax-table (make-syntax-table))
- ;; turn off paren matching around here.
- (modify-syntax-entry ?\' " " speedbar-syntax-table)
- (modify-syntax-entry ?\" " " speedbar-syntax-table)
- (modify-syntax-entry ?( " " speedbar-syntax-table)
- (modify-syntax-entry ?) " " speedbar-syntax-table)
- (modify-syntax-entry ?{ " " speedbar-syntax-table)
- (modify-syntax-entry ?} " " speedbar-syntax-table)
- (modify-syntax-entry ?[ " " speedbar-syntax-table)
- (modify-syntax-entry ?] " " speedbar-syntax-table))
-
-(defvar speedbar-key-map nil
+(define-obsolete-variable-alias
+ 'speedbar-syntax-table 'speedbar-mode-syntax-table "24.1")
+
+
+(defvar speedbar-mode-map
+ (let ((map (make-keymap)))
+ (suppress-keymap map t)
+
+ ;; Control.
+ (define-key map "t" 'speedbar-toggle-updates)
+ (define-key map "g" 'speedbar-refresh)
+
+ ;; Navigation.
+ (define-key map "n" 'speedbar-next)
+ (define-key map "p" 'speedbar-prev)
+ (define-key map "\M-n" 'speedbar-restricted-next)
+ (define-key map "\M-p" 'speedbar-restricted-prev)
+ (define-key map "\C-\M-n" 'speedbar-forward-list)
+ (define-key map "\C-\M-p" 'speedbar-backward-list)
+ ;; These commands never seemed useful.
+ ;; (define-key map " " 'speedbar-scroll-up)
+ ;; (define-key map [delete] 'speedbar-scroll-down)
+
+ ;; Short cuts I happen to find useful.
+ (define-key map "r"
+ (lambda () (interactive)
+ (speedbar-change-initial-expansion-list
+ speedbar-previously-used-expansion-list-name)))
+ (define-key map "b"
+ (lambda () (interactive)
+ (speedbar-change-initial-expansion-list "quick buffers")))
+ (define-key map "f"
+ (lambda () (interactive)
+ (speedbar-change-initial-expansion-list "files")))
+
+ (dframe-update-keymap map)
+ map)
"Keymap used in speedbar buffer.")
-
-(if speedbar-key-map
- nil
- (setq speedbar-key-map (make-keymap))
- (suppress-keymap speedbar-key-map t)
-
- ;; control
- (define-key speedbar-key-map "t" 'speedbar-toggle-updates)
- (define-key speedbar-key-map "g" 'speedbar-refresh)
-
- ;; navigation
- (define-key speedbar-key-map "n" 'speedbar-next)
- (define-key speedbar-key-map "p" 'speedbar-prev)
- (define-key speedbar-key-map "\M-n" 'speedbar-restricted-next)
- (define-key speedbar-key-map "\M-p" 'speedbar-restricted-prev)
- (define-key speedbar-key-map "\C-\M-n" 'speedbar-forward-list)
- (define-key speedbar-key-map "\C-\M-p" 'speedbar-backward-list)
-;; These commands never seemed useful.
-;; (define-key speedbar-key-map " " 'speedbar-scroll-up)
-;; (define-key speedbar-key-map [delete] 'speedbar-scroll-down)
-
- ;; Short cuts I happen to find useful
- (define-key speedbar-key-map "r"
- (lambda () (interactive)
- (speedbar-change-initial-expansion-list
- speedbar-previously-used-expansion-list-name)))
- (define-key speedbar-key-map "b"
- (lambda () (interactive)
- (speedbar-change-initial-expansion-list "quick buffers")))
- (define-key speedbar-key-map "f"
- (lambda () (interactive)
- (speedbar-change-initial-expansion-list "files")))
-
- (dframe-update-keymap speedbar-key-map)
-)
+(define-obsolete-variable-alias 'speedbar-key-map 'speedbar-mode-map "24.1")
(defun speedbar-make-specialized-keymap ()
"Create a keymap for use with a speedbar major or minor display mode.
This basically creates a sparse keymap, and makes its parent be
-`speedbar-key-map'."
+`speedbar-mode-map'."
(let ((k (make-sparse-keymap)))
- (set-keymap-parent k speedbar-key-map)
+ (set-keymap-parent k speedbar-mode-map)
k))
-(defvar speedbar-file-key-map nil
+(defvar speedbar-file-key-map
+ (let ((map (speedbar-make-specialized-keymap)))
+
+ ;; Basic tree features.
+ (define-key map "e" 'speedbar-edit-line)
+ (define-key map "\C-m" 'speedbar-edit-line)
+ (define-key map "+" 'speedbar-expand-line)
+ (define-key map "=" 'speedbar-expand-line)
+ (define-key map "-" 'speedbar-contract-line)
+
+ (define-key map "[" 'speedbar-expand-line-descendants)
+ (define-key map "]" 'speedbar-contract-line-descendants)
+
+ (define-key map " " 'speedbar-toggle-line-expansion)
+
+ ;; File based commands.
+ (define-key map "U" 'speedbar-up-directory)
+ (define-key map "I" 'speedbar-item-info)
+ (define-key map "B" 'speedbar-item-byte-compile)
+ (define-key map "L" 'speedbar-item-load)
+ (define-key map "C" 'speedbar-item-copy)
+ (define-key map "D" 'speedbar-item-delete)
+ (define-key map "O" 'speedbar-item-object-delete)
+ (define-key map "R" 'speedbar-item-rename)
+ (define-key map "M" 'speedbar-create-directory)
+ map)
"Keymap used in speedbar buffer while files are displayed.")
-(if speedbar-file-key-map
- nil
- (setq speedbar-file-key-map (speedbar-make-specialized-keymap))
-
- ;; Basic tree features
- (define-key speedbar-file-key-map "e" 'speedbar-edit-line)
- (define-key speedbar-file-key-map "\C-m" 'speedbar-edit-line)
- (define-key speedbar-file-key-map "+" 'speedbar-expand-line)
- (define-key speedbar-file-key-map "=" 'speedbar-expand-line)
- (define-key speedbar-file-key-map "-" 'speedbar-contract-line)
-
- (define-key speedbar-file-key-map "[" 'speedbar-expand-line-descendants)
- (define-key speedbar-file-key-map "]" 'speedbar-contract-line-descendants)
-
- (define-key speedbar-file-key-map " " 'speedbar-toggle-line-expansion)
-
- ;; file based commands
- (define-key speedbar-file-key-map "U" 'speedbar-up-directory)
- (define-key speedbar-file-key-map "I" 'speedbar-item-info)
- (define-key speedbar-file-key-map "B" 'speedbar-item-byte-compile)
- (define-key speedbar-file-key-map "L" 'speedbar-item-load)
- (define-key speedbar-file-key-map "C" 'speedbar-item-copy)
- (define-key speedbar-file-key-map "D" 'speedbar-item-delete)
- (define-key speedbar-file-key-map "O" 'speedbar-item-object-delete)
- (define-key speedbar-file-key-map "R" 'speedbar-item-rename)
- (define-key speedbar-file-key-map "M" 'speedbar-create-directory)
- )
-
(defvar speedbar-easymenu-definition-base
(append
'("Speedbar"
@@ -1080,7 +1074,7 @@ selected. If the speedbar frame is active, then select the attached frame."
Return nil if it doesn't exist."
(frame-width speedbar-frame))
-(defun speedbar-mode ()
+(define-derived-mode speedbar-mode fundamental-mode "Speedbar"
"Major mode for managing a display of directories and tags.
\\<speedbar-key-map>
The first line represents the default directory of the speedbar frame.
@@ -1120,12 +1114,7 @@ tags start with >. Click the name of the tag to go to that position
in the selected file.
\\{speedbar-key-map}"
- ;; NOT interactive
(save-excursion
- (kill-all-local-variables)
- (setq major-mode 'speedbar-mode)
- (setq mode-name "Speedbar")
- (set-syntax-table speedbar-syntax-table)
(setq font-lock-keywords nil) ;; no font-locking please
(setq truncate-lines t)
(make-local-variable 'frame-title-format)
@@ -1138,8 +1127,7 @@ in the selected file.
(setq dframe-track-mouse-function #'speedbar-track-mouse))
(setq dframe-help-echo-function #'speedbar-item-info
dframe-mouse-click-function #'speedbar-click
- dframe-mouse-position-function #'speedbar-position-cursor-on-line)
- (run-hooks 'speedbar-mode-hook))
+ dframe-mouse-position-function #'speedbar-position-cursor-on-line))
speedbar-buffer)
(defmacro speedbar-message (fmt &rest args)
diff --git a/lisp/startup.el b/lisp/startup.el
index e85abe68f4..384d81391a 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1,8 +1,6 @@
;;; startup.el --- process Emacs shell arguments
-;; Copyright (C) 1985, 1986, 1992, 1994, 1995, 1996, 1997, 1998, 1999,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1985-1986, 1992, 1994-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
@@ -2017,7 +2015,7 @@ Type \\[describe-distribution] for information on "))
(defun display-startup-echo-area-message ()
(let ((resize-mini-windows t))
- (or noninteractive ;(input-pending-p) init-file-had-error
+ (or noninteractive ;(input-pending-p) init-file-had-error
;; t if the init file says to inhibit the echo area startup message.
(and inhibit-startup-echo-area-message
user-init-file
@@ -2027,24 +2025,21 @@ Type \\[describe-distribution] for information on "))
(user-login-name)
init-file-user)))
;; Wasn't set with custom; see if .emacs has a setq.
- (let ((buffer (get-buffer-create " *temp*")))
- (prog1
- (condition-case nil
- (with-current-buffer buffer
- (insert-file-contents user-init-file)
- (re-search-forward
- (concat
- "([ \t\n]*setq[ \t\n]+"
- "inhibit-startup-echo-area-message[ \t\n]+"
- (regexp-quote
- (prin1-to-string
- (if (equal init-file-user "")
- (user-login-name)
- init-file-user)))
- "[ \t\n]*)")
- nil t))
- (error nil))
- (kill-buffer buffer)))))
+ (condition-case nil
+ (with-temp-buffer
+ (insert-file-contents user-init-file)
+ (re-search-forward
+ (concat
+ "([ \t\n]*setq[ \t\n]+"
+ "inhibit-startup-echo-area-message[ \t\n]+"
+ (regexp-quote
+ (prin1-to-string
+ (if (equal init-file-user "")
+ (user-login-name)
+ init-file-user)))
+ "[ \t\n]*)")
+ nil t))
+ (error nil))))
(message "%s" (startup-echo-area-message)))))
(defun display-startup-screen (&optional concise)
diff --git a/lisp/strokes.el b/lisp/strokes.el
index 9006a41275..feeb8fec94 100644
--- a/lisp/strokes.el
+++ b/lisp/strokes.el
@@ -1,7 +1,6 @@
;;; strokes.el --- control Emacs through mouse strokes
-;; Copyright (C) 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2000-2011 Free Software Foundation, Inc.
;; Author: David Bakhash <[email protected]>
;; Maintainer: FSF
@@ -736,6 +735,11 @@ Optional EVENT is acceptable as the starting event of the stroke."
;; display the stroke as it's being read
(save-window-excursion
(set-window-configuration strokes-window-configuration)
+ ;; The frame has been resized, so we need to refill the
+ ;; strokes buffer so that the strokes canvas is the whole
+ ;; visible buffer.
+ (unless (> 1 (abs (- (line-end-position) (window-width))))
+ (strokes-fill-current-buffer-with-whitespace))
(when prompt
(message "%s" prompt)
(setq event (read-event))
@@ -1000,7 +1004,7 @@ If you'd like to create graphical files with strokes, you'll have to
be running a version of Emacs with XPM support. You use the binding
to `strokes-compose-complex-stroke' to start drawing your strokes.
These are just complex strokes, and thus continue drawing with mouse-1
-or mouse-2 and end with mouse-3. Then the stroke image gets inserted
+or mouse-2 and end with mouse-3. Then the stroke image gets inserted
into the buffer. You treat it somewhat like any other character,
which you can copy, paste, delete, move, etc. When all is done, you
may want to send the file, or save it. This is done with
@@ -1749,5 +1753,4 @@ Store XPM in buffer BUFNAME if supplied \(default is ` *strokes-xpm*'\)"
(run-hooks 'strokes-load-hook)
(provide 'strokes)
-;; arch-tag: 8377f60e-43fb-467a-bbcd-2774f91f833e
;;; strokes.el ends here
diff --git a/lisp/subr.el b/lisp/subr.el
index 99f632fb58..c72752eb8f 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1,7 +1,6 @@
;;; subr.el --- basic lisp subroutines for Emacs
-;; Copyright (C) 1985, 1986, 1992, 1994, 1995, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1986, 1992, 1994-1995, 1999-2011
;; Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -60,7 +59,7 @@ function-definitions that `check-declare' does not recognize, e.g.
`defstruct'.
To specify a value for FILEONLY without passing an argument list,
-set ARGLIST to `t'. This is necessary because `nil' means an
+set ARGLIST to t. This is necessary because nil means an
empty argument list, rather than an unspecified one.
Note that for the purposes of `check-declare', this statement
@@ -417,7 +416,7 @@ Unibyte strings are converted to multibyte for comparison."
(assoc-string key alist nil))
(defun member-ignore-case (elt list)
- "Like `member', but ignores differences in case and text representation.
+ "Like `member', but ignore differences in case and text representation.
ELT must be a string. Upper-case and lower-case letters are treated as equal.
Unibyte strings are converted to multibyte for comparison.
Non-strings in LIST are ignored."
@@ -489,6 +488,7 @@ saving keyboard macros (see `edmacro-mode')."
(read-kbd-macro keys))
(defun undefined ()
+ "Beep to tell the user this binding is undefined."
(interactive)
(ding))
@@ -858,24 +858,37 @@ in the current Emacs session, then this function may return nil."
(defsubst event-start (event)
"Return the starting position of EVENT.
-If EVENT is a mouse or key press or a mouse click, this returns the location
-of the event.
-If EVENT is a drag, this returns the drag's starting position.
-The return value is of the form
+EVENT should be a click, drag, or key press event.
+If it is a key press event, the return value has the form
+ (WINDOW POS (0 . 0) 0)
+If it is a click or drag event, it has the form
(WINDOW AREA-OR-POS (X . Y) TIMESTAMP OBJECT POS (COL . ROW)
IMAGE (DX . DY) (WIDTH . HEIGHT))
-The `posn-' functions access elements of such lists."
+The `posn-' functions access elements of such lists.
+For more information, see Info node `(elisp)Click Events'.
+
+If EVENT is a mouse or key press or a mouse click, this is the
+position of the event. If EVENT is a drag, this is the starting
+position of the drag."
(if (consp event) (nth 1 event)
(list (selected-window) (point) '(0 . 0) 0)))
(defsubst event-end (event)
"Return the ending location of EVENT.
EVENT should be a click, drag, or key press event.
-If EVENT is a click event, this function is the same as `event-start'.
-The return value is of the form
+If EVENT is a key press event, the return value has the form
+ (WINDOW POS (0 . 0) 0)
+If EVENT is a click event, this function is the same as
+`event-start'. For click and drag events, the return value has
+the form
(WINDOW AREA-OR-POS (X . Y) TIMESTAMP OBJECT POS (COL . ROW)
IMAGE (DX . DY) (WIDTH . HEIGHT))
-The `posn-' functions access elements of such lists."
+The `posn-' functions access elements of such lists.
+For more information, see Info node `(elisp)Click Events'.
+
+If EVENT is a mouse or key press or a mouse click, this is the
+position of the event. If EVENT is a drag, this is the starting
+position of the drag."
(if (consp event) (nth (if (consp (nth 2 event)) 2 1) event)
(list (selected-window) (point) '(0 . 0) 0)))
@@ -921,8 +934,9 @@ Select the corresponding window as well."
(defsubst posn-x-y (position)
"Return the x and y coordinates in POSITION.
-POSITION should be a list of the form returned by the `event-start'
-and `event-end' functions."
+The return value has the form (X . Y), where X and Y are given in
+pixels. POSITION should be a list of the form returned by
+`event-start' and `event-end'."
(nth 2 position))
(declare-function scroll-bar-scale "scroll-bar" (num-denom whole))
@@ -961,7 +975,9 @@ and `event-end' functions."
(setq spacing 0)))
(cons (/ (car pair) (frame-char-width frame))
(- (/ (cdr pair) (+ (frame-char-height frame) spacing))
- (if (null header-line-format) 0 1))))))))
+ (if (null (with-current-buffer (window-buffer window)
+ header-line-format))
+ 0 1))))))))
(defun posn-actual-col-row (position)
"Return the actual column and row in POSITION, measured in characters.
@@ -1002,14 +1018,15 @@ and `event-end' functions."
(defsubst posn-object-x-y (position)
"Return the x and y coordinates relative to the object of POSITION.
-POSITION should be a list of the form returned by the `event-start'
-and `event-end' functions."
+The return value has the form (DX . DY), where DX and DY are
+given in pixels. POSITION should be a list of the form returned
+by `event-start' and `event-end'."
(nth 8 position))
(defsubst posn-object-width-height (position)
"Return the pixel width and height of the object of POSITION.
-POSITION should be a list of the form returned by the `event-start'
-and `event-end' functions."
+The return value has the form (WIDTH . HEIGHT). POSITION should
+be a list of the form returned by `event-start' and `event-end'."
(nth 9 position))
@@ -1361,9 +1378,8 @@ if it is empty or a duplicate."
(defun run-mode-hooks (&rest hooks)
"Run mode hooks `delayed-mode-hooks' and HOOKS, or delay HOOKS.
-Execution is delayed if `delay-mode-hooks' is non-nil.
-If `delay-mode-hooks' is nil, run `after-change-major-mode-hook'
-after running the mode hooks.
+Execution is delayed if the variable `delay-mode-hooks' is non-nil.
+Otherwise, runs the mode hooks and then `after-change-major-mode-hook'.
Major mode functions should use this instead of `run-hooks' when running their
FOO-mode-hook."
(if delay-mode-hooks
@@ -1485,26 +1501,6 @@ If TOGGLE has a `:menu-tag', that is used for the menu item's label."
;;; Load history
-;; (defvar symbol-file-load-history-loaded nil
-;; "Non-nil means we have loaded the file `fns-VERSION.el' in `exec-directory'.
-;; That file records the part of `load-history' for preloaded files,
-;; which is cleared out before dumping to make Emacs smaller.")
-
-;; (defun load-symbol-file-load-history ()
-;; "Load the file `fns-VERSION.el' in `exec-directory' if not already done.
-;; That file records the part of `load-history' for preloaded files,
-;; which is cleared out before dumping to make Emacs smaller."
-;; (unless symbol-file-load-history-loaded
-;; (load (expand-file-name
-;; ;; fns-XX.YY.ZZ.el does not work on DOS filesystem.
-;; (if (eq system-type 'ms-dos)
-;; "fns.el"
-;; (format "fns-%s.el" emacs-version))
-;; exec-directory)
-;; ;; The file name fns-%s.el already has a .el extension.
-;; nil nil t)
-;; (setq symbol-file-load-history-loaded t)))
-
(defun symbol-file (symbol &optional type)
"Return the name of the file that defined SYMBOL.
The value is normally an absolute file name. It can also be nil,
@@ -1622,11 +1618,7 @@ extension for a compressed format \(e.g. \".gz\") on FILE will not affect
this name matching.
Alternatively, FILE can be a feature (i.e. a symbol), in which case FORM
-is evaluated whenever that feature is `provide'd. Note that although
-provide statements are usually at the end of files, this is not always
-the case (e.g., sometimes they are at the start to avoid a recursive
-load error). If your FORM should not be evaluated until the code in
-FILE has been, do not use the symbol form for FILE in such cases.
+is evaluated at the end of any file that `provide's this feature.
Usually FILE is just a library name like \"font-lock\" or a feature name
like 'font-lock.
@@ -1635,11 +1627,27 @@ This function makes or adds to an entry on `after-load-alist'."
;; Add this FORM into after-load-alist (regardless of whether we'll be
;; evaluating it now).
(let* ((regexp-or-feature
- (if (stringp file) (setq file (purecopy (load-history-regexp file))) file))
+ (if (stringp file)
+ (setq file (purecopy (load-history-regexp file)))
+ file))
(elt (assoc regexp-or-feature after-load-alist)))
(unless elt
(setq elt (list regexp-or-feature))
(push elt after-load-alist))
+ (when (symbolp regexp-or-feature)
+ ;; For features, the after-load-alist elements get run when `provide' is
+ ;; called rather than at the end of the file. So add an indirection to
+ ;; make sure that `form' is really run "after-load" in case the provide
+ ;; call happens early.
+ (setq form
+ `(when load-file-name
+ (let ((fun (make-symbol "eval-after-load-helper")))
+ (fset fun `(lambda (file)
+ (if (not (equal file ',load-file-name))
+ nil
+ (remove-hook 'after-load-functions ',fun)
+ ,',form)))
+ (add-hook 'after-load-functions fun)))))
;; Add FORM to the element unless it's already there.
(unless (member form (cdr elt))
(nconc elt (purecopy (list form))))
@@ -1895,7 +1903,7 @@ This function echoes `.' for each character that the user types.
The user ends with RET, LFD, or ESC. DEL or C-h rubs out.
C-y yanks the current kill. C-u kills line.
C-g quits; if `inhibit-quit' was non-nil around this function,
-then it returns nil if the user types C-g, but quit-flag remains set.
+then it returns nil if the user types C-g, but `quit-flag' remains set.
Once the caller uses the password, it can erase the password
by doing (clear-string STRING)."
@@ -1993,6 +2001,35 @@ The value of DEFAULT is inserted into PROMPT."
t)))
n))
+(defun read-char-choice (prompt chars &optional inhibit-keyboard-quit)
+ "Read and return one of CHARS, prompting for PROMPT.
+Any input that is not one of CHARS is ignored.
+
+If optional argument INHIBIT-KEYBOARD-QUIT is non-nil, ignore
+keyboard-quit events while waiting for a valid input."
+ (unless (consp chars)
+ (error "Called `read-char-choice' without valid char choices"))
+ (let ((cursor-in-echo-area t)
+ (executing-kbd-macro executing-kbd-macro)
+ char done)
+ (while (not done)
+ (unless (get-text-property 0 'face prompt)
+ (setq prompt (propertize prompt 'face 'minibuffer-prompt)))
+ (setq char (let ((inhibit-quit inhibit-keyboard-quit))
+ (read-key prompt)))
+ (cond
+ ((not (numberp char)))
+ ((memq char chars)
+ (setq done t))
+ ((and executing-kbd-macro (= char -1))
+ ;; read-event returns -1 if we are in a kbd macro and
+ ;; there are no more events in the macro. Attempt to
+ ;; get an event interactively.
+ (setq executing-kbd-macro nil))))
+ ;; Display the question with the answer.
+ (message "%s%s" prompt (char-to-string char))
+ char))
+
(defun sit-for (seconds &optional nodisp obsolete)
"Perform redisplay, then wait for SECONDS seconds or until input is available.
SECONDS may be a floating-point value.
@@ -2034,6 +2071,56 @@ floating point support."
(push read unread-command-events)
nil))))))
(set-advertised-calling-convention 'sit-for '(seconds &optional nodisp) "22.1")
+
+(defun y-or-n-p (prompt)
+ "Ask user a \"y or n\" question. Return t if answer is \"y\".
+PROMPT is the string to display to ask the question. It should
+end in a space; `y-or-n-p' adds \"(y or n) \" to it.
+
+No confirmation of the answer is requested; a single character is enough.
+Also accepts Space to mean yes, or Delete to mean no. \(Actually, it uses
+the bindings in `query-replace-map'; see the documentation of that variable
+for more information. In this case, the useful bindings are `act', `skip',
+`recenter', and `quit'.\)
+
+Under a windowing system a dialog box will be used if `last-nonmenu-event'
+is nil and `use-dialog-box' is non-nil."
+ ;; ¡Beware! when I tried to edebug this code, Emacs got into a weird state
+ ;; where all the keys were unbound (i.e. it somehow got triggered
+ ;; within read-key, apparently). I had to kill it.
+ (let ((answer 'recenter))
+ (if (and (display-popup-menus-p)
+ (listp last-nonmenu-event)
+ use-dialog-box)
+ (setq answer
+ (x-popup-dialog t `(,prompt ("yes" . act) ("No" . skip))))
+ (setq prompt (concat prompt
+ (if (eq ?\s (aref prompt (1- (length prompt))))
+ "" " ")
+ "(y or n) "))
+ (while
+ (let* ((key
+ (let ((cursor-in-echo-area t))
+ (when minibuffer-auto-raise
+ (raise-frame (window-frame (minibuffer-window))))
+ (read-key (propertize (if (eq answer 'recenter)
+ prompt
+ (concat "Please answer y or n. "
+ prompt))
+ 'face 'minibuffer-prompt)))))
+ (setq answer (lookup-key query-replace-map (vector key) t))
+ (cond
+ ((memq answer '(skip act)) nil)
+ ((eq answer 'recenter) (recenter) t)
+ ((memq answer '(exit-prefix quit)) (signal 'quit nil) t)
+ (t t)))
+ (ding)
+ (discard-input)))
+ (let ((ret (eq answer 'act)))
+ (unless noninteractive
+ (message "%s %s" prompt (if ret "y" "n")))
+ ret)))
+
;;; Atomic change groups.
@@ -2293,11 +2380,16 @@ directory if it does not exist."
;; unless we're in batch mode or dumping Emacs
(or noninteractive
purify-flag
- (file-accessible-directory-p (directory-file-name user-emacs-directory))
- (make-directory user-emacs-directory))
+ (file-accessible-directory-p
+ (directory-file-name user-emacs-directory))
+ (let ((umask (default-file-modes)))
+ (unwind-protect
+ (progn
+ (set-default-file-modes ?\700)
+ (make-directory user-emacs-directory))
+ (set-default-file-modes umask))))
(abbreviate-file-name
(expand-file-name new-name user-emacs-directory))))))
-
;;;; Misc. useful functions.
@@ -2374,13 +2466,8 @@ Note: :data and :device are currently not supported on Windows."
"''"
;; Quote everything except POSIX filename characters.
;; This should be safe enough even for really weird shells.
- (let ((result "") (start 0) end)
- (while (string-match "[^-0-9a-zA-Z_./]" argument start)
- (setq end (match-beginning 0)
- result (concat result (substring argument start end)
- "\\" (substring argument end (1+ end)))
- start (1+ end)))
- (concat result (substring argument start))))))
+ (replace-regexp-in-string "\n" "'\n'"
+ (replace-regexp-in-string "[^-0-9a-zA-Z_./\n]" "\\\\\\&" argument)))))
(defun string-or-null-p (object)
"Return t if OBJECT is a string or nil.
@@ -2438,7 +2525,7 @@ Replaces `category' properties with their defined properties."
(defvar yank-undo-function)
(defun insert-for-yank (string)
- "Calls `insert-for-yank-1' repetitively for each `yank-handler' segment.
+ "Call `insert-for-yank-1' repetitively for each `yank-handler' segment.
See `insert-for-yank-1' for more details."
(let (to)
@@ -2464,7 +2551,7 @@ If PARAM is present and non-nil, it replaces STRING as the object
`yank-rectangle', PARAM may be a list of strings to insert as a
rectangle.
If NOEXCLUDE is present and non-nil, the normal removal of the
- yank-excluded-properties is not performed; instead FUNCTION is
+ `yank-excluded-properties' is not performed; instead FUNCTION is
responsible for removing those properties. This may be necessary
if FUNCTION adjusts point before or after inserting the object.
If UNDO is present and non-nil, it is a function that will be called
@@ -3122,7 +3209,7 @@ is non-nil, start replacements at that index in STRING.
REP is either a string used as the NEWTEXT arg of `replace-match' or a
function. If it is a function, it is called with the actual text of each
match, and its value is used as the replacement text. When REP is called,
-the match-data are the result of matching REGEXP against a substring
+the match data are the result of matching REGEXP against a substring
of STRING.
To replace only the first match (if any), make REGEXP match up to \\'
@@ -3328,56 +3415,6 @@ clone should be incorporated in the clone."
(overlay-put ol2 'evaporate t)
(overlay-put ol2 'text-clones dups)))
-;;;; Misc functions moved over from the C side.
-
-(defun y-or-n-p (prompt)
- "Ask user a \"y or n\" question. Return t if answer is \"y\".
-The argument PROMPT is the string to display to ask the question.
-It should end in a space; `y-or-n-p' adds `(y or n) ' to it.
-No confirmation of the answer is requested; a single character is enough.
-Also accepts Space to mean yes, or Delete to mean no. \(Actually, it uses
-the bindings in `query-replace-map'; see the documentation of that variable
-for more information. In this case, the useful bindings are `act', `skip',
-`recenter', and `quit'.\)
-
-Under a windowing system a dialog box will be used if `last-nonmenu-event'
-is nil and `use-dialog-box' is non-nil."
- ;; ¡Beware! when I tried to edebug this code, Emacs got into a weird state
- ;; where all the keys were unbound (i.e. it somehow got triggered
- ;; within read-key, apparently). I had to kill it.
- (let ((answer 'recenter))
- (if (and (display-popup-menus-p)
- (listp last-nonmenu-event)
- use-dialog-box)
- (setq answer
- (x-popup-dialog t `(,prompt ("yes" . act) ("No" . skip))))
- (setq prompt (concat prompt
- (if (eq ?\s (aref prompt (1- (length prompt))))
- "" " ")
- "(y or n) "))
- (while
- (let* ((key
- (let ((cursor-in-echo-area t))
- (when minibuffer-auto-raise
- (raise-frame (window-frame (minibuffer-window))))
- (read-key (propertize (if (eq answer 'recenter)
- prompt
- (concat "Please answer y or n. "
- prompt))
- 'face 'minibuffer-prompt)))))
- (setq answer (lookup-key query-replace-map (vector key) t))
- (cond
- ((memq answer '(skip act)) nil)
- ((eq answer 'recenter) (recenter) t)
- ((memq answer '(exit-prefix quit)) (signal 'quit nil) t)
- (t t)))
- (ding)
- (discard-input)))
- (let ((ret (eq answer 'act)))
- (unless noninteractive
- (message "%s %s" prompt (if ret "y" "n")))
- ret)))
-
;;;; Mail user agents.
;; Here we include just enough for other packages to be able
@@ -3824,9 +3861,9 @@ which is higher than \"1alpha\"."
;; The following statement ought to be in print.c, but `provide' can't
;; be used there.
+;; http://lists.gnu.org/archive/html/emacs-devel/2009-08/msg00236.html
(when (hash-table-p (car (read-from-string
(prin1-to-string (make-hash-table)))))
(provide 'hashtable-print-readable))
-;; arch-tag: f7e0e6e5-70aa-4897-ae72-7a3511ec40bc
;;; subr.el ends here
diff --git a/lisp/t-mouse.el b/lisp/t-mouse.el
index 1578382d63..059024c4bc 100644
--- a/lisp/t-mouse.el
+++ b/lisp/t-mouse.el
@@ -4,8 +4,7 @@
;; Maintainer: FSF
;; Keywords: mouse gpm linux
-;; Copyright (C) 1994, 1995, 1998, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1994-1995, 1998, 2006-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -84,5 +83,4 @@ It relies on the `gpm' daemon being activated."
(provide 't-mouse)
-;; arch-tag: a63163b3-bfbe-4eb2-ab4f-201cd164b05d
;;; t-mouse.el ends here
diff --git a/lisp/tabify.el b/lisp/tabify.el
index 591a9432fe..da1038a216 100644
--- a/lisp/tabify.el
+++ b/lisp/tabify.el
@@ -1,7 +1,6 @@
;;; tabify.el --- tab conversion commands for Emacs
-;; Copyright (C) 1985, 1994, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1994, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Package: emacs
@@ -90,5 +89,4 @@ The variable `tab-width' controls the spacing of tab stops."
(provide 'tabify)
-;; arch-tag: c83893b1-e0cc-4e57-8a09-73fd03466416
;;; tabify.el ends here
diff --git a/lisp/talk.el b/lisp/talk.el
index aaf2d2085c..fd845a7eee 100644
--- a/lisp/talk.el
+++ b/lisp/talk.el
@@ -1,7 +1,6 @@
;;; talk.el --- allow several users to talk to each other through Emacs
-;; Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: comm, frames
@@ -120,5 +119,4 @@ Select the first of these windows, displaying the first of the buffers."
(provide 'talk)
-;; arch-tag: 7ab0ad88-1788-4886-a44c-ae685e6f8a1a
;;; talk.el ends here
diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el
index ba3cb862bf..fdac245c53 100644
--- a/lisp/tar-mode.el
+++ b/lisp/tar-mode.el
@@ -1,8 +1,6 @@
;;; tar-mode.el --- simple editing of tar files from GNU emacs
-;; Copyright (C) 1990, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1990-1991, 1993-2011 Free Software Foundation, Inc.
;; Author: Jamie Zawinski <[email protected]>
;; Maintainer: FSF
@@ -1247,5 +1245,4 @@ Leaves the region wide."
(provide 'tar-mode)
-;; arch-tag: 8a585a4a-340e-42c2-89e7-d3b1013a4b78
;;; tar-mode.el ends here
diff --git a/lisp/tempo.el b/lisp/tempo.el
index 974f65efae..9b997f3387 100644
--- a/lisp/tempo.el
+++ b/lisp/tempo.el
@@ -1,7 +1,6 @@
;;; tempo.el --- Flexible template insertion
-;; Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1995, 2001-2011 Free Software Foundation, Inc.
;; Author: David K}gedal <[email protected]>
;; Created: 16 Feb 1994
@@ -763,5 +762,4 @@ space bar, and looks something like this:
(provide 'tempo)
-;; arch-tag: b3c0ee36-db3b-47bc-875f-091b4e27a063
;;; tempo.el ends here
diff --git a/lisp/term.el b/lisp/term.el
index 9c51159216..ea419234e0 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -1,7 +1,6 @@
;;; term.el --- general command interpreter in a window stuff
-;; Copyright (C) 1988, 1990, 1992, 1994, 1995, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1988, 1990, 1992, 1994-1995, 2001-2011
;; Free Software Foundation, Inc.
;; Author: Per Bothner <[email protected]>
@@ -1537,29 +1536,24 @@ See also `term-input-ignoredups' and `term-write-input-ring'."
(message "Cannot read history file %s"
term-input-ring-file-name)))
(t
- (let ((history-buf (get-buffer-create " *temp*"))
- (file term-input-ring-file-name)
+ (let ((file term-input-ring-file-name)
(count 0)
(ring (make-ring term-input-ring-size)))
- (unwind-protect
- (with-current-buffer history-buf
- (widen)
- (erase-buffer)
- (insert-file-contents file)
- ;; Save restriction in case file is already visited...
- ;; Watch for those date stamps in history files!
- (goto-char (point-max))
- (while (and (< count term-input-ring-size)
- (re-search-backward "^[ \t]*\\([^#\n].*\\)[ \t]*$"
- nil t))
- (let ((history (buffer-substring (match-beginning 1)
- (match-end 1))))
- (when (or (null term-input-ignoredups)
- (ring-empty-p ring)
- (not (string-equal (ring-ref ring 0) history)))
- (ring-insert-at-beginning ring history)))
- (setq count (1+ count))))
- (kill-buffer history-buf))
+ (with-temp-buffer
+ (insert-file-contents file)
+ ;; Save restriction in case file is already visited...
+ ;; Watch for those date stamps in history files!
+ (goto-char (point-max))
+ (while (and (< count term-input-ring-size)
+ (re-search-backward "^[ \t]*\\([^#\n].*\\)[ \t]*$"
+ nil t))
+ (let ((history (buffer-substring (match-beginning 1)
+ (match-end 1))))
+ (when (or (null term-input-ignoredups)
+ (ring-empty-p ring)
+ (not (string-equal (ring-ref ring 0) history)))
+ (ring-insert-at-beginning ring history)))
+ (setq count (1+ count))))
(setq term-input-ring ring
term-input-ring-index nil)))))
diff --git a/lisp/term/AT386.el b/lisp/term/AT386.el
index 7b6f8f8e5a..4453c9e3b8 100644
--- a/lisp/term/AT386.el
+++ b/lisp/term/AT386.el
@@ -1,7 +1,6 @@
;;; AT386.el --- terminal support package for IBM AT keyboards -*- no-byte-compile: t -*-
-;; Copyright (C) 1992, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 2001-2011 Free Software Foundation, Inc.
;; Author: Eric S. Raymond <[email protected]>
;; Keywords: terminals
@@ -57,5 +56,4 @@
(define-key local-function-key-map [ALT] [27])
))
-;; arch-tag: abec1b03-582f-49f8-b8cb-e2fd52ea4bd7
;;; AT386.el ends here
diff --git a/lisp/term/README b/lisp/term/README
index 6593c0cabd..6d2e0acbd2 100644
--- a/lisp/term/README
+++ b/lisp/term/README
@@ -1,5 +1,4 @@
-Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/lisp/term/apollo.el b/lisp/term/apollo.el
index fc75a3e559..c570a20112 100644
--- a/lisp/term/apollo.el
+++ b/lisp/term/apollo.el
@@ -3,5 +3,4 @@
"Terminal initialization function for apollo."
(tty-run-terminal-initialization (selected-frame) "vt100"))
-;; arch-tag: c72f446f-e6b7-4749-90a4-bd68632adacf
;;; apollo.el ends here
diff --git a/lisp/term/bobcat.el b/lisp/term/bobcat.el
index e7723b0706..d9ab1a5fb1 100644
--- a/lisp/term/bobcat.el
+++ b/lisp/term/bobcat.el
@@ -6,5 +6,4 @@
(keyboard-translate ?\177 ?\^h)
(keyboard-translate ?\^h ?\177))
-;; arch-tag: 754e4520-0a3e-4e6e-8ca5-9481b1f85cf7
;;; bobcat.el ends here
diff --git a/lisp/term/common-win.el b/lisp/term/common-win.el
index f43056976a..c13d22dde7 100644
--- a/lisp/term/common-win.el
+++ b/lisp/term/common-win.el
@@ -1,7 +1,6 @@
;;; common-win.el --- common part of handling window systems
-;; Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: terminals
diff --git a/lisp/term/cygwin.el b/lisp/term/cygwin.el
index df857ba662..cfce07035c 100644
--- a/lisp/term/cygwin.el
+++ b/lisp/term/cygwin.el
@@ -6,5 +6,4 @@
"Terminal initialization function for cygwin."
(tty-no-underline))
-;; arch-tag: ca81ce67-3c41-4883-a29b-4c3d64a21191
;;; cygwin.el ends here
diff --git a/lisp/term/internal.el b/lisp/term/internal.el
index 02a14233bf..43b799df1c 100644
--- a/lisp/term/internal.el
+++ b/lisp/term/internal.el
@@ -1,7 +1,7 @@
;;; internal.el --- support for PC internal terminal
-;; Copyright (C) 1993, 1994, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 1998-1999, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Morten Welinder <[email protected]>
@@ -604,5 +604,4 @@ list. You can (and should) also run it if and when the value of
(run-hooks 'dos-codepage-setup-hook)
))
-;; arch-tag: eea04c06-7311-4b5a-b531-3c1be1b070af
;;; internal.el ends here
diff --git a/lisp/term/iris-ansi.el b/lisp/term/iris-ansi.el
index 84bc8243b6..490c06148a 100644
--- a/lisp/term/iris-ansi.el
+++ b/lisp/term/iris-ansi.el
@@ -1,7 +1,6 @@
;;; iris-ansi.el --- configure Emacs for SGI xwsh and winterm apps -*- no-byte-compile: t -*-
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Dan Nicolaescu <[email protected]>
@@ -328,5 +327,4 @@
(set-keymap-parent m (keymap-parent input-decode-map))
(set-keymap-parent input-decode-map m)))
-;; arch-tag: b1d0e73a-bb7d-47be-9fb2-6fb126469a1b
;;; iris-ansi.el ends here
diff --git a/lisp/term/linux.el b/lisp/term/linux.el
index 5ac369721a..76115e7d58 100644
--- a/lisp/term/linux.el
+++ b/lisp/term/linux.el
@@ -18,5 +18,4 @@
;; The arg only matters in that it is not t or nil.
(set-input-meta-mode 'iso-latin-1))
-;; arch-tag: 5d0c4f63-739b-4862-abf3-041fe42adb8f
;;; linux.el ends here
diff --git a/lisp/term/lk201.el b/lisp/term/lk201.el
index 7bcbd8d754..23f4d0dbd2 100644
--- a/lisp/term/lk201.el
+++ b/lisp/term/lk201.el
@@ -79,5 +79,4 @@
(set-keymap-parent m (keymap-parent input-decode-map))
(set-keymap-parent input-decode-map m)))
-;; arch-tag: 7ffb4444-6a23-43e1-b457-43cf4f673c0d
;;; lk201.el ends here
diff --git a/lisp/term/news.el b/lisp/term/news.el
index 2b2678562d..ba6346997c 100644
--- a/lisp/term/news.el
+++ b/lisp/term/news.el
@@ -1,7 +1,6 @@
;;; news.el --- keypad and function key bindings for the Sony NEWS keyboard -*- no-byte-compile: t -*-
-;; Copyright (C) 1989, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1989, 1993, 2001-2011 Free Software Foundation, Inc.
;; Author: FSF
;; Keywords: terminals
@@ -69,5 +68,4 @@
(define-key news-fkey-prefix "x" [kp-8])
))
-;; arch-tag: bfe141a0-623b-4b42-b753-5d9353776c5e
;;; news.el ends here
diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el
index 77a2d3f2bc..6286b83258 100644
--- a/lisp/term/ns-win.el
+++ b/lisp/term/ns-win.el
@@ -1,7 +1,6 @@
;;; ns-win.el --- lisp side of interface with NeXT/Open/GNUstep/MacOS X window system
-;; Copyright (C) 1993, 1994, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 2005-2011 Free Software Foundation, Inc.
;; Authors: Carl Edman
;; Christian Limpach
diff --git a/lisp/term/pc-win.el b/lisp/term/pc-win.el
index c13862a8da..4cb88f6bd2 100644
--- a/lisp/term/pc-win.el
+++ b/lisp/term/pc-win.el
@@ -1,7 +1,7 @@
;;; pc-win.el --- setup support for `PC windows' (whatever that is)
-;; Copyright (C) 1994, 1996, 1997, 1999, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1996-1997, 1999, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Morten Welinder <[email protected]>
;; Maintainer: FSF
diff --git a/lisp/term/rxvt.el b/lisp/term/rxvt.el
index b735e88794..0e9de519c8 100644
--- a/lisp/term/rxvt.el
+++ b/lisp/term/rxvt.el
@@ -1,7 +1,6 @@
;;; rxvt.el --- define function key sequences and standard colors for rxvt
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Eli Zaretskii
;; Keywords: terminals
@@ -310,5 +309,4 @@ for the currently selected frame."
(* (apply '+ (car (cddr (nth 15 rxvt-standard-colors)))) 0.6))
(set-terminal-parameter nil 'background-mode 'dark)))))
-;; arch-tag: 20cf2fb6-6318-4bab-9dbf-1d15048f2257
;;; rxvt.el ends here
diff --git a/lisp/term/sun.el b/lisp/term/sun.el
index 383dfd6fdf..d375656569 100644
--- a/lisp/term/sun.el
+++ b/lisp/term/sun.el
@@ -1,7 +1,6 @@
;;; sun.el --- keybinding for standard default sunterm keys
-;; Copyright (C) 1987, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1987, 2001-2011 Free Software Foundation, Inc.
;; Author: Jeff Peck <[email protected]>
;; Keywords: terminals
@@ -155,5 +154,4 @@
(eval (car hooks))
(setq hooks (cdr hooks))))))
-;; arch-tag: db761d47-fd7d-42b4-aae1-04fa116b6ba6
;;; sun.el ends here
diff --git a/lisp/term/sup-mouse.el b/lisp/term/sup-mouse.el
index 14e5006386..a8b78bb3e3 100644
--- a/lisp/term/sup-mouse.el
+++ b/lisp/term/sup-mouse.el
@@ -1,7 +1,6 @@
;;; sup-mouse.el --- supdup mouse support for lisp machines
-;; Copyright (C) 1985, 1986, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1986, 2001-2011 Free Software Foundation, Inc.
;; Author: Wolfgang Rupprecht
;; Maintainer: FSF
@@ -195,5 +194,4 @@ X and Y are 0-based character positions on the frame."
(get-window-with-predicate (lambda (w)
(coordinates-in-window-p (cons x y) w))))
-;; arch-tag: ec644ed4-cac4-43b8-b3db-cfe83e9098d7
;;; sup-mouse.el ends here
diff --git a/lisp/term/tty-colors.el b/lisp/term/tty-colors.el
index df45dc192a..9a90091683 100644
--- a/lisp/term/tty-colors.el
+++ b/lisp/term/tty-colors.el
@@ -1,7 +1,6 @@
;;; tty-colors.el --- color support for character terminals
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Eli Zaretskii
;; Maintainer: FSF
diff --git a/lisp/term/tvi970.el b/lisp/term/tvi970.el
index 4476165feb..5d852e5210 100644
--- a/lisp/term/tvi970.el
+++ b/lisp/term/tvi970.el
@@ -1,7 +1,6 @@
;;; tvi970.el --- terminal support for the Televideo 970
-;; Copyright (C) 1992, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 2001-2011 Free Software Foundation, Inc.
;; Author: Jim Blandy <[email protected]>
;; Keywords: terminals
@@ -117,5 +116,4 @@ With a negative argument, select numeric keypad mode."
(send-string-to-terminal
(if (terminal-parameter nil 'tvi970-keypad-numeric) "\e=" "\e>")))
-;; arch-tag: c1334cf0-1462-41c3-a963-c077d175f8f0
;;; tvi970.el ends here
diff --git a/lisp/term/vt100.el b/lisp/term/vt100.el
index 24561fe835..406c20a0e8 100644
--- a/lisp/term/vt100.el
+++ b/lisp/term/vt100.el
@@ -1,7 +1,6 @@
;;; vt100.el --- define VT100 function key sequences in function-key-map
-;; Copyright (C) 1989, 1993, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1989, 1993, 2001-2011 Free Software Foundation, Inc.
;; Author: FSF
;; Keywords: terminals
@@ -49,5 +48,4 @@ With negative argument, switch to 80-column mode."
(send-string-to-terminal (if vt100-wide-mode "\e[?3h" "\e[?3l"))
(set-frame-width terminal-frame (if vt100-wide-mode 132 80)))
-;; arch-tag: 9ff41f24-a7c9-4dee-9cf2-fbaa951eb840
;;; vt100.el ends here
diff --git a/lisp/term/vt102.el b/lisp/term/vt102.el
index 1f9bb00efa..0f2e3805f5 100644
--- a/lisp/term/vt102.el
+++ b/lisp/term/vt102.el
@@ -4,5 +4,4 @@
"Terminal initialization function for vt102."
(tty-run-terminal-initialization (selected-frame) "vt100"))
-;; arch-tag: 6e839cfc-125a-4574-82f1-c23a51f7c50f
;;; vt102.el ends here
diff --git a/lisp/term/vt125.el b/lisp/term/vt125.el
index b5a31e8a0f..029f762ef3 100644
--- a/lisp/term/vt125.el
+++ b/lisp/term/vt125.el
@@ -4,5 +4,4 @@
"Terminal initialization function for vt125."
(tty-run-terminal-initialization (selected-frame) "vt100"))
-;; arch-tag: 1d92d70f-dd55-4a1d-9088-e215a4883801
;;; vt125.el ends here
diff --git a/lisp/term/vt200.el b/lisp/term/vt200.el
index 78c65c084c..09ad64d01f 100644
--- a/lisp/term/vt200.el
+++ b/lisp/term/vt200.el
@@ -8,5 +8,4 @@
(define-key input-decode-map "\e[23~" [f11]) ;Probably redundant.
(define-key local-function-key-map [f11] [?\e]))
-;; arch-tag: 0f78f583-9f32-4237-b106-28bcfff21d89
;;; vt200.el ends here
diff --git a/lisp/term/vt201.el b/lisp/term/vt201.el
index 987aee09f3..cbeba00b65 100644
--- a/lisp/term/vt201.el
+++ b/lisp/term/vt201.el
@@ -8,5 +8,4 @@
(define-key input-decode-map "\e[23~" [f11]) ;Probably redundant.
(define-key local-function-key-map [f11] [?\e]))
-;; arch-tag: a6abb38f-60ea-449e-a9e9-3fb8572c52ae
;;; vt201.el ends here
diff --git a/lisp/term/vt220.el b/lisp/term/vt220.el
index f9439e0eff..647b79ea35 100644
--- a/lisp/term/vt220.el
+++ b/lisp/term/vt220.el
@@ -8,5 +8,4 @@
(define-key input-decode-map "\e[23~" [f11]) ;Probably redundant.
(define-key local-function-key-map [f11] [?\e]))
-;; arch-tag: 98fc4867-a20d-46a1-a276-d7be31e49871
;;; vt220.el ends here
diff --git a/lisp/term/vt240.el b/lisp/term/vt240.el
index 0aea10bf98..2da4e7ed3c 100644
--- a/lisp/term/vt240.el
+++ b/lisp/term/vt240.el
@@ -8,5 +8,4 @@
(define-key input-decode-map "\e[23~" [f11]) ;Probably redundant.
(define-key local-function-key-map [f11] [?\e]))
-;; arch-tag: d9f88e9c-02dc-49ff-871c-a415f08e4eb7
;;; vt240.el ends here
diff --git a/lisp/term/vt300.el b/lisp/term/vt300.el
index d19f847588..52198d840a 100644
--- a/lisp/term/vt300.el
+++ b/lisp/term/vt300.el
@@ -6,5 +6,4 @@
(define-key input-decode-map "\e[23~" [f11]) ;Probably redundant.
(define-key local-function-key-map [f11] [?\e]))
-;; arch-tag: 876831c9-a6f2-444a-b033-706e6fbc149f
;;; vt300.el ends here
diff --git a/lisp/term/vt320.el b/lisp/term/vt320.el
index 1d36c9d933..9b04a5d6ee 100644
--- a/lisp/term/vt320.el
+++ b/lisp/term/vt320.el
@@ -6,5 +6,4 @@
(define-key input-decode-map "\e[23~" [f11]) ;Probably redundant.
(define-key local-function-key-map [f11] [?\e]))
-;; arch-tag: f9f4c954-0b9e-45f9-b450-a320d32abd9c
;;; vt320.el ends here
diff --git a/lisp/term/vt400.el b/lisp/term/vt400.el
index 78af2a3719..4c5870c5ad 100644
--- a/lisp/term/vt400.el
+++ b/lisp/term/vt400.el
@@ -6,5 +6,4 @@
(define-key input-decode-map "\e[23~" [f11]) ;Probably redundant.
(define-key local-function-key-map [f11] [?\e]))
-;; arch-tag: a70809c5-6b21-42cc-ba20-536683e5e7d5
;;; vt400.el ends here
diff --git a/lisp/term/vt420.el b/lisp/term/vt420.el
index 69b1b31abd..0476b639c2 100644
--- a/lisp/term/vt420.el
+++ b/lisp/term/vt420.el
@@ -6,5 +6,4 @@
(define-key input-decode-map "\e[23~" [f11]) ;Probably redundant.
(define-key local-function-key-map [f11] [?\e]))
-;; arch-tag: df2f897c-3a12-4b3c-9259-df089f96c160
;;; vt420.el ends here
diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el
index a1ab5a8225..0ddf7b3e54 100644
--- a/lisp/term/w32-win.el
+++ b/lisp/term/w32-win.el
@@ -1,7 +1,6 @@
;;; w32-win.el --- parse switches controlling interface with W32 window system
-;; Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Kevin Gallo
;; Keywords: terminals
@@ -190,17 +189,25 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.")
;;; Set default known names for external libraries
(setq dynamic-library-alist
- '((xpm "libxpm.dll" "xpm4.dll" "libXpm-nox4.dll")
- (png "libpng12d.dll" "libpng12.dll" "libpng.dll"
- ;; these are libpng 1.2.8 from GTK+
- "libpng13d.dll" "libpng13.dll")
- (jpeg "jpeg62.dll" "libjpeg.dll" "jpeg-62.dll" "jpeg.dll")
- (tiff "libtiff3.dll" "libtiff.dll")
- (gif "giflib4.dll" "libungif4.dll" "libungif.dll")
- (svg "librsvg-2-2.dll")
- (gdk-pixbuf "libgdk_pixbuf-2.0-0.dll")
- (glib "libglib-2.0-0.dll")
- (gobject "libgobject-2.0-0.dll")))
+ (list
+ '(xpm "libxpm.dll" "xpm4.dll" "libXpm-nox4.dll")
+ ;; Versions of libpng 1.4.x and later are incompatible with
+ ;; earlier versions. Set up the list of libraries according to
+ ;; the version we were compiled against. (If we were compiled
+ ;; without PNG support, libpng-version's value is -1.)
+ (if (>= libpng-version 10400)
+ ;; libpng14-14.dll is libpng 1.4.3 from GTK+
+ '(png "libpng14-14.dll" "libpng14.dll")
+ '(png "libpng12d.dll" "libpng12.dll" "libpng3.dll" "libpng.dll"
+ ;; these are libpng 1.2.8 from GTK+
+ "libpng13d.dll" "libpng13.dll"))
+ '(jpeg "jpeg62.dll" "libjpeg.dll" "jpeg-62.dll" "jpeg.dll")
+ '(tiff "libtiff3.dll" "libtiff.dll")
+ '(gif "giflib4.dll" "libungif4.dll" "libungif.dll")
+ '(svg "librsvg-2-2.dll")
+ '(gdk-pixbuf "libgdk_pixbuf-2.0-0.dll")
+ '(glib "libglib-2.0-0.dll")
+ '(gobject "libgobject-2.0-0.dll")))
;;; multi-tty support
(defvar w32-initialized nil
diff --git a/lisp/term/w32console.el b/lisp/term/w32console.el
index 0d3aa934b9..6072613841 100644
--- a/lisp/term/w32console.el
+++ b/lisp/term/w32console.el
@@ -1,6 +1,6 @@
;;; w32console.el -- Setup w32 console keys and colors.
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: FSF
;; Keywords: terminals
diff --git a/lisp/term/wyse50.el b/lisp/term/wyse50.el
index 5cb2829f5f..b818c769ba 100644
--- a/lisp/term/wyse50.el
+++ b/lisp/term/wyse50.el
@@ -1,7 +1,6 @@
;;; wyse50.el --- terminal support code for Wyse 50 -*- no-byte-compile: t -*-
-;; Copyright (C) 1989, 1993, 1994, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1989, 1993-1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Daniel Pfeiffer <[email protected]>,
;; Jim Blandy <[email protected]>
@@ -156,5 +155,4 @@ M-r M-x move-to-window-line, Funct up-arrow or down-arrow are similar"
;; (nth 1 key-definition)))
(fset 'enable-arrow-keys nil))
-;; arch-tag: b6a05d37-eead-4cf6-b997-0f956c68881c
;;; wyse50.el ends here
diff --git a/lisp/term/x-win.el b/lisp/term/x-win.el
index afb706ab97..1ec80d5c27 100644
--- a/lisp/term/x-win.el
+++ b/lisp/term/x-win.el
@@ -1,7 +1,6 @@
;;; x-win.el --- parse relevant switches and set up for X -*-coding: iso-2022-7bit;-*-
-;; Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 2001-2011 Free Software Foundation, Inc.
;; Author: FSF
;; Keywords: terminals, i18n
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index ccedf4045e..0db33b5a4d 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -1,7 +1,6 @@
;;; xterm.el --- define function key sequences and standard colors for xterm
-;; Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
;; Author: FSF
;; Keywords: terminals
@@ -682,5 +681,4 @@ versions of xterm."
(set-terminal-parameter nil 'background-mode 'dark)
t))
-;; arch-tag: 12e7ebdd-1e6c-4b25-b0f9-35ace25e855a
;;; xterm.el ends here
diff --git a/lisp/terminal.el b/lisp/terminal.el
index 84915764c7..d888a653c9 100644
--- a/lisp/terminal.el
+++ b/lisp/terminal.el
@@ -1,7 +1,7 @@
;;; terminal.el --- terminal emulator for GNU Emacs
-;; Copyright (C) 1986, 1987, 1988, 1989, 1993, 1994, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986-1989, 1993-1994, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Richard Mlynarik <[email protected]>
;; Maintainer: FSF
@@ -1335,5 +1335,4 @@ in the directory specified by `te-terminfo-directory'."
(provide 'terminal)
-;; arch-tag: 0ae1d7d7-90ef-4566-a531-6e7ff8c79b2f
;;; terminal.el ends here
diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el
index 549b3b3c52..f1e73dcf48 100644
--- a/lisp/textmodes/artist.el
+++ b/lisp/textmodes/artist.el
@@ -1,7 +1,6 @@
;;; artist.el --- draw ascii graphics with your mouse
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Tomas Abrahamsson <[email protected]>
;; Maintainer: Tomas Abrahamsson <[email protected]>
@@ -5557,5 +5556,4 @@ The event, EV, is the mouse event."
;; Don't hesitate to ask me any questions.
-;; arch-tag: 3e63b881-aaaa-4b83-a072-220d4661a8a3
;;; artist.el ends here
diff --git a/lisp/textmodes/bib-mode.el b/lisp/textmodes/bib-mode.el
index 524902f22c..728f42779b 100644
--- a/lisp/textmodes/bib-mode.el
+++ b/lisp/textmodes/bib-mode.el
@@ -1,7 +1,6 @@
;;; bib-mode.el --- major mode for editing bib files
-;; Copyright (C) 1989, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1989, 2001-2011 Free Software Foundation, Inc.
;; Author: Henry Kautz
;; (according to authors.el)
@@ -236,5 +235,4 @@ named by variable `unread-bib-file'."
(provide 'bib-mode)
-;; arch-tag: e3a97958-3c2c-487f-9557-fafc3c98452d
;;; bib-mode.el ends here
diff --git a/lisp/textmodes/bibtex-style.el b/lisp/textmodes/bibtex-style.el
index 3e84c37af9..831d4e8667 100644
--- a/lisp/textmodes/bibtex-style.el
+++ b/lisp/textmodes/bibtex-style.el
@@ -1,7 +1,6 @@
;;; bibtex-style.el --- Major mode for BibTeX Style files
-;; Copyright (C) 2005, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2005, 2007-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Keywords: tex
@@ -152,5 +151,4 @@
(provide 'bibtex-style)
-;; arch-tag: b20ad41a-fd36-466e-8fd2-cc6137f9c55c
;;; bibtex-style.el ends here
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index 75dd4f8015..2d2c0380a4 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -1,8 +1,6 @@
;;; bibtex.el --- BibTeX mode for GNU Emacs
-;; Copyright (C) 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1994-1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Stefan Schoef <[email protected]>
;; Bengt Martensson <[email protected]>
diff --git a/lisp/textmodes/conf-mode.el b/lisp/textmodes/conf-mode.el
index 667818db34..4e6c8bd6b0 100644
--- a/lisp/textmodes/conf-mode.el
+++ b/lisp/textmodes/conf-mode.el
@@ -1,7 +1,6 @@
;;; conf-mode.el --- Simple major mode for editing conf/ini/properties files
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Daniel Pfeiffer <[email protected]>
;; Keywords: conf ini windows java
@@ -178,7 +177,7 @@ not align (only setting space according to `conf-assignment-space')."
(defvar conf-font-lock-keywords
- `(;; [section] (do this first because it may look like a parameter)
+ '(;; [section] (do this first because it may look like a parameter)
("^[ \t]*\\[\\(.+\\)\\]" 1 'font-lock-type-face)
;; var=val or var[index]=val
("^[ \t]*\\(.+?\\)\\(?:\\[\\(.*?\\)\\]\\)?[ \t]*="
@@ -621,5 +620,4 @@ For details see `conf-mode'. Example:
(provide 'conf-mode)
-;; arch-tag: 0a3805b2-0371-4d3a-8498-8897116b2356
;;; conf-mode.el ends here
diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
index 759778eb02..b611261723 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lisp/textmodes/css-mode.el
@@ -1,6 +1,6 @@
;;; css-mode.el --- Major mode to edit CSS files
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Keywords: hypermedia
@@ -483,5 +483,4 @@
(indent-line-to indent)))))
(provide 'css-mode)
-;; arch-tag: b4d8b8e2-b130-4e74-b3aa-cd8f1ab659d0
;;; css-mode.el ends here
diff --git a/lisp/textmodes/dns-mode.el b/lisp/textmodes/dns-mode.el
index ed84b5be91..0d5d28f8e5 100644
--- a/lisp/textmodes/dns-mode.el
+++ b/lisp/textmodes/dns-mode.el
@@ -1,7 +1,6 @@
;;; dns-mode.el --- a mode for viewing/editing Domain Name System master files
-;; Copyright (C) 2000, 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2000-2001, 2004-2011 Free Software Foundation, Inc.
;; Author: Simon Josefsson <[email protected]>
;; Keywords: DNS master zone file SOA comm
diff --git a/lisp/textmodes/enriched.el b/lisp/textmodes/enriched.el
index c2711a7345..f6677bf458 100644
--- a/lisp/textmodes/enriched.el
+++ b/lisp/textmodes/enriched.el
@@ -1,7 +1,6 @@
;;; enriched.el --- read and save files in text/enriched format
-;; Copyright (C) 1994, 1995, 1996, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Boris Goldowsky <[email protected]>
;; Keywords: wp, faces
@@ -502,5 +501,4 @@ the range of text to assign text property SYMBOL with value VALUE."
(message "Warning: invalid <x-display> parameter %s" param))
(list start end 'display prop)))
-;; arch-tag: 05cae488-3fea-45cd-ac29-5b02cb64e42b
;;; enriched.el ends here
diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el
index 2dd7b1e2c9..2b7e9a19ba 100644
--- a/lisp/textmodes/fill.el
+++ b/lisp/textmodes/fill.el
@@ -1,7 +1,6 @@
;;; fill.el --- fill commands for Emacs -*- coding: utf-8 -*-
-;; Copyright (C) 1985, 1986, 1992, 1994, 1995, 1996, 1997, 1999, 2001,
-;; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1986, 1992, 1994-1997, 1999, 2001-2011
;; Free Software Foundation, Inc.
;; Maintainer: FSF
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index 5dbcb2d7d7..3c9a457024 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -1,7 +1,6 @@
;;; flyspell.el --- on-the-fly spell checker
-;; Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Manuel Serrano <[email protected]>
;; Maintainer: FSF
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index 9a494897b7..ab31fed706 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -1,8 +1,6 @@
;;; ispell.el --- interface to International Ispell Versions 3.1 and 3.2
-;; Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1994-1995, 1997-2011 Free Software Foundation, Inc.
;; Author: Ken Stevens <[email protected]>
;; Maintainer: Ken Stevens <[email protected]>
diff --git a/lisp/textmodes/makeinfo.el b/lisp/textmodes/makeinfo.el
index b5f1336d53..4d701a9d26 100644
--- a/lisp/textmodes/makeinfo.el
+++ b/lisp/textmodes/makeinfo.el
@@ -1,7 +1,6 @@
;;; makeinfo.el --- run makeinfo conveniently
-;; Copyright (C) 1991, 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1991, 1993, 2001-2011 Free Software Foundation, Inc.
;; Author: Robert J. Chassell
;; Maintainer: FSF
@@ -289,5 +288,4 @@ line LINE of the window, or centered if LINE is nil."
;;; Place `provide' at end of file.
(provide 'makeinfo)
-;; arch-tag: 5f810713-3de2-4e20-8030-4bc3dd0d9604
;;; makeinfo.el ends here
diff --git a/lisp/textmodes/nroff-mode.el b/lisp/textmodes/nroff-mode.el
index 5253806405..8fb0bd85da 100644
--- a/lisp/textmodes/nroff-mode.el
+++ b/lisp/textmodes/nroff-mode.el
@@ -1,7 +1,7 @@
;;; nroff-mode.el --- GNU Emacs major mode for editing nroff source
-;; Copyright (C) 1985, 1986, 1994, 1995, 1997, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1986, 1994-1995, 1997, 2001-2011
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: wp
@@ -331,5 +331,4 @@ turns it on if arg is positive, otherwise off."
(provide 'nroff-mode)
-;; arch-tag: 6e276340-6c65-4f65-b4e3-0ca431ddfb6c
;;; nroff-mode.el ends here
diff --git a/lisp/textmodes/page-ext.el b/lisp/textmodes/page-ext.el
index 548223e4f2..6e73fda662 100644
--- a/lisp/textmodes/page-ext.el
+++ b/lisp/textmodes/page-ext.el
@@ -1,7 +1,7 @@
;;; page-ext.el --- extended page handling commands
-;; Copyright (C) 1990, 1991, 1993, 1994, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1991, 1993-1994, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Robert J. Chassell <[email protected]>
;; (according to ack.texi)
diff --git a/lisp/textmodes/page.el b/lisp/textmodes/page.el
index 1c213fcbea..1de6761525 100644
--- a/lisp/textmodes/page.el
+++ b/lisp/textmodes/page.el
@@ -1,7 +1,6 @@
;;; page.el --- page motion commands for Emacs
-;; Copyright (C) 1985, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: wp convenience
@@ -164,5 +163,4 @@ thus showing a page other than the one point was originally in."
;;; Place `provide' at end of file.
(provide 'page)
-;; arch-tag: e8d7a0bd-8655-4b6e-b852-f2ee25316a1d
;;; page.el ends here
diff --git a/lisp/textmodes/paragraphs.el b/lisp/textmodes/paragraphs.el
index 4f1bcefa90..70f11cf66d 100644
--- a/lisp/textmodes/paragraphs.el
+++ b/lisp/textmodes/paragraphs.el
@@ -1,7 +1,6 @@
;;; paragraphs.el --- paragraph and sentence parsing
-;; Copyright (C) 1985, 1986, 1987, 1991, 1994, 1995, 1996, 1997, 1999, 2000,
-;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1987, 1991, 1994-1997, 1999-2011
;; Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -529,5 +528,4 @@ the current sentence with the one containing the mark."
;; coding: utf-8
;; End:
-;; arch-tag: e727eb1a-527a-4464-b9d7-9d3ec0d1a575
;;; paragraphs.el ends here
diff --git a/lisp/textmodes/picture.el b/lisp/textmodes/picture.el
index 98add4cfd2..8148378cee 100644
--- a/lisp/textmodes/picture.el
+++ b/lisp/textmodes/picture.el
@@ -1,7 +1,6 @@
;;; picture.el --- "Picture mode" -- editing using quarter-plane screen model
-;; Copyright (C) 1985, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1994, 2001-2011 Free Software Foundation, Inc.
;; Author: K. Shane Hartman
;; Maintainer: FSF
diff --git a/lisp/textmodes/po.el b/lisp/textmodes/po.el
index e3a9d6158d..7810cc6d57 100644
--- a/lisp/textmodes/po.el
+++ b/lisp/textmodes/po.el
@@ -1,7 +1,6 @@
;;; po.el --- basic support of PO translation files -*- coding: latin-1; -*-
-;; Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-1998, 2000-2011 Free Software Foundation, Inc.
;; Authors: Fran�ois Pinard <[email protected]>,
;; Greg McGary <[email protected]>,
@@ -131,5 +130,4 @@ Called through `file-coding-system-alist', before the file is visited for real."
(provide 'po)
-;; arch-tag: 56748a57-d64c-4200-8f6b-c3a70496eb8c
;;; po.el ends here
diff --git a/lisp/textmodes/refbib.el b/lisp/textmodes/refbib.el
index 14e74549ff..557978395c 100644
--- a/lisp/textmodes/refbib.el
+++ b/lisp/textmodes/refbib.el
@@ -1,7 +1,6 @@
;;; refbib.el --- convert refer-style references to ones usable by Latex bib
-;; Copyright (C) 1989, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1989, 2001-2011 Free Software Foundation, Inc.
;; Author: Henry Kautz <[email protected]>
;; Maintainer: FSF
@@ -746,5 +745,4 @@ Please send bug reports and suggestions to
(provide 'refbib)
(provide 'refer-to-bibtex)
-;; arch-tag: 664afee2-6e76-4408-ba56-981d8a179586
;;; refbib.el ends here
diff --git a/lisp/textmodes/refer.el b/lisp/textmodes/refer.el
index a811c8f658..7ee0fcf9da 100644
--- a/lisp/textmodes/refer.el
+++ b/lisp/textmodes/refer.el
@@ -1,7 +1,6 @@
;;; refer.el --- look up references in bibliography files
-;; Copyright (C) 1992, 1996, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Ashwin Ram <[email protected]>
;; Maintainer: Gernot Heiser <[email protected]>
@@ -396,5 +395,4 @@ found on the last `refer-find-entry' or `refer-find-next-entry'."
(setq refer-bib-files files))
files))
-;; arch-tag: 151f641b-e79b-462b-9a29-a95c3793f300
;;; refer.el ends here
diff --git a/lisp/textmodes/refill.el b/lisp/textmodes/refill.el
index 736fba2932..474872955b 100644
--- a/lisp/textmodes/refill.el
+++ b/lisp/textmodes/refill.el
@@ -1,7 +1,6 @@
;;; refill.el --- `auto-fill' by refilling paragraphs on changes
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Maintainer: Miles Bader <[email protected]>
@@ -258,5 +257,4 @@ refilling if they would cause auto-filling."
(provide 'refill)
-;; arch-tag: 2c4ce9e8-1daa-4a3b-b6f8-fd6ac5bf6138
;;; refill.el ends here
diff --git a/lisp/textmodes/reftex-auc.el b/lisp/textmodes/reftex-auc.el
index 89e8d26bc6..eba19c25ef 100644
--- a/lisp/textmodes/reftex-auc.el
+++ b/lisp/textmodes/reftex-auc.el
@@ -1,7 +1,6 @@
;;; reftex-auc.el --- RefTeX's interface to AUCTeX
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <[email protected]>
;; Maintainer: [email protected]
@@ -224,5 +223,4 @@ of ENTRY-LIST is a list of cons cells (\"MACRONAME\" . LEVEL). See
(defun reftex-notice-new-section ()
(reftex-notice-new 1 'force))
-;; arch-tag: 4a798e68-3405-421c-a09b-0269aac64ab4
;;; reftex-auc.el ends here
diff --git a/lisp/textmodes/reftex-cite.el b/lisp/textmodes/reftex-cite.el
index 2c8a14a380..78d80da41a 100644
--- a/lisp/textmodes/reftex-cite.el
+++ b/lisp/textmodes/reftex-cite.el
@@ -1,7 +1,6 @@
;;; reftex-cite.el --- creating citations with RefTeX
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <[email protected]>
;; Maintainer: [email protected]
@@ -1174,5 +1173,4 @@ The sequence in the new file is the same as it was in the old database."
(length entries))))
-;; arch-tag: d53d0a5a-ab32-4b52-a846-2a7c3527cd89
;;; reftex-cite.el ends here
diff --git a/lisp/textmodes/reftex-dcr.el b/lisp/textmodes/reftex-dcr.el
index 39fc0f4a81..68202440e1 100644
--- a/lisp/textmodes/reftex-dcr.el
+++ b/lisp/textmodes/reftex-dcr.el
@@ -1,7 +1,6 @@
;;; reftex-dcr.el --- viewing cross references and citations with RefTeX
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <[email protected]>
;; Maintainer: [email protected]
@@ -482,5 +481,4 @@ Calling this function several times find successive citation locations."
(move-marker reftex-global-search-marker nil)
(error "All files processed"))))
-;; arch-tag: d2f52b56-744e-44ad-830d-1fc193b90eda
;;; reftex-dcr.el ends here
diff --git a/lisp/textmodes/reftex-global.el b/lisp/textmodes/reftex-global.el
index dc533185b2..ccdab49750 100644
--- a/lisp/textmodes/reftex-global.el
+++ b/lisp/textmodes/reftex-global.el
@@ -1,7 +1,6 @@
;;; reftex-global.el --- operations on entire documents with RefTeX
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <[email protected]>
;; Maintainer: [email protected]
@@ -475,5 +474,4 @@ With no argument, this command toggles
(add-minor-mode 'reftex-isearch-minor-mode "/I" nil nil
'reftex-isearch-minor-mode)
-;; arch-tag: 2dbf7633-92c8-4340-8656-7aa019d0f80d
;;; reftex-global.el ends here
diff --git a/lisp/textmodes/reftex-index.el b/lisp/textmodes/reftex-index.el
index 2da5897827..f75d8b5790 100644
--- a/lisp/textmodes/reftex-index.el
+++ b/lisp/textmodes/reftex-index.el
@@ -1,7 +1,6 @@
;;; reftex-index.el --- index support with RefTeX
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <[email protected]>
;; Maintainer: [email protected]
@@ -275,8 +274,111 @@ will prompt for other arguments."
(and newtag (cdr cell) (not (member newtag (cdr cell)))
(push newtag (cdr cell)))))
-(defvar reftex-index-map (make-sparse-keymap)
+(defvar reftex-index-mode-map
+ (let ((map (make-sparse-keymap)))
+ ;; Index map
+ (define-key map (if (featurep 'xemacs) [(button2)] [(mouse-2)])
+ 'reftex-index-mouse-goto-line-and-hide)
+ (define-key map [follow-link] 'mouse-face)
+
+ (substitute-key-definition
+ 'next-line 'reftex-index-next map global-map)
+ (substitute-key-definition
+ 'previous-line 'reftex-index-previous map global-map)
+
+ (loop for x in
+ '(("n" . reftex-index-next)
+ ("p" . reftex-index-previous)
+ ("?" . reftex-index-show-help)
+ (" " . reftex-index-view-entry)
+ ("\C-m" . reftex-index-goto-entry-and-hide)
+ ("\C-i" . reftex-index-goto-entry)
+ ("\C-k" . reftex-index-kill)
+ ("r" . reftex-index-rescan)
+ ("R" . reftex-index-Rescan)
+ ("g" . revert-buffer)
+ ("q" . reftex-index-quit)
+ ("k" . reftex-index-quit-and-kill)
+ ("f" . reftex-index-toggle-follow)
+ ("s" . reftex-index-switch-index-tag)
+ ("e" . reftex-index-edit)
+ ("^" . reftex-index-level-up)
+ ("_" . reftex-index-level-down)
+ ("}" . reftex-index-restrict-to-section)
+ ("{" . reftex-index-widen)
+ (">" . reftex-index-restriction-forward)
+ ("<" . reftex-index-restriction-backward)
+ ("(" . reftex-index-toggle-range-beginning)
+ (")" . reftex-index-toggle-range-end)
+ ("|" . reftex-index-edit-attribute)
+ ("@" . reftex-index-edit-visual)
+ ("*" . reftex-index-edit-key)
+ ("\C-c=". reftex-index-goto-toc)
+ ("c" . reftex-index-toggle-context))
+ do (define-key map (car x) (cdr x)))
+
+ (loop for key across "0123456789" do
+ (define-key map (vector (list key)) 'digit-argument))
+ (define-key map "-" 'negative-argument)
+
+ ;; The capital letters and the exclamation mark
+ (loop for key across (concat "!" reftex-index-section-letters) do
+ (define-key map (vector (list key))
+ (list 'lambda '() '(interactive)
+ (list 'reftex-index-goto-letter key))))
+
+ (easy-menu-define reftex-index-menu map
+ "Menu for Index buffer"
+ '("Index"
+ ["Goto section A-Z"
+ (message "To go to a section, just press any of: !%s"
+ reftex-index-section-letters) t]
+ ["Show Entry" reftex-index-view-entry t]
+ ["Go To Entry" reftex-index-goto-entry t]
+ ["Exit & Go To Entry" reftex-index-goto-entry-and-hide t]
+ ["Table of Contents" reftex-index-goto-toc t]
+ ["Quit" reftex-index-quit t]
+ "--"
+ ("Update"
+ ["Rebuilt *Index* Buffer" revert-buffer t]
+ "--"
+ ["Rescan One File" reftex-index-rescan reftex-enable-partial-scans]
+ ["Rescan Entire Document" reftex-index-Rescan t])
+ ("Restrict"
+ ["Restrict to section" reftex-index-restrict-to-section t]
+ ["Widen" reftex-index-widen reftex-index-restriction-indicator]
+ ["Next Section" reftex-index-restriction-forward
+ reftex-index-restriction-indicator]
+ ["Previous Section" reftex-index-restriction-backward
+ reftex-index-restriction-indicator])
+ ("Edit"
+ ["Edit Entry" reftex-index-edit t]
+ ["Edit Key" reftex-index-edit-key t]
+ ["Edit Attribute" reftex-index-edit-attribute t]
+ ["Edit Visual" reftex-index-edit-visual t]
+ "--"
+ ["Add Parentkey" reftex-index-level-down t]
+ ["Remove Parentkey " reftex-index-level-up t]
+ "--"
+ ["Make Start-of-Range" reftex-index-toggle-range-beginning t]
+ ["Make End-of-Range" reftex-index-toggle-range-end t]
+ "--"
+ ["Kill Entry" reftex-index-kill nil]
+ "--"
+ ["Undo" reftex-index-undo nil])
+ ("Options"
+ ["Context" reftex-index-toggle-context :style toggle
+ :selected reftex-index-include-context]
+ "--"
+ ["Follow Mode" reftex-index-toggle-follow :style toggle
+ :selected reftex-index-follow-mode])
+ "--"
+ ["Help" reftex-index-show-help t]))
+
+ map)
"Keymap used for *Index* buffers.")
+(define-obsolete-variable-alias
+ 'reftex-index-map 'reftex-index-mode-map "24.1")
(defvar reftex-index-menu)
@@ -291,19 +393,14 @@ will prompt for other arguments."
(defvar reftex-index-restriction-indicator nil)
(defvar reftex-index-restriction-data nil)
-(defun reftex-index-mode ()
+(define-derived-mode reftex-index-mode fundamental-mode "RefTeX Index"
"Major mode for managing Index buffers for LaTeX files.
This buffer was created with RefTeX.
Press `?' for a summary of important key bindings, or check the menu.
Here are all local bindings.
-\\{reftex-index-map}"
- (interactive)
- (kill-all-local-variables)
- (setq major-mode 'reftex-index-mode
- mode-name "RefTeX Index")
- (use-local-map reftex-index-map)
+\\{reftex-index-mode-map}"
(set (make-local-variable 'revert-buffer-function) 'reftex-index-revert)
(set (make-local-variable 'reftex-index-restriction-data) nil)
(set (make-local-variable 'reftex-index-restriction-indicator) nil)
@@ -318,10 +415,9 @@ Here are all local bindings.
(make-local-hook 'post-command-hook)
(make-local-hook 'pre-command-hook))
(make-local-variable 'reftex-last-follow-point)
- (easy-menu-add reftex-index-menu reftex-index-map)
+ (easy-menu-add reftex-index-menu reftex-index-mode-map)
(add-hook 'post-command-hook 'reftex-index-post-command-hook nil t)
- (add-hook 'pre-command-hook 'reftex-index-pre-command-hook nil t)
- (run-hooks 'reftex-index-mode-hook))
+ (add-hook 'pre-command-hook 'reftex-index-pre-command-hook nil t))
(defconst reftex-index-help
" AVAILABLE KEYS IN INDEX BUFFER
@@ -1032,57 +1128,6 @@ When index is restricted, select the previous section as restriction criterion."
(setq reftex-last-follow-point 1)
(and message (message "%s" message))))
-;; Index map
-(define-key reftex-index-map (if (featurep 'xemacs) [(button2)] [(mouse-2)])
- 'reftex-index-mouse-goto-line-and-hide)
-(define-key reftex-index-map [follow-link] 'mouse-face)
-
-(substitute-key-definition
- 'next-line 'reftex-index-next reftex-index-map global-map)
-(substitute-key-definition
- 'previous-line 'reftex-index-previous reftex-index-map global-map)
-
-(loop for x in
- '(("n" . reftex-index-next)
- ("p" . reftex-index-previous)
- ("?" . reftex-index-show-help)
- (" " . reftex-index-view-entry)
- ("\C-m" . reftex-index-goto-entry-and-hide)
- ("\C-i" . reftex-index-goto-entry)
- ("\C-k" . reftex-index-kill)
- ("r" . reftex-index-rescan)
- ("R" . reftex-index-Rescan)
- ("g" . revert-buffer)
- ("q" . reftex-index-quit)
- ("k" . reftex-index-quit-and-kill)
- ("f" . reftex-index-toggle-follow)
- ("s" . reftex-index-switch-index-tag)
- ("e" . reftex-index-edit)
- ("^" . reftex-index-level-up)
- ("_" . reftex-index-level-down)
- ("}" . reftex-index-restrict-to-section)
- ("{" . reftex-index-widen)
- (">" . reftex-index-restriction-forward)
- ("<" . reftex-index-restriction-backward)
- ("(" . reftex-index-toggle-range-beginning)
- (")" . reftex-index-toggle-range-end)
- ("|" . reftex-index-edit-attribute)
- ("@" . reftex-index-edit-visual)
- ("*" . reftex-index-edit-key)
- ("\C-c=". reftex-index-goto-toc)
- ("c" . reftex-index-toggle-context))
- do (define-key reftex-index-map (car x) (cdr x)))
-
-(loop for key across "0123456789" do
- (define-key reftex-index-map (vector (list key)) 'digit-argument))
-(define-key reftex-index-map "-" 'negative-argument)
-
-;; The capital letters and the exclamation mark
-(loop for key across (concat "!" reftex-index-section-letters) do
- (define-key reftex-index-map (vector (list key))
- (list 'lambda '() '(interactive)
- (list 'reftex-index-goto-letter key))))
-
(defun reftex-index-goto-letter (char)
"Go to the CHAR section in the index."
(let ((pos (point))
@@ -1101,55 +1146,6 @@ When index is restricted, select the previous section as restriction criterion."
(error "This <%s> index does not contain entries starting with `%c'"
reftex-index-tag char)))))
-(easy-menu-define
- reftex-index-menu reftex-index-map
- "Menu for Index buffer"
- `("Index"
- ["Goto section A-Z"
- (message "To go to a section, just press any of: !%s"
- reftex-index-section-letters) t]
- ["Show Entry" reftex-index-view-entry t]
- ["Go To Entry" reftex-index-goto-entry t]
- ["Exit & Go To Entry" reftex-index-goto-entry-and-hide t]
- ["Table of Contents" reftex-index-goto-toc t]
- ["Quit" reftex-index-quit t]
- "--"
- ("Update"
- ["Rebuilt *Index* Buffer" revert-buffer t]
- "--"
- ["Rescan One File" reftex-index-rescan reftex-enable-partial-scans]
- ["Rescan Entire Document" reftex-index-Rescan t])
- ("Restrict"
- ["Restrict to section" reftex-index-restrict-to-section t]
- ["Widen" reftex-index-widen reftex-index-restriction-indicator]
- ["Next Section" reftex-index-restriction-forward
- reftex-index-restriction-indicator]
- ["Previous Section" reftex-index-restriction-backward
- reftex-index-restriction-indicator])
- ("Edit"
- ["Edit Entry" reftex-index-edit t]
- ["Edit Key" reftex-index-edit-key t]
- ["Edit Attribute" reftex-index-edit-attribute t]
- ["Edit Visual" reftex-index-edit-visual t]
- "--"
- ["Add Parentkey" reftex-index-level-down t]
- ["Remove Parentkey " reftex-index-level-up t]
- "--"
- ["Make Start-of-Range" reftex-index-toggle-range-beginning t]
- ["Make End-of-Range" reftex-index-toggle-range-end t]
- "--"
- ["Kill Entry" reftex-index-kill nil]
- "--"
- ["Undo" reftex-index-undo nil])
- ("Options"
- ["Context" reftex-index-toggle-context :style toggle
- :selected reftex-index-include-context]
- "--"
- ["Follow Mode" reftex-index-toggle-follow :style toggle
- :selected reftex-index-follow-mode])
- "--"
- ["Help" reftex-index-show-help t]))
-
;;----------------------------------------------------------------------
;; The Index Phrases File
@@ -1183,8 +1179,73 @@ This gets refreshed in every phrases command.")
"Font lock keywords for reftex-index-phrases-mode.")
(defvar reftex-index-phrases-font-lock-defaults nil
"Font lock defaults for reftex-index-phrases-mode.")
-(defvar reftex-index-phrases-map (make-sparse-keymap)
+(defvar reftex-index-phrases-mode-map
+ (let ((map (make-sparse-keymap)))
+ ;; Keybindings and Menu for phrases buffer
+ (loop for x in
+ '(("\C-c\C-c" . reftex-index-phrases-save-and-return)
+ ("\C-c\C-x" . reftex-index-this-phrase)
+ ("\C-c\C-f" . reftex-index-next-phrase)
+ ("\C-c\C-r" . reftex-index-region-phrases)
+ ("\C-c\C-a" . reftex-index-all-phrases)
+ ("\C-c\C-d" . reftex-index-remaining-phrases)
+ ("\C-c\C-s" . reftex-index-sort-phrases)
+ ("\C-c\C-n" . reftex-index-new-phrase)
+ ("\C-c\C-m" . reftex-index-phrases-set-macro-key)
+ ("\C-c\C-i" . reftex-index-phrases-info)
+ ("\C-c\C-t" . reftex-index-find-next-conflict-phrase)
+ ("\C-i" . self-insert-command))
+ do (define-key map (car x) (cdr x)))
+
+ (easy-menu-define reftex-index-phrases-menu map
+ "Menu for Phrases buffer"
+ '("Phrases"
+ ["New Phrase" reftex-index-new-phrase t]
+ ["Set Phrase Macro" reftex-index-phrases-set-macro-key t]
+ ["Recreate File Header" reftex-index-initialize-phrases-buffer t]
+ "--"
+ ("Sort Phrases"
+ ["Sort" reftex-index-sort-phrases t]
+ "--"
+ "Sort Options"
+ ["by Search Phrase" (setq reftex-index-phrases-sort-prefers-entry nil)
+ :style radio :selected (not reftex-index-phrases-sort-prefers-entry)]
+ ["by Index Entry" (setq reftex-index-phrases-sort-prefers-entry t)
+ :style radio :selected reftex-index-phrases-sort-prefers-entry]
+ ["in Blocks" (setq reftex-index-phrases-sort-in-blocks
+ (not reftex-index-phrases-sort-in-blocks))
+ :style toggle :selected reftex-index-phrases-sort-in-blocks])
+ ["Describe Phrase" reftex-index-phrases-info t]
+ ["Next Phrase Conflict" reftex-index-find-next-conflict-phrase t]
+ "--"
+ ("Find and Index in Document"
+ ["Current Phrase" reftex-index-this-phrase t]
+ ["Next Phrase" reftex-index-next-phrase t]
+ ["Current and Following" reftex-index-remaining-phrases t]
+ ["Region Phrases" reftex-index-region-phrases t]
+ ["All Phrases" reftex-index-all-phrases t]
+ "--"
+ "Options"
+ ["Match Whole Words" (setq reftex-index-phrases-search-whole-words
+ (not reftex-index-phrases-search-whole-words))
+ :style toggle :selected reftex-index-phrases-search-whole-words]
+ ["Case Sensitive Search" (setq reftex-index-phrases-case-fold-search
+ (not reftex-index-phrases-case-fold-search))
+ :style toggle :selected (not
+ reftex-index-phrases-case-fold-search)]
+ ["Wrap Long Lines" (setq reftex-index-phrases-wrap-long-lines
+ (not reftex-index-phrases-wrap-long-lines))
+ :style toggle :selected reftex-index-phrases-wrap-long-lines]
+ ["Skip Indexed Matches" (setq reftex-index-phrases-skip-indexed-matches
+ (not reftex-index-phrases-skip-indexed-matches))
+ :style toggle :selected reftex-index-phrases-skip-indexed-matches])
+ "--"
+ ["Save and Return" reftex-index-phrases-save-and-return t]))
+
+ map)
"Keymap used for *toc* buffer.")
+(define-obsolete-variable-alias
+ 'reftex-index-phrases-map 'reftex-index-phrases-mode-map "24.1")
(defun reftex-index-phrase-selection-or-word (arg)
@@ -1288,7 +1349,7 @@ If the buffer is non-empty, delete the old header first."
(defvar reftex-index-phrases-marker)
(defvar reftex-index-phrases-restrict-file nil)
;;;###autoload
-(defun reftex-index-phrases-mode ()
+(define-derived-mode reftex-index-phrases-mode fundamental-mode "Phrases"
"Major mode for managing the Index phrases of a LaTeX document.
This buffer was created with RefTeX.
@@ -1311,18 +1372,12 @@ For more information see the RefTeX User Manual.
Here are all local bindings.
-\\{reftex-index-phrases-map}"
- (interactive)
- (kill-all-local-variables)
- (setq major-mode 'reftex-index-phrases-mode
- mode-name "Phrases")
- (use-local-map reftex-index-phrases-map)
+\\{reftex-index-phrases-mode-map}"
(set (make-local-variable 'font-lock-defaults)
reftex-index-phrases-font-lock-defaults)
- (easy-menu-add reftex-index-phrases-menu reftex-index-phrases-map)
- (set (make-local-variable 'reftex-index-phrases-marker) (make-marker))
- (run-hooks 'reftex-index-phrases-mode-hook))
-(add-hook 'reftex-index-phrases-mode-hook 'turn-on-font-lock)
+ (easy-menu-add reftex-index-phrases-menu reftex-index-phrases-mode-map)
+ (set (make-local-variable 'reftex-index-phrases-marker) (make-marker)))
+;; (add-hook 'reftex-index-phrases-mode-hook 'turn-on-font-lock)
;; Font Locking stuff
(let ((ss (if (featurep 'xemacs) 'secondary-selection ''secondary-selection)))
@@ -2040,68 +2095,5 @@ Does not do a save-excursion."
reftex-index-phrases-macro-data "\n"))))
(reftex-select-with-char prompt help delay)))
-;; Keybindings and Menu for phrases buffer
-
-(loop for x in
- '(("\C-c\C-c" . reftex-index-phrases-save-and-return)
- ("\C-c\C-x" . reftex-index-this-phrase)
- ("\C-c\C-f" . reftex-index-next-phrase)
- ("\C-c\C-r" . reftex-index-region-phrases)
- ("\C-c\C-a" . reftex-index-all-phrases)
- ("\C-c\C-d" . reftex-index-remaining-phrases)
- ("\C-c\C-s" . reftex-index-sort-phrases)
- ("\C-c\C-n" . reftex-index-new-phrase)
- ("\C-c\C-m" . reftex-index-phrases-set-macro-key)
- ("\C-c\C-i" . reftex-index-phrases-info)
- ("\C-c\C-t" . reftex-index-find-next-conflict-phrase)
- ("\C-i" . self-insert-command))
- do (define-key reftex-index-phrases-map (car x) (cdr x)))
-
-(easy-menu-define
- reftex-index-phrases-menu reftex-index-phrases-map
- "Menu for Phrases buffer"
- '("Phrases"
- ["New Phrase" reftex-index-new-phrase t]
- ["Set Phrase Macro" reftex-index-phrases-set-macro-key t]
- ["Recreate File Header" reftex-index-initialize-phrases-buffer t]
- "--"
- ("Sort Phrases"
- ["Sort" reftex-index-sort-phrases t]
- "--"
- "Sort Options"
- ["by Search Phrase" (setq reftex-index-phrases-sort-prefers-entry nil)
- :style radio :selected (not reftex-index-phrases-sort-prefers-entry)]
- ["by Index Entry" (setq reftex-index-phrases-sort-prefers-entry t)
- :style radio :selected reftex-index-phrases-sort-prefers-entry]
- ["in Blocks" (setq reftex-index-phrases-sort-in-blocks
- (not reftex-index-phrases-sort-in-blocks))
- :style toggle :selected reftex-index-phrases-sort-in-blocks])
- ["Describe Phrase" reftex-index-phrases-info t]
- ["Next Phrase Conflict" reftex-index-find-next-conflict-phrase t]
- "--"
- ("Find and Index in Document"
- ["Current Phrase" reftex-index-this-phrase t]
- ["Next Phrase" reftex-index-next-phrase t]
- ["Current and Following" reftex-index-remaining-phrases t]
- ["Region Phrases" reftex-index-region-phrases t]
- ["All Phrases" reftex-index-all-phrases t]
- "--"
- "Options"
- ["Match Whole Words" (setq reftex-index-phrases-search-whole-words
- (not reftex-index-phrases-search-whole-words))
- :style toggle :selected reftex-index-phrases-search-whole-words]
- ["Case Sensitive Search" (setq reftex-index-phrases-case-fold-search
- (not reftex-index-phrases-case-fold-search))
- :style toggle :selected (not
- reftex-index-phrases-case-fold-search)]
- ["Wrap Long Lines" (setq reftex-index-phrases-wrap-long-lines
- (not reftex-index-phrases-wrap-long-lines))
- :style toggle :selected reftex-index-phrases-wrap-long-lines]
- ["Skip Indexed Matches" (setq reftex-index-phrases-skip-indexed-matches
- (not reftex-index-phrases-skip-indexed-matches))
- :style toggle :selected reftex-index-phrases-skip-indexed-matches])
- "--"
- ["Save and Return" reftex-index-phrases-save-and-return t]))
-
;;; reftex-index.el ends here
diff --git a/lisp/textmodes/reftex-parse.el b/lisp/textmodes/reftex-parse.el
index fa0275b58b..6ffbf7a462 100644
--- a/lisp/textmodes/reftex-parse.el
+++ b/lisp/textmodes/reftex-parse.el
@@ -1,7 +1,6 @@
;;; reftex-parse.el --- parser functions for RefTeX
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <[email protected]>
;; Maintainer: [email protected]
@@ -1070,5 +1069,4 @@ of master file."
nrest (- nrest i))))
string))
-;; arch-tag: 6a8168f7-abb9-4576-99dc-fcbc7ba901a3
;;; reftex-parse.el ends here
diff --git a/lisp/textmodes/reftex-ref.el b/lisp/textmodes/reftex-ref.el
index 91cc77480e..b47f2f6c2e 100644
--- a/lisp/textmodes/reftex-ref.el
+++ b/lisp/textmodes/reftex-ref.el
@@ -1,7 +1,6 @@
;;; reftex-ref.el --- code to create labels and references with RefTeX
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <[email protected]>
;; Maintainer: [email protected]
diff --git a/lisp/textmodes/reftex-sel.el b/lisp/textmodes/reftex-sel.el
index bb6531d798..b4e15fd277 100644
--- a/lisp/textmodes/reftex-sel.el
+++ b/lisp/textmodes/reftex-sel.el
@@ -1,7 +1,6 @@
;;; reftex-sel.el --- the selection modes for RefTeX
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <[email protected]>
;; Maintainer: [email protected]
@@ -32,12 +31,81 @@
(require 'reftex)
;;;
-(defvar reftex-select-label-map nil
+;; Common bindings in reftex-select-label-mode-map
+;; and reftex-select-bib-mode-map.
+(defvar reftex-select-shared-map
+ (let ((map (make-sparse-keymap)))
+ (substitute-key-definition
+ 'next-line 'reftex-select-next map global-map)
+ (substitute-key-definition
+ 'previous-line 'reftex-select-previous map global-map)
+ (substitute-key-definition
+ 'keyboard-quit 'reftex-select-keyboard-quit map global-map)
+ (substitute-key-definition
+ 'newline 'reftex-select-accept map global-map)
+
+ (loop for x in
+ '((" " . reftex-select-callback)
+ ("n" . reftex-select-next)
+ ([(down)] . reftex-select-next)
+ ("p" . reftex-select-previous)
+ ([(up)] . reftex-select-previous)
+ ("f" . reftex-select-toggle-follow)
+ ("\C-m" . reftex-select-accept)
+ ([(return)] . reftex-select-accept)
+ ("q" . reftex-select-quit)
+ ("." . reftex-select-show-insertion-point)
+ ("?" . reftex-select-help))
+ do (define-key map (car x) (cdr x)))
+
+ ;; The mouse-2 binding
+ (if (featurep 'xemacs)
+ (define-key map [(button2)] 'reftex-select-mouse-accept)
+ (define-key map [(mouse-2)] 'reftex-select-mouse-accept)
+ (define-key map [follow-link] 'mouse-face))
+
+
+ ;; Digit arguments
+ (loop for key across "0123456789" do
+ (define-key map (vector (list key)) 'digit-argument))
+ (define-key map "-" 'negative-argument)
+ map))
+
+(defvar reftex-select-label-mode-map
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map reftex-select-shared-map)
+
+ (loop for key across "aAcgFlrRstx#%" do
+ (define-key map (vector (list key))
+ (list 'lambda '()
+ "Press `?' during selection to find out about this key."
+ '(interactive) (list 'throw '(quote myexit) key))))
+
+ (loop for x in
+ '(("b" . reftex-select-jump-to-previous)
+ ("z" . reftex-select-jump)
+ ("v" . reftex-select-toggle-varioref)
+ ("V" . reftex-select-toggle-fancyref)
+ ("m" . reftex-select-mark)
+ ("u" . reftex-select-unmark)
+ ("," . reftex-select-mark-comma)
+ ("-" . reftex-select-mark-to)
+ ("+" . reftex-select-mark-and)
+ ([(tab)] . reftex-select-read-label)
+ ("\C-i" . reftex-select-read-label)
+ ("\C-c\C-n" . reftex-select-next-heading)
+ ("\C-c\C-p" . reftex-select-previous-heading))
+ do
+ (define-key map (car x) (cdr x)))
+
+ map)
"Keymap used for *RefTeX Select* buffer, when selecting a label.
This keymap can be used to configure the label selection process which is
started with the command \\[reftex-reference].")
+(define-obsolete-variable-alias
+ 'reftex-select-label-map 'reftex-select-label-mode-map "24.1")
-(defun reftex-select-label-mode ()
+(define-derived-mode reftex-select-label-mode fundamental-mode "LSelect"
"Major mode for selecting a label in a LaTeX document.
This buffer was created with RefTeX.
It only has a meaningful keymap when you are in the middle of a
@@ -47,28 +115,42 @@ Press `?' for a summary of important key bindings.
During a selection process, these are the local bindings.
-\\{reftex-select-label-map}"
-
- (interactive)
- (kill-all-local-variables)
+\\{reftex-select-label-mode-map}"
(when (featurep 'xemacs)
;; XEmacs needs the call to make-local-hook
(make-local-hook 'pre-command-hook)
(make-local-hook 'post-command-hook))
- (setq major-mode 'reftex-select-label-mode
- mode-name "LSelect")
(set (make-local-variable 'reftex-select-marked) nil)
(when (syntax-table-p reftex-latex-syntax-table)
(set-syntax-table reftex-latex-syntax-table))
;; We do not set a local map - reftex-select-item does this.
- (run-hooks 'reftex-select-label-mode-hook))
-
-(defvar reftex-select-bib-map nil
+ )
+
+(defvar reftex-select-bib-mode-map
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map reftex-select-shared-map)
+
+ (loop for key across "grRaAeE" do
+ (define-key map (vector (list key))
+ (list 'lambda '()
+ "Press `?' during selection to find out about this key."
+ '(interactive) (list 'throw '(quote myexit) key))))
+
+ (loop for x in
+ '(("\C-i" . reftex-select-read-cite)
+ ([(tab)] . reftex-select-read-cite)
+ ("m" . reftex-select-mark)
+ ("u" . reftex-select-unmark))
+ do (define-key map (car x) (cdr x)))
+
+ map)
"Keymap used for *RefTeX Select* buffer, when selecting a BibTeX entry.
This keymap can be used to configure the BibTeX selection process which is
started with the command \\[reftex-citation].")
+(define-obsolete-variable-alias
+ 'reftex-select-bib-map 'reftex-select-bib-mode-map "24.1")
-(defun reftex-select-bib-mode ()
+(define-derived-mode reftex-select-bib-mode fundamental-mode "BSelect"
"Major mode for selecting a citation key in a LaTeX document.
This buffer was created with RefTeX.
It only has a meaningful keymap when you are in the middle of a
@@ -78,18 +160,14 @@ Press `?' for a summary of important key bindings.
During a selection process, these are the local bindings.
-\\{reftex-select-label-map}"
- (interactive)
- (kill-all-local-variables)
+\\{reftex-select-label-mode-map}"
(when (featurep 'xemacs)
;; XEmacs needs the call to make-local-hook
(make-local-hook 'pre-command-hook)
(make-local-hook 'post-command-hook))
- (setq major-mode 'reftex-select-bib-mode
- mode-name "BSelect")
(set (make-local-variable 'reftex-select-marked) nil)
;; We do not set a local map - reftex-select-item does this.
- (run-hooks 'reftex-select-bib-mode-hook))
+ )
;; (defun reftex-get-offset (buf here-am-I &optional typekey toc index file)
;; ;; Find the correct offset data, like insert-docstruct would, but faster.
@@ -657,84 +735,4 @@ Useful for large TOC's."
(princ help-string))
(reftex-enlarge-to-fit "*RefTeX Help*" t))
-;; Common bindings in reftex-select-label-map and reftex-select-bib-map
-(let ((map (make-sparse-keymap)))
- (substitute-key-definition
- 'next-line 'reftex-select-next map global-map)
- (substitute-key-definition
- 'previous-line 'reftex-select-previous map global-map)
- (substitute-key-definition
- 'keyboard-quit 'reftex-select-keyboard-quit map global-map)
- (substitute-key-definition
- 'newline 'reftex-select-accept map global-map)
-
- (loop for x in
- '((" " . reftex-select-callback)
- ("n" . reftex-select-next)
- ([(down)] . reftex-select-next)
- ("p" . reftex-select-previous)
- ([(up)] . reftex-select-previous)
- ("f" . reftex-select-toggle-follow)
- ("\C-m" . reftex-select-accept)
- ([(return)] . reftex-select-accept)
- ("q" . reftex-select-quit)
- ("." . reftex-select-show-insertion-point)
- ("?" . reftex-select-help))
- do (define-key map (car x) (cdr x)))
-
- ;; The mouse-2 binding
- (if (featurep 'xemacs)
- (define-key map [(button2)] 'reftex-select-mouse-accept)
- (define-key map [(mouse-2)] 'reftex-select-mouse-accept)
- (define-key map [follow-link] 'mouse-face))
-
-
- ;; Digit arguments
- (loop for key across "0123456789" do
- (define-key map (vector (list key)) 'digit-argument))
- (define-key map "-" 'negative-argument)
-
- ;; Make two maps
- (setq reftex-select-label-map map)
- (setq reftex-select-bib-map (copy-keymap map)))
-
-;; Specific bindings in reftex-select-label-map
-(loop for key across "aAcgFlrRstx#%" do
- (define-key reftex-select-label-map (vector (list key))
- (list 'lambda '()
- "Press `?' during selection to find out about this key."
- '(interactive) (list 'throw '(quote myexit) key))))
-
-(loop for x in
- '(("b" . reftex-select-jump-to-previous)
- ("z" . reftex-select-jump)
- ("v" . reftex-select-toggle-varioref)
- ("V" . reftex-select-toggle-fancyref)
- ("m" . reftex-select-mark)
- ("u" . reftex-select-unmark)
- ("," . reftex-select-mark-comma)
- ("-" . reftex-select-mark-to)
- ("+" . reftex-select-mark-and)
- ([(tab)] . reftex-select-read-label)
- ("\C-i" . reftex-select-read-label)
- ("\C-c\C-n" . reftex-select-next-heading)
- ("\C-c\C-p" . reftex-select-previous-heading))
- do
- (define-key reftex-select-label-map (car x) (cdr x)))
-
-;; Specific bindings in reftex-select-bib-map
-(loop for key across "grRaAeE" do
- (define-key reftex-select-bib-map (vector (list key))
- (list 'lambda '()
- "Press `?' during selection to find out about this key."
- '(interactive) (list 'throw '(quote myexit) key))))
-
-(loop for x in
- '(("\C-i" . reftex-select-read-cite)
- ([(tab)] . reftex-select-read-cite)
- ("m" . reftex-select-mark)
- ("u" . reftex-select-unmark))
- do (define-key reftex-select-bib-map (car x) (cdr x)))
-
-
;;; reftex-sel.el ends here
diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el
index 20903706a0..5d691f456f 100644
--- a/lisp/textmodes/reftex-toc.el
+++ b/lisp/textmodes/reftex-toc.el
@@ -1,7 +1,6 @@
;;; reftex-toc.el --- RefTeX's table of contents mode
-;; Copyright (C) 1997, 1998, 1999, 2000, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2000, 2003-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <[email protected]>
;; Maintainer: [email protected]
@@ -32,8 +31,98 @@
(require 'reftex)
;;;
-(defvar reftex-toc-map (make-sparse-keymap)
+(defvar reftex-toc-mode-map
+ (let ((map (make-sparse-keymap)))
+
+ (define-key map (if (featurep 'xemacs) [(button2)] [(mouse-2)])
+ 'reftex-toc-mouse-goto-line-and-hide)
+ (define-key map [follow-link] 'mouse-face)
+
+ (substitute-key-definition
+ 'next-line 'reftex-toc-next map global-map)
+ (substitute-key-definition
+ 'previous-line 'reftex-toc-previous map global-map)
+
+ (loop for x in
+ '(("n" . reftex-toc-next)
+ ("p" . reftex-toc-previous)
+ ("?" . reftex-toc-show-help)
+ (" " . reftex-toc-view-line)
+ ("\C-m" . reftex-toc-goto-line-and-hide)
+ ("\C-i" . reftex-toc-goto-line)
+ ("\C-c>" . reftex-toc-display-index)
+ ("r" . reftex-toc-rescan)
+ ("R" . reftex-toc-Rescan)
+ ("g" . revert-buffer)
+ ("q" . reftex-toc-quit) ;
+ ("k" . reftex-toc-quit-and-kill)
+ ("f" . reftex-toc-toggle-follow) ;
+ ("a" . reftex-toggle-auto-toc-recenter)
+ ("d" . reftex-toc-toggle-dedicated-frame)
+ ("F" . reftex-toc-toggle-file-boundary)
+ ("i" . reftex-toc-toggle-index)
+ ("l" . reftex-toc-toggle-labels)
+ ("t" . reftex-toc-max-level)
+ ("c" . reftex-toc-toggle-context)
+ ;; ("%" . reftex-toc-toggle-commented)
+ ("\M-%" . reftex-toc-rename-label)
+ ("x" . reftex-toc-external)
+ ("z" . reftex-toc-jump)
+ ("." . reftex-toc-show-calling-point)
+ ("\C-c\C-n" . reftex-toc-next-heading)
+ ("\C-c\C-p" . reftex-toc-previous-heading)
+ (">" . reftex-toc-demote)
+ ("<" . reftex-toc-promote))
+ do (define-key map (car x) (cdr x)))
+
+ (loop for key across "0123456789" do
+ (define-key map (vector (list key)) 'digit-argument))
+ (define-key map "-" 'negative-argument)
+
+ (easy-menu-define
+ reftex-toc-menu map
+ "Menu for Table of Contents buffer"
+ '("TOC"
+ ["Show Location" reftex-toc-view-line t]
+ ["Go To Location" reftex-toc-goto-line t]
+ ["Exit & Go To Location" reftex-toc-goto-line-and-hide t]
+ ["Show Calling Point" reftex-toc-show-calling-point t]
+ ["Quit" reftex-toc-quit t]
+ "--"
+ ("Edit"
+ ["Promote" reftex-toc-promote t]
+ ["Demote" reftex-toc-demote t]
+ ["Rename Label" reftex-toc-rename-label t])
+ "--"
+ ["Index" reftex-toc-display-index t]
+ ["External Document TOC " reftex-toc-external t]
+ "--"
+ ("Update"
+ ["Rebuilt *toc* Buffer" revert-buffer t]
+ ["Rescan One File" reftex-toc-rescan reftex-enable-partial-scans]
+ ["Rescan Entire Document" reftex-toc-Rescan t])
+ ("Options"
+ "TOC Items"
+ ["File Boundaries" reftex-toc-toggle-file-boundary :style toggle
+ :selected reftex-toc-include-file-boundaries]
+ ["Labels" reftex-toc-toggle-labels :style toggle
+ :selected reftex-toc-include-labels]
+ ["Index Entries" reftex-toc-toggle-index :style toggle
+ :selected reftex-toc-include-index-entries]
+ ["Context" reftex-toc-toggle-context :style toggle
+ :selected reftex-toc-include-context]
+ "--"
+ ["Follow Mode" reftex-toc-toggle-follow :style toggle
+ :selected reftex-toc-follow-mode]
+ ["Auto Recenter" reftex-toggle-auto-toc-recenter :style toggle
+ :selected reftex-toc-auto-recenter-timer]
+ ["Dedicated Frame" reftex-toc-toggle-dedicated-frame t])
+ "--"
+ ["Help" reftex-toc-show-help t]))
+
+ map)
"Keymap used for *toc* buffer.")
+(define-obsolete-variable-alias 'reftex-toc-map 'reftex-toc-mode-map "24.1")
(defvar reftex-toc-menu)
(defvar reftex-last-window-height nil)
@@ -42,19 +131,14 @@
(defvar reftex-toc-include-index-indicator nil)
(defvar reftex-toc-max-level-indicator nil)
-(defun reftex-toc-mode ()
+(define-derived-mode reftex-toc-mode fundamental-mode "TOC"
"Major mode for managing Table of Contents for LaTeX files.
This buffer was created with RefTeX.
Press `?' for a summary of important key bindings.
Here are all local bindings.
-\\{reftex-toc-map}"
- (interactive)
- (kill-all-local-variables)
- (setq major-mode 'reftex-toc-mode
- mode-name "TOC")
- (use-local-map reftex-toc-map)
+\\{reftex-toc-mode-map}"
(set (make-local-variable 'transient-mark-mode) t)
(when (featurep 'xemacs)
(set (make-local-variable 'zmacs-regions) t))
@@ -79,8 +163,7 @@ Here are all local bindings.
(make-local-variable 'reftex-last-follow-point)
(add-hook 'post-command-hook 'reftex-toc-post-command-hook nil t)
(add-hook 'pre-command-hook 'reftex-toc-pre-command-hook nil t)
- (easy-menu-add reftex-toc-menu reftex-toc-map)
- (run-hooks 'reftex-toc-mode-hook))
+ (easy-menu-add reftex-toc-menu reftex-toc-mode-map))
(defvar reftex-last-toc-file nil
"Stores the file name from which `reftex-toc' was called. For redo command.")
@@ -1006,92 +1089,4 @@ always show the current section in connection with the option
(progn
(reftex-toggle-auto-toc-recenter))))
-;; Table of Contents map
-(define-key reftex-toc-map (if (featurep 'xemacs) [(button2)] [(mouse-2)])
- 'reftex-toc-mouse-goto-line-and-hide)
-(define-key reftex-toc-map [follow-link] 'mouse-face)
-
-(substitute-key-definition
- 'next-line 'reftex-toc-next reftex-toc-map global-map)
-(substitute-key-definition
- 'previous-line 'reftex-toc-previous reftex-toc-map global-map)
-
-(loop for x in
- '(("n" . reftex-toc-next)
- ("p" . reftex-toc-previous)
- ("?" . reftex-toc-show-help)
- (" " . reftex-toc-view-line)
- ("\C-m" . reftex-toc-goto-line-and-hide)
- ("\C-i" . reftex-toc-goto-line)
- ("\C-c>" . reftex-toc-display-index)
- ("r" . reftex-toc-rescan)
- ("R" . reftex-toc-Rescan)
- ("g" . revert-buffer)
- ("q" . reftex-toc-quit);
- ("k" . reftex-toc-quit-and-kill)
- ("f" . reftex-toc-toggle-follow);
- ("a" . reftex-toggle-auto-toc-recenter)
- ("d" . reftex-toc-toggle-dedicated-frame)
- ("F" . reftex-toc-toggle-file-boundary)
- ("i" . reftex-toc-toggle-index)
- ("l" . reftex-toc-toggle-labels)
- ("t" . reftex-toc-max-level)
- ("c" . reftex-toc-toggle-context)
-; ("%" . reftex-toc-toggle-commented)
- ("\M-%" . reftex-toc-rename-label)
- ("x" . reftex-toc-external)
- ("z" . reftex-toc-jump)
- ("." . reftex-toc-show-calling-point)
- ("\C-c\C-n" . reftex-toc-next-heading)
- ("\C-c\C-p" . reftex-toc-previous-heading)
- (">" . reftex-toc-demote)
- ("<" . reftex-toc-promote))
- do (define-key reftex-toc-map (car x) (cdr x)))
-
-(loop for key across "0123456789" do
- (define-key reftex-toc-map (vector (list key)) 'digit-argument))
-(define-key reftex-toc-map "-" 'negative-argument)
-
-(easy-menu-define
- reftex-toc-menu reftex-toc-map
- "Menu for Table of Contents buffer"
- '("TOC"
- ["Show Location" reftex-toc-view-line t]
- ["Go To Location" reftex-toc-goto-line t]
- ["Exit & Go To Location" reftex-toc-goto-line-and-hide t]
- ["Show Calling Point" reftex-toc-show-calling-point t]
- ["Quit" reftex-toc-quit t]
- "--"
- ("Edit"
- ["Promote" reftex-toc-promote t]
- ["Demote" reftex-toc-demote t]
- ["Rename Label" reftex-toc-rename-label t])
- "--"
- ["Index" reftex-toc-display-index t]
- ["External Document TOC " reftex-toc-external t]
- "--"
- ("Update"
- ["Rebuilt *toc* Buffer" revert-buffer t]
- ["Rescan One File" reftex-toc-rescan reftex-enable-partial-scans]
- ["Rescan Entire Document" reftex-toc-Rescan t])
- ("Options"
- "TOC Items"
- ["File Boundaries" reftex-toc-toggle-file-boundary :style toggle
- :selected reftex-toc-include-file-boundaries]
- ["Labels" reftex-toc-toggle-labels :style toggle
- :selected reftex-toc-include-labels]
- ["Index Entries" reftex-toc-toggle-index :style toggle
- :selected reftex-toc-include-index-entries]
- ["Context" reftex-toc-toggle-context :style toggle
- :selected reftex-toc-include-context]
- "--"
- ["Follow Mode" reftex-toc-toggle-follow :style toggle
- :selected reftex-toc-follow-mode]
- ["Auto Recenter" reftex-toggle-auto-toc-recenter :style toggle
- :selected reftex-toc-auto-recenter-timer]
- ["Dedicated Frame" reftex-toc-toggle-dedicated-frame t])
- "--"
- ["Help" reftex-toc-show-help t]))
-
-
;;; reftex-toc.el ends here
diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el
index 5b83e7a43a..1b503c78af 100644
--- a/lisp/textmodes/reftex-vars.el
+++ b/lisp/textmodes/reftex-vars.el
@@ -1,7 +1,6 @@
;;; reftex-vars.el --- configuration variables for RefTeX
-;; Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1999, 2001-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <[email protected]>
;; Maintainer: [email protected]
@@ -1917,5 +1916,4 @@ construct: \\bbb [xxx] {aaa}."
(provide 'reftex-vars)
-;; arch-tag: 9591ea34-ef39-4431-90b7-c115eaf5e16f
;;; reftex-vars.el ends here
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index 2a2e725e92..6719a647c3 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -1,6 +1,5 @@
;;; reftex.el --- minor mode for doing \label, \ref, \cite, \index in LaTeX
-;; Copyright (C) 1997, 1998, 1999, 2000, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2000, 2003-2011 Free Software Foundation, Inc.
;; Author: Carsten Dominik <[email protected]>
;; Maintainer: [email protected]
@@ -2582,5 +2581,4 @@ With optional NODE, go directly to that node."
;;;============================================================================
-;; arch-tag: 49e0da4e-bd5e-4cfc-a717-fb444fccb9e6
;;; reftex.el ends here
diff --git a/lisp/textmodes/remember.el b/lisp/textmodes/remember.el
index ab2c27563b..1923ab692d 100644
--- a/lisp/textmodes/remember.el
+++ b/lisp/textmodes/remember.el
@@ -1,7 +1,6 @@
;;; remember --- a mode for quickly jotting down things to remember
-;; Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2001, 2003-2011 Free Software Foundation, Inc.
;; Author: John Wiegley <[email protected]>
;; Created: 29 Mar 1999
diff --git a/lisp/textmodes/rst.el b/lisp/textmodes/rst.el
index 5bf1a7c789..b55146c2ff 100644
--- a/lisp/textmodes/rst.el
+++ b/lisp/textmodes/rst.el
@@ -1,7 +1,6 @@
;;; rst.el --- Mode for viewing and editing reStructuredText-documents.
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Authors: Martin Blais <[email protected]>,
;; Stefan Merten <[email protected]>,
@@ -3234,16 +3233,37 @@ document with \\[rst-compile]."
:group 'rst
:version "21.1")
-(defvar rst-compile-toolsets
- '((html . ("rst2html.py" ".html" nil))
- (latex . ("rst2latex.py" ".tex" nil))
- (newlatex . ("rst2newlatex.py" ".tex" nil))
- (pseudoxml . ("rst2pseudoxml.py" ".xml" nil))
- (xml . ("rst2xml.py" ".xml" nil)))
+(defcustom rst-compile-toolsets
+ `((html ,(if (executable-find "rst2html.py") "rst2html.py" "rst2html")
+ ".html" nil)
+ (latex ,(if (executable-find "rst2latex.py") "rst2latex.py" "rst2latex")
+ ".tex" nil)
+ (newlatex ,(if (executable-find "rst2newlatex.py") "rst2newlatex.py"
+ "rst2newlatex")
+ ".tex" nil)
+ (pseudoxml ,(if (executable-find "rst2pseudoxml.py") "rst2pseudoxml.py"
+ "rst2pseudoxml")
+ ".xml" nil)
+ (xml ,(if (executable-find "rst2xml.py") "rst2xml.py" "rst2xml")
+ ".xml" nil)
+ (pdf ,(if (executable-find "rst2pdf.py") "rst2pdf.py" "rst2pdf")
+ ".pdf" nil)
+ (s5 ,(if (executable-find "rst2s5.py") "rst2s5.py" "rst2s5")
+ ".html" nil))
"Table describing the command to use for each toolset.
An association list of the toolset to a list of the (command to use,
extension of produced filename, options to the tool (nil or a
-string)) to be used for converting the document.")
+string)) to be used for converting the document."
+ :type '(alist :options (html latex newlatex pseudoxml xml pdf s5)
+ :key-type symbol
+ :value-type (list :tag "Specification"
+ (file :tag "Command")
+ (string :tag "File extension")
+ (choice :tag "Command options"
+ (const :tag "No options" nil)
+ (string :tag "Options"))))
+ :group 'rst
+ :version "24.1")
;; Note for Python programmers not familiar with association lists: you can set
;; values in an alists like this, e.g. :
@@ -3331,7 +3351,7 @@ or of the entire buffer, if the region is not selected."
(shell-command-on-region
(if mark-active (region-beginning) (point-min))
(if mark-active (region-end) (point-max))
- "rst2pseudoxml.py"
+ (cadr (assq 'pseudoxml rst-compile-toolsets))
standard-output)))
(defvar rst-pdf-program "xpdf"
@@ -3340,8 +3360,9 @@ or of the entire buffer, if the region is not selected."
(defun rst-compile-pdf-preview ()
"Convert the document to a PDF file and launch a preview program."
(interactive)
- (let* ((tmp-filename "/tmp/out.pdf")
- (command (format "rst2pdf.py %s %s && %s %s"
+ (let* ((tmp-filename (make-temp-file "rst-out" nil ".pdf"))
+ (command (format "%s %s %s && %s %s"
+ (cadr (assq 'pdf rst-compile-toolsets))
buffer-file-name tmp-filename
rst-pdf-program tmp-filename)))
(start-process-shell-command "rst-pdf-preview" nil command)
@@ -3355,8 +3376,9 @@ or of the entire buffer, if the region is not selected."
(defun rst-compile-slides-preview ()
"Convert the document to an S5 slide presentation and launch a preview program."
(interactive)
- (let* ((tmp-filename "/tmp/slides.html")
- (command (format "rst2s5.py %s %s && %s %s"
+ (let* ((tmp-filename (make-temp-file "rst-slides" nil ".html"))
+ (command (format "%s %s %s && %s %s"
+ (cadr (assq 's5 rst-compile-toolsets))
buffer-file-name tmp-filename
rst-slides-program tmp-filename)))
(start-process-shell-command "rst-slides-preview" nil command)
@@ -3454,11 +3476,10 @@ column is used (fill-column vs. end of previous/next line)."
"A portable function that returns non-nil if the mark is active."
(cond
((fboundp 'region-active-p) (region-active-p))
- ((boundp 'transient-mark-mode) transient-mark-mode mark-active)))
-
+ ((boundp 'transient-mark-mode) (and transient-mark-mode mark-active))
+ (t mark-active)))
(provide 'rst)
-;; arch-tag: 255ac0a3-a689-44cb-8643-04ca55ae490d
;;; rst.el ends here
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index a525c1a7e2..2229dc6c9e 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -1,7 +1,7 @@
;;; sgml-mode.el --- SGML- and HTML-editing modes -*- coding: utf-8 -*-
-;; Copyright (C) 1992, 1995, 1996, 1998, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1995-1996, 1998, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: James Clark <[email protected]>
;; Maintainer: FSF
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index eb2d4849a3..2dc4e4a88b 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -1,7 +1,6 @@
;;; table.el --- create and edit WYSIWYG text based embedded tables
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Keywords: wp, convenience
;; Author: Takaaki Ota <[email protected]>
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 08f8257407..428fc1db3a 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -1,7 +1,6 @@
;;; tex-mode.el --- TeX, LaTeX, and SliTeX mode commands -*- coding: utf-8 -*-
-;; Copyright (C) 1985, 1986, 1989, 1992, 1994, 1995, 1996, 1997, 1998
-;; 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1986, 1989, 1992, 1994-1999, 2001-2011
;; Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -791,20 +790,23 @@ Not smaller than the value set by `tex-suscript-height-minimum'."
(defun tex-font-lock-verb (start delim)
"Place syntax table properties on the \verb construct.
START is the position of the \\ and DELIM is the delimiter char."
- ;; Do nothing if the \verb construct is itself inside a comment or
- ;; verbatim env.
+ ;; Do nothing if the \verb construct is itself inside a comment or
+ ;; verbatim env.
(unless (nth 8 (save-excursion (syntax-ppss start)))
- ;; Let's find the end and mark it.
- ;; This may span more than a single line, but we don't bother
- ;; placing a syntax-multiline property since such multiline verbs aren't
- ;; valid anyway.
- (skip-chars-forward (string ?^ delim))
- (unless (eobp)
- (when (eq (char-syntax (preceding-char)) ?/)
- (put-text-property (1- (point)) (point)
- 'syntax-table (string-to-syntax ".")))
- (put-text-property (point) (1+ (point))
- 'syntax-table (string-to-syntax "\"")))))
+ ;; Let's find the end and mark it.
+ (let ((afterdelim (point)))
+ (skip-chars-forward (string ?^ delim) (line-end-position))
+ (if (eolp)
+ ;; "LaTeX Error: \verb ended by end of line."
+ ;; Remove the syntax-table property we've just put on the
+ ;; start-delimiter, so it doesn't spill over subsequent lines.
+ (put-text-property (1- afterdelim) afterdelim
+ 'syntax-table nil)
+ (when (eq (char-syntax (preceding-char)) ?/)
+ (put-text-property (1- (point)) (point)
+ 'syntax-table (string-to-syntax ".")))
+ (put-text-property (point) (1+ (point))
+ 'syntax-table (string-to-syntax "\""))))))
;; Use string syntax but math face for $...$.
(defun tex-font-lock-syntactic-face-function (state)
@@ -1810,11 +1812,70 @@ Mark is left at original location."
;; Why use a shell instead of running TeX directly? Because if TeX
;; gets stuck, the user can switch to the shell window and type at it.
+(defvar tex-error-parse-syntax-table
+ (let ((st (make-syntax-table)))
+ (modify-syntax-entry ?\( "()" st)
+ (modify-syntax-entry ?\) ")(" st)
+ (modify-syntax-entry ?\\ "\\" st)
+ (modify-syntax-entry ?\{ "_" st)
+ (modify-syntax-entry ?\} "_" st)
+ (modify-syntax-entry ?\[ "_" st)
+ (modify-syntax-entry ?\] "_" st)
+ ;; Single quotations may appear in errors
+ (modify-syntax-entry ?\" "_" st)
+ st)
+ "Syntax-table used while parsing TeX error messages.")
+
+(defun tex-old-error-file-name ()
+ ;; This is unreliable, partly because we don't try very hard, and
+ ;; partly because TeX's output format is eminently ambiguous and unfriendly
+ ;; to automation.
+ (save-excursion
+ (save-match-data
+ (with-syntax-table tex-error-parse-syntax-table
+ (beginning-of-line)
+ (backward-up-list 1)
+ (skip-syntax-forward "(_")
+ (while (not (let ((try-filename (thing-at-point 'filename)))
+ (and try-filename
+ (not (string= "" try-filename))
+ (file-readable-p try-filename))))
+ (skip-syntax-backward "(_")
+ (backward-up-list 1)
+ (skip-syntax-forward "(_"))
+ (thing-at-point 'filename)))))
+
+(defconst tex-error-regexp-alist
+ ;; First alternative handles the newer --file-line-error style:
+ ;; ./test2.tex:14: Too many }'s.
+ '(gnu
+ ;; Second handles the old-style, which spans two lines but doesn't include
+ ;; any file info:
+ ;; ! Too many }'s.
+ ;; l.396 toto}
+ ("^l\\.\\([1-9][0-9]*\\) \\(?:\\.\\.\\.\\)?\\(.*\\)$"
+ tex-old-error-file-name 1 nil nil nil
+ ;; Since there's no filename to highlight, let's highlight the message.
+ (2 compilation-error-face))
+ ;; A few common warning messages.
+ ("^\\(?:Und\\|Ov\\)erfull \\\\[hv]box .* at lines? \\(\\([1-9][0-9]*\\)\\(?:--\\([1-9][0-9]*\\)\\)?\\)$"
+ tex-old-error-file-name (2 . 3) nil 1 nil
+ (1 compilation-warning-face))
+ ("^(Font) *\\([^ \n].* on input line \\([1-9][0-9]*\\)\\)\\.$"
+ tex-old-error-file-name 2 nil 1 1
+ (2 compilation-warning-face))
+ ;; Included files get output as (<file> ...).
+ ;; FIXME: there tend to be a crapload of them at the beginning of the
+ ;; output which aren't that interesting. Maybe we should filter out
+ ;; all the file name that start with /usr/share?
+ ;; ("(\\.?/\\([^() \n]+\\)" 1 nil nil 0)
+ ))
+
;; The utility functions:
(define-derived-mode tex-shell shell-mode "TeX-Shell"
- (set (make-local-variable 'compilation-parse-errors-function)
- 'tex-compilation-parse-errors)
+ (set (make-local-variable 'compilation-error-regexp-alist)
+ tex-error-regexp-alist)
(compilation-shell-minor-mode t))
;;;###autoload
@@ -2312,113 +2373,6 @@ Only applies the FSPEC to the args part of FORMAT."
(tex-display-shell)
(setq tex-last-buffer-texed (current-buffer)))
-(defvar tex-error-parse-syntax-table
- (let ((st (make-syntax-table)))
- (modify-syntax-entry ?\( "()" st)
- (modify-syntax-entry ?\) ")(" st)
- (modify-syntax-entry ?\\ "\\" st)
- (modify-syntax-entry ?\{ "_" st)
- (modify-syntax-entry ?\} "_" st)
- (modify-syntax-entry ?\[ "_" st)
- (modify-syntax-entry ?\] "_" st)
- ;; Single quotations may appear in errors
- (modify-syntax-entry ?\" "_" st)
- st)
- "Syntax-table used while parsing TeX error messages.")
-
-(defun tex-compilation-parse-errors (limit-search find-at-least)
- "Parse the current buffer as TeX error messages.
-See the variable `compilation-parse-errors-function' for the interface it uses.
-
-This function parses only the last TeX compilation.
-It works on TeX compilations only. It is necessary for that purpose,
-since TeX does not put file names and line numbers on the same line as
-for the error messages."
- (require 'thingatpt)
- (setq compilation-error-list nil)
- (let ((default-directory ; Perhaps dir has changed meanwhile.
- (file-name-directory (buffer-file-name tex-last-buffer-texed)))
- found-desired (num-errors-found 0)
- last-filename last-linenum last-position
- begin-of-error end-of-error errfilename)
- ;; Don't reparse messages already seen at last parse.
- (goto-char compilation-parsing-end)
- ;; Parse messages.
- (while (and (not (or found-desired (eobp)))
- ;; First alternative handles the newer --file-line-error style:
- ;; ./test2.tex:14: Too many }'s.
- ;; Second handles the old-style:
- ;; ! Too many }'s.
- (prog1 (re-search-forward
- "^\\(?:\\([^:\n]+\\):[[:digit:]]+:\\|!\\) " nil 'move)
- (setq begin-of-error (match-beginning 0)
- end-of-error (match-end 0)
- errfilename (match-string 1)))
- (re-search-forward
- "^l\\.\\([0-9]+\\) \\(\\.\\.\\.\\)?\\(.*\\)$" nil 'move))
- (let* ((this-error (copy-marker begin-of-error))
- (linenum (string-to-number (match-string 1)))
- (error-text (regexp-quote (match-string 3)))
- try-filename
- (filename
- ;; Prefer --file-liner-error filename if we have it.
- (or errfilename
- (save-excursion
- (with-syntax-table tex-error-parse-syntax-table
- (backward-up-list 1)
- (skip-syntax-forward "(_")
- (while (not
- (and (setq try-filename (thing-at-point
- 'filename))
- (not (string= "" try-filename))
- (file-readable-p try-filename)))
- (skip-syntax-backward "(_")
- (backward-up-list 1)
- (skip-syntax-forward "(_"))
- (thing-at-point 'filename)))))
- (new-file
- (or (null last-filename)
- (not (string-equal last-filename filename))))
- (error-location
- (with-current-buffer
- (if (equal filename (concat tex-zap-file ".tex"))
- tex-last-buffer-texed
- (find-file-noselect filename))
- (save-excursion
- (if new-file
- (progn
- (goto-char (point-min))
- (forward-line (1- linenum))
- (setq last-position nil))
- (goto-char last-position)
- (forward-line (- linenum last-linenum)))
- ;; first try a forward search for the error text,
- ;; then a backward search limited by the last error.
- (let ((starting-point (point)))
- (or (re-search-forward error-text nil t)
- (re-search-backward error-text last-position t)
- (goto-char starting-point)))
- (point-marker)))))
- (goto-char this-error)
- (if (and compilation-error-list
- (or (and find-at-least
- (>= num-errors-found
- find-at-least))
- (and limit-search
- (>= end-of-error limit-search)))
- new-file)
- (setq found-desired t)
- (setq num-errors-found (1+ num-errors-found)
- last-filename filename
- last-linenum linenum
- last-position error-location
- compilation-error-list ; Add the new error
- (cons (cons this-error error-location)
- compilation-error-list))
- (goto-char end-of-error)))))
- (set-marker compilation-parsing-end (point))
- (setq compilation-error-list (nreverse compilation-error-list)))
-
;;; The commands:
(defun tex-region (beg end)
@@ -2915,5 +2869,4 @@ There might be text before point."
(provide 'tex-mode)
-;; arch-tag: c0a680b1-63aa-4547-84b9-4193c29c0080
;;; tex-mode.el ends here
diff --git a/lisp/textmodes/texinfmt.el b/lisp/textmodes/texinfmt.el
index 7c331c7809..d33cbb97dd 100644
--- a/lisp/textmodes/texinfmt.el
+++ b/lisp/textmodes/texinfmt.el
@@ -1,8 +1,7 @@
;;; texinfmt.el --- format Texinfo files into Info files
-;; Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-;; 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1986, 1988, 1990-1998, 2000-2011
+;; Free Software Foundation, Inc.
;; Maintainer: Robert J. Chassell <[email protected]>
;; Keywords: maint, tex, docs
diff --git a/lisp/textmodes/texinfo.el b/lisp/textmodes/texinfo.el
index ea691ee8ee..dfd12a005a 100644
--- a/lisp/textmodes/texinfo.el
+++ b/lisp/textmodes/texinfo.el
@@ -1,7 +1,6 @@
;;; texinfo.el --- major mode for editing Texinfo files -*- coding: utf-8 -*-
-;; Copyright (C) 1985, 1988, 1989, 1990, 1991, 1992, 1993, 1996, 1997,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985, 1988-1993, 1996-1997, 2000-2011
;; Free Software Foundation, Inc.
;; Author: Robert J. Chassell
@@ -1024,5 +1023,4 @@ You are prompted for the job number (use a number shown by a previous
(provide 'texinfo)
-;; arch-tag: 005d7c38-43b9-4b7d-aa1d-aea69bae73e1
;;; texinfo.el ends here
diff --git a/lisp/textmodes/texnfo-upd.el b/lisp/textmodes/texnfo-upd.el
index ff021532c5..12a3e2a620 100644
--- a/lisp/textmodes/texnfo-upd.el
+++ b/lisp/textmodes/texnfo-upd.el
@@ -1,7 +1,6 @@
;;; texnfo-upd.el --- utilities for updating nodes and menus in Texinfo files
-;; Copyright (C) 1989, 1990, 1991, 1992, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1989-1992, 2001-2011 Free Software Foundation, Inc.
;; Author: Robert J. Chassell
;; Maintainer: [email protected]
diff --git a/lisp/textmodes/text-mode.el b/lisp/textmodes/text-mode.el
index b6868d3a8e..3f6ad1faf8 100644
--- a/lisp/textmodes/text-mode.el
+++ b/lisp/textmodes/text-mode.el
@@ -1,7 +1,6 @@
;;; text-mode.el --- text mode, and its idiosyncratic commands
-;; Copyright (C) 1985, 1992, 1994, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1992, 1994, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: wp
@@ -182,5 +181,4 @@ The argument NLINES says how many lines to center."
(setq nlines (1+ nlines))
(forward-line -1)))))
-;; arch-tag: a07ccaad-da13-4d7b-9c61-cd04f5926aab
;;; text-mode.el ends here
diff --git a/lisp/textmodes/tildify.el b/lisp/textmodes/tildify.el
index c7238936b4..b5af00cc45 100644
--- a/lisp/textmodes/tildify.el
+++ b/lisp/textmodes/tildify.el
@@ -1,7 +1,6 @@
;;; tildify.el --- adding hard spaces into texts
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
;; Author: Milan Zamazal <[email protected]>
;; Version: 4.5
@@ -353,5 +352,4 @@ further questions)."
;; coding: iso-latin-2
;; End:
-;; arch-tag: fc9b05a6-7355-4639-8170-dcf57853ba22
;;; tildify.el ends here
diff --git a/lisp/textmodes/two-column.el b/lisp/textmodes/two-column.el
index c19be4bd66..68b858162d 100644
--- a/lisp/textmodes/two-column.el
+++ b/lisp/textmodes/two-column.el
@@ -1,7 +1,6 @@
;;; two-column.el --- minor mode for editing of two-column text
-;; Copyright (C) 1992, 1993, 1994, 1995, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992-1995, 2001-2011 Free Software Foundation, Inc.
;; Author: Daniel Pfeiffer <[email protected]>
;; Adapted-By: ESR, Daniel Pfeiffer
@@ -632,5 +631,4 @@ on, this also realigns the two buffers."
(provide 'two-column)
-;; arch-tag: 2021b5ab-d3a4-4a8c-a21c-1936b0f9e6b1
;;; two-column.el ends here
diff --git a/lisp/textmodes/underline.el b/lisp/textmodes/underline.el
index 13a661af43..2adac5a106 100644
--- a/lisp/textmodes/underline.el
+++ b/lisp/textmodes/underline.el
@@ -1,7 +1,6 @@
;;; underline.el --- insert/remove underlining (done by overstriking) in Emacs
-;; Copyright (C) 1985, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: wp
@@ -61,5 +60,4 @@ which specify the range to operate on."
(provide 'underline)
-;; arch-tag: e7b48582-c3ea-4386-987a-87415f3c372a
;;; underline.el ends here
diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el
index 62686e2218..020faa197c 100644
--- a/lisp/thingatpt.el
+++ b/lisp/thingatpt.el
@@ -1,8 +1,6 @@
;;; thingatpt.el --- get the `thing' at point
-;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000,
-;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1991-1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Mike Williams <[email protected]>
;; Maintainer: FSF
@@ -472,5 +470,4 @@ Signal an error if the entire string was not used."
"Return the Lisp list at point, or nil if none is found."
(form-at-point 'list 'listp))
-;; arch-tag: bb65a163-dae2-4055-aedc-fe11f497f698
;;; thingatpt.el ends here
diff --git a/lisp/thumbs.el b/lisp/thumbs.el
index f9f97b12c5..b251ca6024 100644
--- a/lisp/thumbs.el
+++ b/lisp/thumbs.el
@@ -1,6 +1,6 @@
;;; thumbs.el --- Thumbnails previewer for images files
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Jean-Philippe Theberge <[email protected]>
;; Maintainer: FSF
@@ -816,5 +816,4 @@ ACTION and ARG should be a valid convert command."
(provide 'thumbs)
-;; arch-tag: f9ac1ef8-83fc-42c0-8069-1fae43fd2e5c
;;; thumbs.el ends here
diff --git a/lisp/time-stamp.el b/lisp/time-stamp.el
index 3a5309ab21..9a9fc8b4a8 100644
--- a/lisp/time-stamp.el
+++ b/lisp/time-stamp.el
@@ -1,7 +1,7 @@
;;; time-stamp.el --- Maintain last change time stamps in files edited by Emacs
-;; Copyright (C) 1989, 1993, 1994, 1995, 1997, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1989, 1993-1995, 1997, 2000-2011
+;; Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -706,5 +706,4 @@ around literals."
(provide 'time-stamp)
-;; arch-tag: 8a12c5c3-25d6-4a71-adc5-24b0e025a1e7
;;; time-stamp.el ends here
diff --git a/lisp/time.el b/lisp/time.el
index 006fd758a7..1bc1cca111 100644
--- a/lisp/time.el
+++ b/lisp/time.el
@@ -1,7 +1,7 @@
;;; time.el --- display time, load and mail indicator in mode line of Emacs -*-coding: utf-8 -*-
-;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1996, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1993-1994, 1996, 2000-2011
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -463,7 +463,9 @@ update which can wait for the next redisplay."
"Toggle display of time, load level, and mail flag in mode lines.
With a numeric arg, enable this display if arg is positive.
-When this display is enabled, it updates automatically every minute.
+When this display is enabled, it updates automatically every minute
+\(you can control the number of seconds between updates by
+customizing `display-time-interval').
If `display-time-day-and-date' is non-nil, the current day and date
are displayed as well.
This runs the normal hook `display-time-hook' after each update."
@@ -574,5 +576,4 @@ For example, the Unix uptime command format is \"%D, %z%2h:%.2m\"."
(provide 'time)
-;; arch-tag: b9c1623f-b5cb-48e4-b650-482a4d23c5a6
;;; time.el ends here
diff --git a/lisp/timezone.el b/lisp/timezone.el
index 2fbcbd58b8..092d491a49 100644
--- a/lisp/timezone.el
+++ b/lisp/timezone.el
@@ -1,7 +1,7 @@
;;; timezone.el --- time zone package for GNU Emacs
-;; Copyright (C) 1990, 1991, 1992, 1993, 1996, 1999, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1990-1993, 1996, 1999, 2001-2011
+;; Free Software Foundation, Inc.
;; Author: Masanobu Umeda
;; Maintainer: [email protected]
@@ -403,5 +403,4 @@ The Gregorian date Sunday, December 31, 1 BC is imaginary."
(provide 'timezone)
-;; arch-tag: e23d5bc6-f32d-48ba-8996-323e9d654b3f
;;; timezone.el ends here
diff --git a/lisp/tmm.el b/lisp/tmm.el
index 0cbc72673a..52704e70a5 100644
--- a/lisp/tmm.el
+++ b/lisp/tmm.el
@@ -1,7 +1,6 @@
;;; tmm.el --- text mode access to menu-bar
-;; Copyright (C) 1994, 1995, 1996, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1996, 2000-2011 Free Software Foundation, Inc.
;; Author: Ilya Zakharevich <[email protected]>
;; Maintainer: FSF
@@ -168,14 +167,13 @@ Its value should be an event that has a binding in MENU."
;; It has no other elements.
;; The order of elements in tmm-km-list is the order of the menu bar.
(mapc (lambda (elt)
- (if (stringp elt)
- (setq gl-str elt)
- (cond
- ((listp elt) (tmm-get-keymap elt not-menu))
- ((vectorp elt)
- (dotimes (i (length elt))
- (tmm-get-keymap (cons i (aref elt i)) not-menu))))))
- menu)
+ (cond
+ ((stringp elt) (setq gl-str elt))
+ ((listp elt) (tmm-get-keymap elt not-menu))
+ ((vectorp elt)
+ (dotimes (i (length elt))
+ (tmm-get-keymap (cons i (aref elt i)) not-menu)))))
+ menu)
;; Choose an element of tmm-km-list; put it in choice.
(if (and not-menu (= 1 (length tmm-km-list)))
;; If this is the top-level of an x-popup-menu menu,
@@ -368,32 +366,31 @@ Stores a list of all the shortcuts in the free variable `tmm-short-cuts'."
(add-hook 'minibuffer-exit-hook 'tmm-delete-map nil t)
(unless tmm-c-prompt
(error "No active menu entries"))
- (let ((win (selected-window)))
- (setq tmm-old-mb-map (tmm-define-keys t))
- ;; Get window and hide it for electric mode to get correct size
- (save-window-excursion
- (let ((completions
- (mapcar 'car minibuffer-completion-table)))
- (or tmm-completion-prompt
- (add-hook 'completion-setup-hook
- 'tmm-completion-delete-prompt 'append))
- (unwind-protect
- (with-output-to-temp-buffer "*Completions*"
- (display-completion-list completions))
- (remove-hook 'completion-setup-hook 'tmm-completion-delete-prompt)))
- (set-buffer "*Completions*")
- (tmm-remove-inactive-mouse-face)
- (when tmm-completion-prompt
- (let ((buffer-read-only nil))
- (goto-char (point-min))
- (insert tmm-completion-prompt))))
- (save-selected-window
- (other-window 1) ; Electric-pop-up-window does
+ (setq tmm-old-mb-map (tmm-define-keys t))
+ ;; Get window and hide it for electric mode to get correct size
+ (save-window-excursion
+ (let ((completions
+ (mapcar 'car minibuffer-completion-table)))
+ (or tmm-completion-prompt
+ (add-hook 'completion-setup-hook
+ 'tmm-completion-delete-prompt 'append))
+ (unwind-protect
+ (with-output-to-temp-buffer "*Completions*"
+ (display-completion-list completions))
+ (remove-hook 'completion-setup-hook 'tmm-completion-delete-prompt)))
+ (set-buffer "*Completions*")
+ (tmm-remove-inactive-mouse-face)
+ (when tmm-completion-prompt
+ (let ((buffer-read-only nil))
+ (goto-char (point-min))
+ (insert tmm-completion-prompt))))
+ (save-selected-window
+ (other-window 1) ; Electric-pop-up-window does
; not work in minibuffer
- (Electric-pop-up-window "*Completions*")
- (with-current-buffer "*Completions*"
- (setq tmm-old-comp-map (tmm-define-keys nil))))
- (insert tmm-c-prompt)))
+ (Electric-pop-up-window "*Completions*")
+ (with-current-buffer "*Completions*"
+ (setq tmm-old-comp-map (tmm-define-keys nil))))
+ (insert tmm-c-prompt))
(defun tmm-delete-map ()
(remove-hook 'minibuffer-exit-hook 'tmm-delete-map t)
@@ -497,7 +494,7 @@ It uses the free variable `tmm-table-undef' to keep undefined keys."
(if (or in-x-menu (stringp (car-safe elt)))
(setq str event event nil km elt)
(setq str event event nil km (cons 'keymap elt)))))
- (unless (eq km 'ignore)
+ (unless (or (eq km 'ignore) (null str))
(let ((binding (where-is-internal km nil t)))
(when binding
(setq binding (key-description binding))
@@ -568,5 +565,4 @@ of `menu-bar-final-items'."
(provide 'tmm)
-;; arch-tag: e7ddbdb6-4b95-4da3-afbe-ad6063d112f4
;;; tmm.el ends here
diff --git a/lisp/tool-bar.el b/lisp/tool-bar.el
index a3292c4204..578de1def9 100644
--- a/lisp/tool-bar.el
+++ b/lisp/tool-bar.el
@@ -1,7 +1,6 @@
;;; tool-bar.el --- setting up the tool bar
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Keywords: mouse frames
@@ -139,6 +138,26 @@ Use this function only to make bindings in the global value of `tool-bar-map'.
To define items in any other map, use `tool-bar-local-item'."
(apply 'tool-bar-local-item icon def key tool-bar-map props))
+(defun tool-bar--image-expression (icon)
+ "Return an expression that evaluates to an image spec for ICON."
+ (let* ((fg (face-attribute 'tool-bar :foreground))
+ (bg (face-attribute 'tool-bar :background))
+ (colors (nconc (if (eq fg 'unspecified) nil (list :foreground fg))
+ (if (eq bg 'unspecified) nil (list :background bg))))
+ (xpm-spec (list :type 'xpm :file (concat icon ".xpm")))
+ (xpm-lo-spec (list :type 'xpm :file
+ (concat "low-color/" icon ".xpm")))
+ (pbm-spec (append (list :type 'pbm :file
+ (concat icon ".pbm")) colors))
+ (xbm-spec (append (list :type 'xbm :file
+ (concat icon ".xbm")) colors)))
+ `(find-image (cond ((not (display-color-p))
+ ',(list pbm-spec xbm-spec xpm-lo-spec xpm-spec))
+ ((< (display-color-cells) 256)
+ ',(list xpm-lo-spec xpm-spec pbm-spec xbm-spec))
+ (t
+ ',(list xpm-spec pbm-spec xbm-spec))))))
+
;;;###autoload
(defun tool-bar-local-item (icon def key map &rest props)
"Add an item to the tool bar in map MAP.
@@ -151,24 +170,7 @@ ICON is the base name of a file containing the image to use. The
function will first try to use low-color/ICON.xpm if `display-color-cells'
is less or equal to 256, then ICON.xpm, then ICON.pbm, and finally
ICON.xbm, using `find-image'."
- (let* ((fg (face-attribute 'tool-bar :foreground))
- (bg (face-attribute 'tool-bar :background))
- (colors (nconc (if (eq fg 'unspecified) nil (list :foreground fg))
- (if (eq bg 'unspecified) nil (list :background bg))))
- (xpm-spec (list :type 'xpm :file (concat icon ".xpm")))
- (xpm-lo-spec (list :type 'xpm :file
- (concat "low-color/" icon ".xpm")))
- (pbm-spec (append (list :type 'pbm :file
- (concat icon ".pbm")) colors))
- (xbm-spec (append (list :type 'xbm :file
- (concat icon ".xbm")) colors))
- (image-exp `(find-image
- (cond ((not (display-color-p))
- ',(list pbm-spec xbm-spec xpm-lo-spec xpm-spec))
- ((< (display-color-cells) 256)
- ',(list xpm-lo-spec xpm-spec pbm-spec xbm-spec))
- (t
- ',(list xpm-spec pbm-spec xbm-spec))))))
+ (let* ((image-exp (tool-bar--image-expression icon)))
(define-key-after map (vector key)
`(menu-item ,(symbol-name key) ,def :image ,image-exp ,@props))))
@@ -203,24 +205,7 @@ holds a keymap."
(setq from-map global-map))
(let* ((menu-bar-map (lookup-key from-map [menu-bar]))
(keys (where-is-internal command menu-bar-map))
- (fg (face-attribute 'tool-bar :foreground))
- (bg (face-attribute 'tool-bar :background))
- (colors (nconc (if (eq fg 'unspecified) nil (list :foreground fg))
- (if (eq bg 'unspecified) nil (list :background bg))))
- (xpm-spec (list :type 'xpm :file (concat icon ".xpm")))
- (xpm-lo-spec (list :type 'xpm :file
- (concat "low-color/" icon ".xpm")))
- (pbm-spec (append (list :type 'pbm :file
- (concat icon ".pbm")) colors))
- (xbm-spec (append (list :type 'xbm :file
- (concat icon ".xbm")) colors))
- (image-exp `(find-image
- (cond ((not (display-color-p))
- ',(list pbm-spec xbm-spec xpm-lo-spec xpm-spec))
- ((< (display-color-cells) 256)
- ',(list xpm-lo-spec xpm-spec pbm-spec xbm-spec))
- (t
- ',(list xpm-spec pbm-spec xbm-spec)))))
+ (image-exp (tool-bar--image-expression icon))
submap key)
;; We'll pick up the last valid entry in the list of keys if
;; there's more than one.
@@ -257,52 +242,42 @@ holds a keymap."
;;; Set up some global items. Additions/deletions up for grabs.
(defun tool-bar-setup ()
- ;; People say it's bad to have EXIT on the tool bar, since users
- ;; might inadvertently click that button.
- ;;(tool-bar-add-item-from-menu 'save-buffers-kill-emacs "exit")
+ (setq tool-bar-separator-image-expression
+ (tool-bar--image-expression "separator"))
(tool-bar-add-item-from-menu 'find-file "new" nil :label "New File"
:vert-only t)
(tool-bar-add-item-from-menu 'menu-find-file-existing "open" nil
- :vert-only t)
+ :label "Open" :vert-only t)
(tool-bar-add-item-from-menu 'dired "diropen" nil :vert-only t)
(tool-bar-add-item-from-menu 'kill-this-buffer "close" nil :vert-only t)
- (tool-bar-add-item-from-menu 'save-buffer "save" nil :vert-only t
- :visible '(or buffer-file-name
- (not (eq 'special
- (get major-mode
- 'mode-class)))))
- (tool-bar-add-item-from-menu 'undo "undo" nil :vert-only t
- :visible '(not (eq 'special (get major-mode
- 'mode-class))))
+ (tool-bar-add-item-from-menu 'save-buffer "save" nil
+ :label "Save")
+ (define-key-after (default-value 'tool-bar-map) [separator-1] menu-bar-separator)
+ (tool-bar-add-item-from-menu 'undo "undo" nil)
+ (define-key-after (default-value 'tool-bar-map) [separator-2] menu-bar-separator)
(tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [cut])
- "cut" nil :vert-only t
- :visible '(not (eq 'special (get major-mode
- 'mode-class))))
+ "cut" nil :vert-only t)
(tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [copy])
"copy" nil :vert-only t)
(tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [paste])
- "paste" nil :vert-only t
- :visible '(not (eq 'special (get major-mode
- 'mode-class))))
- (tool-bar-add-item-from-menu 'nonincremental-search-forward "search"
- nil :label "Search")
+ "paste" nil :vert-only t)
+ (define-key-after (default-value 'tool-bar-map) [separator-3] menu-bar-separator)
+ (tool-bar-add-item-from-menu 'isearch-forward "search"
+ nil :label "Search" :vert-only t)
;;(tool-bar-add-item-from-menu 'ispell-buffer "spell")
;; There's no icon appropriate for News and we need a command rather
;; than a lambda for Read Mail.
;;(tool-bar-add-item-from-menu 'compose-mail "mail/compose")
-
- ;; tool-bar-add-item-from-menu itself operates on
- ;; (default-value 'tool-bar-map), but when we don't use that function,
- ;; we must explicitly operate on the default value.
-
- (let ((tool-bar-map (default-value 'tool-bar-map)))
- (tool-bar-add-item "help" (lambda ()
- (interactive)
- (popup-menu menu-bar-help-menu))
- 'help
- :help "Pop up the Help menu")))
+ ;; Help button on a tool bar is rather non-standard...
+ ;; (let ((tool-bar-map (default-value 'tool-bar-map)))
+ ;; (tool-bar-add-item "help" (lambda ()
+ ;; (interactive)
+ ;; (popup-menu menu-bar-help-menu))
+ ;; 'help
+ ;; :help "Pop up the Help menu"))
+)
(if (featurep 'move-toolbar)
(defcustom tool-bar-position 'top
diff --git a/lisp/tooltip.el b/lisp/tooltip.el
index 5987b00f92..f135d98d71 100644
--- a/lisp/tooltip.el
+++ b/lisp/tooltip.el
@@ -1,7 +1,6 @@
;;; tooltip.el --- show tooltip windows
-;; Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1999-2011 Free Software Foundation, Inc.
;; Author: Gerd Moellmann <[email protected]>
;; Keywords: help c mouse tools
@@ -385,5 +384,4 @@ Value is non-nil if this function handled the tip."
(provide 'tooltip)
-;; arch-tag: 3d61135e-4618-4a78-af28-183f6df5636f
;;; tooltip.el ends here
diff --git a/lisp/tree-widget.el b/lisp/tree-widget.el
index d07c8b268d..77159573c9 100644
--- a/lisp/tree-widget.el
+++ b/lisp/tree-widget.el
@@ -1,6 +1,6 @@
;;; tree-widget.el --- Tree widget
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: David Ponce <[email protected]>
;; Maintainer: David Ponce <[email protected]>
@@ -818,5 +818,4 @@ That is, if TREE :args is nil."
(provide 'tree-widget)
-;; arch-tag: c3a1ada2-1663-41dc-9d16-2479ed8320e8
;;; tree-widget.el ends here
diff --git a/lisp/tutorial.el b/lisp/tutorial.el
index 6961fafb3a..77ef50843d 100644
--- a/lisp/tutorial.el
+++ b/lisp/tutorial.el
@@ -1,6 +1,6 @@
;;; tutorial.el --- tutorial for Emacs
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: help, internal
@@ -963,5 +963,4 @@ Currently this feature is only used in `help-with-tutorial'."
(provide 'tutorial)
-;; arch-tag: c8e80aef-c3bb-4ffb-8af6-22171bf0c100
;;; tutorial.el ends here
diff --git a/lisp/type-break.el b/lisp/type-break.el
index 83278cbc6c..e6782fa23f 100644
--- a/lisp/type-break.el
+++ b/lisp/type-break.el
@@ -1,7 +1,6 @@
;;; type-break.el --- encourage rests from typing at appropriate intervals
-;; Copyright (C) 1994, 1995, 1997, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1995, 1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Noah Friedman
;; Maintainer: Noah Friedman <[email protected]>
diff --git a/lisp/uniquify.el b/lisp/uniquify.el
index a654b2dcfc..e894127cdb 100644
--- a/lisp/uniquify.el
+++ b/lisp/uniquify.el
@@ -1,7 +1,6 @@
;;; uniquify.el --- unique buffer names dependent on file name
-;; Copyright (C) 1989, 1995, 1996, 1997, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1989, 1995-1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Dick King <[email protected]>
;; Maintainer: FSF
@@ -508,5 +507,4 @@ For use on `kill-buffer-hook'."
(provide 'uniquify)
-;; arch-tag: e763faa3-56c9-4903-8eb8-26e1c45a0065
;;; uniquify.el ends here
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 44cc511c99..a557f8d0e3 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,20 @@
+2010-12-16 Miles Bader <Miles Bader <[email protected]>>
+
+ * url-cookie.el: Require 'cl when compiling -- it's necessary for
+ defstruct.
+
+2010-12-14 Glenn Morris <[email protected]>
+
+ * url-cookie.el: Don't require cl when compiling.
+ (url-cookie-clean-up, url-cookie-generate-header-lines): Use dolist.
+ (url-cookie-parse-file, url-cookie-store, url-cookie-retrieve)
+ (url-cookie-handle-set-cookie): Simplify.
+
+2010-12-13 Chong Yidong <[email protected]>
+
+ * url-cookie.el (url-cookie-retrieve): Handle null LOCALPART.
+ Suggested by Lennart Borgman (Bug#7543).
+
2010-11-16 Lars Magne Ingebrigtsen <[email protected]>
* url-file.el (url-file-build-filename): Avoid interpreting
@@ -14,8 +31,8 @@
2010-10-04 Lars Magne Ingebrigtsen <[email protected]>
- * url-http.el (url-http-wait-for-headers-change-function): Protect
- against url-http-response-status for degenerate documents.
+ * url-http.el (url-http-wait-for-headers-change-function):
+ Protect against url-http-response-status for degenerate documents.
(url-http-wait-for-headers-change-function): Revert previous
change. It lead to really slow loads.
@@ -31,7 +48,7 @@
2010-10-03 Lars Magne Ingebrigtsen <[email protected]>
- * url-vars.el (url-mime-charset-string): Changed the default to
+ * url-vars.el (url-mime-charset-string): Change the default to
nil to avoid sending 1171 bytes of not very useful data to the
HTTP server every request.
@@ -119,8 +136,8 @@
2010-07-01 Mark A. Hershberger <[email protected]>
* url-http.el (url-http-create-request): Add a CRLF on the end so
- that POSTs with content to https urls work. See
- <https://bugs.launchpad.net/mediawiki-el/+bug/540759>
+ that POSTs with content to https urls work.
+ See <https://bugs.launchpad.net/mediawiki-el/+bug/540759>
2010-06-22 Mark A. Hershberger <[email protected]>
@@ -602,8 +619,8 @@
* url-http.el (url-http-proxy): New variable.
(url-http-create-request): Use it. Don't use `url-proxy-object'.
(url-http): Treat `url' argument as resource to download, and
- dynamic variable `url-using-proxy' as proxy to use. Set
- `url-current-object' to actual URL, and `url-http-proxy' to proxy
+ dynamic variable `url-using-proxy' as proxy to use.
+ Set `url-current-object' to actual URL, and `url-http-proxy' to proxy
used.
(url-http-handle-cookies): Assume that `url-current-object' does
not point to the proxy used.
@@ -619,24 +636,24 @@
(url-proxy): Bind it instead of `proxy-object'.
* url-http.el (url-http-create-request): Remove url argument, use
- the buffer-local variable `url-http-target-url' instead. Both
- callers updated. Simplify proxy handling.
+ the buffer-local variable `url-http-target-url' instead.
+ Both callers updated. Simplify proxy handling.
(url-http): Don't make proxy-object buffer local.
* url.el (url-retrieve-internal): Bind url-proxy-object to nil.
2006-11-26 Magnus Henoch <[email protected]>
- * url-http.el (url-http-wait-for-headers-change-function): Use
- `when' instead of `if' when possible.
+ * url-http.el (url-http-wait-for-headers-change-function):
+ Use `when' instead of `if' when possible.
(url-http): Define url-http-response-version.
(url-http-parse-response): Set it.
(url-http-parse-headers): Use it to determine keep-alive behavior.
2006-11-23 Diane Murray <[email protected]> (tiny change)
- * url-http.el (url-http-content-length-after-change-function): Use
- `url-lazy-message'.
+ * url-http.el (url-http-content-length-after-change-function):
+ Use `url-lazy-message'.
* url-util.el (url-display-percentage): Only show a message if
`url-show-status' is non-nil.
@@ -1018,8 +1035,8 @@
(url-cookie-generate-header-lines): Likewise.
(url-cookie-handle-set-cookie): Likewise.
(url-cookie-create): Expect :localpart instead of :path.
- (url-cookie-localpart): Renamed from url-cookie-path.
- (url-cookie-set-localpart): Renamed from url-cookie-set-path.
+ (url-cookie-localpart): Rename from url-cookie-path.
+ (url-cookie-set-localpart): Rename from url-cookie-set-path.
(url-cookie-file): Doc fix.
(url-cookie-p): Add doc string.
@@ -2236,7 +2253,7 @@
message when we have to contact a host so the user always gets
at least some feedback.
- * lisp/url-expand.el (url-expander-remove-relative-links): Moved and
+ * lisp/url-expand.el (url-expander-remove-relative-links): Move and
renamed function.
(url-default-expander): Use it.
@@ -2358,11 +2375,9 @@
;; Local variables:
;; coding: utf-8
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 1999, 2001, 2002, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2001-2002, 2004-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -2379,4 +2394,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;; arch-tag: ac117078-3091-4533-be93-098162ac2926
diff --git a/lisp/url/url-about.el b/lisp/url/url-about.el
index 4dc7d294d1..b6f54db038 100644
--- a/lisp/url/url-about.el
+++ b/lisp/url/url-about.el
@@ -1,7 +1,6 @@
;;; url-about.el --- Show internal URLs
-;; Copyright (C) 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes, hypermedia
@@ -99,5 +98,4 @@
(provide 'url-about)
-;; arch-tag: 65dd7fca-db3f-4cb1-8026-7dd37d4a460e
;;; url-about.el ends here
diff --git a/lisp/url/url-auth.el b/lisp/url/url-auth.el
index d8f51a9943..842e2a3be8 100644
--- a/lisp/url/url-auth.el
+++ b/lisp/url/url-auth.el
@@ -1,7 +1,6 @@
;;; url-auth.el --- Uniform Resource Locator authorization modules
-;; Copyright (C) 1996, 1997, 1998, 1999, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes, hypermedia
@@ -345,5 +344,4 @@ RATING a rating between 1 and 10 of the strength of the authentication.
(provide 'url-auth)
-;; arch-tag: 04058625-616d-44e4-9dbf-4b46b00b2a91
;;; url-auth.el ends here
diff --git a/lisp/url/url-cache.el b/lisp/url/url-cache.el
index 4ef8ab5d90..1615920e64 100644
--- a/lisp/url/url-cache.el
+++ b/lisp/url/url-cache.el
@@ -1,7 +1,6 @@
;;; url-cache.el --- Uniform Resource Locator retrieval tool
-;; Copyright (C) 1996, 1997, 1998, 1999, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes, hypermedia
@@ -211,5 +210,4 @@ If `url-standalone-mode' is non-nil, cached items never expire."
(provide 'url-cache)
-;; arch-tag: 95b050a6-8e81-4f23-8e63-191b9d1d657c
;;; url-cache.el ends here
diff --git a/lisp/url/url-cid.el b/lisp/url/url-cid.el
index 09a2bce440..a5371a423e 100644
--- a/lisp/url/url-cid.el
+++ b/lisp/url/url-cid.el
@@ -1,7 +1,6 @@
;;; url-cid.el --- Content-ID URL loader
-;; Copyright (C) 1998, 1999, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1998-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes
@@ -59,5 +58,4 @@
(t
(message "Unable to handle CID URL: %s" url))))
-;; arch-tag: 23d9ab74-fad4-4dba-b1e7-292871e8bda5
;;; url-cid.el ends here
diff --git a/lisp/url/url-cookie.el b/lisp/url/url-cookie.el
index e056db38a9..c55063dfba 100644
--- a/lisp/url/url-cookie.el
+++ b/lisp/url/url-cookie.el
@@ -1,7 +1,6 @@
-;;; url-cookie.el --- Netscape Cookie support
+;;; url-cookie.el --- URL cookie support
-;; Copyright (C) 1996, 1997, 1998, 1999, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes, hypermedia
@@ -26,10 +25,8 @@
(require 'url-util)
(require 'url-parse)
-(eval-when-compile (require 'cl))
-;; See http://home.netscape.com/newsref/std/cookie_spec.html for the
-;; 'open standard' defining this crap.
+(eval-when-compile (require 'cl)) ; defstruct
(defgroup url-cookie nil
"URL cookies."
@@ -76,41 +73,23 @@ telling Microsoft that."
"Whether the cookies list has changed since the last save operation.")
(defun url-cookie-parse-file (&optional fname)
- (setq fname (or fname url-cookie-file))
- (condition-case ()
- (load fname nil t)
- (error
- ;; It's completely normal for the cookies file not to exist yet.
- ;; (message "Could not load cookie file %s" fname)
- )))
+ "Load FNAME, default `url-cookie-file'."
+ ;; It's completely normal for the cookies file not to exist yet.
+ (load (or fname url-cookie-file) t t))
(declare-function url-cookie-p "url-cookie" t t) ; defstruct
(defun url-cookie-clean-up (&optional secure)
- (let* (
- (var (if secure 'url-cookie-secure-storage 'url-cookie-storage))
- (val (symbol-value var))
- (cur nil)
- (new nil)
- (cookies nil)
- (cur-cookie nil)
- (new-cookies nil)
- )
- (while val
- (setq cur (car val)
- val (cdr val)
- new-cookies nil
- cookies (cdr cur))
- (while cookies
- (setq cur-cookie (car cookies)
- cookies (cdr cookies))
- (if (or (not (url-cookie-p cur-cookie))
- (url-cookie-expired-p cur-cookie)
- (null (url-cookie-expires cur-cookie)))
- nil
- (setq new-cookies (cons cur-cookie new-cookies))))
- (if (not new-cookies)
- nil
+ (let ((var (if secure 'url-cookie-secure-storage 'url-cookie-storage))
+ new new-cookies)
+ (dolist (cur (symbol-value var))
+ (setq new-cookies nil)
+ (dolist (cur-cookie (cdr cur))
+ (or (not (url-cookie-p cur-cookie))
+ (url-cookie-expired-p cur-cookie)
+ (null (url-cookie-expires cur-cookie))
+ (setq new-cookies (cons cur-cookie new-cookies))))
+ (when new-cookies
(setcdr cur new-cookies)
(setq new (cons cur new))))
(set var new)))
@@ -143,54 +122,42 @@ telling Microsoft that."
(setq url-cookies-changed-since-last-save nil))))
(defun url-cookie-store (name value &optional expires domain localpart secure)
- "Store a netscape-style cookie."
- (let* ((storage (if secure url-cookie-secure-storage url-cookie-storage))
- (tmp storage)
- (cur nil)
- (found-domain nil))
-
- ;; First, look for a matching domain
- (setq found-domain (assoc domain storage))
-
- (if found-domain
+ "Store a cookie."
+ (let ((storage (if secure url-cookie-secure-storage url-cookie-storage))
+ tmp found-domain)
+ ;; First, look for a matching domain.
+ (if (setq found-domain (assoc domain storage))
;; Need to either stick the new cookie in existing domain storage
;; or possibly replace an existing cookie if the names match.
- (progn
- (setq storage (cdr found-domain)
- tmp nil)
- (while storage
- (setq cur (car storage)
- storage (cdr storage))
- (if (and (equal localpart (url-cookie-localpart cur))
- (equal name (url-cookie-name cur)))
- (progn
- (setf (url-cookie-expires cur) expires)
- (setf (url-cookie-value cur) value)
- (setq tmp t))))
- (if (not tmp)
- ;; New cookie
- (setcdr found-domain (cons
- (url-cookie-create :name name
- :value value
- :expires expires
- :domain domain
- :localpart localpart
- :secure secure)
- (cdr found-domain)))))
- ;; Need to add a new top-level domain
+ (unless (dolist (cur (setq storage (cdr found-domain)) tmp)
+ (and (equal localpart (url-cookie-localpart cur))
+ (equal name (url-cookie-name cur))
+ (progn
+ (setf (url-cookie-expires cur) expires)
+ (setf (url-cookie-value cur) value)
+ (setq tmp t))))
+ ;; New cookie.
+ (setcdr found-domain (cons
+ (url-cookie-create :name name
+ :value value
+ :expires expires
+ :domain domain
+ :localpart localpart
+ :secure secure)
+ (cdr found-domain))))
+ ;; Need to add a new top-level domain.
(setq tmp (url-cookie-create :name name
:value value
:expires expires
:domain domain
:localpart localpart
:secure secure))
- (cond
- (storage
- (setcdr storage (cons (list domain tmp) (cdr storage))))
- (secure
- (setq url-cookie-secure-storage (list (list domain tmp))))
- (t
- (setq url-cookie-storage (list (list domain tmp))))))))
+ (cond (storage
+ (setcdr storage (cons (list domain tmp) (cdr storage))))
+ (secure
+ (setq url-cookie-secure-storage (list (list domain tmp))))
+ (t
+ (setq url-cookie-storage (list (list domain tmp))))))))
(defun url-cookie-expired-p (cookie)
"Return non-nil if COOKIE is expired."
@@ -198,19 +165,14 @@ telling Microsoft that."
(and exp (> (float-time) (float-time (date-to-time exp))))))
(defun url-cookie-retrieve (host &optional localpart secure)
- "Retrieve all the netscape-style cookies for a specified HOST and LOCALPART."
+ "Retrieve all cookies for a specified HOST and LOCALPART."
(let ((storage (if secure
(append url-cookie-secure-storage url-cookie-storage)
url-cookie-storage))
(case-fold-search t)
- (cookies nil)
- (cur nil)
- (retval nil)
- (localpart-match nil))
- (while storage
- (setq cur (car storage)
- storage (cdr storage)
- cookies (cdr cur))
+ cookies retval localpart-match)
+ (dolist (cur storage)
+ (setq cookies (cdr cur))
(if (and (car cur)
(string-match
(concat "^.*"
@@ -222,35 +184,28 @@ telling Microsoft that."
(car cur)))
"$") host))
;; The domains match - a possible hit!
- (while cookies
- (setq cur (car cookies)
- cookies (cdr cookies)
- localpart-match (url-cookie-localpart cur))
- (if (and (if (stringp localpart-match)
- (string-match (concat "^" (regexp-quote
- localpart-match))
- localpart)
- (equal localpart localpart-match))
- (not (url-cookie-expired-p cur)))
- (setq retval (cons cur retval))))))
+ (dolist (cur cookies)
+ (and (if (and (stringp
+ (setq localpart-match (url-cookie-localpart cur)))
+ (stringp localpart))
+ (string-match (concat "^" (regexp-quote localpart-match))
+ localpart)
+ (equal localpart localpart-match))
+ (not (url-cookie-expired-p cur))
+ (setq retval (cons cur retval))))))
retval))
(defun url-cookie-generate-header-lines (host localpart secure)
- (let* ((cookies (url-cookie-retrieve host localpart secure))
- (retval nil)
- (cur nil)
- (chunk nil))
- ;; Have to sort this for sending most specific cookies first
+ (let ((cookies (url-cookie-retrieve host localpart secure))
+ retval chunk)
+ ;; Have to sort this for sending most specific cookies first.
(setq cookies (and cookies
(sort cookies
- (function
- (lambda (x y)
- (> (length (url-cookie-localpart x))
- (length (url-cookie-localpart y))))))))
- (while cookies
- (setq cur (car cookies)
- cookies (cdr cookies)
- chunk (format "%s=%s" (url-cookie-name cur) (url-cookie-value cur))
+ (lambda (x y)
+ (> (length (url-cookie-localpart x))
+ (length (url-cookie-localpart y)))))))
+ (dolist (cur cookies)
+ (setq chunk (format "%s=%s" (url-cookie-name cur) (url-cookie-value cur))
retval (if (and url-cookie-multiple-line
(< 80 (+ (length retval) (length chunk) 4)))
(concat retval "\r\nCookie: " chunk)
@@ -320,40 +275,38 @@ telling Microsoft that."
(file-name-directory
(url-filename url-current-object))))
(rest nil))
- (while args
- (if (not (member (downcase (car (car args)))
- '("secure" "domain" "expires" "path")))
- (setq rest (cons (car args) rest)))
- (setq args (cdr args)))
+ (dolist (this args)
+ (or (member (downcase (car this)) '("secure" "domain" "expires" "path"))
+ (setq rest (cons this rest))))
;; Sometimes we get dates that the timezone package cannot handle very
;; gracefully - take care of this here, instead of in url-cookie-expired-p
;; to speed things up.
- (if (and expires
- (string-match
- (concat "^[^,]+, +\\(..\\)-\\(...\\)-\\(..\\) +"
- "\\(..:..:..\\) +\\[*\\([^\]]+\\)\\]*$")
- expires))
- (setq expires (concat (match-string 1 expires) " "
- (match-string 2 expires) " "
- (match-string 3 expires) " "
- (match-string 4 expires) " ["
- (match-string 5 expires) "]")))
+ (and expires
+ (string-match
+ (concat "^[^,]+, +\\(..\\)-\\(...\\)-\\(..\\) +"
+ "\\(..:..:..\\) +\\[*\\([^\]]+\\)\\]*$")
+ expires)
+ (setq expires (concat (match-string 1 expires) " "
+ (match-string 2 expires) " "
+ (match-string 3 expires) " "
+ (match-string 4 expires) " ["
+ (match-string 5 expires) "]")))
;; This one is for older Emacs/XEmacs variants that don't
;; understand this format without tenths of a second in it.
;; Wednesday, 30-Dec-2037 16:00:00 GMT
;; - vs -
;; Wednesday, 30-Dec-2037 16:00:00.00 GMT
- (if (and expires
- (string-match
- "\\([0-9]+\\)-\\([A-Za-z]+\\)-\\([0-9]+\\)[ \t]+\\([0-9]+:[0-9]+:[0-9]+\\)\\(\\.[0-9]+\\)*[ \t]+\\([-+a-zA-Z0-9]+\\)"
- expires))
- (setq expires (concat (match-string 1 expires) "-" ; day
- (match-string 2 expires) "-" ; month
- (match-string 3 expires) " " ; year
- (match-string 4 expires) ".00 " ; hour:minutes:seconds
- (match-string 6 expires)))) ":" ; timezone
+ (and expires
+ (string-match
+ "\\([0-9]+\\)-\\([A-Za-z]+\\)-\\([0-9]+\\)[ \t]+\\([0-9]+:[0-9]+:[0-9]+\\)\\(\\.[0-9]+\\)*[ \t]+\\([-+a-zA-Z0-9]+\\)"
+ expires)
+ (setq expires (concat (match-string 1 expires) "-" ; day
+ (match-string 2 expires) "-" ; month
+ (match-string 3 expires) " " ; year
+ (match-string 4 expires) ".00 " ; hour:minutes:seconds
+ (match-string 6 expires)))) ":" ; timezone
(while (consp trusted)
(if (string-match (car trusted) current-url)
@@ -363,42 +316,36 @@ telling Microsoft that."
(if (string-match (car untrusted) current-url)
(setq untrusted (- (match-end 0) (match-beginning 0)))
(pop untrusted)))
- (if (and trusted untrusted)
- ;; Choose the more specific match
- (if (> trusted untrusted)
- (setq untrusted nil)
- (setq trusted nil)))
+ (and trusted untrusted
+ ;; Choose the more specific match.
+ (set (if (> trusted untrusted) 'untrusted 'trusted) nil))
(cond
(untrusted
- ;; The site was explicity marked as untrusted by the user
+ ;; The site was explicity marked as untrusted by the user.
nil)
((or (eq url-privacy-level 'paranoid)
(and (listp url-privacy-level) (memq 'cookies url-privacy-level)))
- ;; user never wants cookies
+ ;; User never wants cookies.
nil)
((and url-cookie-confirmation
(not trusted)
(save-window-excursion
(with-output-to-temp-buffer "*Cookie Warning*"
(mapcar
- (function
- (lambda (x)
- (princ (format "%s - %s" (car x) (cdr x))))) rest))
+ (lambda (x)
+ (princ (format "%s - %s" (car x) (cdr x)))) rest))
(prog1
(not (funcall url-confirmation-func
(format "Allow %s to set these cookies? "
(url-host url-current-object))))
(if (get-buffer "*Cookie Warning*")
(kill-buffer "*Cookie Warning*")))))
- ;; user wants to be asked, and declined.
+ ;; User wants to be asked, and declined.
nil)
((url-cookie-host-can-set-p (url-host url-current-object) domain)
- ;; Cookie is accepted by the user, and passes our security checks
- (let ((cur nil))
- (while rest
- (setq cur (pop rest))
- (url-cookie-store (car cur) (cdr cur)
- expires domain localpart secure))))
+ ;; Cookie is accepted by the user, and passes our security checks.
+ (dolist (cur rest)
+ (url-cookie-store (car cur) (cdr cur) expires domain localpart secure)))
(t
(url-lazy-message "%s tried to set a cookie for domain %s - rejected."
(url-host url-current-object) domain)))))
@@ -429,5 +376,4 @@ to run the `url-cookie-setup-save-timer' function manually."
(provide 'url-cookie)
-;; arch-tag: 2568751b-6452-4398-aa2d-303edadb54d7
;;; url-cookie.el ends here
diff --git a/lisp/url/url-dav.el b/lisp/url/url-dav.el
index 0a8f7b8821..3d1f6afcb0 100644
--- a/lisp/url/url-dav.el
+++ b/lisp/url/url-dav.el
@@ -1,7 +1,6 @@
;;; url-dav.el --- WebDAV support
-;; Copyright (C) 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2004-2011 Free Software Foundation, Inc.
;; Author: Bill Perry <[email protected]>
;; Maintainer: Bill Perry <[email protected]>
@@ -963,5 +962,4 @@ Returns nil if URL contains no name starting with FILE."
(provide 'url-dav)
-;; arch-tag: 2b14b7b3-888a-49b8-a490-17276a40e78e
;;; url-dav.el ends here
diff --git a/lisp/url/url-dired.el b/lisp/url/url-dired.el
index 143c5721b3..bb29fecb65 100644
--- a/lisp/url/url-dired.el
+++ b/lisp/url/url-dired.el
@@ -1,7 +1,6 @@
;;; url-dired.el --- URL Dired minor mode
-;; Copyright (C) 1996, 1997, 1998, 1999, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, files
@@ -55,5 +54,4 @@
(provide 'url-dired)
-;; arch-tag: 2694f21a-43e1-4391-b3cb-cf6e5349f15f
;;; url-dired.el ends here
diff --git a/lisp/url/url-expand.el b/lisp/url/url-expand.el
index f59dadcadc..1781c36295 100644
--- a/lisp/url/url-expand.el
+++ b/lisp/url/url-expand.el
@@ -1,7 +1,6 @@
;;; url-expand.el --- expand-file-name for URLs
-;; Copyright (C) 1999, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes
@@ -144,5 +143,4 @@ path components followed by `..' are removed, along with the `..' itself."
(provide 'url-expand)
-;; arch-tag: 7b5f744b-b721-49da-be47-484631680a5a
;;; url-expand.el ends here
diff --git a/lisp/url/url-file.el b/lisp/url/url-file.el
index 22d74b3371..28fb59cd11 100644
--- a/lisp/url/url-file.el
+++ b/lisp/url/url-file.el
@@ -1,7 +1,6 @@
;;; url-file.el --- File retrieval code
-;; Copyright (C) 1996, 1997, 1998, 1999, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes
@@ -241,5 +240,4 @@ to them."
(provide 'url-file)
-;; arch-tag: 010e914a-7313-494b-8a8c-6495a862157d
;;; url-file.el ends here
diff --git a/lisp/url/url-ftp.el b/lisp/url/url-ftp.el
index 0d7fcdac46..670094d80c 100644
--- a/lisp/url/url-ftp.el
+++ b/lisp/url/url-ftp.el
@@ -1,7 +1,6 @@
;;; url-ftp.el --- FTP wrapper
-;; Copyright (C) 1996, 1997, 1998, 1999, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes
@@ -41,5 +40,4 @@
(provide 'url-ftp)
-;; arch-tag: 9c3e70c4-350f-4d4a-bb51-a1e9b459e7dc
;;; url-ftp.el ends here
diff --git a/lisp/url/url-gw.el b/lisp/url/url-gw.el
index 4358255bde..2ba2358352 100644
--- a/lisp/url/url-gw.el
+++ b/lisp/url/url-gw.el
@@ -1,7 +1,6 @@
;;; url-gw.el --- Gateway munging for URL loading
-;; Copyright (C) 1997, 1998, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2004-2011 Free Software Foundation, Inc.
;; Author: Bill Perry <[email protected]>
;; Keywords: comm, data, processes
@@ -276,5 +275,4 @@ Might do a non-blocking connection; use `process-status' to check."
(provide 'url-gw)
-;; arch-tag: 1c4c0317-6d03-45b8-b3f3-838bd8f9d838
;;; url-gw.el ends here
diff --git a/lisp/url/url-handlers.el b/lisp/url/url-handlers.el
index a53d24c2de..fef0ef15e9 100644
--- a/lisp/url/url-handlers.el
+++ b/lisp/url/url-handlers.el
@@ -1,7 +1,6 @@
;;; url-handlers.el --- file-name-handler stuff for URL loading
-;; Copyright (C) 1996, 1997, 1998, 1999, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes, hypermedia
@@ -325,5 +324,4 @@ They count bytes from the beginning of the body."
(provide 'url-handlers)
-;; arch-tag: 7300b99c-cc83-42ff-9147-79b2723c62ac
;;; url-handlers.el ends here
diff --git a/lisp/url/url-history.el b/lisp/url/url-history.el
index 0cc891b32b..3827f9a5d4 100644
--- a/lisp/url/url-history.el
+++ b/lisp/url/url-history.el
@@ -1,7 +1,6 @@
;;; url-history.el --- Global history tracking for URL package
-;; Copyright (C) 1996, 1997, 1998, 1999, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes, hypermedia
@@ -184,5 +183,4 @@ user for what type to save as."
(provide 'url-history)
-;; arch-tag: fbbbaf63-db36-4e88-bc9f-2939aa93afb2
;;; url-history.el ends here
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index 9bfb6df1d4..7b82f11470 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -1,7 +1,6 @@
;;; url-http.el --- HTTP retrieval routines
-;; Copyright (C) 1999, 2001, 2004, 2005, 2006, 2007, 2008, 2009,
-;; 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2001, 2004-2011 Free Software Foundation, Inc.
;; Author: Bill Perry <[email protected]>
;; Keywords: comm, data, processes
@@ -1453,5 +1452,4 @@ p3p
(provide 'url-http)
-;; arch-tag: ba7c59ae-c0f4-4a31-9617-d85f221732ee
;;; url-http.el ends here
diff --git a/lisp/url/url-imap.el b/lisp/url/url-imap.el
index 8a36025af6..3f7d1ec923 100644
--- a/lisp/url/url-imap.el
+++ b/lisp/url/url-imap.el
@@ -1,6 +1,6 @@
;;; url-imap.el --- IMAP retrieval routines
-;; Copyright (C) 1999, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2004-2011 Free Software Foundation, Inc.
;; Author: Simon Josefsson <[email protected]>
;; Keywords: comm, data, processes
@@ -76,5 +76,4 @@
)))
(current-buffer)))
-;; arch-tag: 034991ff-5425-48ea-b911-c96c90e6f47d
;;; url-imap.el ends here
diff --git a/lisp/url/url-irc.el b/lisp/url/url-irc.el
index 715eecd211..d5f2a99a91 100644
--- a/lisp/url/url-irc.el
+++ b/lisp/url/url-irc.el
@@ -1,7 +1,6 @@
;;; url-irc.el --- IRC URL interface
-;; Copyright (C) 1996, 1997, 1998, 1999, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes
@@ -91,5 +90,4 @@ PASSWORD - What password to use"
(provide 'url-irc)
-;; arch-tag: 2e5eecf8-9eb3-436b-9fbd-c26f2fb2bf3e
;;; url-irc.el ends here
diff --git a/lisp/url/url-ldap.el b/lisp/url/url-ldap.el
index d782594e2e..bb937a4442 100644
--- a/lisp/url/url-ldap.el
+++ b/lisp/url/url-ldap.el
@@ -1,6 +1,6 @@
;;; url-ldap.el --- LDAP Uniform Resource Locator retrieval code
-;; Copyright (C) 1998, 1999, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes
@@ -237,5 +237,4 @@ URL can be a URL string, or a URL vector of the type returned by
(provide 'url-ldap)
-;; arch-tag: 6230e21c-41ae-4174-bd83-82c835676fc8
;;; url-ldap.el ends here
diff --git a/lisp/url/url-mailto.el b/lisp/url/url-mailto.el
index 3628205e26..c0472a92bb 100644
--- a/lisp/url/url-mailto.el
+++ b/lisp/url/url-mailto.el
@@ -1,7 +1,6 @@
;;; url-mail.el --- Mail Uniform Resource Locator retrieval code
-;; Copyright (C) 1996, 1997, 1998, 1999, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes
@@ -142,5 +141,4 @@
(provide 'url-mailto)
-;; arch-tag: 7b7ad52e-8760-497b-9444-75fae14e34c5
;;; url-mailto.el ends here
diff --git a/lisp/url/url-methods.el b/lisp/url/url-methods.el
index f7b9f98ad1..3b86ed4556 100644
--- a/lisp/url/url-methods.el
+++ b/lisp/url/url-methods.el
@@ -1,7 +1,6 @@
;;; url-methods.el --- Load URL schemes as needed
-;; Copyright (C) 1996, 1997, 1998, 1999, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes, hypermedia
@@ -154,5 +153,4 @@ it has not already been loaded."
(provide 'url-methods)
-;; arch-tag: 336863f8-5a07-4906-9be5-b3c6bcebbe67
;;; url-methods.el ends here
diff --git a/lisp/url/url-misc.el b/lisp/url/url-misc.el
index 1a65f1ee5d..20e623de6c 100644
--- a/lisp/url/url-misc.el
+++ b/lisp/url/url-misc.el
@@ -1,7 +1,6 @@
;;; url-misc.el --- Misc Uniform Resource Locator retrieval code
-;; Copyright (C) 1996, 1997, 1998, 1999, 2002, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2002, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes
@@ -115,5 +114,4 @@
(provide 'url-misc)
-;; arch-tag: 8c544e1b-d8bc-40a6-b319-f1f37fef65a0
;;; url-misc.el ends here
diff --git a/lisp/url/url-news.el b/lisp/url/url-news.el
index dcbc6d671f..6cd3721e49 100644
--- a/lisp/url/url-news.el
+++ b/lisp/url/url-news.el
@@ -1,7 +1,6 @@
;;; url-news.el --- News Uniform Resource Locator retrieval code
-;; Copyright (C) 1996, 1997, 1998, 1999, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes
@@ -130,5 +129,4 @@
(provide 'url-news)
-;; arch-tag: 8975be13-04e8-4d38-bfff-47918e3ad311
;;; url-news.el ends here
diff --git a/lisp/url/url-nfs.el b/lisp/url/url-nfs.el
index c0183d7ea5..1cda75c59e 100644
--- a/lisp/url/url-nfs.el
+++ b/lisp/url/url-nfs.el
@@ -1,7 +1,6 @@
;;; url-nfs.el --- NFS URL interface
-;; Copyright (C) 1996, 1997, 1998, 1999, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes
@@ -89,5 +88,4 @@ Each can be used any number of times.")
(provide 'url-nfs)
-;; arch-tag: cdf9c9ba-b7d2-4c29-8b48-7ae9bbc0d437
;;; url-nfs.el ends here
diff --git a/lisp/url/url-ns.el b/lisp/url/url-ns.el
index f55dfdca19..2eaa662be5 100644
--- a/lisp/url/url-ns.el
+++ b/lisp/url/url-ns.el
@@ -1,7 +1,6 @@
;;; url-ns.el --- Various netscape-ish functions for proxy definitions
-;; Copyright (C) 1997, 1998, 1999, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes, hypermedia
@@ -102,5 +101,4 @@
(provide 'url-ns)
-;; arch-tag: 69520992-cf97-40b4-9ad1-c866d3cae5bf
;;; url-ns.el ends here
diff --git a/lisp/url/url-parse.el b/lisp/url/url-parse.el
index 7cfaf2a6b5..950f666e9c 100644
--- a/lisp/url/url-parse.el
+++ b/lisp/url/url-parse.el
@@ -1,7 +1,6 @@
;;; url-parse.el --- Uniform Resource Locator parser
-;; Copyright (C) 1996, 1997, 1998, 1999, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes
@@ -196,5 +195,4 @@ TYPE USER PASSWORD HOST PORTSPEC FILENAME TARGET ATTRIBUTES FULLNESS."
(provide 'url-parse)
-;; arch-tag: f338325f-71ab-4bee-93cc-78fb9a03d403
;;; url-parse.el ends here
diff --git a/lisp/url/url-privacy.el b/lisp/url/url-privacy.el
index 432d4045e3..ff89b125c6 100644
--- a/lisp/url/url-privacy.el
+++ b/lisp/url/url-privacy.el
@@ -1,7 +1,6 @@
;;; url-privacy.el --- Global history tracking for URL package
-;; Copyright (C) 1996, 1997, 1998, 1999, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes, hypermedia
@@ -75,5 +74,4 @@
(provide 'url-privacy)
-;; arch-tag: fdaf95e4-98f0-4680-94c3-f3eadafabe1d
;;; url-privacy.el ends here
diff --git a/lisp/url/url-proxy.el b/lisp/url/url-proxy.el
index 4067f5a55c..3290f7c514 100644
--- a/lisp/url/url-proxy.el
+++ b/lisp/url/url-proxy.el
@@ -1,6 +1,6 @@
;;; url-proxy.el --- Proxy server support
-;; Copyright (C) 1999, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes, hypermedia
@@ -76,5 +76,4 @@
(provide 'url-proxy)
-;; arch-tag: 4ff8882e-e498-42b7-abc5-acb449cdbc62
;;; url-proxy.el ends here
diff --git a/lisp/url/url-util.el b/lisp/url/url-util.el
index 62a9a75f2d..6bf3a5831e 100644
--- a/lisp/url/url-util.el
+++ b/lisp/url/url-util.el
@@ -1,7 +1,6 @@
;;; url-util.el --- Miscellaneous helper routines for URL library
-;; Copyright (C) 1996, 1997, 1998, 1999, 2001, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2001, 2004-2011 Free Software Foundation, Inc.
;; Author: Bill Perry <[email protected]>
;; Keywords: comm, data, processes
@@ -532,5 +531,4 @@ Creates FILE and its parent directories if they do not exist."
(provide 'url-util)
-;; arch-tag: 24352abc-5a5a-412e-90cd-313b26bed5c9
;;; url-util.el ends here
diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el
index 8aba3efdbb..42d33553e1 100644
--- a/lisp/url/url-vars.el
+++ b/lisp/url/url-vars.el
@@ -1,7 +1,6 @@
;;; url-vars.el --- Variables for Uniform Resource Locator tool
-;; Copyright (C) 1996, 1997, 1998, 1999, 2001, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2001, 2004-2011 Free Software Foundation, Inc.
;; Keywords: comm, data, processes, hypermedia
@@ -390,5 +389,4 @@ This should be set, e.g. by mail user agents rendering HTML to avoid
(provide 'url-vars)
-;; arch-tag: 29205e5f-c5ce-433c-8d5d-38cbaed64b49
;;; url-vars.el ends here
diff --git a/lisp/url/url.el b/lisp/url/url.el
index 9d44718625..7136b6023c 100644
--- a/lisp/url/url.el
+++ b/lisp/url/url.el
@@ -1,7 +1,6 @@
;;; url.el --- Uniform Resource Locator retrieval tool
-;; Copyright (C) 1996, 1997, 1998, 1999, 2001, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1999, 2001, 2004-2011 Free Software Foundation, Inc.
;; Author: Bill Perry <[email protected]>
;; Keywords: comm, data, processes, hypermedia
@@ -326,5 +325,4 @@ no further processing). URL is either a string or a parsed URL."
(provide 'url)
-;; arch-tag: bc182f1f-d187-4f10-b961-47af2066579a
;;; url.el ends here
diff --git a/lisp/userlock.el b/lisp/userlock.el
index 7ca2fff2c5..7a2f7f76b7 100644
--- a/lisp/userlock.el
+++ b/lisp/userlock.el
@@ -1,7 +1,6 @@
;;; userlock.el --- handle file access contention between multiple users
-;; Copyright (C) 1985, 1986, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1986, 2001-2011 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
@@ -157,5 +156,4 @@ to get the latest version of the file, then make the change again.")
(with-current-buffer standard-output
(help-mode))))
-;; arch-tag: a61c5b60-e1c8-44fd-894a-c617f4dfc639
;;; userlock.el ends here
diff --git a/lisp/vc/add-log.el b/lisp/vc/add-log.el
index c356dde822..d75fcb5f4f 100644
--- a/lisp/vc/add-log.el
+++ b/lisp/vc/add-log.el
@@ -1,7 +1,6 @@
;;; add-log.el --- change log maintenance commands for Emacs
-;; Copyright (C) 1985, 1986, 1988, 1993, 1994, 1997, 1998, 2000, 2001,
-;; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985-1986, 1988, 1993-1994, 1997-1998, 2000-2011
;; Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -1367,5 +1366,4 @@ old-style time formats for entries are supported."
(provide 'add-log)
-;; arch-tag: 81eee6fc-088f-4372-a37f-80ad9620e762
;;; add-log.el ends here
diff --git a/lisp/vc/compare-w.el b/lisp/vc/compare-w.el
index 6e2ab7327d..4c63e48a3f 100644
--- a/lisp/vc/compare-w.el
+++ b/lisp/vc/compare-w.el
@@ -1,7 +1,7 @@
;;; compare-w.el --- compare text between windows for Emacs
-;; Copyright (C) 1986, 1989, 1993, 1997, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1989, 1993, 1997, 2001-2011
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: convenience files vc
@@ -389,5 +389,4 @@ on third call it again advances points to the next difference and so on."
(provide 'compare-w)
-;; arch-tag: 4177aab1-48e6-4a98-b7a1-000ee285de46
;;; compare-w.el ends here
diff --git a/lisp/vc/cvs-status.el b/lisp/vc/cvs-status.el
index b0e66c055a..7354e616c9 100644
--- a/lisp/vc/cvs-status.el
+++ b/lisp/vc/cvs-status.el
@@ -1,7 +1,6 @@
;;; cvs-status.el --- major mode for browsing `cvs status' output -*- coding: utf-8 -*-
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Keywords: pcl-cvs cvs status tree vc tools
@@ -223,7 +222,6 @@ The tree will be printed no closer than column COLUMN."
(let* ((eol (save-excursion (end-of-line) (current-column)))
(column (max (+ eol 2) column)))
(if (null tags) column
- ;;(move-to-column-force column)
(let* ((rev (cvs-car tags))
(name (funcall printer (cvs-car rev)))
(rest (append (cvs-cdr name) (cvs-cdr tags)))
@@ -536,5 +534,4 @@ Optional prefix ARG chooses between two representations."
(provide 'cvs-status)
-;; arch-tag: db8b5094-d02a-473e-a476-544e89ff5ad0
;;; cvs-status.el ends here
diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el
index cec4fb2461..a1c9f9d02d 100644
--- a/lisp/vc/diff-mode.el
+++ b/lisp/vc/diff-mode.el
@@ -1,7 +1,6 @@
;;; diff-mode.el --- a mode for viewing/editing context diffs
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Keywords: convenience patch diff vc
@@ -1829,10 +1828,13 @@ For use in `add-log-current-defun-function'."
(eval-and-compile (require 'smerge-mode))
(save-excursion
(diff-beginning-of-hunk 'try-harder)
- (let* ((style (diff-hunk-style)) ;Skips the hunk header as well.
+ (let* ((start (point))
+ (style (diff-hunk-style)) ;Skips the hunk header as well.
(beg (point))
(props '((diff-mode . fine) (face diff-refine-change)))
- (end (progn (diff-end-of-hunk) (point))))
+ ;; Be careful to go back to `start' so diff-end-of-hunk gets
+ ;; to read the hunk header's line info.
+ (end (progn (goto-char start) (diff-end-of-hunk) (point))))
(remove-overlays beg end 'diff-mode 'fine)
@@ -1935,5 +1937,4 @@ I.e. like `add-change-log-entry-other-window' but applied to all hunks."
;; use `combine-after-change-calls' to minimize the slowdown of font-lock.
;;
-;; arch-tag: 2571d7ff-bc28-4cf9-8585-42e21890be66
;;; diff-mode.el ends here
diff --git a/lisp/vc/diff.el b/lisp/vc/diff.el
index 752b12446f..4bc3466f13 100644
--- a/lisp/vc/diff.el
+++ b/lisp/vc/diff.el
@@ -1,7 +1,6 @@
;;; diff.el --- run `diff' in compilation-mode
-;; Copyright (C) 1992, 1994, 1996, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1994, 1996, 2001-2011 Free Software Foundation, Inc.
;; Author: Frank Bresz
;; (according to authors.el)
@@ -60,7 +59,9 @@
(defun diff-sentinel (code &optional old-temp-file new-temp-file)
"Code run when the diff process exits.
CODE is the exit code of the process. It should be 0 only if no diffs
-were found."
+were found.
+If optional args OLD-TEMP-FILE and/or NEW-TEMP-FILE are non-nil,
+delete the temporary files so named."
(if old-temp-file (delete-file old-temp-file))
(if new-temp-file (delete-file new-temp-file))
(save-excursion
@@ -110,18 +111,10 @@ specified in `diff-switches' are passed to the diff command."
tempfile))
(file-local-copy file-or-buf)))
-(defun diff-better-file-name (file)
- (if (bufferp file) file
- (let ((rel (file-relative-name file))
- (abbr (abbreviate-file-name (expand-file-name file))))
- (if (< (length abbr) (length rel))
- abbr
- rel))))
-
(defun diff-no-select (old new &optional switches no-async buf)
;; Noninteractive helper for creating and reverting diff buffers
- (setq new (diff-better-file-name new)
- old (diff-better-file-name old))
+ (unless (bufferp new) (setq new (expand-file-name new)))
+ (unless (bufferp old) (setq old (expand-file-name old)))
(or switches (setq switches diff-switches)) ; If not specified, use default.
(unless (listp switches) (setq switches (list switches)))
(or buf (setq buf (get-buffer-create "*Diff*")))
diff --git a/lisp/vc/ediff-diff.el b/lisp/vc/ediff-diff.el
index 70352751d8..078947e850 100644
--- a/lisp/vc/ediff-diff.el
+++ b/lisp/vc/ediff-diff.el
@@ -1,8 +1,6 @@
;;; ediff-diff.el --- diff-related utilities
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1994-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: ediff
diff --git a/lisp/vc/ediff-help.el b/lisp/vc/ediff-help.el
index 06a600f0af..ddd9371b06 100644
--- a/lisp/vc/ediff-help.el
+++ b/lisp/vc/ediff-help.el
@@ -1,7 +1,6 @@
;;; ediff-help.el --- Code related to the contents of Ediff help buffers
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: ediff
@@ -318,5 +317,4 @@ the value of this variable and the variables `ediff-help-message-*' in
(provide 'ediff-help)
-;; arch-tag: 05659813-7fcf-4274-964f-d2f577431a9d
;;; ediff-help.el ends here
diff --git a/lisp/vc/ediff-hook.el b/lisp/vc/ediff-hook.el
index e917d29a7b..7598cfdba5 100644
--- a/lisp/vc/ediff-hook.el
+++ b/lisp/vc/ediff-hook.el
@@ -1,7 +1,6 @@
;;; ediff-hook.el --- setup for Ediff's menus and autoloads
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: ediff
@@ -260,5 +259,4 @@
(provide 'ediff-hook)
-;; arch-tag: 512f8656-8a4b-4789-af5d-5c6144498df3
;;; ediff-hook.el ends here
diff --git a/lisp/vc/ediff-init.el b/lisp/vc/ediff-init.el
index 9665a21cd1..ff1f7f6b01 100644
--- a/lisp/vc/ediff-init.el
+++ b/lisp/vc/ediff-init.el
@@ -1,7 +1,6 @@
;;; ediff-init.el --- Macros, variables, and defsubsts used by Ediff
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: ediff
@@ -1808,5 +1807,4 @@ Unless optional argument INPLACE is non-nil, return a new string."
;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
;; End:
-;; arch-tag: fa31d384-1e70-4d4b-82a7-3e96307c46f5
;;; ediff-init.el ends here
diff --git a/lisp/vc/ediff-merg.el b/lisp/vc/ediff-merg.el
index 4c6aee15d1..a584d0791f 100644
--- a/lisp/vc/ediff-merg.el
+++ b/lisp/vc/ediff-merg.el
@@ -1,7 +1,6 @@
;;; ediff-merg.el --- merging utilities
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: ediff
@@ -394,5 +393,4 @@ Combining is done according to the specifications in variable
;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
;; End:
-;; arch-tag: 9b798cf9-02ba-487f-a62e-b63aa823dbfb
;;; ediff-merg.el ends here
diff --git a/lisp/vc/ediff-mult.el b/lisp/vc/ediff-mult.el
index 39bd06fbd9..2aea75aa42 100644
--- a/lisp/vc/ediff-mult.el
+++ b/lisp/vc/ediff-mult.el
@@ -1,7 +1,6 @@
;;; ediff-mult.el --- support for multi-file/multi-buffer processing in Ediff
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: ediff
@@ -458,6 +457,7 @@ It is entered through one of the following commands:
Commands:
\\{ediff-meta-buffer-map}"
+ ;; FIXME: Use define-derived-mode.
(kill-all-local-variables)
(setq major-mode 'ediff-meta-mode)
(setq mode-name "MetaEdiff")
@@ -2473,5 +2473,4 @@ for operation, or simply indicate which are equal files. If it is nil, then
;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
;; End:
-;; arch-tag: c8a76898-f96f-4d9c-be9d-129134017188
;;; ediff-mult.el ends here
diff --git a/lisp/vc/ediff-ptch.el b/lisp/vc/ediff-ptch.el
index 393bdcb673..468d12057a 100644
--- a/lisp/vc/ediff-ptch.el
+++ b/lisp/vc/ediff-ptch.el
@@ -1,8 +1,6 @@
;;; ediff-ptch.el --- Ediff's patch support
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1996-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: ediff
diff --git a/lisp/vc/ediff-util.el b/lisp/vc/ediff-util.el
index 4eec5577e7..92f52157cb 100644
--- a/lisp/vc/ediff-util.el
+++ b/lisp/vc/ediff-util.el
@@ -1,8 +1,6 @@
;;; ediff-util.el --- the core commands and utilities of ediff
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1994-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: ediff
@@ -94,6 +92,7 @@ This mode is entered through one of the following commands:
Commands:
\\{ediff-mode-map}"
+ ;; FIXME: Use define-derived-mode.
(kill-all-local-variables)
(setq major-mode 'ediff-mode)
(setq mode-name "Ediff")
diff --git a/lisp/vc/ediff-vers.el b/lisp/vc/ediff-vers.el
index 581aad3e4d..804e62a293 100644
--- a/lisp/vc/ediff-vers.el
+++ b/lisp/vc/ediff-vers.el
@@ -1,7 +1,6 @@
;;; ediff-vers.el --- version control interface to Ediff
-;; Copyright (C) 1995, 1996, 1997, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-1997, 2001-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: ediff
@@ -236,5 +235,4 @@ comparison or merge operations are being performed."
;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
;; End:
-;; arch-tag: bbb34f0c-2a90-426a-a77a-c75f479ebbbf
;;; ediff-vers.el ends here
diff --git a/lisp/vc/ediff-wind.el b/lisp/vc/ediff-wind.el
index 4d6666a86f..5a7fa0bf95 100644
--- a/lisp/vc/ediff-wind.el
+++ b/lisp/vc/ediff-wind.el
@@ -1,8 +1,6 @@
;;; ediff-wind.el --- window manipulation utilities
-;; Copyright (C) 1994, 1995, 1996, 1997, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1994-1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Package: ediff
diff --git a/lisp/vc/ediff.el b/lisp/vc/ediff.el
index c41a6e4a1a..5e352493dc 100644
--- a/lisp/vc/ediff.el
+++ b/lisp/vc/ediff.el
@@ -1,7 +1,6 @@
;;; ediff.el --- a comprehensive visual interface to diff & patch
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994-2011 Free Software Foundation, Inc.
;; Author: Michael Kifer <[email protected]>
;; Created: February 2, 1994
@@ -1562,5 +1561,4 @@ With optional NODE, goes to that node."
;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
;; End:
-;; arch-tag: 97c71396-db02-4f41-8b48-6a51c3348fcc
;;; ediff.el ends here
diff --git a/lisp/vc/log-edit.el b/lisp/vc/log-edit.el
index 2bce58f50f..9ec3e970b5 100644
--- a/lisp/vc/log-edit.el
+++ b/lisp/vc/log-edit.el
@@ -1,7 +1,6 @@
;;; log-edit.el --- Major mode for editing CVS commit messages
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Keywords: pcl-cvs cvs commit log vc
@@ -774,7 +773,7 @@ where LOGBUFFER is the name of the ChangeLog buffer, and each
(setq pattern (file-name-nondirectory file)))
(setq pattern (concat "\\(^\\|[^[:alnum:]]\\)"
- pattern
+ (regexp-quote pattern)
"\\($\\|[^[:alnum:]]\\)"))
(let (texts
@@ -875,5 +874,4 @@ anyway and put back as the first line of MSG."
(provide 'log-edit)
-;; arch-tag: 8089b39c-983b-4e83-93cd-ed0a64c7fdcc
;;; log-edit.el ends here
diff --git a/lisp/vc/log-view.el b/lisp/vc/log-view.el
index ac32cea620..3b008c69d4 100644
--- a/lisp/vc/log-view.el
+++ b/lisp/vc/log-view.el
@@ -1,7 +1,6 @@
;;; log-view.el --- Major mode for browsing RCS/CVS/SCCS log output
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;; 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Keywords: rcs, sccs, cvs, log, vc, tools
@@ -542,5 +541,4 @@ the changes that affected other files than the currently considered file(s)."
(provide 'log-view)
-;; arch-tag: 0d64220b-ce7e-4f62-9c2a-6b04c2f81f4f
;;; log-view.el ends here
diff --git a/lisp/vc/pcvs-defs.el b/lisp/vc/pcvs-defs.el
index 7dda4533f6..67f86dd364 100644
--- a/lisp/vc/pcvs-defs.el
+++ b/lisp/vc/pcvs-defs.el
@@ -1,8 +1,6 @@
;;; pcvs-defs.el --- variable definitions for PCL-CVS
-;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1991-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Keywords: pcl-cvs
@@ -525,5 +523,4 @@ message and replace it with a message telling you to change this variable.")
;;
(provide 'pcvs-defs)
-;; arch-tag: c7c701d0-d1d4-4aa9-a302-007bb03aca5e
;;; pcvs-defs.el ends here
diff --git a/lisp/vc/pcvs-info.el b/lisp/vc/pcvs-info.el
index 1ae924ff17..3fd6cd4029 100644
--- a/lisp/vc/pcvs-info.el
+++ b/lisp/vc/pcvs-info.el
@@ -1,8 +1,6 @@
;;; pcvs-info.el --- internal representation of a fileinfo entry
-;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1991-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Keywords: pcl-cvs
@@ -486,5 +484,4 @@ DIR can also be a file."
(provide 'pcvs-info)
-;; arch-tag: d85dde07-bdc2-400a-882f-92f398c7b0ba
;;; pcvs-info.el ends here
diff --git a/lisp/vc/pcvs-parse.el b/lisp/vc/pcvs-parse.el
index 560a270a73..c514026b1f 100644
--- a/lisp/vc/pcvs-parse.el
+++ b/lisp/vc/pcvs-parse.el
@@ -1,7 +1,6 @@
;;; pcvs-parse.el --- the CVS output parser
-;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1991-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Keywords: pcl-cvs
@@ -535,5 +534,4 @@ The remaining KEYS are passed directly to `cvs-create-fileinfo'."
(provide 'pcvs-parse)
-;; arch-tag: 35418375-1a23-40a0-957d-96b0262f91d6
;;; pcvs-parse.el ends here
diff --git a/lisp/vc/pcvs-util.el b/lisp/vc/pcvs-util.el
index 595b762b2f..752016a039 100644
--- a/lisp/vc/pcvs-util.el
+++ b/lisp/vc/pcvs-util.el
@@ -1,7 +1,6 @@
;;; pcvs-util.el --- utility functions for PCL-CVS -*- byte-compile-dynamic: t -*-
-;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1991-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Keywords: pcl-cvs
@@ -368,5 +367,4 @@ And reset it unless READ-ONLY is non-nil."
(provide 'pcvs-util)
-;; arch-tag: 3b2588bb-2ae3-4f1f-bf5b-dea91b1f8a59
;;; pcvs-util.el ends here
diff --git a/lisp/vc/pcvs.el b/lisp/vc/pcvs.el
index 305e109b6d..5595dc0b03 100644
--- a/lisp/vc/pcvs.el
+++ b/lisp/vc/pcvs.el
@@ -1,7 +1,6 @@
;;; pcvs.el --- a front-end to CVS
-;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1991-2011 Free Software Foundation, Inc.
;; Author: (The PCL-CVS Trust) [email protected]
;; (Per Cederqvist) [email protected]
@@ -2439,5 +2438,4 @@ The exact behavior is determined also by `cvs-dired-use-hook'."
(provide 'pcvs)
-;; arch-tag: 8e3a7494-0453-4389-9ab3-a557ce9fab61
;;; pcvs.el ends here
diff --git a/lisp/vc/smerge-mode.el b/lisp/vc/smerge-mode.el
index 32f829f814..37cdd41ee5 100644
--- a/lisp/vc/smerge-mode.el
+++ b/lisp/vc/smerge-mode.el
@@ -1,7 +1,6 @@
;;; smerge-mode.el --- Minor mode to resolve diff3 conflicts
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Keywords: vc, tools, revision control, merge, diff3, cvs, conflict
@@ -46,7 +45,7 @@
(eval-when-compile (require 'cl))
(require 'diff-mode) ;For diff-auto-refine-mode.
-
+(require 'newcomment)
;;; The real definition comes later.
(defvar smerge-mode)
@@ -455,6 +454,37 @@ BUF contains a plain diff between match-1 and match-3."
(insert ">>>>>>> " name3 "\n")
(setq line endline))))))))
+(defconst smerge-resolve--normalize-re "[\n\t][ \t\n]*\\| [ \t\n]+")
+
+(defun smerge-resolve--extract-comment (beg end)
+ "Extract the text within the comments that span BEG..END."
+ (save-excursion
+ (let ((comments ())
+ combeg)
+ (goto-char beg)
+ (while (and (< (point) end)
+ (setq combeg (comment-search-forward end t)))
+ (let ((beg (point)))
+ (goto-char combeg)
+ (comment-forward 1)
+ (save-excursion
+ (comment-enter-backward)
+ (push " " comments)
+ (push (buffer-substring-no-properties beg (point)) comments))))
+ (push " " comments)
+ (with-temp-buffer
+ (apply #'insert (nreverse comments))
+ (goto-char (point-min))
+ (while (re-search-forward smerge-resolve--normalize-re
+ nil t)
+ (replace-match " "))
+ (buffer-string)))))
+
+(defun smerge-resolve--normalize (beg end)
+ (replace-regexp-in-string
+ smerge-resolve--normalize-re " "
+ (concat " " (buffer-substring-no-properties beg end) " ")))
+
(defun smerge-resolve (&optional safe)
"Resolve the conflict at point intelligently.
This relies on mode-specific knowledge and thus only works in some
@@ -472,7 +502,8 @@ major modes. Uses `smerge-resolve-function' to do the actual work."
(m2e (match-end 2))
(m3e (match-end 3))
(buf (generate-new-buffer " *smerge*"))
- m b o)
+ m b o
+ choice)
(unwind-protect
(progn
(cond
@@ -557,6 +588,43 @@ major modes. Uses `smerge-resolve-function' to do the actual work."
(narrow-to-region m0b m0e)
(smerge-remove-props m0b m0e)
(insert-file-contents m nil nil nil t)))
+ ;; If the conflict is only made of comments, and one of the two
+ ;; changes is only rearranging spaces (e.g. reflowing text) while
+ ;; the other is a real change, drop the space-rearrangement.
+ ((and m2e
+ (comment-only-p m1b m1e)
+ (comment-only-p m2b m2e)
+ (comment-only-p m3b m3e)
+ (let ((t1 (smerge-resolve--extract-comment m1b m1e))
+ (t2 (smerge-resolve--extract-comment m2b m2e))
+ (t3 (smerge-resolve--extract-comment m3b m3e)))
+ (cond
+ ((and (equal t1 t2) (not (equal t2 t3)))
+ (setq choice 3))
+ ((and (not (equal t1 t2)) (equal t2 t3))
+ (setq choice 1)))))
+ (set-match-data md)
+ (smerge-keep-n choice))
+ ;; Idem, when the conflict is contained within a single comment.
+ ((save-excursion
+ (and m2e
+ (nth 4 (syntax-ppss m0b))
+ ;; If there's a conflict earlier in the file,
+ ;; syntax-ppss is not reliable.
+ (not (re-search-backward smerge-begin-re nil t))
+ (progn (goto-char (nth 8 (syntax-ppss m0b)))
+ (forward-comment 1)
+ (> (point) m0e))
+ (let ((t1 (smerge-resolve--normalize m1b m1e))
+ (t2 (smerge-resolve--normalize m2b m2e))
+ (t3 (smerge-resolve--normalize m3b m3e)))
+ (cond
+ ((and (equal t1 t2) (not (equal t2 t3)))
+ (setq choice 3))
+ ((and (not (equal t1 t2)) (equal t2 t3))
+ (setq choice 1))))))
+ (set-match-data md)
+ (smerge-keep-n choice))
(t
(error "Don't know how to resolve"))))
(if (buffer-name buf) (kill-buffer buf))
@@ -1231,5 +1299,4 @@ If no conflict maker is found, turn off `smerge-mode'."
(provide 'smerge-mode)
-;; arch-tag: 605c8d1e-e43d-4943-a6f3-1bcc4333e690
;;; smerge-mode.el ends here
diff --git a/lisp/vc/vc-annotate.el b/lisp/vc/vc-annotate.el
index 10b88e6f14..479dbb5cae 100644
--- a/lisp/vc/vc-annotate.el
+++ b/lisp/vc/vc-annotate.el
@@ -1,7 +1,6 @@
;;; vc-annotate.el --- VC Annotate Support
-;; Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2000-2011 Free Software Foundation, Inc.
;; Author: Martin Lorentzson <[email protected]>
;; Maintainer: FSF
@@ -676,5 +675,4 @@ The annotations are relative to the current time, unless overridden by OFFSET."
(provide 'vc-annotate)
-;; arch-tag: c3454a89-80e5-4ffd-8993-671b59612898
;;; vc-annotate.el ends here
diff --git a/lisp/vc/vc-arch.el b/lisp/vc/vc-arch.el
index ba91f7f23c..59cefe047b 100644
--- a/lisp/vc/vc-arch.el
+++ b/lisp/vc/vc-arch.el
@@ -1,7 +1,6 @@
;;; vc-arch.el --- VC backend for the Arch version-control system
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: FSF (see vc.el for full credits)
;; Maintainer: Stefan Monnier <[email protected]>
@@ -638,5 +637,4 @@ CALLBACK expects (ENTRIES &optional MORE-TO-COME); see
(provide 'vc-arch)
-;; arch-tag: a35c7c1c-5237-429d-88ef-3d718fd2e704
;;; vc-arch.el ends here
diff --git a/lisp/vc/vc-bzr.el b/lisp/vc/vc-bzr.el
index 9b0d402c07..9f86a28a57 100644
--- a/lisp/vc/vc-bzr.el
+++ b/lisp/vc/vc-bzr.el
@@ -1,7 +1,6 @@
;;; vc-bzr.el --- VC backend for the bzr revision control system
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Dave Love <[email protected]>
;; Riccardo Murri <[email protected]>
@@ -95,6 +94,21 @@ Invoke the bzr command adding `BZR_PROGRESS_BAR=none' and
(apply 'vc-do-command (or buffer "*vc*") okstatus vc-bzr-program
file-or-list bzr-command args)))
+(defun vc-bzr-async-command (bzr-command &rest args)
+ "Wrapper round `vc-do-async-command' using `vc-bzr-program' as COMMAND.
+Invoke the bzr command adding `BZR_PROGRESS_BAR=none' and
+`LC_MESSAGES=C' to the environment.
+Use the current Bzr root directory as the ROOT argument to
+`vc-do-async-command', and specify an output buffer named
+\"*vc-bzr : ROOT*\". Return this buffer."
+ (let* ((process-environment
+ (list* "BZR_PROGRESS_BAR=none" "LC_MESSAGES=C"
+ process-environment))
+ (root (vc-bzr-root default-directory))
+ (buffer (format "*vc-bzr : %s*" (expand-file-name root))))
+ (apply 'vc-do-async-command buffer root
+ vc-bzr-program bzr-command args)
+ buffer))
;;;###autoload
(defconst vc-bzr-admin-dirname ".bzr"
@@ -262,31 +276,6 @@ Invoke the bzr command adding `BZR_PROGRESS_BAR=none' and
(when rootdir
(file-relative-name filename* rootdir))))
-(defun vc-bzr-async-command (command args)
- "Run Bzr COMMAND asynchronously with ARGS, displaying the result.
-Send the output to a buffer named \"*vc-bzr : NAME*\", where NAME
-is the root of the current Bzr branch. Display the buffer in
-some window, but don't select it."
- ;; TODO: set up hyperlinks.
- (let* ((dir default-directory)
- (root (vc-bzr-root default-directory))
- (buffer (get-buffer-create
- (format "*vc-bzr : %s*"
- (expand-file-name root)))))
- (with-current-buffer buffer
- (setq default-directory root)
- (goto-char (point-max))
- (unless (eq (point) (point-min))
- (insert " \n"))
- (insert "Running \"" vc-bzr-program " " command)
- (dolist (arg args)
- (insert " " arg))
- (insert "\"...\n")
- ;; Run bzr in the original working directory.
- (let ((default-directory dir))
- (apply 'vc-bzr-command command t 'async nil args)))
- (display-buffer buffer)))
-
(defun vc-bzr-pull (prompt)
"Pull changes into the current Bzr branch.
Normally, this runs \"bzr pull\". However, if the branch is a
@@ -309,14 +298,15 @@ prompt for the Bzr command to run."
(when (or prompt (not (or bound parent)))
(setq args (split-string
(read-shell-command
- "Run Bzr (like this): "
+ "Bzr pull command: "
(concat vc-bzr-program " " command)
'vc-bzr-history)
" " t))
(setq vc-bzr-program (car args)
command (cadr args)
args (cddr args)))
- (vc-bzr-async-command command args)))
+ (vc-set-async-update
+ (apply 'vc-bzr-async-command command args))))
(defun vc-bzr-merge-branch ()
"Merge another Bzr branch into the current one.
@@ -325,8 +315,8 @@ source (an upstream branch or a previous merge source) as a
default if it is available."
(let* ((branch-conf (vc-bzr--branch-conf default-directory))
;; "bzr merge" without an argument defaults to submit_branch,
- ;; then parent_location. We extract the specific location
- ;; and add it explicitly to the command line.
+ ;; then parent_location. Extract the specific location and
+ ;; add it explicitly to the command line.
(location
(cond
((string-match
@@ -340,7 +330,7 @@ default if it is available."
(cmd
(split-string
(read-shell-command
- "Run Bzr (like this): "
+ "Bzr merge command: "
(concat vc-bzr-program " merge --pull"
(if location (concat " " location) ""))
'vc-bzr-history)
@@ -348,7 +338,8 @@ default if it is available."
(vc-bzr-program (car cmd))
(command (cadr cmd))
(args (cddr cmd)))
- (vc-bzr-async-command command args)))
+ (vc-set-async-update
+ (apply 'vc-bzr-async-command command args))))
(defun vc-bzr-status (file)
"Return FILE status according to Bzr.
@@ -675,18 +666,22 @@ REV non-nil gets an error."
(defun vc-bzr-diff (files &optional rev1 rev2 buffer)
"VC bzr backend for diff."
- ;; `bzr diff' exits with code 1 if diff is non-empty.
- (apply #'vc-bzr-command "diff" (or buffer "*vc-diff*")
- (if vc-disable-async-diff 1 'async) files
- "--diff-options" (mapconcat 'identity
- (vc-switches 'bzr 'diff)
- " ")
- ;; This `when' is just an optimization because bzr-1.2 is *much*
- ;; faster when the revision argument is not given.
- (when (or rev1 rev2)
- (list "-r" (format "%s..%s"
- (or rev1 "revno:-1")
- (or rev2 ""))))))
+ (let* ((switches (vc-switches 'bzr 'diff))
+ (args
+ (append
+ ;; Only add --diff-options if there are any diff switches.
+ (unless (zerop (length switches))
+ (list "--diff-options" (mapconcat 'identity switches " ")))
+ ;; This `when' is just an optimization because bzr-1.2 is *much*
+ ;; faster when the revision argument is not given.
+ (when (or rev1 rev2)
+ (list "-r" (format "%s..%s"
+ (or rev1 "revno:-1")
+ (or rev2 "")))))))
+ ;; `bzr diff' exits with code 1 if diff is non-empty.
+ (apply #'vc-bzr-command "diff" (or buffer "*vc-diff*")
+ (if vc-disable-async-diff 1 'async) files
+ args)))
;; FIXME: vc-{next,previous}-revision need fixing in vc.el to deal with
@@ -720,7 +715,11 @@ property containing author and date information."
(when (process-buffer proc)
(with-current-buffer (process-buffer proc)
(setq string (concat (process-get proc :vc-left-over) string))
- (while (string-match "^\\( *[0-9.]+ *\\) \\([^\n ]+\\) +\\([0-9]\\{8\\}\\)\\( |.*\n\\)" string)
+ ;; Eg: 102020 Gnus developers 20101020 | regexp."
+ ;; As of bzr 2.2.2, no email address in whoami (which can
+ ;; lead to spaces in the author field) is allowed but discouraged.
+ ;; See bug#7792.
+ (while (string-match "^\\( *[0-9.]+ *\\) \\(.+?\\) +\\([0-9]\\{8\\}\\)\\( |.*\n\\)" string)
(let* ((rev (match-string 1 string))
(author (match-string 2 string))
(date (match-string 3 string))
@@ -747,7 +746,7 @@ property containing author and date information."
(declare-function vc-annotate-convert-time "vc-annotate" (time))
(defun vc-bzr-annotate-time ()
- (when (re-search-forward "^ *[0-9.]+ +[^\n ]* +|" nil t)
+ (when (re-search-forward "^ *[0-9.]+ +.+? +|" nil t)
(let ((prop (get-text-property (line-beginning-position) 'help-echo)))
(string-match "[0-9]+\\'" prop)
(let ((str (match-string-no-properties 0 prop)))
@@ -762,7 +761,7 @@ property containing author and date information."
Return nil if current line isn't annotated."
(save-excursion
(beginning-of-line)
- (if (looking-at "^ *\\([0-9.]+\\) +[^\n ]* +|")
+ (if (looking-at "^ *\\([0-9.]+\\) +.* +|")
(match-string-no-properties 1))))
(defun vc-bzr-command-discarding-stderr (command &rest args)
diff --git a/lisp/vc/vc-cvs.el b/lisp/vc/vc-cvs.el
index a78b59ffba..6a76359b5f 100644
--- a/lisp/vc/vc-cvs.el
+++ b/lisp/vc/vc-cvs.el
@@ -1,7 +1,6 @@
;;; vc-cvs.el --- non-resident support for CVS version-control
-;; Copyright (C) 1995, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1998-2011 Free Software Foundation, Inc.
;; Author: FSF (see vc.el for full credits)
;; Maintainer: Andre Spiegel <[email protected]>
@@ -1210,5 +1209,4 @@ is non-nil."
(provide 'vc-cvs)
-;; arch-tag: 60e1402a-aa53-4607-927a-cf74f144b432
;;; vc-cvs.el ends here
diff --git a/lisp/vc/vc-dav.el b/lisp/vc/vc-dav.el
index bd495eaf4b..27db4b57dc 100644
--- a/lisp/vc/vc-dav.el
+++ b/lisp/vc/vc-dav.el
@@ -1,6 +1,6 @@
;;; vc-dav.el --- vc.el support for WebDAV
-;; Copyright (C) 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2004-2011 Free Software Foundation, Inc.
;; Author: Bill Perry <[email protected]>
;; Maintainer: Bill Perry <[email protected]>
@@ -186,5 +186,4 @@ It should return a status of either 0 (no differences found), or
(provide 'vc-dav)
-;; arch-tag: 0a0fb9fe-8190-4c0a-a179-5c291d3a467e
;;; vc-dav.el ends here
diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el
index cd40468199..5f386bcee7 100644
--- a/lisp/vc/vc-dir.el
+++ b/lisp/vc/vc-dir.el
@@ -1,7 +1,6 @@
;;; vc-dir.el --- Directory status display under VC
-;; Copyright (C) 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Dan Nicolaescu <[email protected]>
;; Keywords: vc tools
@@ -196,7 +195,7 @@ See `run-hooks'."
'(menu-item "Show Incoming Log" vc-log-incoming
:help "Show a log of changes that will be received with a pull operation"))
(define-key map [log]
- '(menu-item "Show history" vc-print-log
+ '(menu-item "Show History" vc-print-log
:help "List the change log of the current file set in a window"))
(define-key map [rlog]
'(menu-item "Show Top of the Tree History " vc-print-root-log
@@ -307,33 +306,36 @@ If BODY uses EVENT, it should be a variable,
(defvar vc-dir-tool-bar-map
(let ((map (make-sparse-keymap)))
- (tool-bar-local-item-from-menu 'vc-dir-find-file "open"
- map vc-dir-mode-map)
- (tool-bar-local-item "bookmark_add"
- 'vc-dir-toggle-mark 'vc-dir-toggle-mark map
- :help "Toggle mark on current item"
- :label "Toggle Mark")
- (tool-bar-local-item-from-menu 'vc-dir-previous-line "left-arrow"
- map vc-dir-mode-map
- :rtl "right-arrow")
- (tool-bar-local-item-from-menu 'vc-dir-next-line "right-arrow"
- map vc-dir-mode-map
- :rtl "left-arrow")
+ (tool-bar-local-item-from-menu 'find-file "new" map nil
+ :label "New File" :vert-only t)
+ (tool-bar-local-item-from-menu 'menu-find-file-existing "open" map nil
+ :label "Open" :vert-only t)
+ (tool-bar-local-item-from-menu 'dired "diropen" map nil
+ :vert-only t)
+ (tool-bar-local-item-from-menu 'quit-window "close" map vc-dir-mode-map
+ :vert-only t)
+ (tool-bar-local-item-from-menu 'vc-next-action "saveas" map
+ vc-dir-mode-map :label "Commit")
(tool-bar-local-item-from-menu 'vc-print-log "info"
- map vc-dir-mode-map)
- (tool-bar-local-item-from-menu 'revert-buffer "refresh"
- map vc-dir-mode-map)
- (tool-bar-local-item-from-menu 'nonincremental-search-forward
- "search" map nil
- :label "Search")
- (tool-bar-local-item-from-menu 'vc-dir-query-replace-regexp
- "search-replace" map vc-dir-mode-map
- :label "Replace")
+ map vc-dir-mode-map
+ :label "Log")
+ (define-key-after map [separator-1] menu-bar-separator)
(tool-bar-local-item-from-menu 'vc-dir-kill-dir-status-process "cancel"
map vc-dir-mode-map
- :label "Cancel")
- (tool-bar-local-item-from-menu 'quit-window "exit"
- map vc-dir-mode-map)
+ :label "Stop" :vert-only t)
+ (tool-bar-local-item-from-menu 'revert-buffer "refresh"
+ map vc-dir-mode-map :vert-only t)
+ (define-key-after map [separator-2] menu-bar-separator)
+ (tool-bar-local-item-from-menu (lookup-key menu-bar-edit-menu [cut])
+ "cut" map nil :vert-only t)
+ (tool-bar-local-item-from-menu (lookup-key menu-bar-edit-menu [copy])
+ "copy" map nil :vert-only t)
+ (tool-bar-local-item-from-menu (lookup-key menu-bar-edit-menu [paste])
+ "paste" map nil :vert-only t)
+ (define-key-after map [separator-3] menu-bar-separator)
+ (tool-bar-local-item-from-menu 'isearch-forward
+ "search" map nil
+ :label "Search" :vert-only t)
map))
(defun vc-dir-node-directory (node)
@@ -1256,5 +1258,4 @@ These are the commands available for use in the file status buffer:
(provide 'vc-dir)
-;; arch-tag: 0274a2e3-e8e9-4b1a-a73c-e8b9129d5d15
;;; vc-dir.el ends here
diff --git a/lisp/vc/vc-dispatcher.el b/lisp/vc/vc-dispatcher.el
index b6ccae1af1..c4e0dbfada 100644
--- a/lisp/vc/vc-dispatcher.el
+++ b/lisp/vc/vc-dispatcher.el
@@ -1,7 +1,6 @@
;;; vc-dispatcher.el -- generic command-dispatcher facility.
-;; Copyright (C) 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: FSF (see below for full credits)
;; Maintainer: Eric S. Raymond <[email protected]>
@@ -357,6 +356,60 @@ case, and the process object in the asynchronous case."
',command ',file-or-list ',flags))
status))))
+(defun vc-do-async-command (buffer root command &rest args)
+ "Run COMMAND asynchronously with ARGS, displaying the result.
+Send the output to BUFFER, which should be a buffer or the name
+of a buffer, which is created.
+ROOT should be the directory in which the command should be run.
+Display the buffer in some window, but don't select it."
+ (let* ((dir default-directory)
+ window new-window-start)
+ (setq buffer (get-buffer-create buffer))
+ (if (get-buffer-process buffer)
+ (error "Another VC action on %s is running" root))
+ (with-current-buffer buffer
+ (setq default-directory root)
+ (goto-char (point-max))
+ (unless (eq (point) (point-min))
+ (insert " \n"))
+ (setq new-window-start (point))
+ (insert "Running \"" command)
+ (dolist (arg args)
+ (insert " " arg))
+ (insert "\"...\n")
+ ;; Run in the original working directory.
+ (let ((default-directory dir))
+ (apply 'vc-do-command t 'async command nil args)))
+ (setq window (display-buffer buffer))
+ (if window
+ (set-window-start window new-window-start))
+ buffer))
+
+(defun vc-set-async-update (process-buffer)
+ "Set a `vc-exec-after' action appropriate to the current buffer.
+This action will update the current buffer after the current
+asynchronous VC command has completed. PROCESS-BUFFER is the
+buffer for the asynchronous VC process.
+
+If the current buffer is a VC Dir buffer, call `vc-dir-refresh'.
+If the current buffer is a Dired buffer, revert it."
+ (let* ((buf (current-buffer))
+ (tick (buffer-modified-tick buf)))
+ (cond
+ ((derived-mode-p 'vc-dir-mode)
+ (with-current-buffer process-buffer
+ (vc-exec-after
+ `(if (buffer-live-p ,buf)
+ (with-current-buffer ,buf
+ (vc-dir-refresh))))))
+ ((derived-mode-p 'dired-mode)
+ (with-current-buffer process-buffer
+ (vc-exec-after
+ `(and (buffer-live-p ,buf)
+ (= (buffer-modified-tick ,buf) ,tick)
+ (with-current-buffer ,buf
+ (revert-buffer)))))))))
+
;; These functions are used to ensure that the view the user sees is up to date
;; even if the dispatcher client mode has messed with file contents (as in,
;; for example, VCS keyword expansion).
@@ -692,5 +745,4 @@ the buffer contents as a comment."
(provide 'vc-dispatcher)
-;; arch-tag: 7d08b17f-5470-4799-914b-bfb9fcf6a246
;;; vc-dispatcher.el ends here
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 48a86454f7..de729c969a 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -1,6 +1,6 @@
;;; vc-git.el --- VC backend for the git version control system
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Alexandre Julliard <[email protected]>
;; Keywords: vc tools
@@ -122,6 +122,9 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches."
(defvar vc-git-commits-coding-system 'utf-8
"Default coding system for git commits.")
+;; History of Git commands.
+(defvar vc-git-history nil)
+
;;; BACKEND PROPERTIES
(defun vc-git-revision-granularity () 'repository)
@@ -526,6 +529,21 @@ or an empty string if none."
'help-echo stash-help-echo
'face 'font-lock-variable-name-face))))))
+(defun vc-git-branches ()
+ "Return the existing branches, as a list of strings.
+The car of the list is the current branch."
+ (with-temp-buffer
+ (call-process "git" nil t nil "branch")
+ (goto-char (point-min))
+ (let (current-branch branches)
+ (while (not (eobp))
+ (when (looking-at "^\\([ *]\\) \\(.+\\)$")
+ (if (string-equal (match-string 1) "*")
+ (setq current-branch (match-string 2))
+ (push (match-string 2) branches)))
+ (forward-line 1))
+ (cons current-branch (nreverse branches)))))
+
;;; STATE-CHANGING FUNCTIONS
(defun vc-git-create-repo ()
@@ -587,6 +605,47 @@ or an empty string if none."
(vc-git-command nil 0 file "reset" "-q" "--")
(vc-git-command nil nil file "checkout" "-q" "--")))
+(defun vc-git-pull (prompt)
+ "Pull changes into the current Git branch.
+Normally, this runs \"git pull\". If PROMPT is non-nil, prompt
+for the Git command to run."
+ (let* ((root (vc-git-root default-directory))
+ (buffer (format "*vc-git : %s*" (expand-file-name root)))
+ (command "pull")
+ (git-program "git")
+ args)
+ ;; If necessary, prompt for the exact command.
+ (when prompt
+ (setq args (split-string
+ (read-shell-command "Git pull command: "
+ "git pull"
+ 'vc-git-history)
+ " " t))
+ (setq git-program (car args)
+ command (cadr args)
+ args (cddr args)))
+ (apply 'vc-do-async-command buffer root git-program command args)
+ (vc-set-async-update buffer)))
+
+(defun vc-git-merge-branch ()
+ "Merge changes into the current Git branch.
+This prompts for a branch to merge from."
+ (let* ((root (vc-git-root default-directory))
+ (buffer (format "*vc-git : %s*" (expand-file-name root)))
+ (branches (cdr (vc-git-branches)))
+ (merge-source
+ (completing-read "Merge from branch: "
+ (if (or (member "FETCH_HEAD" branches)
+ (not (file-readable-p
+ (expand-file-name ".git/FETCH_HEAD"
+ root))))
+ branches
+ (cons "FETCH_HEAD" branches))
+ nil t)))
+ (apply 'vc-do-async-command buffer root "git" "merge"
+ (list merge-source))
+ (vc-set-async-update buffer)))
+
;;; HISTORY FUNCTIONS
(defun vc-git-print-log (files buffer &optional shortlog start-revision limit)
@@ -1036,5 +1095,4 @@ Returns nil if not possible."
(provide 'vc-git)
-;; arch-tag: bd10664a-0e5b-48f5-a877-6c17b135be12
;;; vc-git.el ends here
diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index 2a2879aadb..7a0b8540ca 100644
--- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -1,6 +1,6 @@
;;; vc-hg.el --- VC backend for the mercurial version control system
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Ivan Kanis
;; Keywords: vc tools
@@ -141,6 +141,8 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches."
;;; Properties of the backend
+(defvar vc-hg-history nil)
+
(defun vc-hg-revision-granularity () 'repository)
(defun vc-hg-checkout-model (files) 'implicit)
@@ -607,16 +609,54 @@ REV is the revision to check out into WORKFILE."
(mapcar (lambda (arg) (list "-r" arg)) marked-list)))
(error "No log entries selected for push"))))
-(defun vc-hg-pull ()
- (interactive)
- (let ((marked-list (log-view-get-marked)))
- (if marked-list
- (apply #'vc-hg-command
- nil 0 nil
- "pull"
- (apply 'nconc
- (mapcar (lambda (arg) (list "-r" arg)) marked-list)))
- (error "No log entries selected for pull"))))
+(defun vc-hg-pull (prompt)
+ "Issue a Mercurial pull command.
+If called interactively with a set of marked Log View buffers,
+call \"hg pull -r REVS\" to pull in the specified revisions REVS.
+
+With a prefix argument or if PROMPT is non-nil, prompt for a
+specific Mercurial pull command. The default is \"hg pull -u\",
+which fetches changesets from the default remote repository and
+then attempts to update the working directory."
+ (interactive "P")
+ (let (marked-list)
+ ;; The `vc-hg-pull' command existed before the `pull' VC action
+ ;; was implemented. Keep it for backward compatibility.
+ (if (and (called-interactively-p 'interactive)
+ (setq marked-list (log-view-get-marked)))
+ (apply #'vc-hg-command
+ nil 0 nil
+ "pull"
+ (apply 'nconc
+ (mapcar (lambda (arg) (list "-r" arg))
+ marked-list)))
+ (let* ((root (vc-hg-root default-directory))
+ (buffer (format "*vc-hg : %s*" (expand-file-name root)))
+ (command "pull")
+ (hg-program "hg")
+ ;; Fixme: before updating the working copy to the latest
+ ;; state, should check if it's visiting an old revision.
+ (args '("-u")))
+ ;; If necessary, prompt for the exact command.
+ (when prompt
+ (setq args (split-string
+ (read-shell-command "Run Hg (like this): " "hg pull -u"
+ 'vc-hg-history)
+ " " t))
+ (setq hg-program (car args)
+ command (cadr args)
+ args (cddr args)))
+ (apply 'vc-do-async-command buffer root hg-program
+ command args)
+ (vc-set-async-update buffer)))))
+
+(defun vc-hg-merge-branch ()
+ "Merge incoming changes into the current working directory.
+This runs the command \"hg merge\"."
+ (let* ((root (vc-hg-root default-directory))
+ (buffer (format "*vc-hg : %s*" (expand-file-name root))))
+ (apply 'vc-do-async-command buffer root "hg" '("merge"))
+ (vc-set-async-update buffer)))
;;; Internal functions
@@ -635,5 +675,4 @@ and that it passes `vc-hg-global-switches' to it before FLAGS."
(provide 'vc-hg)
-;; arch-tag: bd094dc5-715a-434f-a331-37b9fb7cd954
;;; vc-hg.el ends here
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index 37426eb25f..e7bfd27373 100644
--- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -1,8 +1,6 @@
;;; vc-hooks.el --- resident support for version-control
-;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-;; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1992-1996, 1998-2011 Free Software Foundation, Inc.
;; Author: FSF (see vc.el for full credits)
;; Maintainer: Andre Spiegel <[email protected]>
@@ -1052,5 +1050,4 @@ current, and kill the buffer that visits the link."
(provide 'vc-hooks)
-;; arch-tag: 2e5a6fa7-1d30-48e2-8bd0-e3d335f04f32
;;; vc-hooks.el ends here
diff --git a/lisp/vc/vc-mtn.el b/lisp/vc/vc-mtn.el
index a1ca6ab4d6..0b263e9c66 100644
--- a/lisp/vc/vc-mtn.el
+++ b/lisp/vc/vc-mtn.el
@@ -1,6 +1,6 @@
;;; vc-mtn.el --- VC backend for Monotone
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
;; Author: Stefan Monnier <[email protected]>
;; Keywords: vc
@@ -341,5 +341,4 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches."
(provide 'vc-mtn)
-;; arch-tag: 2b89ffbc-cbb8-405a-9080-2eafd4becb70
;;; vc-mtn.el ends here
diff --git a/lisp/vc/vc-rcs.el b/lisp/vc/vc-rcs.el
index f8d5214d77..d3a64f15f9 100644
--- a/lisp/vc/vc-rcs.el
+++ b/lisp/vc/vc-rcs.el
@@ -1,8 +1,6 @@
;;; vc-rcs.el --- support for RCS version-control
-;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1992-2011 Free Software Foundation, Inc.
;; Author: FSF (see vc.el for full credits)
;; Maintainer: Andre Spiegel <[email protected]>
@@ -1467,5 +1465,4 @@ The `:insn' key is a keyword to distinguish it as a vc-rcs.el extension."
(provide 'vc-rcs)
-;; arch-tag: 759b4916-5b0d-431d-b647-b185b8c652cf
;;; vc-rcs.el ends here
diff --git a/lisp/vc/vc-sccs.el b/lisp/vc/vc-sccs.el
index 2acd778881..0ee75e1c24 100644
--- a/lisp/vc/vc-sccs.el
+++ b/lisp/vc/vc-sccs.el
@@ -1,8 +1,6 @@
;;; vc-sccs.el --- support for SCCS version-control
-;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1992-2011 Free Software Foundation, Inc.
;; Author: FSF (see vc.el for full credits)
;; Maintainer: Andre Spiegel <[email protected]>
@@ -483,5 +481,4 @@ If NAME is nil or a revision number string it's just passed through."
(provide 'vc-sccs)
-;; arch-tag: d751dee3-d7b3-47e1-95e3-7ae98c052041
;;; vc-sccs.el ends here
diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el
index 3e4c299f09..aefef50cf7 100644
--- a/lisp/vc/vc-svn.el
+++ b/lisp/vc/vc-svn.el
@@ -1,7 +1,6 @@
;;; vc-svn.el --- non-resident support for Subversion version-control
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: FSF (see vc.el for full credits)
;; Maintainer: Stefan Monnier <[email protected]>
@@ -72,9 +71,9 @@ If t, use no switches."
t ;`svn' doesn't support common args like -c or -b.
"String or list of strings specifying extra switches for svn diff under VC.
If nil, use the value of `vc-diff-switches' (or `diff-switches'),
-together with \"-x --diff-cmd=diff\" (since svn diff does not
-support the default \"-c\" value of `diff-switches'). If you
-want to force an empty list of arguments, use t."
+together with \"-x --diff-cmd=\"`diff-command' (since 'svn diff'
+does not support the default \"-c\" value of `diff-switches').
+If you want to force an empty list of arguments, use t."
:type '(choice (const :tag "Unspecified" nil)
(const :tag "None" t)
(string :tag "Argument String")
@@ -171,15 +170,19 @@ want to force an empty list of arguments, use t."
(?? . unregistered)
;; This is what vc-svn-parse-status does.
(?~ . edited)))
- (re (if remote "^\\(.\\)......? \\([ *]\\) +\\(?:[-0-9]+\\)? \\(.*\\)$"
- ;; Subexp 2 is a dummy in this case, so the numbers match.
- "^\\(.\\)....\\(.\\) \\(.*\\)$"))
+ (re (if remote "^\\(.\\)\\(.\\).....? \\([ *]\\) +\\(?:[-0-9]+\\)? \\(.*\\)$"
+ ;; Subexp 3 is a dummy in this case, so the numbers match.
+ "^\\(.\\)\\(.\\)...\\(.\\) \\(.*\\)$"))
result)
(goto-char (point-min))
(while (re-search-forward re nil t)
(let ((state (cdr (assq (aref (match-string 1) 0) state-map)))
- (filename (match-string 3)))
- (and remote (string-equal (match-string 2) "*")
+ (propstat (cdr (assq (aref (match-string 2) 0) state-map)))
+ (filename (match-string 4)))
+ (and (memq propstat '(conflict edited))
+ (not (eq state 'conflict)) ; conflict always wins
+ (setq state propstat))
+ (and remote (string-equal (match-string 3) "*")
;; FIXME are there other possible combinations?
(cond ((eq state 'edited) (setq state 'needs-merge))
((not state) (setq state 'needs-update))))
@@ -519,7 +522,7 @@ or svn+ssh://."
(let* ((switches
(if vc-svn-diff-switches
(vc-switches 'SVN 'diff)
- (list "--diff-cmd=diff" "-x"
+ (list (concat "--diff-cmd=" diff-command) "-x"
(mapconcat 'identity (vc-switches nil 'diff) " "))))
(async (and (not vc-disable-async-diff)
(vc-stay-local-p files 'SVN)
@@ -643,7 +646,7 @@ and that it passes `vc-svn-global-switches' to it before FLAGS."
"Parse output of \"svn status\" command in the current buffer.
Set file properties accordingly. Unless FILENAME is non-nil, parse only
information about FILENAME and return its status."
- (let (file status)
+ (let (file status propstat)
(goto-char (point-min))
(while (re-search-forward
;; Ignore the files with status X.
@@ -653,7 +656,9 @@ information about FILENAME and return its status."
(setq file (or filename
(expand-file-name
(buffer-substring (point) (line-end-position)))))
- (setq status (char-after (line-beginning-position)))
+ (setq status (char-after (line-beginning-position))
+ ;; Status of the item's properties ([ MC]).
+ propstat (char-after (1+ (line-beginning-position))))
(if (eq status ??)
(vc-file-setprop file 'vc-state 'unregistered)
;; Use the last-modified revision, so that searching in vc-print-log
@@ -664,7 +669,7 @@ information about FILENAME and return its status."
(vc-file-setprop
file 'vc-state
(cond
- ((eq status ?\ )
+ ((and (eq status ?\ ) (eq propstat ?\ ))
(if (eq (char-after (match-beginning 1)) ?*)
'needs-update
(vc-file-setprop file 'vc-checkout-time
@@ -675,9 +680,11 @@ information about FILENAME and return its status."
(vc-file-setprop file 'vc-working-revision "0")
(vc-file-setprop file 'vc-checkout-time 0)
'added)
- ((eq status ?C)
+ ;; Conflict in contents or properties.
+ ((or (eq status ?C) (eq propstat ?C))
(vc-file-setprop file 'vc-state 'conflict))
- ((eq status '?M)
+ ;; Modified contents or properties.
+ ((or (eq status ?M) (eq propstat ?M))
(if (eq (char-after (match-beginning 1)) ?*)
'needs-merge
'edited))
@@ -744,5 +751,4 @@ information about FILENAME and return its status."
(provide 'vc-svn)
-;; arch-tag: 02f10c68-2b4d-453a-90fc-1eee6cfb268d
;;; vc-svn.el ends here
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 40f91b7075..be0f568d30 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1,8 +1,6 @@
;;; vc.el --- drive a version-control system from within Emacs
-;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000,
-;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1992-1998, 2000-2011 Free Software Foundation, Inc.
;; Author: FSF (see below for full credits)
;; Maintainer: Andre Spiegel <[email protected]>
@@ -2299,7 +2297,7 @@ depending on the underlying version-control system."
(define-obsolete-function-alias 'vc-revert-buffer 'vc-revert "23.1")
;;;###autoload
-(defun vc-update (&optional arg)
+(defun vc-pull (&optional arg)
"Update the current fileset or branch.
On a distributed version control system, this runs a \"pull\"
operation to update the current branch, prompting for an argument
@@ -2339,7 +2337,7 @@ tip revision are merged into the working file."
(error "VC update is unsupported for `%s'" backend)))))
;;;###autoload
-(defalias 'vc-pull 'vc-update)
+(defalias 'vc-update 'vc-pull)
(defun vc-version-backup-file (file &optional rev)
"Return name of backup file for revision REV of FILE.
@@ -2775,5 +2773,4 @@ Invoke FUNC f ARGS on each VC-managed file f underneath it."
(provide 'vc)
-;; arch-tag: ca82c1de-3091-4e26-af92-460abc6213a6
;;; vc.el ends here
diff --git a/lisp/vcursor.el b/lisp/vcursor.el
index 9e8fbf431f..d4fc35920a 100644
--- a/lisp/vcursor.el
+++ b/lisp/vcursor.el
@@ -1,7 +1,6 @@
;;; vcursor.el --- manipulate an alternative ("virtual") cursor
-;; Copyright (C) 1994, 1996, 1998, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1996, 1998, 2001-2011 Free Software Foundation, Inc.
;; Author: Peter Stephenson <[email protected]>
;; Maintainer: FSF
@@ -1144,5 +1143,4 @@ line is treated like ordinary characters."
(provide 'vcursor)
-;; arch-tag: cdfe1cdc-2c46-4046-88e4-ed57d20f7aca
;;; vcursor.el ends here
diff --git a/lisp/version.el b/lisp/version.el
index b4e2c61b57..d28a300458 100644
--- a/lisp/version.el
+++ b/lisp/version.el
@@ -1,7 +1,6 @@
;;; version.el --- record version number of Emacs -*- no-byte-compile: t -*-
-;; Copyright (C) 1985, 1992, 1994, 1995, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985, 1992, 1994-1995, 1999-2011
;; Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -88,5 +87,4 @@ to the system configuration; look at `system-configuration' instead."
;;version-control: never
;;End:
-;; arch-tag: e60dc445-6218-4a4c-a7df-f15a818642a0
;;; version.el ends here
diff --git a/lisp/view.el b/lisp/view.el
index f6698ae5a9..b7b43e3599 100644
--- a/lisp/view.el
+++ b/lisp/view.el
@@ -1,7 +1,7 @@
;;; view.el --- peruse file or buffer without editing
-;; Copyright (C) 1985, 1989, 1994, 1995, 1997, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1989, 1994-1995, 1997, 2000-2011
+;; Free Software Foundation, Inc.
;; Author: K. Shane Hartman
;; Maintainer: Inge Frick <[email protected]>
@@ -1086,5 +1086,4 @@ If TIMES is negative, search backwards."
(provide 'view)
-;; arch-tag: 6d0ace36-1d12-4de3-8de3-1fa3231636d7
;;; view.el ends here
diff --git a/lisp/vt-control.el b/lisp/vt-control.el
index 6e91ccada6..558978768b 100644
--- a/lisp/vt-control.el
+++ b/lisp/vt-control.el
@@ -1,7 +1,6 @@
;;; vt-control.el --- Common VTxxx control functions
-;; Copyright (C) 1993, 1994, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Rob Riepel <[email protected]>
;; Maintainer: Rob Riepel <[email protected]>
@@ -108,5 +107,4 @@
(provide 'vt-control)
-;; arch-tag: d4fed1bf-2524-4ba1-a4fe-86bca3d928a2
;;; vt-control.el ends here
diff --git a/lisp/vt100-led.el b/lisp/vt100-led.el
index 3bab04c577..8a4b4ac288 100644
--- a/lisp/vt100-led.el
+++ b/lisp/vt100-led.el
@@ -1,7 +1,6 @@
;;; vt100-led.el --- functions for LED control on VT-100 terminals & clones
-;; Copyright (C) 1988, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 2001-2011 Free Software Foundation, Inc.
;; Author: Howard Gayle
;; Maintainer: FSF
@@ -66,5 +65,4 @@ Element 0 is not used.")
(provide 'vt100-led)
-;; arch-tag: 346e6480-5e31-4234-aafe-257cea4a36d1
;;; vt100-led.el ends here
diff --git a/lisp/w32-fns.el b/lisp/w32-fns.el
index 0c6c56f84f..20f1a1b560 100644
--- a/lisp/w32-fns.el
+++ b/lisp/w32-fns.el
@@ -1,7 +1,6 @@
;;; w32-fns.el --- Lisp routines for Windows NT
-;; Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
;; Author: Geoff Voelker <[email protected]>
;; Keywords: internal
@@ -57,7 +56,7 @@ That includes all Windows systems except for 9X/Me."
(defun w32-shell-name ()
"Return the name of the shell being used."
- (or (bound-and-true-p explicit-shell-file-name)
+ (or (bound-and-true-p shell-file-name)
(getenv "ESHELL")
(getenv "SHELL")
(and (w32-using-nt) "cmd.exe")
diff --git a/lisp/w32-vars.el b/lisp/w32-vars.el
index 80cdfb5712..d1e8edc40b 100644
--- a/lisp/w32-vars.el
+++ b/lisp/w32-vars.el
@@ -1,7 +1,6 @@
;;; w32-vars.el --- MS-Windows specific user options
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2002-2011 Free Software Foundation, Inc.
;; Author: Jason Rumney <[email protected]>
;; Keywords: internal
diff --git a/lisp/wdired.el b/lisp/wdired.el
index 375bc26b86..11ef25d4ea 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -1,7 +1,6 @@
;;; wdired.el --- Rename files editing their names in dired buffers
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Filename: wdired.el
;; Author: Juan Le�n Lahoz Garc�a <[email protected]>
@@ -841,5 +840,4 @@ Like original function but it skips read-only words."
;; byte-compile-dynamic: t
;; End:
-;; arch-tag: bc00902e-526f-4305-bc7f-8862a559184f
;;; wdired.el ends here
diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index 1a54d8afc3..8d25a161b4 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -1,7 +1,6 @@
;;; whitespace.el --- minor mode to visualize TAB, (HARD) SPACE, NEWLINE
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <[email protected]>
;; Maintainer: Vinicius Jose Latorre <[email protected]>
@@ -1188,7 +1187,8 @@ See also `whitespace-newline' and `whitespace-display-mappings'."
:global t
:group 'whitespace
(let ((whitespace-style '(newline-mark newline)))
- (global-whitespace-mode global-whitespace-newline-mode)
+ (global-whitespace-mode (if global-whitespace-newline-mode
+ 1 -1))
;; sync states (running a batch job)
(setq global-whitespace-newline-mode global-whitespace-mode)))
@@ -2668,5 +2668,4 @@ It should be added buffer-locally to `write-file-functions'."
(run-hooks 'whitespace-load-hook)
-;; arch-tag: 1b1e2500-dbd4-4a26-8f7a-5a5edfd3c97e
;;; whitespace.el ends here
diff --git a/lisp/wid-browse.el b/lisp/wid-browse.el
index 96e6bd236c..23396a900c 100644
--- a/lisp/wid-browse.el
+++ b/lisp/wid-browse.el
@@ -1,7 +1,6 @@
;;; wid-browse.el --- functions for browsing widgets
;;
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
;;
;; Author: Per Abrahamsen <[email protected]>
;; Keywords: extensions
@@ -279,5 +278,4 @@ With arg, turn widget mode on if and only if arg is positive."
(provide 'wid-browse)
-;; arch-tag: d5ffb18f-8984-4735-8502-edf70456db21
;;; wid-browse.el ends here
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index 9c7de61d7c..c9008d092d 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -1,7 +1,6 @@
;;; wid-edit.el --- Functions for creating and using widgets -*-byte-compile-dynamic: t;-*-
;;
-;; Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1997, 1999-2011 Free Software Foundation, Inc.
;;
;; Author: Per Abrahamsen <[email protected]>
;; Maintainer: FSF
@@ -637,8 +636,8 @@ extension (xpm, xbm, gif, jpg, or png) located in
specs)
(dolist (elt widget-image-conversion)
(dolist (ext (cdr elt))
- (push (list :type (car elt) :file (concat image ext)
- :ascent 'center) specs)))
+ (push (list :type (car elt) :file (concat image ext))
+ specs)))
(find-image (nreverse specs))))
(t
;; Oh well.
@@ -2162,21 +2161,13 @@ when he invoked the menu."
(defun widget-toggle-value-create (widget)
"Insert text representing the `on' and `off' states."
- (if (widget-value widget)
- (let ((image (widget-get widget :on-glyph)))
- (and (display-graphic-p)
- (listp image)
- (not (eq (car image) 'image))
- (widget-put widget :on-glyph (setq image (eval image))))
- (widget-image-insert widget
- (widget-get widget :on)
- image))
- (let ((image (widget-get widget :off-glyph)))
- (and (display-graphic-p)
- (listp image)
- (not (eq (car image) 'image))
- (widget-put widget :off-glyph (setq image (eval image))))
- (widget-image-insert widget (widget-get widget :off) image))))
+ (let* ((val (widget-value widget))
+ (text (widget-get widget (if val :on :off)))
+ (img (widget-image-find
+ (widget-get widget (if val :on-glyph :off-glyph)))))
+ (widget-image-insert widget (or text "")
+ (if img
+ (append img '(:ascent center))))))
(defun widget-toggle-action (widget &optional event)
;; Toggle value.
@@ -2816,34 +2807,22 @@ Return an alist of (TYPE MATCH)."
"An indicator and manipulator for hidden items.
The following properties have special meanings for this widget:
-:on-image Image filename or spec to display when the item is visible.
+:on-glyph Image filename or spec to display when the item is visible.
:on Text shown if the \"on\" image is nil or cannot be displayed.
-:off-image Image filename or spec to display when the item is hidden.
+:off-glyph Image filename or spec to display when the item is hidden.
:off Text shown if the \"off\" image is nil cannot be displayed."
:format "%[%v%]"
:button-prefix ""
:button-suffix ""
- :on-image "down"
+ :on-glyph "down"
:on "Hide"
- :off-image "right"
+ :off-glyph "right"
:off "Show"
:value-create 'widget-visibility-value-create
:action 'widget-toggle-action
:match (lambda (widget value) t))
-(defun widget-visibility-value-create (widget)
- ;; Insert text representing the `on' and `off' states.
- (let* ((val (widget-value widget))
- (text (widget-get widget (if val :on :off)))
- (img (widget-image-find
- (widget-get widget (if val :on-image :off-image)))))
- (widget-image-insert widget
- (if text
- (concat widget-push-button-prefix text
- widget-push-button-suffix)
- "")
- (if img
- (append img '(:ascent center))))))
+(defalias 'widget-visibility-value-create 'widget-toggle-value-create)
;;; The `documentation-link' Widget.
;;
diff --git a/lisp/widget.el b/lisp/widget.el
index 962235a25d..3e6f3132e9 100644
--- a/lisp/widget.el
+++ b/lisp/widget.el
@@ -1,7 +1,6 @@
;;; widget.el --- a library of user interface components
;;
-;; Copyright (C) 1996, 1997, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-1997, 2001-2011 Free Software Foundation, Inc.
;;
;; Author: Per Abrahamsen <[email protected]>
;; Keywords: help, extensions, faces, hypermedia
@@ -96,5 +95,4 @@ The third argument DOC is a documentation string for the widget."
(provide 'widget)
-;; arch-tag: 932c71a3-9aeb-4827-a293-8b88b26d5c58
;;; widget.el ends here
diff --git a/lisp/windmove.el b/lisp/windmove.el
index 7757417b28..5e8d019a97 100644
--- a/lisp/windmove.el
+++ b/lisp/windmove.el
@@ -1,7 +1,6 @@
;;; windmove.el --- directional window-selection routines
;;
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2011 Free Software Foundation, Inc.
;;
;; Author: Hovav Shacham ([email protected])
;; Created: 17 October 1998
@@ -568,5 +567,4 @@ Default MODIFIER is 'shift."
(provide 'windmove)
-;; arch-tag: 56267432-bf1a-4296-a9a0-85c6bd9f2375
;;; windmove.el ends here
diff --git a/lisp/window.el b/lisp/window.el
index 45d7875cf2..af5d9a5b16 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -1,7 +1,6 @@
;;; window.el --- GNU Emacs window commands aside from those written in C
-;; Copyright (C) 1985, 1989, 1992, 1993, 1994, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Copyright (C) 1985, 1989, 1992-1994, 2000-2011
;; Free Software Foundation, Inc.
;; Maintainer: FSF
@@ -2039,5 +2038,4 @@ Otherwise, consult the value of `truncate-partial-width-windows'
(define-key ctl-x-map "+" 'balance-windows)
(define-key ctl-x-4-map "0" 'kill-buffer-and-window)
-;; arch-tag: b508dfcc-c353-4c37-89fa-e773fe10cea9
;;; window.el ends here
diff --git a/lisp/winner.el b/lisp/winner.el
index bd943814e4..e5855ad8aa 100644
--- a/lisp/winner.el
+++ b/lisp/winner.el
@@ -1,7 +1,6 @@
;;; winner.el --- Restore old window configurations
-;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation. Inc.
+;; Copyright (C) 1997-1998, 2001-2011 Free Software Foundation. Inc.
;; Author: Ivar Rummelhoff <[email protected]>
;; Created: 27 Feb 1997
@@ -473,5 +472,4 @@ In other words, \"undo\" changes in window configuration."
minor-mode-map-alist))
(provide 'winner)
-;; arch-tag: 686d1c1b-010e-42ca-a192-b5685112418f
;;; winner.el ends here
diff --git a/lisp/woman.el b/lisp/woman.el
index 25113419de..ac4ace62bf 100644
--- a/lisp/woman.el
+++ b/lisp/woman.el
@@ -1,7 +1,6 @@
;;; woman.el --- browse UN*X manual pages `wo (without) man'
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Francis J. Wright <[email protected]>
;; Maintainer: FSF
@@ -2479,10 +2478,22 @@ Start at FROM and re-scan new text as appropriate."
(woman0-search-regex-start woman0-search-regex-start)
(woman0-search-regex
(concat woman0-search-regex-start woman0-search-regex-end))
+ processed-first-hunk
woman0-rename-alist)
(set-marker-insertion-type woman0-if-to t)
(while (re-search-forward woman0-search-regex nil t)
(setq woman-request (match-string 1))
+
+ ;; Process escape sequences prior to first request (Bug#7843).
+ (unless processed-first-hunk
+ (setq processed-first-hunk t)
+ (let ((process-escapes-to-marker (point-marker)))
+ (set-marker-insertion-type process-escapes-to-marker t)
+ (save-match-data
+ (save-excursion
+ (goto-char from)
+ (woman2-process-escapes process-escapes-to-marker)))))
+
(cond ((string= woman-request "ig") (woman0-ig))
((string= woman-request "if") (woman0-if "if"))
((string= woman-request "ie") (woman0-if "ie"))
diff --git a/lisp/x-dnd.el b/lisp/x-dnd.el
index f071bc49b7..b12cb6c3ab 100644
--- a/lisp/x-dnd.el
+++ b/lisp/x-dnd.el
@@ -1,7 +1,6 @@
;;; x-dnd.el --- drag and drop support for X -*- coding: utf-8 -*-
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Jan Djärv <[email protected]>
;; Maintainer: FSF
diff --git a/lisp/xml.el b/lisp/xml.el
index 8e8981ac43..3c5e316d0f 100644
--- a/lisp/xml.el
+++ b/lisp/xml.el
@@ -1,7 +1,6 @@
;;; xml.el --- XML parser
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2011 Free Software Foundation, Inc.
;; Author: Emmanuel Briot <[email protected]>
;; Maintainer: Mark A. Hershberger <[email protected]>
@@ -911,5 +910,4 @@ The first line is indented with INDENT-STRING."
(provide 'xml)
-;; arch-tag: 5864b283-5a68-4b59-a20d-36a72b353b9b
;;; xml.el ends here
diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el
index f802103fbd..66542578d7 100644
--- a/lisp/xt-mouse.el
+++ b/lisp/xt-mouse.el
@@ -1,7 +1,6 @@
;;; xt-mouse.el --- support the mouse when emacs run in an xterm
-;; Copyright (C) 1994, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 2000-2011 Free Software Foundation, Inc.
;; Author: Per Abrahamsen <[email protected]>
;; Keywords: mouse, terminals
@@ -265,5 +264,4 @@ down the SHIFT key while pressing the mouse button."
(provide 'xt-mouse)
-;; arch-tag: 84962d4e-fae9-4c13-a9d7-ef4925a4ac03
;;; xt-mouse.el ends here
diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog
index 5172d61eb5..450ede33a5 100644
--- a/lwlib/ChangeLog
+++ b/lwlib/ChangeLog
@@ -1,3 +1,16 @@
+2011-01-31 Jan Djärv <[email protected]>
+
+ * lwlib-Xm.c (make_destroyed_instance):
+ * lwlib-utils.c (XtApplyToWidgets):
+ * lwlib.c (safe_strdup, malloc_widget_value)
+ (allocate_widget_info, allocate_widget_instance): Use xmalloc
+ instead of malloc.
+
+2011-01-25 Werner Meisner <[email protected]>
+
+ * lwlib-Xm.c (xm_update_menu): Avoid a NULL pointer dereference
+ (Bug#7690).
+
2010-09-26 Dan Nicolaescu <[email protected]>
Use const for some pointer arguments.
@@ -1640,11 +1653,9 @@
;; Local Variables:
;; coding: utf-8
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1995-1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -1660,5 +1671,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: 0cd8ab87-d764-40d9-b86d-d00c71887a9e
diff --git a/lwlib/Makefile.in b/lwlib/Makefile.in
index 13c3f5691f..a89d60dc68 100644
--- a/lwlib/Makefile.in
+++ b/lwlib/Makefile.in
@@ -1,6 +1,5 @@
# Copyright (C) 1992, 1993 Lucid, Inc.
-# Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-# 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
#
# This file is part of the Lucid Widget Library.
#
diff --git a/lwlib/lwlib-Xaw.c b/lwlib/lwlib-Xaw.c
index 2e08dd12bd..cf98a37196 100644
--- a/lwlib/lwlib-Xaw.c
+++ b/lwlib/lwlib-Xaw.c
@@ -1,7 +1,6 @@
/* The lwlib interface to Athena widgets.
Copyright (C) 1993 Chuck Thompson <[email protected]>
-Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
This file is part of the Lucid Widget Library.
@@ -835,5 +834,3 @@ xaw_creation_table [] =
{NULL, NULL}
};
-/* arch-tag: fbbd3589-ae1c-41a0-9142-f628cfee6564
- (do not change this comment) */
diff --git a/lwlib/lwlib-Xaw.h b/lwlib/lwlib-Xaw.h
index e359b95359..cf23127012 100644
--- a/lwlib/lwlib-Xaw.h
+++ b/lwlib/lwlib-Xaw.h
@@ -28,5 +28,3 @@ xaw_pop_instance (widget_instance *, Boolean);
#endif /* LWLIB_XAW_H */
-/* arch-tag: 7c0fb4de-afd9-4112-9214-24b663cc1870
- (do not change this comment) */
diff --git a/lwlib/lwlib-Xlw.c b/lwlib/lwlib-Xlw.c
index 9a0ff10b11..537011738f 100644
--- a/lwlib/lwlib-Xlw.c
+++ b/lwlib/lwlib-Xlw.c
@@ -1,7 +1,6 @@
/* The lwlib interface to "xlwmenu" menus.
Copyright (C) 1992 Lucid, Inc.
- Copyright (C) 1994, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1994, 2000-2011 Free Software Foundation, Inc.
This file is part of the Lucid Widget Library.
@@ -274,5 +273,3 @@ xlw_destroy_instance (widget_instance *instance)
XtDestroyWidget (instance->widget);
}
-/* arch-tag: 541e3912-477d-406e-9bf2-dbf2b7ff8c3b
- (do not change this comment) */
diff --git a/lwlib/lwlib-Xlw.h b/lwlib/lwlib-Xlw.h
index cb2125ee17..3b2c301c3d 100644
--- a/lwlib/lwlib-Xlw.h
+++ b/lwlib/lwlib-Xlw.h
@@ -28,5 +28,3 @@ xlw_popup_menu (Widget widget, XEvent * event);
#endif /* LWLIB_XLW_H */
-/* arch-tag: e5b1511d-8992-4dad-b947-a2440d8f10a2
- (do not change this comment) */
diff --git a/lwlib/lwlib-Xm.c b/lwlib/lwlib-Xm.c
index 1116a6a544..059cf10d2b 100644
--- a/lwlib/lwlib-Xm.c
+++ b/lwlib/lwlib-Xm.c
@@ -1,8 +1,7 @@
/* The lwlib interface to Motif widgets.
- Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
- Copyright (C) 1992 Lucid, Inc.
+
+Copyright (C) 1994-1997, 1999-2011 Free Software Foundation, Inc.
+Copyright (C) 1992 Lucid, Inc.
This file is part of the Lucid Widget Library.
@@ -174,7 +173,7 @@ make_destroyed_instance (char* name,
Boolean pop_up_p)
{
destroyed_instance* instance =
- (destroyed_instance*)malloc (sizeof (destroyed_instance));
+ (destroyed_instance*) xmalloc (sizeof (destroyed_instance));
instance->name = safe_strdup (name);
instance->type = safe_strdup (type);
instance->widget = widget;
@@ -800,7 +799,7 @@ xm_update_menu (widget_instance* instance,
/* Now replace from scratch all the buttons after the last
place that the top-level structure changed. */
- if (val->contents->change == STRUCTURAL_CHANGE)
+ if (val->contents && val->contents->change == STRUCTURAL_CHANGE)
{
destroy_all_children (widget, num_children_to_keep);
make_menu_in_widget (instance, widget, val->contents,
@@ -1958,5 +1957,3 @@ xm_manage_resizing (Widget w, Boolean flag)
XtVaSetValues (w, XtNallowShellResize, flag, NULL);
}
-/* arch-tag: 73976f64-73b2-4600-aa13-d9ede20ee965
- (do not change this comment) */
diff --git a/lwlib/lwlib-Xm.h b/lwlib/lwlib-Xm.h
index a68fd4ee45..70f8728f76 100644
--- a/lwlib/lwlib-Xm.h
+++ b/lwlib/lwlib-Xm.h
@@ -59,5 +59,3 @@ xm_manage_resizing (Widget w, Boolean flag);
#endif /* LWLIB_XM_H */
-/* arch-tag: 61561304-c146-437b-8ed3-dc33818703c6
- (do not change this comment) */
diff --git a/lwlib/lwlib-int.h b/lwlib/lwlib-int.h
index e84d7fb995..b142ab42d6 100644
--- a/lwlib/lwlib-int.h
+++ b/lwlib/lwlib-int.h
@@ -1,7 +1,6 @@
/*
Copyright (C) 1992 Lucid, Inc.
-Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+Copyright (C) 2000-2011 Free Software Foundation, Inc.
This file is part of the Lucid Widget Library.
@@ -80,5 +79,3 @@ widget_instance * lw_get_widget_instance (Widget);
#endif /* LWLIB_INTERNAL_H */
-/* arch-tag: ae02f67d-ef25-421c-b956-b01a4b0aac76
- (do not change this comment) */
diff --git a/lwlib/lwlib-utils.c b/lwlib/lwlib-utils.c
index ea765cf5bd..30f4f94f37 100644
--- a/lwlib/lwlib-utils.c
+++ b/lwlib/lwlib-utils.c
@@ -1,7 +1,6 @@
/* Defines some widget utility functions.
Copyright (C) 1992 Lucid, Inc.
-Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
This file is part of the Lucid Widget Library.
@@ -75,7 +74,7 @@ XtApplyToWidgets (Widget w, XtApplyToWidgetsProc proc, XtPointer arg)
the procedure might add/delete elements, which would lose badly.
*/
int nkids = cw->composite.num_children;
- Widget *kids = (Widget *) malloc (sizeof (Widget) * nkids);
+ Widget *kids = (Widget *) xmalloc (sizeof (Widget) * nkids);
int i;
memcpy ((char *) kids, (char *) cw->composite.children,
sizeof (Widget) * nkids);
@@ -175,5 +174,3 @@ XtSafelyDestroyWidget (Widget widget)
#endif
}
-/* arch-tag: f21f0a1f-2a4e-44e1-8715-7f234fe2d159
- (do not change this comment) */
diff --git a/lwlib/lwlib-utils.h b/lwlib/lwlib-utils.h
index d4dbda8467..b988374288 100644
--- a/lwlib/lwlib-utils.h
+++ b/lwlib/lwlib-utils.h
@@ -19,5 +19,3 @@ void XtSafelyDestroyWidget (Widget);
#endif /* _LWLIB_UTILS_H_ */
-/* arch-tag: 705efd86-9319-4447-80f6-16aa5b349809
- (do not change this comment) */
diff --git a/lwlib/lwlib.c b/lwlib/lwlib.c
index 1f434e5b61..e03196d792 100644
--- a/lwlib/lwlib.c
+++ b/lwlib/lwlib.c
@@ -1,7 +1,6 @@
/* A general interface to the widgets of different toolkits.
Copyright (C) 1992, 1993 Lucid, Inc.
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1994-1996, 1999-2011 Free Software Foundation, Inc.
This file is part of the Lucid Widget Library.
@@ -110,9 +109,7 @@ safe_strdup (const char *s)
{
char *result;
if (! s) return 0;
- result = (char *) malloc (strlen (s) + 1);
- if (! result)
- return 0;
+ result = (char *) xmalloc (strlen (s) + 1);
strcpy (result, s);
return result;
}
@@ -158,7 +155,7 @@ malloc_widget_value (void)
}
else
{
- wv = (widget_value *) malloc (sizeof (widget_value));
+ wv = (widget_value *) xmalloc (sizeof (widget_value));
malloc_cpt++;
}
memset ((void*) wv, 0, sizeof (widget_value));
@@ -258,7 +255,7 @@ allocate_widget_info (const char* type,
lw_callback post_activate_cb,
lw_callback highlight_cb)
{
- widget_info* info = (widget_info*)malloc (sizeof (widget_info));
+ widget_info* info = (widget_info*) xmalloc (sizeof (widget_info));
info->type = safe_strdup (type);
info->name = safe_strdup (name);
info->id = id;
@@ -300,7 +297,7 @@ static widget_instance *
allocate_widget_instance (widget_info* info, Widget parent, Boolean pop_up_p)
{
widget_instance* instance =
- (widget_instance*)malloc (sizeof (widget_instance));
+ (widget_instance*) xmalloc (sizeof (widget_instance));
memset (instance, 0, sizeof *instance);
instance->parent = parent;
instance->pop_up_p = pop_up_p;
@@ -1422,5 +1419,3 @@ lw_separator_p (const char *label, enum menu_separator *type, int motif_p)
return separator_p;
}
-/* arch-tag: 3d730f36-a441-4a71-9971-48ef3b5a4d9f
- (do not change this comment) */
diff --git a/lwlib/lwlib.h b/lwlib/lwlib.h
index a531429f89..cdd1e790ef 100644
--- a/lwlib/lwlib.h
+++ b/lwlib/lwlib.h
@@ -1,7 +1,6 @@
/*
Copyright (C) 1992, 1993 Lucid, Inc.
-Copyright (C) 1994, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1994, 1999-2011 Free Software Foundation, Inc.
This file is part of the Lucid Widget Library.
@@ -191,5 +190,3 @@ int lw_separator_p (const char *label, enum menu_separator *type,
#endif /* LWLIB_H */
-/* arch-tag: 44d818d5-7eb2-4d87-acd7-b992bb0d5d20
- (do not change this comment) */
diff --git a/lwlib/xlwmenu.c b/lwlib/xlwmenu.c
index d3205eb0d3..a53275c8e8 100644
--- a/lwlib/xlwmenu.c
+++ b/lwlib/xlwmenu.c
@@ -1,7 +1,6 @@
/* Implements a lightweight menubar widget.
Copyright (C) 1992 Lucid, Inc.
-Copyright (C) 1994, 1995, 1997, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1994-1995, 1997, 1999-2011 Free Software Foundation, Inc.
This file is part of the Lucid Widget Library.
@@ -2691,5 +2690,3 @@ pop_up_menu (XlwMenuWidget mw, XButtonPressedEvent *event)
handle_motion_event (mw, (XMotionEvent*)event);
}
-/* arch-tag: 657f43dd-dfd0-4cc9-910c-52935f01176e
- (do not change this comment) */
diff --git a/lwlib/xlwmenu.h b/lwlib/xlwmenu.h
index a514e8df73..1f0f973d7b 100644
--- a/lwlib/xlwmenu.h
+++ b/lwlib/xlwmenu.h
@@ -1,7 +1,7 @@
/* Interface of a lightweight menubar widget.
+
+Copyright (C) 2002-2011 Free Software Foundation, Inc.
Copyright (C) 1992 Lucid, Inc.
-Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
This file is part of the Lucid Widget Library.
@@ -86,5 +86,3 @@ extern void xlwmenu_redisplay (Widget);
#endif /* _XlwMenu_h */
-/* arch-tag: 0c019735-d61b-4080-be85-4fdd6e50ae07
- (do not change this comment) */
diff --git a/lwlib/xlwmenuP.h b/lwlib/xlwmenuP.h
index 1c2a8e8de1..b7ea9de54f 100644
--- a/lwlib/xlwmenuP.h
+++ b/lwlib/xlwmenuP.h
@@ -1,7 +1,7 @@
/* Internals of a lightweight menubar widget.
+
+Copyright (C) 2002-2011 Free Software Foundation, Inc.
Copyright (C) 1992 Lucid, Inc.
-Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
This file is part of the Lucid Widget Library.
@@ -142,5 +142,3 @@ extern XlwMenuClassRec xlwMenuClassRec;
#endif /* _XlwMenuP_h */
-/* arch-tag: 18d7fc41-ffa0-47a3-a49f-3469900c7a25
- (do not change this comment) */
diff --git a/m4/00gnulib.m4 b/m4/00gnulib.m4
new file mode 100644
index 0000000000..7feed46694
--- /dev/null
+++ b/m4/00gnulib.m4
@@ -0,0 +1,30 @@
+# 00gnulib.m4 serial 2
+dnl Copyright (C) 2009-2011 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 This file must be named something that sorts before all other
+dnl gnulib-provided .m4 files. It is needed until such time as we can
+dnl assume Autoconf 2.64, with its improved AC_DEFUN_ONCE semantics.
+
+# AC_DEFUN_ONCE([NAME], VALUE)
+# ----------------------------
+# Define NAME to expand to VALUE on the first use (whether by direct
+# expansion, or by AC_REQUIRE), and to nothing on all subsequent uses.
+# Avoid bugs in AC_REQUIRE in Autoconf 2.63 and earlier. This
+# definition is slower than the version in Autoconf 2.64, because it
+# can only use interfaces that existed since 2.59; but it achieves the
+# same effect. Quoting is necessary to avoid confusing Automake.
+m4_version_prereq([2.63.263], [],
+[m4_define([AC][_DEFUN_ONCE],
+ [AC][_DEFUN([$1],
+ [AC_REQUIRE([_gl_DEFUN_ONCE([$1])],
+ [m4_indir([_gl_DEFUN_ONCE([$1])])])])]dnl
+[AC][_DEFUN([_gl_DEFUN_ONCE([$1])], [$2])])])
+
+# gl_00GNULIB
+# -----------
+# Witness macro that this file has been included. Needed to force
+# Automake to include this file prior to all other gnulib .m4 files.
+AC_DEFUN([gl_00GNULIB])
diff --git a/m4/c-strtod.m4 b/m4/c-strtod.m4
new file mode 100644
index 0000000000..d5f5f502cb
--- /dev/null
+++ b/m4/c-strtod.m4
@@ -0,0 +1,59 @@
+# c-strtod.m4 serial 12
+
+# Copyright (C) 2004-2006, 2009-2011 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Paul Eggert.
+
+AC_DEFUN([gl_C99_STRTOLD],
+[
+ AC_CACHE_CHECK([whether strtold conforms to C99],
+ [gl_cv_func_c99_strtold],
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[/* On HP-UX before 11.23, strtold returns a struct instead of
+ long double. Reject implementations like that, by requiring
+ compatibility with the C99 prototype. */
+ #include <stdlib.h>
+ static long double (*p) (char const *, char **) = strtold;
+ static long double
+ test (char const *nptr, char **endptr)
+ {
+ long double r;
+ r = strtold (nptr, endptr);
+ return r;
+ }]],
+ [[return test ("1.0", NULL) != 1 || p ("1.0", NULL) != 1;]])],
+ [gl_cv_func_c99_strtold=yes],
+ [gl_cv_func_c99_strtold=no])])
+ if test $gl_cv_func_c99_strtold = yes; then
+ AC_DEFINE([HAVE_C99_STRTOLD], [1], [Define to 1 if strtold conforms to C99.])
+ fi
+])
+
+AC_DEFUN([gl_C_STRTOD],
+[
+ AC_LIBOBJ([c-strtod])
+
+ dnl Prerequisites of lib/c-strtod.c.
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_CHECK_FUNCS([strtod_l])
+
+ AC_REQUIRE([AC_C_INLINE])
+ :
+])
+
+AC_DEFUN([gl_C_STRTOLD],
+[
+ AC_LIBOBJ([c-strtold])
+
+ dnl Prerequisites of lib/c-strtold.c.
+ 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/extensions.m4 b/m4/extensions.m4
new file mode 100644
index 0000000000..1330503f0d
--- /dev/null
+++ b/m4/extensions.m4
@@ -0,0 +1,118 @@
+# serial 9 -*- Autoconf -*-
+# Enable extensions on systems that normally disable them.
+
+# Copyright (C) 2003, 2006-2011 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This definition of AC_USE_SYSTEM_EXTENSIONS is stolen from CVS
+# Autoconf. Perhaps we can remove this once we can assume Autoconf
+# 2.62 or later everywhere, but since CVS Autoconf mutates rapidly
+# enough in this area it's likely we'll need to redefine
+# AC_USE_SYSTEM_EXTENSIONS for quite some time.
+
+# If autoconf reports a warning
+# warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
+# or warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
+# the fix is
+# 1) to ensure that AC_USE_SYSTEM_EXTENSIONS is never directly invoked
+# but always AC_REQUIREd,
+# 2) to ensure that for each occurrence of
+# AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+# or
+# AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+# the corresponding gnulib module description has 'extensions' among
+# its dependencies. This will ensure that the gl_USE_SYSTEM_EXTENSIONS
+# invocation occurs in gl_EARLY, not in gl_INIT.
+
+# AC_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+# Remember that #undef in AH_VERBATIM gets replaced with #define by
+# AC_DEFINE. The goal here is to define all known feature-enabling
+# macros, then, if reports of conflicts are made, disable macros that
+# cause problems on some platforms (such as __EXTENSIONS__).
+AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS],
+[AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl
+AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
+
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ AC_CHECK_HEADER([minix/config.h], [MINIX=yes], [MINIX=])
+ if test "$MINIX" = yes; then
+ AC_DEFINE([_POSIX_SOURCE], [1],
+ [Define to 1 if you need to in order for `stat' and other
+ things to work.])
+ AC_DEFINE([_POSIX_1_SOURCE], [2],
+ [Define to 2 if the system does not provide POSIX.1 features
+ except with this defined.])
+ AC_DEFINE([_MINIX], [1],
+ [Define to 1 if on MINIX.])
+ fi
+
+ dnl HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to 500,
+ dnl regardless of whether the flags -Ae or _D_HPUX_SOURCE=1 are already
+ dnl provided.
+ case "$host_os" in
+ hpux*)
+ AC_DEFINE([_XOPEN_SOURCE], [500],
+ [Define to 500 only on HP-UX.])
+ ;;
+ esac
+
+ AH_VERBATIM([__EXTENSIONS__],
+[/* Enable extensions on AIX 3, Interix. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris. */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop. */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+])
+ AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__],
+ [ac_cv_safe_to_define___extensions__],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[
+# define __EXTENSIONS__ 1
+ ]AC_INCLUDES_DEFAULT])],
+ [ac_cv_safe_to_define___extensions__=yes],
+ [ac_cv_safe_to_define___extensions__=no])])
+ test $ac_cv_safe_to_define___extensions__ = yes &&
+ AC_DEFINE([__EXTENSIONS__])
+ AC_DEFINE([_ALL_SOURCE])
+ AC_DEFINE([_GNU_SOURCE])
+ AC_DEFINE([_POSIX_PTHREAD_SEMANTICS])
+ AC_DEFINE([_TANDEM_SOURCE])
+])# AC_USE_SYSTEM_EXTENSIONS
+
+# gl_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS],
+[
+ dnl Require this macro before AC_USE_SYSTEM_EXTENSIONS.
+ dnl gnulib does not need it. But if it gets required by third-party macros
+ dnl after AC_USE_SYSTEM_EXTENSIONS is required, autoconf 2.62..2.63 emit a
+ dnl warning: "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS".
+ dnl Note: We can do this only for one of the macros AC_AIX, AC_GNU_SOURCE,
+ dnl AC_MINIX. If people still use AC_AIX or AC_MINIX, they are out of luck.
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+])
diff --git a/m4/getopt.m4 b/m4/getopt.m4
index 75cccacc2f..035a530df2 100644
--- a/m4/getopt.m4
+++ b/m4/getopt.m4
@@ -1,82 +1,321 @@
-# getopt.m4 serial 10
-dnl Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+# getopt.m4 serial 34
+dnl Copyright (C) 2002-2006, 2008-2011 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.
-# The getopt module assume you want GNU getopt, with getopt_long etc,
-# rather than vanilla POSIX getopt. This means your your code should
-# always include <getopt.h> for the getopt prototypes.
+# Request a POSIX compliant getopt function.
+AC_DEFUN([gl_FUNC_GETOPT_POSIX],
+[
+ m4_divert_text([DEFAULTS], [gl_getopt_required=POSIX])
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ gl_GETOPT_IFELSE([
+ gl_REPLACE_GETOPT
+ ],
+ [])
+])
+
+# Request a POSIX compliant getopt function with GNU extensions (such as
+# options with optional arguments) and the functions getopt_long,
+# getopt_long_only.
+AC_DEFUN([gl_FUNC_GETOPT_GNU],
+[
+ m4_divert_text([INIT_PREPARE], [gl_getopt_required=GNU])
+
+ AC_REQUIRE([gl_FUNC_GETOPT_POSIX])
+])
-AC_DEFUN([gl_GETOPT_SUBSTITUTE],
+# Request the gnulib implementation of the getopt functions unconditionally.
+# argp.m4 uses this.
+AC_DEFUN([gl_REPLACE_GETOPT],
[
+ dnl Arrange for getopt.h to be created.
+ gl_GETOPT_SUBSTITUTE_HEADER
+ dnl Arrange for unistd.h to include getopt.h.
+ GNULIB_UNISTD_H_GETOPT=1
+ dnl Arrange to compile the getopt implementation.
AC_LIBOBJ([getopt])
AC_LIBOBJ([getopt1])
- gl_GETOPT_SUBSTITUTE_HEADER
gl_PREREQ_GETOPT
])
-AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER],
+# emacs' configure.in uses this.
+AC_DEFUN([gl_GETOPT_IFELSE],
[
- GETOPT_H=getopt.h
- AC_DEFINE([__GETOPT_PREFIX], [[rpl_]],
- [Define to rpl_ if the getopt replacement functions and variables
- should be used.])
- AC_SUBST([GETOPT_H])
+ AC_REQUIRE([gl_GETOPT_CHECK_HEADERS])
+ AS_IF([test -n "$gl_replace_getopt"], [$1], [$2])
])
+# Determine whether to replace the entire getopt facility.
AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
[
- GETOPT_H=
- AC_CHECK_HEADERS([getopt.h], [], [GETOPT_H=getopt.h])
- if test -z "$GETOPT_H"; then
- AC_CHECK_FUNCS([getopt_long_only], [], [GETOPT_H=getopt.h])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_REQUIRE([AC_PROG_AWK]) dnl for awk that supports ENVIRON
+
+ dnl Persuade Solaris <unistd.h> to declare optarg, optind, opterr, optopt.
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+ gl_CHECK_NEXT_HEADERS([getopt.h])
+ if test $ac_cv_header_getopt_h = yes; then
+ HAVE_GETOPT_H=1
+ else
+ HAVE_GETOPT_H=0
fi
+ AC_SUBST([HAVE_GETOPT_H])
+
+ gl_replace_getopt=
- dnl BSD getopt_long uses an incompatible method to reset option processing,
- dnl and (as of 2004-10-15) mishandles optional option-arguments.
- if test -z "$GETOPT_H"; then
- AC_CHECK_DECL([optreset], [GETOPT_H=getopt.h], [], [#include <getopt.h>])
+ dnl Test whether <getopt.h> is available.
+ if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+ AC_CHECK_HEADERS([getopt.h], [], [gl_replace_getopt=yes])
fi
- dnl Solaris 10 getopt doesn't handle `+' as a leading character in an
- dnl option string (as of 2005-05-05).
- if test -z "$GETOPT_H"; then
- AC_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_gnu_getopt],
- [AC_RUN_IFELSE(
- [AC_LANG_PROGRAM([#include <getopt.h>],
- [[
- char *myargv[3];
- myargv[0] = "conftest";
- myargv[1] = "-+";
- myargv[2] = 0;
- return getopt (2, myargv, "+a") != '?';
- ]])],
- [gl_cv_func_gnu_getopt=yes],
- [gl_cv_func_gnu_getopt=no],
- [dnl cross compiling - pessimistically guess based on decls
- dnl Solaris 10 getopt doesn't handle `+' as a leading character in an
- dnl option string (as of 2005-05-05).
- AC_CHECK_DECL([getopt_clip],
- [gl_cv_func_gnu_getopt=no], [gl_cv_func_gnu_getopt=yes],
- [#include <getopt.h>])])])
- if test "$gl_cv_func_gnu_getopt" = "no"; then
- GETOPT_H=getopt.h
+ dnl Test whether the function getopt_long is available.
+ if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+ AC_CHECK_FUNCS([getopt_long_only], [], [gl_replace_getopt=yes])
+ fi
+
+ dnl mingw's getopt (in libmingwex.a) does weird things when the options
+ dnl strings starts with '+' and it's not the first call. Some internal state
+ dnl is left over from earlier calls, and neither setting optind = 0 nor
+ dnl setting optreset = 1 get rid of this internal state.
+ dnl POSIX is silent on optind vs. optreset, so we allow either behavior.
+ dnl POSIX 2008 does not specify leading '+' behavior, but see
+ dnl http://austingroupbugs.net/view.php?id=191 for a recommendation on
+ dnl the next version of POSIX. For now, we only guarantee leading '+'
+ dnl behavior with getopt-gnu.
+ if test -z "$gl_replace_getopt"; then
+ AC_CACHE_CHECK([whether getopt is POSIX compatible],
+ [gl_cv_func_getopt_posix],
+ [
+ dnl BSD getopt_long uses an incompatible method to reset
+ dnl option processing. Existence of the variable, in and of
+ dnl itself, is not a reason to replace getopt, but knowledge
+ dnl of the variable is needed to determine how to reset and
+ dnl whether a reset reparses the environment. Solaris
+ dnl supports neither optreset nor optind=0, but keeps no state
+ dnl that needs a reset beyond setting optind=1; detect Solaris
+ dnl by getopt_clip.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <unistd.h>]],
+ [[int *p = &optreset; return optreset;]])],
+ [gl_optind_min=1],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <getopt.h>]],
+ [[return !getopt_clip;]])],
+ [gl_optind_min=1],
+ [gl_optind_min=0])])
+
+ dnl This test fails on mingw and succeeds on many other platforms.
+ gl_save_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS -DOPTIND_MIN=$gl_optind_min"
+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+
+int
+main ()
+{
+ {
+ int argc = 0;
+ char *argv[10];
+ int c;
+
+ argv[argc++] = "program";
+ argv[argc++] = "-a";
+ argv[argc++] = "foo";
+ argv[argc++] = "bar";
+ argv[argc] = NULL;
+ optind = OPTIND_MIN;
+ opterr = 0;
+
+ c = getopt (argc, argv, "ab");
+ if (!(c == 'a'))
+ return 1;
+ c = getopt (argc, argv, "ab");
+ if (!(c == -1))
+ return 2;
+ if (!(optind == 2))
+ return 3;
+ }
+ /* Some internal state exists at this point. */
+ {
+ int argc = 0;
+ char *argv[10];
+ int c;
+
+ argv[argc++] = "program";
+ argv[argc++] = "donald";
+ argv[argc++] = "-p";
+ argv[argc++] = "billy";
+ argv[argc++] = "duck";
+ argv[argc++] = "-a";
+ argv[argc++] = "bar";
+ argv[argc] = NULL;
+ optind = OPTIND_MIN;
+ opterr = 0;
+
+ c = getopt (argc, argv, "+abp:q:");
+ if (!(c == -1))
+ return 4;
+ if (!(strcmp (argv[0], "program") == 0))
+ return 5;
+ if (!(strcmp (argv[1], "donald") == 0))
+ return 6;
+ if (!(strcmp (argv[2], "-p") == 0))
+ return 7;
+ if (!(strcmp (argv[3], "billy") == 0))
+ return 8;
+ if (!(strcmp (argv[4], "duck") == 0))
+ return 9;
+ if (!(strcmp (argv[5], "-a") == 0))
+ return 10;
+ if (!(strcmp (argv[6], "bar") == 0))
+ return 11;
+ if (!(optind == 1))
+ return 12;
+ }
+ /* Detect MacOS 10.5, AIX 7.1 bug. */
+ {
+ char *argv[3] = { "program", "-ab", NULL };
+ optind = OPTIND_MIN;
+ opterr = 0;
+ if (getopt (2, argv, "ab:") != 'a')
+ return 13;
+ if (getopt (2, argv, "ab:") != '?')
+ return 14;
+ if (optopt != 'b')
+ return 15;
+ if (optind != 2)
+ return 16;
+ }
+
+ return 0;
+}
+]])],
+ [gl_cv_func_getopt_posix=yes], [gl_cv_func_getopt_posix=no],
+ [case "$host_os" in
+ mingw*) gl_cv_func_getopt_posix="guessing no";;
+ darwin* | aix*) gl_cv_func_getopt_posix="guessing no";;
+ *) gl_cv_func_getopt_posix="guessing yes";;
+ esac
+ ])
+ CPPFLAGS=$gl_save_CPPFLAGS
+ ])
+ case "$gl_cv_func_getopt_posix" in
+ *no) gl_replace_getopt=yes ;;
+ esac
+ fi
+
+ if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then
+ AC_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_getopt_gnu],
+ [# Even with POSIXLY_CORRECT, the GNU extension of leading '-' in the
+ # optstring is necessary for programs like m4 that have POSIX-mandated
+ # semantics for supporting options interspersed with files.
+ # Also, since getopt_long is a GNU extension, we require optind=0.
+ # Bash ties 'set -o posix' to a non-exported POSIXLY_CORRECT;
+ # so take care to revert to the correct (non-)export state.
+dnl GNU Coding Standards currently allow awk but not env; besides, env
+dnl is ambiguous with environment values that contain newlines.
+ gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }'
+ case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" </dev/null` in
+ xx) gl_had_POSIXLY_CORRECT=exported ;;
+ x) gl_had_POSIXLY_CORRECT=yes ;;
+ *) gl_had_POSIXLY_CORRECT= ;;
+ esac
+ POSIXLY_CORRECT=1
+ export POSIXLY_CORRECT
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM([[#include <getopt.h>
+ #include <stddef.h>
+ #include <string.h>
+ ]], [[
+ int result = 0;
+ /* This code succeeds on glibc 2.8, OpenBSD 4.0, Cygwin, mingw,
+ and fails on MacOS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5,
+ OSF/1 5.1, Solaris 10. */
+ {
+ char *myargv[3];
+ myargv[0] = "conftest";
+ myargv[1] = "-+";
+ myargv[2] = 0;
+ opterr = 0;
+ if (getopt (2, myargv, "+a") != '?')
+ result |= 1;
+ }
+ /* This code succeeds on glibc 2.8, mingw,
+ and fails on MacOS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11,
+ IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x. */
+ {
+ char *argv[] = { "program", "-p", "foo", "bar", NULL };
+
+ optind = 1;
+ if (getopt (4, argv, "p::") != 'p')
+ result |= 2;
+ else if (optarg != NULL)
+ result |= 4;
+ else if (getopt (4, argv, "p::") != -1)
+ result |= 6;
+ else if (optind != 2)
+ result |= 8;
+ }
+ /* This code succeeds on glibc 2.8 and fails on Cygwin 1.7.0. */
+ {
+ char *argv[] = { "program", "foo", "-p", NULL };
+ optind = 0;
+ if (getopt (3, argv, "-p") != 1)
+ result |= 16;
+ else if (getopt (3, argv, "-p") != 'p')
+ result |= 32;
+ }
+ /* This code fails on glibc 2.11. */
+ {
+ char *argv[] = { "program", "-b", "-a", NULL };
+ optind = opterr = 0;
+ if (getopt (3, argv, "+:a:b") != 'b')
+ result |= 64;
+ else if (getopt (3, argv, "+:a:b") != ':')
+ result |= 64;
+ }
+ return result;
+ ]])],
+ [gl_cv_func_getopt_gnu=yes],
+ [gl_cv_func_getopt_gnu=no],
+ [dnl Cross compiling. Guess based on host and declarations.
+ case $host_os:$ac_cv_have_decl_optreset in
+ *-gnu*:* | mingw*:*) gl_cv_func_getopt_gnu=no;;
+ *:yes) gl_cv_func_getopt_gnu=no;;
+ *) gl_cv_func_getopt_gnu=yes;;
+ esac
+ ])
+ case $gl_had_POSIXLY_CORRECT in
+ exported) ;;
+ yes) AS_UNSET([POSIXLY_CORRECT]); POSIXLY_CORRECT=1 ;;
+ *) AS_UNSET([POSIXLY_CORRECT]) ;;
+ esac
+ ])
+ if test "$gl_cv_func_getopt_gnu" = "no"; then
+ gl_replace_getopt=yes
fi
fi
])
-AC_DEFUN([gl_GETOPT_IFELSE],
+# emacs' configure.in uses this.
+AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER],
[
- AC_REQUIRE([gl_GETOPT_CHECK_HEADERS])
- AS_IF([test -n "$GETOPT_H"], [$1], [$2])
+ GETOPT_H=getopt.h
+ AC_DEFINE([__GETOPT_PREFIX], [[rpl_]],
+ [Define to rpl_ if the getopt replacement functions and variables
+ should be used.])
+ AC_SUBST([GETOPT_H])
])
-AC_DEFUN([gl_GETOPT], [gl_GETOPT_IFELSE([gl_GETOPT_SUBSTITUTE])])
-
# Prerequisites of lib/getopt*.
-AC_DEFUN([gl_PREREQ_GETOPT], [:])
-
-ifelse(dnl Do not change this comment
- arch-tag: 6c64a021-551c-4a7f-9c63-cd7e1ce54707
-)dnl
+# emacs' configure.in uses this.
+AC_DEFUN([gl_PREREQ_GETOPT],
+[
+ AC_CHECK_DECLS_ONCE([getenv])
+])
diff --git a/m4/gl-comp.m4 b/m4/gl-comp.m4
new file mode 100644
index 0000000000..e512191890
--- /dev/null
+++ b/m4/gl-comp.m4
@@ -0,0 +1,278 @@
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# Copyright (C) 2002-2011 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+#
+# This file represents the compiled summary of the specification in
+# gnulib-cache.m4. It lists the computed macro invocations that need
+# to be invoked from configure.ac.
+# In projects that use version control, this file can be treated like
+# other built files.
+
+
+# This macro should be invoked from ./configure.in, in the section
+# "Checks for programs", right after AC_PROG_CC, and certainly before
+# any checks for libraries, header files, types and library functions.
+AC_DEFUN([gl_EARLY],
+[
+ m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace
+ m4_pattern_allow([^gl_ES$])dnl a valid locale name
+ m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
+ m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
+ AC_REQUIRE([AC_PROG_RANLIB])
+ # Code from module arg-nonnull:
+ # Code from module c++defs:
+ # Code from module dtoastr:
+ # Code from module extensions:
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ # Code from module getopt-gnu:
+ # Code from module getopt-posix:
+ # Code from module gettext-h:
+ # Code from module include_next:
+ # Code from module intprops:
+ # Code from module mktime:
+ # Code from module multiarch:
+ # Code from module stdbool:
+ # Code from module stddef:
+ # Code from module strftime:
+ # Code from module time:
+ # Code from module time_r:
+ # Code from module unistd:
+ # Code from module warn-on-use:
+])
+
+# This macro should be invoked from ./configure.in, in the section
+# "Check for header files, types and library functions".
+AC_DEFUN([gl_INIT],
+[
+ AM_CONDITIONAL([GL_COND_LIBTOOL], [false])
+ gl_cond_libtool=false
+ gl_libdeps=
+ gl_ltlibdeps=
+ gl_m4_base='m4'
+ m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ]))
+ m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS]))
+ m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
+ m4_pushdef([gl_LIBSOURCES_LIST], [])
+ m4_pushdef([gl_LIBSOURCES_DIR], [])
+ gl_COMMON
+ gl_source_base='lib'
+ # Code from module arg-nonnull:
+ # Code from module c++defs:
+ # Code from module dtoastr:
+ AC_REQUIRE([gl_C99_STRTOLD])
+ # Code from module extensions:
+ # Code from module getopt-gnu:
+ gl_FUNC_GETOPT_GNU
+ gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu])
+ # Code from module getopt-posix:
+ gl_FUNC_GETOPT_POSIX
+ # Code from module gettext-h:
+ AC_SUBST([LIBINTL])
+ AC_SUBST([LTLIBINTL])
+ # Code from module include_next:
+ # Code from module intprops:
+ # Code from module mktime:
+ gl_FUNC_MKTIME
+ gl_TIME_MODULE_INDICATOR([mktime])
+ # Code from module multiarch:
+ gl_MULTIARCH
+ # Code from module stdbool:
+ AM_STDBOOL_H
+ # Code from module stddef:
+ gl_STDDEF_H
+ # Code from module strftime:
+ gl_FUNC_GNU_STRFTIME
+ # Code from module time:
+ gl_HEADER_TIME_H
+ # Code from module time_r:
+ gl_TIME_R
+ gl_TIME_MODULE_INDICATOR([time_r])
+ # Code from module unistd:
+ gl_UNISTD_H
+ # Code from module warn-on-use:
+ # End of code from modules
+ m4_ifval(gl_LIBSOURCES_LIST, [
+ m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
+ for gl_file in ]gl_LIBSOURCES_LIST[ ; do
+ if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then
+ echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2
+ exit 1
+ fi
+ done])dnl
+ m4_if(m4_sysval, [0], [],
+ [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+ ])
+ m4_popdef([gl_LIBSOURCES_DIR])
+ m4_popdef([gl_LIBSOURCES_LIST])
+ m4_popdef([AC_LIBSOURCES])
+ m4_popdef([AC_REPLACE_FUNCS])
+ m4_popdef([AC_LIBOBJ])
+ AC_CONFIG_COMMANDS_PRE([
+ gl_libobjs=
+ gl_ltlibobjs=
+ if test -n "$gl_LIBOBJS"; then
+ # Remove the extension.
+ sed_drop_objext='s/\.o$//;s/\.obj$//'
+ for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
+ gl_libobjs="$gl_libobjs $i.$ac_objext"
+ gl_ltlibobjs="$gl_ltlibobjs $i.lo"
+ done
+ fi
+ AC_SUBST([gl_LIBOBJS], [$gl_libobjs])
+ AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs])
+ ])
+ gltests_libdeps=
+ gltests_ltlibdeps=
+ m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ]))
+ m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS]))
+ m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES]))
+ m4_pushdef([gltests_LIBSOURCES_LIST], [])
+ m4_pushdef([gltests_LIBSOURCES_DIR], [])
+ gl_COMMON
+ gl_source_base='tests'
+changequote(,)dnl
+ gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
+changequote([, ])dnl
+ AC_SUBST([gltests_WITNESS])
+ gl_module_indicator_condition=$gltests_WITNESS
+ m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition])
+ m4_popdef([gl_MODULE_INDICATOR_CONDITION])
+ m4_ifval(gltests_LIBSOURCES_LIST, [
+ m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ ||
+ for gl_file in ]gltests_LIBSOURCES_LIST[ ; do
+ if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then
+ echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2
+ exit 1
+ fi
+ done])dnl
+ m4_if(m4_sysval, [0], [],
+ [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+ ])
+ m4_popdef([gltests_LIBSOURCES_DIR])
+ m4_popdef([gltests_LIBSOURCES_LIST])
+ m4_popdef([AC_LIBSOURCES])
+ m4_popdef([AC_REPLACE_FUNCS])
+ m4_popdef([AC_LIBOBJ])
+ AC_CONFIG_COMMANDS_PRE([
+ gltests_libobjs=
+ gltests_ltlibobjs=
+ if test -n "$gltests_LIBOBJS"; then
+ # Remove the extension.
+ sed_drop_objext='s/\.o$//;s/\.obj$//'
+ for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
+ gltests_libobjs="$gltests_libobjs $i.$ac_objext"
+ gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
+ done
+ fi
+ AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs])
+ AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs])
+ ])
+ LIBGNU_LIBDEPS="$gl_libdeps"
+ AC_SUBST([LIBGNU_LIBDEPS])
+ LIBGNU_LTLIBDEPS="$gl_ltlibdeps"
+ AC_SUBST([LIBGNU_LTLIBDEPS])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into gl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gl_LIBOBJ], [
+ AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl
+ gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext"
+])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into gl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gl_REPLACE_FUNCS], [
+ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
+ AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)])
+])
+
+# Like AC_LIBSOURCES, except the directory where the source file is
+# expected is derived from the gnulib-tool parameterization,
+# and alloca is special cased (for the alloca-opt module).
+# We could also entirely rely on EXTRA_lib..._SOURCES.
+AC_DEFUN([gl_LIBSOURCES], [
+ m4_foreach([_gl_NAME], [$1], [
+ m4_if(_gl_NAME, [alloca.c], [], [
+ m4_define([gl_LIBSOURCES_DIR], [lib])
+ m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ])
+ ])
+ ])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into gltests_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gltests_LIBOBJ], [
+ AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl
+ gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext"
+])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into gltests_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gltests_REPLACE_FUNCS], [
+ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
+ AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)])
+])
+
+# Like AC_LIBSOURCES, except the directory where the source file is
+# expected is derived from the gnulib-tool parameterization,
+# and alloca is special cased (for the alloca-opt module).
+# We could also entirely rely on EXTRA_lib..._SOURCES.
+AC_DEFUN([gltests_LIBSOURCES], [
+ m4_foreach([_gl_NAME], [$1], [
+ m4_if(_gl_NAME, [alloca.c], [], [
+ m4_define([gltests_LIBSOURCES_DIR], [tests])
+ m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ])
+ ])
+ ])
+])
+
+# This macro records the list of files which have been installed by
+# gnulib-tool and may be removed by future gnulib-tool invocations.
+AC_DEFUN([gl_FILE_LIST], [
+ build-aux/arg-nonnull.h
+ build-aux/c++defs.h
+ build-aux/warn-on-use.h
+ lib/dtoastr.c
+ lib/ftoastr.c
+ lib/ftoastr.h
+ lib/getopt.c
+ lib/getopt.in.h
+ lib/getopt1.c
+ lib/getopt_int.h
+ lib/gettext.h
+ lib/intprops.h
+ lib/mktime-internal.h
+ lib/mktime.c
+ lib/stdbool.in.h
+ lib/stddef.in.h
+ lib/strftime.c
+ lib/strftime.h
+ lib/time.in.h
+ lib/time_r.c
+ lib/unistd.in.h
+ m4/00gnulib.m4
+ m4/c-strtod.m4
+ m4/extensions.m4
+ m4/getopt.m4
+ m4/gnulib-common.m4
+ m4/include_next.m4
+ m4/mktime.m4
+ m4/multiarch.m4
+ m4/stdbool.m4
+ m4/stddef_h.m4
+ m4/strftime.m4
+ m4/time_h.m4
+ m4/time_r.m4
+ m4/tm_gmtoff.m4
+ m4/unistd_h.m4
+ m4/warn-on-use.m4
+ m4/wchar_t.m4
+])
diff --git a/m4/gnulib-common.m4 b/m4/gnulib-common.m4
new file mode 100644
index 0000000000..ecbf33694e
--- /dev/null
+++ b/m4/gnulib-common.m4
@@ -0,0 +1,234 @@
+# gnulib-common.m4 serial 23
+dnl Copyright (C) 2007-2011 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.
+
+# gl_COMMON
+# is expanded unconditionally through gnulib-tool magic.
+AC_DEFUN([gl_COMMON], [
+ dnl Use AC_REQUIRE here, so that the code is expanded once only.
+ AC_REQUIRE([gl_00GNULIB])
+ AC_REQUIRE([gl_COMMON_BODY])
+])
+AC_DEFUN([gl_COMMON_BODY], [
+ AH_VERBATIM([isoc99_inline],
+[/* 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__.
+ __APPLE__ && __MACH__ test for MacOS X.
+ __APPLE_CC__ tests for the Apple compiler and its version.
+ __STDC_VERSION__ tests for the C99 mode. */
+#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
+# define __GNUC_STDC_INLINE__ 1
+#endif])
+ AH_VERBATIM([unused_parameter],
+[/* Define as a marker that can be attached to declarations that might not
+ be used. This helps to reduce warnings, such as from
+ GCC -Wunused-parameter. */
+#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _GL_UNUSED __attribute__ ((__unused__))
+#else
+# define _GL_UNUSED
+#endif
+/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name
+ is a misnomer outside of parameter lists. */
+#define _UNUSED_PARAMETER_ _GL_UNUSED
+])
+ dnl Preparation for running test programs:
+ dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not
+ dnl to /dev/tty, so they can be redirected to log files. Such diagnostics
+ dnl arise e.g., in the macros gl_PRINTF_DIRECTIVE_N, gl_SNPRINTF_DIRECTIVE_N.
+ LIBC_FATAL_STDERR_=1
+ export LIBC_FATAL_STDERR_
+])
+
+# gl_MODULE_INDICATOR_CONDITION
+# expands to a C preprocessor expression that evaluates to 1 or 0, depending
+# whether a gnulib module that has been requested shall be considered present
+# or not.
+AC_DEFUN([gl_MODULE_INDICATOR_CONDITION], [1])
+
+# gl_MODULE_INDICATOR_SET_VARIABLE([modulename])
+# sets the shell variable that indicates the presence of the given module to
+# a C preprocessor expression that will evaluate to 1.
+AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE],
+[
+ GNULIB_[]m4_translit([[$1]],
+ [abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=gl_MODULE_INDICATOR_CONDITION
+])
+
+# gl_MODULE_INDICATOR([modulename])
+# defines a C macro indicating the presence of the given module
+# in a location where it can be used.
+# | Value | Value |
+# | in lib/ | in tests/ |
+# --------------------------------------------+---------+-----------+
+# Module present among main modules: | 1 | 1 |
+# --------------------------------------------+---------+-----------+
+# Module present among tests-related modules: | 0 | 1 |
+# --------------------------------------------+---------+-----------+
+# Module not present at all: | 0 | 0 |
+# --------------------------------------------+---------+-----------+
+AC_DEFUN([gl_MODULE_INDICATOR],
+[
+ AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]],
+ [abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]),
+ [gl_MODULE_INDICATOR_CONDITION],
+ [Define to a C preprocessor expression that evaluates to 1 or 0,
+ depending whether the gnulib module $1 shall be considered present.])
+])
+
+# gl_MODULE_INDICATOR_FOR_TESTS([modulename])
+# defines a C macro indicating the presence of the given module
+# in lib or tests. This is useful to determine whether the module
+# should be tested.
+# | Value | Value |
+# | in lib/ | in tests/ |
+# --------------------------------------------+---------+-----------+
+# Module present among main modules: | 1 | 1 |
+# --------------------------------------------+---------+-----------+
+# Module present among tests-related modules: | 1 | 1 |
+# --------------------------------------------+---------+-----------+
+# Module not present at all: | 0 | 0 |
+# --------------------------------------------+---------+-----------+
+AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS],
+[
+ AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]],
+ [abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1],
+ [Define to 1 when the gnulib module $1 should be tested.])
+])
+
+# gl_ASSERT_NO_GNULIB_POSIXCHECK
+# asserts that there will never be a need to #define GNULIB_POSIXCHECK.
+# and thereby enables an optimization of configure and config.h.
+# Used by Emacs.
+AC_DEFUN([gl_ASSERT_NO_GNULIB_POSIXCHECK],
+[
+ dnl Override gl_WARN_ON_USE_PREPARE.
+ AC_DEFUN([gl_WARN_ON_USE_PREPARE], [])
+])
+
+# gl_ASSERT_NO_GNULIB_TESTS
+# asserts that there will be no gnulib tests in the scope of the configure.ac
+# and thereby enables an optimization of config.h.
+# Used by Emacs.
+AC_DEFUN([gl_ASSERT_NO_GNULIB_TESTS],
+[
+ dnl Override gl_MODULE_INDICATOR_FOR_TESTS.
+ AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], [])
+])
+
+# Test whether <features.h> exists.
+# Set HAVE_FEATURES_H.
+AC_DEFUN([gl_FEATURES_H],
+[
+ AC_CHECK_HEADERS_ONCE([features.h])
+ if test $ac_cv_header_features_h = yes; then
+ HAVE_FEATURES_H=1
+ else
+ HAVE_FEATURES_H=0
+ fi
+ AC_SUBST([HAVE_FEATURES_H])
+])
+
+# m4_foreach_w
+# is a backport of autoconf-2.59c's m4_foreach_w.
+# Remove this macro when we can assume autoconf >= 2.60.
+m4_ifndef([m4_foreach_w],
+ [m4_define([m4_foreach_w],
+ [m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])])
+
+# AS_VAR_IF(VAR, VALUE, [IF-MATCH], [IF-NOT-MATCH])
+# ----------------------------------------------------
+# Backport of autoconf-2.63b's macro.
+# Remove this macro when we can assume autoconf >= 2.64.
+m4_ifndef([AS_VAR_IF],
+[m4_define([AS_VAR_IF],
+[AS_IF([test x"AS_VAR_GET([$1])" = x""$2], [$3], [$4])])])
+
+# AC_PROG_MKDIR_P
+# is a backport of autoconf-2.60's AC_PROG_MKDIR_P, with a fix
+# for interoperability with automake-1.9.6 from autoconf-2.62.
+# Remove this macro when we can assume autoconf >= 2.62 or
+# autoconf >= 2.60 && automake >= 1.10.
+m4_ifdef([AC_PROG_MKDIR_P], [
+ dnl For automake-1.9.6 && autoconf < 2.62: Ensure MKDIR_P is AC_SUBSTed.
+ m4_define([AC_PROG_MKDIR_P],
+ m4_defn([AC_PROG_MKDIR_P])[
+ AC_SUBST([MKDIR_P])])], [
+ dnl For autoconf < 2.60: Backport of AC_PROG_MKDIR_P.
+ AC_DEFUN_ONCE([AC_PROG_MKDIR_P],
+ [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+ MKDIR_P='$(mkdir_p)'
+ AC_SUBST([MKDIR_P])])])
+
+# AC_C_RESTRICT
+# This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61,
+# so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++
+# works.
+# This definition can be removed once autoconf >= 2.62 can be assumed.
+m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.62]),[-1],[
+AC_DEFUN([AC_C_RESTRICT],
+[AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict],
+ [ac_cv_c_restrict=no
+ # The order here caters to the fact that C++ does not require restrict.
+ for ac_kw in __restrict __restrict__ _Restrict restrict; do
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+ [[typedef int * int_ptr;
+ int foo (int_ptr $ac_kw ip) {
+ return ip[0];
+ }]],
+ [[int s[1];
+ int * $ac_kw t = s;
+ t[0] = 0;
+ return foo(t)]])],
+ [ac_cv_c_restrict=$ac_kw])
+ test "$ac_cv_c_restrict" != no && break
+ done
+ ])
+ AH_VERBATIM([restrict],
+[/* Define to the equivalent of the C99 'restrict' keyword, or to
+ nothing if this is not supported. Do not define if restrict is
+ supported directly. */
+#undef restrict
+/* Work around a bug in Sun C++: it does not support _Restrict, even
+ though the corresponding Sun C compiler does, which causes
+ "#define restrict _Restrict" in the previous line. Perhaps some future
+ version of Sun C++ will work with _Restrict; if so, it'll probably
+ define __RESTRICT, just as Sun C does. */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+#endif])
+ case $ac_cv_c_restrict in
+ restrict) ;;
+ no) AC_DEFINE([restrict], []) ;;
+ *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
+ esac
+])
+])
+
+# gl_BIGENDIAN
+# is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd.
+# Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some
+# macros invoke AC_C_BIGENDIAN with arguments.
+AC_DEFUN([gl_BIGENDIAN],
+[
+ AC_C_BIGENDIAN
+])
+
+# gl_CACHE_VAL_SILENT(cache-id, command-to-set-it)
+# is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not
+# output a spurious "(cached)" mark in the midst of other configure output.
+# This macro should be used instead of AC_CACHE_VAL when it is not surrounded
+# by an AC_MSG_CHECKING/AC_MSG_RESULT pair.
+AC_DEFUN([gl_CACHE_VAL_SILENT],
+[
+ saved_as_echo_n="$as_echo_n"
+ as_echo_n=':'
+ AC_CACHE_VAL([$1], [$2])
+ as_echo_n="$saved_as_echo_n"
+])
diff --git a/m4/gnulib-tool.m4 b/m4/gnulib-tool.m4
new file mode 100644
index 0000000000..ed41e9d415
--- /dev/null
+++ b/m4/gnulib-tool.m4
@@ -0,0 +1,57 @@
+# gnulib-tool.m4 serial 2
+dnl Copyright (C) 2004-2005, 2009-2011 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 The following macros need not be invoked explicitly.
+dnl Invoking them does nothing except to declare default arguments
+dnl for "gnulib-tool --import".
+
+dnl Usage: gl_LOCAL_DIR([DIR])
+AC_DEFUN([gl_LOCAL_DIR], [])
+
+dnl Usage: gl_MODULES([module1 module2 ...])
+AC_DEFUN([gl_MODULES], [])
+
+dnl Usage: gl_AVOID([module1 module2 ...])
+AC_DEFUN([gl_AVOID], [])
+
+dnl Usage: gl_SOURCE_BASE([DIR])
+AC_DEFUN([gl_SOURCE_BASE], [])
+
+dnl Usage: gl_M4_BASE([DIR])
+AC_DEFUN([gl_M4_BASE], [])
+
+dnl Usage: gl_PO_BASE([DIR])
+AC_DEFUN([gl_PO_BASE], [])
+
+dnl Usage: gl_DOC_BASE([DIR])
+AC_DEFUN([gl_DOC_BASE], [])
+
+dnl Usage: gl_TESTS_BASE([DIR])
+AC_DEFUN([gl_TESTS_BASE], [])
+
+dnl Usage: gl_WITH_TESTS
+AC_DEFUN([gl_WITH_TESTS], [])
+
+dnl Usage: gl_LIB([LIBNAME])
+AC_DEFUN([gl_LIB], [])
+
+dnl Usage: gl_LGPL or gl_LGPL([VERSION])
+AC_DEFUN([gl_LGPL], [])
+
+dnl Usage: gl_MAKEFILE_NAME([FILENAME])
+AC_DEFUN([gl_MAKEFILE_NAME], [])
+
+dnl Usage: gl_LIBTOOL
+AC_DEFUN([gl_LIBTOOL], [])
+
+dnl Usage: gl_MACRO_PREFIX([PREFIX])
+AC_DEFUN([gl_MACRO_PREFIX], [])
+
+dnl Usage: gl_PO_DOMAIN([DOMAIN])
+AC_DEFUN([gl_PO_DOMAIN], [])
+
+dnl Usage: gl_VC_FILES([BOOLEAN])
+AC_DEFUN([gl_VC_FILES], [])
diff --git a/m4/include_next.m4 b/m4/include_next.m4
new file mode 100644
index 0000000000..b3c7849185
--- /dev/null
+++ b/m4/include_next.m4
@@ -0,0 +1,244 @@
+# include_next.m4 serial 18
+dnl Copyright (C) 2006-2011 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 Paul Eggert and Derek Price.
+
+dnl Sets INCLUDE_NEXT and PRAGMA_SYSTEM_HEADER.
+dnl
+dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to
+dnl 'include' otherwise.
+dnl
+dnl INCLUDE_NEXT_AS_FIRST_DIRECTIVE expands to 'include_next' if the compiler
+dnl supports it in the special case that it is the first include directive in
+dnl the given file, or to 'include' otherwise.
+dnl
+dnl PRAGMA_SYSTEM_HEADER can be used in files that contain #include_next,
+dnl so as to avoid GCC warnings when the gcc option -pedantic is used.
+dnl '#pragma GCC system_header' has the same effect as if the file was found
+dnl through the include search path specified with '-isystem' options (as
+dnl opposed to the search path specified with '-I' options). Namely, gcc
+dnl does not warn about some things, and on some systems (Solaris and Interix)
+dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side
+dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead
+dnl of plain '__STDC__'.
+dnl
+dnl PRAGMA_COLUMNS can be used in files that override system header files, so
+dnl as to avoid compilation errors on HP NonStop systems when the gnulib file
+dnl is included by a system header file that does a "#pragma COLUMNS 80" (which
+dnl has the effect of truncating the lines of that file and all files that it
+dnl includes to 80 columns) and the gnulib file has lines longer than 80
+dnl columns.
+
+AC_DEFUN([gl_INCLUDE_NEXT],
+[
+ AC_LANG_PREPROC_REQUIRE()
+ AC_CACHE_CHECK([whether the preprocessor supports include_next],
+ [gl_cv_have_include_next],
+ [rm -rf conftestd1a conftestd1b conftestd2
+ mkdir conftestd1a conftestd1b conftestd2
+ dnl IBM C 9.0, 10.1 (original versions, prior to the 2009-01 updates) on
+ dnl AIX 6.1 support include_next when used as first preprocessor directive
+ dnl in a file, but not when preceded by another include directive. Check
+ dnl for this bug by including <stdio.h>.
+ dnl Additionally, with this same compiler, include_next is a no-op when
+ dnl used in a header file that was included by specifying its absolute
+ dnl file name. Despite these two bugs, include_next is used in the
+ dnl compiler's <math.h>. By virtue of the second bug, we need to use
+ dnl include_next as well in this case.
+ cat <<EOF > conftestd1a/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+ cat <<EOF > conftestd1b/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include <stdio.h>
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+ cat <<EOF > conftestd2/conftest.h
+#ifndef DEFINED_IN_CONFTESTD1
+#error "include_next test doesn't work"
+#endif
+#define DEFINED_IN_CONFTESTD2
+EOF
+ gl_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
+dnl We intentionally avoid using AC_LANG_SOURCE here.
+ AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include <conftest.h>]],
+ [gl_cv_have_include_next=yes],
+ [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
+ AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include <conftest.h>]],
+ [gl_cv_have_include_next=buggy],
+ [gl_cv_have_include_next=no])
+ ])
+ CPPFLAGS="$gl_save_CPPFLAGS"
+ rm -rf conftestd1a conftestd1b conftestd2
+ ])
+ PRAGMA_SYSTEM_HEADER=
+ if test $gl_cv_have_include_next = yes; then
+ INCLUDE_NEXT=include_next
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+ if test -n "$GCC"; then
+ PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
+ fi
+ else
+ if test $gl_cv_have_include_next = buggy; then
+ INCLUDE_NEXT=include
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+ else
+ INCLUDE_NEXT=include
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
+ fi
+ fi
+ AC_SUBST([INCLUDE_NEXT])
+ AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE])
+ AC_SUBST([PRAGMA_SYSTEM_HEADER])
+ AC_CACHE_CHECK([whether system header files limit the line length],
+ [gl_cv_pragma_columns],
+ [dnl HP NonStop systems, which define __TANDEM, have this misfeature.
+ AC_EGREP_CPP([choke me],
+ [
+#ifdef __TANDEM
+choke me
+#endif
+ ],
+ [gl_cv_pragma_columns=yes],
+ [gl_cv_pragma_columns=no])
+ ])
+ if test $gl_cv_pragma_columns = yes; then
+ PRAGMA_COLUMNS="#pragma COLUMNS 10000"
+ else
+ PRAGMA_COLUMNS=
+ fi
+ AC_SUBST([PRAGMA_COLUMNS])
+])
+
+# gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...)
+# ------------------------------------------
+# For each arg foo.h, if #include_next works, define NEXT_FOO_H to be
+# '<foo.h>'; otherwise define it to be
+# '"///usr/include/foo.h"', or whatever other absolute file name is suitable.
+# Also, if #include_next works as first preprocessing directive in a file,
+# define NEXT_AS_FIRST_DIRECTIVE_FOO_H to be '<foo.h>'; otherwise define it to
+# be
+# '"///usr/include/foo.h"', or whatever other absolute file name is suitable.
+# That way, a header file with the following line:
+# #@INCLUDE_NEXT@ @NEXT_FOO_H@
+# or
+# #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_FOO_H@
+# behaves (after sed substitution) as if it contained
+# #include_next <foo.h>
+# even if the compiler does not support include_next.
+# The three "///" are to pacify Sun C 5.8, which otherwise would say
+# "warning: #include of /usr/include/... may be non-portable".
+# Use `""', not `<>', so that the /// cannot be confused with a C99 comment.
+# Note: This macro assumes that the header file is not empty after
+# preprocessing, i.e. it does not only define preprocessor macros but also
+# provides some type/enum definitions or function/variable declarations.
+#
+# This macro also checks whether each header exists, by invoking
+# AC_CHECK_HEADERS_ONCE or AC_CHECK_HEADERS on each argument.
+AC_DEFUN([gl_CHECK_NEXT_HEADERS],
+[
+ gl_NEXT_HEADERS_INTERNAL([$1], [check])
+])
+
+# gl_NEXT_HEADERS(HEADER1 HEADER2 ...)
+# ------------------------------------
+# Like gl_CHECK_NEXT_HEADERS, except do not check whether the headers exist.
+# This is suitable for headers like <stddef.h> that are standardized by C89
+# and therefore can be assumed to exist.
+AC_DEFUN([gl_NEXT_HEADERS],
+[
+ gl_NEXT_HEADERS_INTERNAL([$1], [assume])
+])
+
+# The guts of gl_CHECK_NEXT_HEADERS and gl_NEXT_HEADERS.
+AC_DEFUN([gl_NEXT_HEADERS_INTERNAL],
+[
+ AC_REQUIRE([gl_INCLUDE_NEXT])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ m4_if([$2], [check],
+ [AC_CHECK_HEADERS_ONCE([$1])
+ ])
+
+ m4_foreach_w([gl_HEADER_NAME], [$1],
+ [AS_VAR_PUSHDEF([gl_next_header],
+ [gl_cv_next_]m4_defn([gl_HEADER_NAME]))
+ if test $gl_cv_have_include_next = yes; then
+ AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>'])
+ else
+ AC_CACHE_CHECK(
+ [absolute name of <]m4_defn([gl_HEADER_NAME])[>],
+ m4_defn([gl_next_header]),
+ [m4_if([$2], [check],
+ [AS_VAR_PUSHDEF([gl_header_exists],
+ [ac_cv_header_]m4_defn([gl_HEADER_NAME]))
+ if test AS_VAR_GET(gl_header_exists) = yes; then
+ AS_VAR_POPDEF([gl_header_exists])
+ ])
+ AC_LANG_CONFTEST(
+ [AC_LANG_SOURCE(
+ [[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]]
+ )])
+ dnl AIX "xlc -E" and "cc -E" omit #line directives for header
+ dnl files that contain only a #include of other header files and
+ dnl no non-comment tokens of their own. This leads to a failure
+ dnl to detect the absolute name of <dirent.h>, <signal.h>,
+ dnl <poll.h> and others. The workaround is to force preservation
+ dnl of comments through option -C. This ensures all necessary
+ dnl #line directives are present. GCC supports option -C as well.
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+ dnl eval is necessary to expand gl_absname_cpp.
+ dnl Ultrix and Pyramid sh refuse to redirect output of eval,
+ dnl so use subshell.
+ AS_VAR_SET([gl_next_header],
+ ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
+ sed -n '\#/]m4_defn([gl_HEADER_NAME])[#{
+ s#.*"\(.*/]m4_defn([gl_HEADER_NAME])[\)".*#\1#
+ s#^/[^/]#//&#
+ p
+ q
+ }'`'"'])
+ m4_if([$2], [check],
+ [else
+ AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>'])
+ fi
+ ])
+ ])
+ fi
+ AC_SUBST(
+ AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])),
+ [AS_VAR_GET([gl_next_header])])
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'gl_HEADER_NAME'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=AS_VAR_GET([gl_next_header])
+ fi
+ AC_SUBST(
+ AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])),
+ [$gl_next_as_first_directive])
+ AS_VAR_POPDEF([gl_next_header])])
+])
+
+# Autoconf 2.68 added warnings for our use of AC_COMPILE_IFELSE;
+# this fallback is safe for all earlier autoconf versions.
+m4_define_default([AC_LANG_DEFINES_PROVIDED])
diff --git a/m4/mktime.m4 b/m4/mktime.m4
new file mode 100644
index 0000000000..56b2416d61
--- /dev/null
+++ b/m4/mktime.m4
@@ -0,0 +1,241 @@
+# serial 19
+dnl Copyright (C) 2002-2003, 2005-2007, 2009-2011 Free Software Foundation,
+dnl 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.
+
+# Redefine AC_FUNC_MKTIME, because it is no longer maintained in Autoconf.
+# AC_FUNC_MKTIME
+# --------------
+AC_DEFUN([AC_FUNC_MKTIME],
+[AC_CHECK_HEADERS_ONCE([unistd.h])
+AC_CHECK_FUNCS_ONCE([alarm])
+AC_REQUIRE([gl_MULTIARCH])
+if test $APPLE_UNIVERSAL_BUILD = 1; then
+ # A universal build on Apple MacOS X platforms.
+ # The test result would be 'yes' in 32-bit mode and 'no' in 64-bit mode.
+ # But we need a configuration result that is valid in both modes.
+ ac_cv_func_working_mktime=no
+fi
+AC_CACHE_CHECK([for working mktime], [ac_cv_func_working_mktime],
+[AC_RUN_IFELSE([AC_LANG_SOURCE(
+[[/* Test program from Paul Eggert and Tony Leneis. */
+#include <limits.h>
+#include <stdlib.h>
+#include <time.h>
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#ifndef HAVE_ALARM
+# define alarm(X) /* empty */
+#endif
+
+/* Work around redefinition to rpl_putenv by other config tests. */
+#undef putenv
+
+static time_t time_t_max;
+static time_t time_t_min;
+
+/* Values we'll use to set the TZ environment variable. */
+static char *tz_strings[] = {
+ (char *) 0, "TZ=GMT0", "TZ=JST-9",
+ "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00"
+};
+#define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0]))
+
+/* Return 0 if mktime fails to convert a date in the spring-forward gap.
+ Based on a problem report from Andreas Jaeger. */
+static int
+spring_forward_gap ()
+{
+ /* glibc (up to about 1998-10-07) failed this test. */
+ struct tm tm;
+
+ /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0"
+ instead of "TZ=America/Vancouver" in order to detect the bug even
+ on systems that don't support the Olson extension, or don't have the
+ full zoneinfo tables installed. */
+ putenv ("TZ=PST8PDT,M4.1.0,M10.5.0");
+
+ tm.tm_year = 98;
+ tm.tm_mon = 3;
+ tm.tm_mday = 5;
+ tm.tm_hour = 2;
+ tm.tm_min = 0;
+ tm.tm_sec = 0;
+ tm.tm_isdst = -1;
+ return mktime (&tm) != (time_t) -1;
+}
+
+static int
+mktime_test1 (time_t now)
+{
+ struct tm *lt;
+ return ! (lt = localtime (&now)) || mktime (lt) == now;
+}
+
+static int
+mktime_test (time_t now)
+{
+ return (mktime_test1 (now)
+ && mktime_test1 ((time_t) (time_t_max - now))
+ && mktime_test1 ((time_t) (time_t_min + now)));
+}
+
+static int
+irix_6_4_bug ()
+{
+ /* Based on code from Ariel Faigon. */
+ struct tm tm;
+ tm.tm_year = 96;
+ tm.tm_mon = 3;
+ tm.tm_mday = 0;
+ tm.tm_hour = 0;
+ tm.tm_min = 0;
+ tm.tm_sec = 0;
+ tm.tm_isdst = -1;
+ mktime (&tm);
+ return tm.tm_mon == 2 && tm.tm_mday == 31;
+}
+
+static int
+bigtime_test (int j)
+{
+ struct tm tm;
+ time_t now;
+ tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j;
+ now = mktime (&tm);
+ if (now != (time_t) -1)
+ {
+ struct tm *lt = localtime (&now);
+ if (! (lt
+ && lt->tm_year == tm.tm_year
+ && lt->tm_mon == tm.tm_mon
+ && lt->tm_mday == tm.tm_mday
+ && lt->tm_hour == tm.tm_hour
+ && lt->tm_min == tm.tm_min
+ && lt->tm_sec == tm.tm_sec
+ && lt->tm_yday == tm.tm_yday
+ && lt->tm_wday == tm.tm_wday
+ && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst)
+ == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst))))
+ return 0;
+ }
+ return 1;
+}
+
+static int
+year_2050_test ()
+{
+ /* The correct answer for 2050-02-01 00:00:00 in Pacific time,
+ ignoring leap seconds. */
+ unsigned long int answer = 2527315200UL;
+
+ struct tm tm;
+ time_t t;
+ tm.tm_year = 2050 - 1900;
+ tm.tm_mon = 2 - 1;
+ tm.tm_mday = 1;
+ tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
+ tm.tm_isdst = -1;
+
+ /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0"
+ instead of "TZ=America/Vancouver" in order to detect the bug even
+ on systems that don't support the Olson extension, or don't have the
+ full zoneinfo tables installed. */
+ putenv ("TZ=PST8PDT,M4.1.0,M10.5.0");
+
+ t = mktime (&tm);
+
+ /* Check that the result is either a failure, or close enough
+ to the correct answer that we can assume the discrepancy is
+ due to leap seconds. */
+ return (t == (time_t) -1
+ || (0 < t && answer - 120 <= t && t <= answer + 120));
+}
+
+int
+main ()
+{
+ int result = 0;
+ time_t t, delta;
+ int i, j;
+ int time_t_signed_magnitude = (time_t) ~ (time_t) 0 < (time_t) -1;
+ int time_t_signed = ! ((time_t) 0 < (time_t) -1);
+
+ /* This test makes some buggy mktime implementations loop.
+ Give up after 60 seconds; a mktime slower than that
+ isn't worth using anyway. */
+ alarm (60);
+
+ time_t_max = (! time_t_signed
+ ? (time_t) -1
+ : ((((time_t) 1 << (sizeof (time_t) * CHAR_BIT - 2)) - 1)
+ * 2 + 1));
+ time_t_min = (! time_t_signed
+ ? (time_t) 0
+ : time_t_signed_magnitude
+ ? ~ (time_t) 0
+ : ~ time_t_max);
+
+ delta = time_t_max / 997; /* a suitable prime number */
+ for (i = 0; i < N_STRINGS; i++)
+ {
+ if (tz_strings[i])
+ putenv (tz_strings[i]);
+
+ for (t = 0; t <= time_t_max - delta; t += delta)
+ if (! mktime_test (t))
+ result |= 1;
+ if (! (mktime_test ((time_t) 1)
+ && mktime_test ((time_t) (60 * 60))
+ && mktime_test ((time_t) (60 * 60 * 24))))
+ result |= 2;
+
+ for (j = 1; ; j <<= 1)
+ if (! bigtime_test (j))
+ result |= 4;
+ else if (INT_MAX / 2 < j)
+ break;
+ if (! bigtime_test (INT_MAX))
+ result |= 8;
+ }
+ if (! irix_6_4_bug ())
+ result |= 16;
+ if (! spring_forward_gap ())
+ result |= 32;
+ if (! year_2050_test ())
+ result |= 64;
+ return result;
+}]])],
+ [ac_cv_func_working_mktime=yes],
+ [ac_cv_func_working_mktime=no],
+ [ac_cv_func_working_mktime=no])])
+if test $ac_cv_func_working_mktime = no; then
+ AC_LIBOBJ([mktime])
+fi
+])# AC_FUNC_MKTIME
+
+AC_DEFUN([gl_FUNC_MKTIME],
+[
+ AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
+ AC_FUNC_MKTIME
+ dnl Note: AC_FUNC_MKTIME does AC_LIBOBJ([mktime]).
+ if test $ac_cv_func_working_mktime = no; then
+ REPLACE_MKTIME=1
+ gl_PREREQ_MKTIME
+ else
+ REPLACE_MKTIME=0
+ fi
+])
+
+# Prerequisites of lib/mktime.c.
+AC_DEFUN([gl_PREREQ_MKTIME],
+[
+ AC_REQUIRE([AC_C_INLINE])
+])
diff --git a/m4/multiarch.m4 b/m4/multiarch.m4
new file mode 100644
index 0000000000..691d89270b
--- /dev/null
+++ b/m4/multiarch.m4
@@ -0,0 +1,62 @@
+# multiarch.m4 serial 6
+dnl Copyright (C) 2008-2011 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.
+
+# Determine whether the compiler is or may be producing universal binaries.
+#
+# On MacOS X 10.5 and later systems, the user can create libraries and
+# executables that work on multiple system types--known as "fat" or
+# "universal" binaries--by specifying multiple '-arch' options to the
+# compiler but only a single '-arch' option to the preprocessor. Like
+# this:
+#
+# ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+# CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+# CPP="gcc -E" CXXCPP="g++ -E"
+#
+# Detect this situation and set APPLE_UNIVERSAL_BUILD accordingly.
+
+AC_DEFUN_ONCE([gl_MULTIARCH],
+[
+ dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN.
+ gl_cv_c_multiarch=no
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
+ ]])],
+ [
+ dnl Check for potential -arch flags. It is not universal unless
+ dnl there are at least two -arch flags with different values.
+ arch=
+ prev=
+ for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
+ if test -n "$prev"; then
+ case $word in
+ i?86 | x86_64 | ppc | ppc64)
+ if test -z "$arch" || test "$arch" = "$word"; then
+ arch="$word"
+ else
+ gl_cv_c_multiarch=yes
+ fi
+ ;;
+ esac
+ prev=
+ else
+ if test "x$word" = "x-arch"; then
+ prev=arch
+ fi
+ fi
+ done
+ ])
+ if test $gl_cv_c_multiarch = yes; then
+ APPLE_UNIVERSAL_BUILD=1
+ else
+ APPLE_UNIVERSAL_BUILD=0
+ fi
+ AC_SUBST([APPLE_UNIVERSAL_BUILD])
+])
diff --git a/m4/stdbool.m4 b/m4/stdbool.m4
new file mode 100644
index 0000000000..df10486d0a
--- /dev/null
+++ b/m4/stdbool.m4
@@ -0,0 +1,103 @@
+# Check for stdbool.h that conforms to C99.
+
+dnl Copyright (C) 2002-2006, 2009-2011 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.
+
+#serial 3
+
+# Prepare for substituting <stdbool.h> if it is not supported.
+
+AC_DEFUN([AM_STDBOOL_H],
+[
+ AC_REQUIRE([AC_HEADER_STDBOOL])
+
+ # Define two additional variables used in the Makefile substitution.
+
+ if test "$ac_cv_header_stdbool_h" = yes; then
+ STDBOOL_H=''
+ else
+ STDBOOL_H='stdbool.h'
+ fi
+ AC_SUBST([STDBOOL_H])
+
+ if test "$ac_cv_type__Bool" = yes; then
+ HAVE__BOOL=1
+ else
+ HAVE__BOOL=0
+ fi
+ AC_SUBST([HAVE__BOOL])
+])
+
+# AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future.
+AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H])
+
+# This version of the macro is needed in autoconf <= 2.67. Autoconf has
+# it built in since 2.60, but we want the tweaks from the 2.68 version
+# to avoid rejecting xlc and clang due to relying on extensions.
+
+AC_DEFUN([AC_HEADER_STDBOOL],
+ [AC_CACHE_CHECK([for stdbool.h that conforms to C99],
+ [ac_cv_header_stdbool_h],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+ #include <stdbool.h>
+ #ifndef bool
+ "error: bool is not defined"
+ #endif
+ #ifndef false
+ "error: false is not defined"
+ #endif
+ #if false
+ "error: false is not 0"
+ #endif
+ #ifndef true
+ "error: true is not defined"
+ #endif
+ #if true != 1
+ "error: true is not 1"
+ #endif
+ #ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+ #endif
+
+ struct s { _Bool s: 1; _Bool t; } s;
+
+ char a[true == 1 ? 1 : -1];
+ char b[false == 0 ? 1 : -1];
+ char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+ char d[(bool) 0.5 == true ? 1 : -1];
+ /* See body of main program for 'e'. */
+ char f[(_Bool) 0.0 == false ? 1 : -1];
+ char g[true];
+ char h[sizeof (_Bool)];
+ char i[sizeof s.t];
+ enum { j = false, k = true, l = false * true, m = true * 256 };
+ /* The following fails for
+ HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+ _Bool n[m];
+ char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+ char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+ /* Catch a bug in an HP-UX C compiler. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ */
+ _Bool q = true;
+ _Bool *pq = &q;
+ ]],
+ [[
+ bool e = &s;
+ *pq |= q;
+ *pq |= ! q;
+ /* Refer to every declared value, to avoid compiler optimizations. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ + !m + !n + !o + !p + !q + !pq);
+ ]])],
+ [ac_cv_header_stdbool_h=yes],
+ [ac_cv_header_stdbool_h=no])])
+ AC_CHECK_TYPES([_Bool])
+ if test $ac_cv_header_stdbool_h = yes; then
+ AC_DEFINE([HAVE_STDBOOL_H], [1], [Define to 1 if stdbool.h conforms to C99.])
+ fi])
diff --git a/m4/stddef_h.m4 b/m4/stddef_h.m4
new file mode 100644
index 0000000000..1942b6aa0d
--- /dev/null
+++ b/m4/stddef_h.m4
@@ -0,0 +1,45 @@
+dnl A placeholder for POSIX 2008 <stddef.h>, for platforms that have issues.
+# stddef_h.m4 serial 3
+dnl Copyright (C) 2009-2011 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_STDDEF_H],
+[
+ AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
+ AC_REQUIRE([gt_TYPE_WCHAR_T])
+ if test $gt_cv_c_wchar_t = no; then
+ HAVE_WCHAR_T=0
+ STDDEF_H=stddef.h
+ fi
+ AC_CACHE_CHECK([whether NULL can be used in arbitrary expressions],
+ [gl_cv_decl_null_works],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stddef.h>
+ int test[2 * (sizeof NULL == sizeof (void *)) -1];
+]])],
+ [gl_cv_decl_null_works=yes],
+ [gl_cv_decl_null_works=no])])
+ if test $gl_cv_decl_null_works = no; then
+ REPLACE_NULL=1
+ STDDEF_H=stddef.h
+ fi
+ if test -n "$STDDEF_H"; then
+ gl_NEXT_HEADERS([stddef.h])
+ fi
+])
+
+AC_DEFUN([gl_STDDEF_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+])
+
+AC_DEFUN([gl_STDDEF_H_DEFAULTS],
+[
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ REPLACE_NULL=0; AC_SUBST([REPLACE_NULL])
+ HAVE_WCHAR_T=1; AC_SUBST([HAVE_WCHAR_T])
+ STDDEF_H=''; AC_SUBST([STDDEF_H])
+])
diff --git a/m4/strftime.m4 b/m4/strftime.m4
new file mode 100644
index 0000000000..d9de341bf6
--- /dev/null
+++ b/m4/strftime.m4
@@ -0,0 +1,30 @@
+# serial 32
+
+# Copyright (C) 1996-1997, 1999-2007, 2009-2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Jim Meyering and Paul Eggert.
+
+AC_DEFUN([gl_FUNC_GNU_STRFTIME],
+[
+ gl_FUNC_STRFTIME
+])
+
+# These are the prerequisite macros for GNU's strftime.c replacement.
+AC_DEFUN([gl_FUNC_STRFTIME],
+[
+ AC_LIBOBJ([strftime])
+
+ # This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE.
+ AC_REQUIRE([AC_STRUCT_TIMEZONE])
+
+ AC_REQUIRE([gl_TM_GMTOFF])
+
+ AC_CHECK_FUNCS_ONCE([tzset])
+
+ AC_DEFINE([my_strftime], [nstrftime],
+ [Define to the name of the strftime replacement function.])
+])
diff --git a/m4/time_h.m4 b/m4/time_h.m4
new file mode 100644
index 0000000000..615da1cfd3
--- /dev/null
+++ b/m4/time_h.m4
@@ -0,0 +1,109 @@
+# Configure a more-standard replacement for <time.h>.
+
+# Copyright (C) 2000-2001, 2003-2007, 2009-2011 Free Software Foundation, Inc.
+
+# serial 4
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Paul Eggert and Jim Meyering.
+
+AC_DEFUN([gl_HEADER_TIME_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_HEADER_TIME_H_BODY])
+])
+
+AC_DEFUN([gl_HEADER_TIME_H_BODY],
+[
+ AC_REQUIRE([AC_C_RESTRICT])
+ AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
+ gl_NEXT_HEADERS([time.h])
+ AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC])
+])
+
+dnl Define HAVE_STRUCT_TIMESPEC if `struct timespec' is declared
+dnl in time.h, sys/time.h, or pthread.h.
+
+AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC],
+[
+ AC_CHECK_HEADERS_ONCE([sys/time.h])
+ AC_CACHE_CHECK([for struct timespec in <time.h>],
+ [gl_cv_sys_struct_timespec_in_time_h],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <time.h>
+ ]],
+ [[static struct timespec x; x.tv_sec = x.tv_nsec;]])],
+ [gl_cv_sys_struct_timespec_in_time_h=yes],
+ [gl_cv_sys_struct_timespec_in_time_h=no])])
+
+ TIME_H_DEFINES_STRUCT_TIMESPEC=0
+ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0
+ PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0
+ if test $gl_cv_sys_struct_timespec_in_time_h = yes; then
+ TIME_H_DEFINES_STRUCT_TIMESPEC=1
+ else
+ AC_CACHE_CHECK([for struct timespec in <sys/time.h>],
+ [gl_cv_sys_struct_timespec_in_sys_time_h],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <sys/time.h>
+ ]],
+ [[static struct timespec x; x.tv_sec = x.tv_nsec;]])],
+ [gl_cv_sys_struct_timespec_in_sys_time_h=yes],
+ [gl_cv_sys_struct_timespec_in_sys_time_h=no])])
+ if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then
+ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1
+ else
+ AC_CACHE_CHECK([for struct timespec in <pthread.h>],
+ [gl_cv_sys_struct_timespec_in_pthread_h],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <pthread.h>
+ ]],
+ [[static struct timespec x; x.tv_sec = x.tv_nsec;]])],
+ [gl_cv_sys_struct_timespec_in_pthread_h=yes],
+ [gl_cv_sys_struct_timespec_in_pthread_h=no])])
+ if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then
+ PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1
+ fi
+ fi
+ fi
+ AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC])
+ AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
+ AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC])
+])
+
+AC_DEFUN([gl_TIME_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_HEADER_TIME_H_DEFAULTS],
+[
+ GNULIB_MKTIME=0; AC_SUBST([GNULIB_MKTIME])
+ GNULIB_NANOSLEEP=0; AC_SUBST([GNULIB_NANOSLEEP])
+ GNULIB_STRPTIME=0; AC_SUBST([GNULIB_STRPTIME])
+ GNULIB_TIMEGM=0; AC_SUBST([GNULIB_TIMEGM])
+ GNULIB_TIME_R=0; AC_SUBST([GNULIB_TIME_R])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_DECL_LOCALTIME_R=1; AC_SUBST([HAVE_DECL_LOCALTIME_R])
+ HAVE_NANOSLEEP=1; AC_SUBST([HAVE_NANOSLEEP])
+ HAVE_STRPTIME=1; AC_SUBST([HAVE_STRPTIME])
+ HAVE_TIMEGM=1; AC_SUBST([HAVE_TIMEGM])
+ dnl If another module says to replace or to not replace, do that.
+ dnl Otherwise, replace only if someone compiles with -DGNULIB_PORTCHECK;
+ dnl this lets maintainers check for portability.
+ REPLACE_LOCALTIME_R=GNULIB_PORTCHECK; AC_SUBST([REPLACE_LOCALTIME_R])
+ REPLACE_MKTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_MKTIME])
+ REPLACE_NANOSLEEP=GNULIB_PORTCHECK; AC_SUBST([REPLACE_NANOSLEEP])
+ REPLACE_TIMEGM=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMEGM])
+])
diff --git a/m4/time_r.m4 b/m4/time_r.m4
new file mode 100644
index 0000000000..9bb28005fc
--- /dev/null
+++ b/m4/time_r.m4
@@ -0,0 +1,62 @@
+dnl Reentrant time functions: localtime_r, gmtime_r.
+
+dnl Copyright (C) 2003, 2006-2011 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 Written by Paul Eggert.
+
+AC_DEFUN([gl_TIME_R],
+[
+ dnl Persuade glibc and Solaris <time.h> to declare localtime_r.
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+ AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
+ AC_REQUIRE([AC_C_RESTRICT])
+
+ dnl Some systems don't declare localtime_r() and gmtime_r() if _REENTRANT is
+ dnl not defined.
+ AC_CHECK_DECLS_ONCE([localtime_r])
+ if test $ac_cv_have_decl_localtime_r = no; then
+ HAVE_DECL_LOCALTIME_R=0
+ fi
+
+ AC_CHECK_FUNCS_ONCE([localtime_r])
+ if test $ac_cv_func_localtime_r = yes; then
+ HAVE_LOCALTIME_R=1
+ AC_CACHE_CHECK([whether localtime_r is compatible with its POSIX signature],
+ [gl_cv_time_r_posix],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <time.h>]],
+ [[/* We don't need to append 'restrict's to the argument types,
+ even though the POSIX signature has the 'restrict's,
+ since C99 says they can't affect type compatibility. */
+ struct tm * (*ptr) (time_t const *, struct tm *) = localtime_r;
+ if (ptr) return 0;
+ /* Check the return type is a pointer.
+ On HP-UX 10 it is 'int'. */
+ *localtime_r (0, 0);]])
+ ],
+ [gl_cv_time_r_posix=yes],
+ [gl_cv_time_r_posix=no])
+ ])
+ if test $gl_cv_time_r_posix = yes; then
+ REPLACE_LOCALTIME_R=0
+ else
+ REPLACE_LOCALTIME_R=1
+ fi
+ else
+ HAVE_LOCALTIME_R=0
+ fi
+ if test $HAVE_LOCALTIME_R = 0 || test $REPLACE_LOCALTIME_R = 1; then
+ AC_LIBOBJ([time_r])
+ gl_PREREQ_TIME_R
+ fi
+])
+
+# Prerequisites of lib/time_r.c.
+AC_DEFUN([gl_PREREQ_TIME_R], [
+ :
+])
diff --git a/m4/tm_gmtoff.m4 b/m4/tm_gmtoff.m4
new file mode 100644
index 0000000000..d65ddc013b
--- /dev/null
+++ b/m4/tm_gmtoff.m4
@@ -0,0 +1,14 @@
+# tm_gmtoff.m4 serial 3
+dnl Copyright (C) 2002, 2009-2011 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_TM_GMTOFF],
+[
+ AC_CHECK_MEMBER([struct tm.tm_gmtoff],
+ [AC_DEFINE([HAVE_TM_GMTOFF], [1],
+ [Define if struct tm has the tm_gmtoff member.])],
+ ,
+ [#include <time.h>])
+])
diff --git a/m4/unistd_h.m4 b/m4/unistd_h.m4
new file mode 100644
index 0000000000..c81a1138e9
--- /dev/null
+++ b/m4/unistd_h.m4
@@ -0,0 +1,162 @@
+# unistd_h.m4 serial 53
+dnl Copyright (C) 2006-2011 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 Written by Simon Josefsson, Bruno Haible.
+
+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
+ HAVE_UNISTD_H=1
+ else
+ HAVE_UNISTD_H=0
+ fi
+ AC_SUBST([HAVE_UNISTD_H])
+
+ dnl Check for declarations of anything we want to poison if the
+ dnl corresponding gnulib module is not in use.
+ gl_WARN_ON_USE_PREPARE([[#include <unistd.h>
+/* Some systems declare various items in the wrong headers. */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <fcntl.h>
+# include <stdio.h>
+# include <stdlib.h>
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+# include <io.h>
+# endif
+#endif
+ ]], [chown dup2 dup3 environ euidaccess faccessat fchdir fchownat
+ fsync ftruncate getcwd getdomainname getdtablesize getgroups
+ gethostname getlogin getlogin_r getpagesize getusershell setusershell
+ endusershell lchown link linkat lseek pipe pipe2 pread pwrite readlink
+ readlinkat rmdir sleep symlink symlinkat ttyname_r unlink unlinkat
+ usleep])
+])
+
+AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_UNISTD_H_DEFAULTS],
+[
+ GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN])
+ GNULIB_CLOSE=0; AC_SUBST([GNULIB_CLOSE])
+ GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2])
+ GNULIB_DUP3=0; AC_SUBST([GNULIB_DUP3])
+ GNULIB_ENVIRON=0; AC_SUBST([GNULIB_ENVIRON])
+ GNULIB_EUIDACCESS=0; AC_SUBST([GNULIB_EUIDACCESS])
+ GNULIB_FACCESSAT=0; AC_SUBST([GNULIB_FACCESSAT])
+ GNULIB_FCHDIR=0; AC_SUBST([GNULIB_FCHDIR])
+ GNULIB_FCHOWNAT=0; AC_SUBST([GNULIB_FCHOWNAT])
+ GNULIB_FSYNC=0; AC_SUBST([GNULIB_FSYNC])
+ GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE])
+ GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD])
+ GNULIB_GETDOMAINNAME=0; AC_SUBST([GNULIB_GETDOMAINNAME])
+ GNULIB_GETDTABLESIZE=0; AC_SUBST([GNULIB_GETDTABLESIZE])
+ GNULIB_GETGROUPS=0; AC_SUBST([GNULIB_GETGROUPS])
+ GNULIB_GETHOSTNAME=0; AC_SUBST([GNULIB_GETHOSTNAME])
+ GNULIB_GETLOGIN=0; AC_SUBST([GNULIB_GETLOGIN])
+ GNULIB_GETLOGIN_R=0; AC_SUBST([GNULIB_GETLOGIN_R])
+ GNULIB_GETPAGESIZE=0; AC_SUBST([GNULIB_GETPAGESIZE])
+ GNULIB_GETUSERSHELL=0; AC_SUBST([GNULIB_GETUSERSHELL])
+ GNULIB_LCHOWN=0; AC_SUBST([GNULIB_LCHOWN])
+ GNULIB_LINK=0; AC_SUBST([GNULIB_LINK])
+ GNULIB_LINKAT=0; AC_SUBST([GNULIB_LINKAT])
+ GNULIB_LSEEK=0; AC_SUBST([GNULIB_LSEEK])
+ GNULIB_PIPE=0; AC_SUBST([GNULIB_PIPE])
+ GNULIB_PIPE2=0; AC_SUBST([GNULIB_PIPE2])
+ GNULIB_PREAD=0; AC_SUBST([GNULIB_PREAD])
+ GNULIB_PWRITE=0; AC_SUBST([GNULIB_PWRITE])
+ GNULIB_READLINK=0; AC_SUBST([GNULIB_READLINK])
+ GNULIB_READLINKAT=0; AC_SUBST([GNULIB_READLINKAT])
+ GNULIB_RMDIR=0; AC_SUBST([GNULIB_RMDIR])
+ GNULIB_SLEEP=0; AC_SUBST([GNULIB_SLEEP])
+ GNULIB_SYMLINK=0; AC_SUBST([GNULIB_SYMLINK])
+ GNULIB_SYMLINKAT=0; AC_SUBST([GNULIB_SYMLINKAT])
+ GNULIB_TTYNAME_R=0; AC_SUBST([GNULIB_TTYNAME_R])
+ GNULIB_UNISTD_H_GETOPT=0; AC_SUBST([GNULIB_UNISTD_H_GETOPT])
+ GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE])
+ GNULIB_UNLINK=0; AC_SUBST([GNULIB_UNLINK])
+ GNULIB_UNLINKAT=0; AC_SUBST([GNULIB_UNLINKAT])
+ GNULIB_USLEEP=0; AC_SUBST([GNULIB_USLEEP])
+ GNULIB_WRITE=0; AC_SUBST([GNULIB_WRITE])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_CHOWN=1; AC_SUBST([HAVE_CHOWN])
+ HAVE_DUP2=1; AC_SUBST([HAVE_DUP2])
+ HAVE_DUP3=1; AC_SUBST([HAVE_DUP3])
+ HAVE_EUIDACCESS=1; AC_SUBST([HAVE_EUIDACCESS])
+ HAVE_FACCESSAT=1; AC_SUBST([HAVE_FACCESSAT])
+ HAVE_FCHDIR=1; AC_SUBST([HAVE_FCHDIR])
+ HAVE_FCHOWNAT=1; AC_SUBST([HAVE_FCHOWNAT])
+ HAVE_FSYNC=1; AC_SUBST([HAVE_FSYNC])
+ HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE])
+ HAVE_GETDTABLESIZE=1; AC_SUBST([HAVE_GETDTABLESIZE])
+ HAVE_GETGROUPS=1; AC_SUBST([HAVE_GETGROUPS])
+ HAVE_GETHOSTNAME=1; AC_SUBST([HAVE_GETHOSTNAME])
+ HAVE_GETLOGIN=1; AC_SUBST([HAVE_GETLOGIN])
+ HAVE_GETPAGESIZE=1; AC_SUBST([HAVE_GETPAGESIZE])
+ HAVE_LCHOWN=1; AC_SUBST([HAVE_LCHOWN])
+ HAVE_LINK=1; AC_SUBST([HAVE_LINK])
+ HAVE_LINKAT=1; AC_SUBST([HAVE_LINKAT])
+ HAVE_PIPE=1; AC_SUBST([HAVE_PIPE])
+ HAVE_PIPE2=1; AC_SUBST([HAVE_PIPE2])
+ HAVE_PREAD=1; AC_SUBST([HAVE_PREAD])
+ HAVE_PWRITE=1; AC_SUBST([HAVE_PWRITE])
+ HAVE_READLINK=1; AC_SUBST([HAVE_READLINK])
+ HAVE_READLINKAT=1; AC_SUBST([HAVE_READLINKAT])
+ HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP])
+ HAVE_SYMLINK=1; AC_SUBST([HAVE_SYMLINK])
+ HAVE_SYMLINKAT=1; AC_SUBST([HAVE_SYMLINKAT])
+ HAVE_UNLINKAT=1; AC_SUBST([HAVE_UNLINKAT])
+ HAVE_USLEEP=1; AC_SUBST([HAVE_USLEEP])
+ HAVE_DECL_ENVIRON=1; AC_SUBST([HAVE_DECL_ENVIRON])
+ HAVE_DECL_FCHDIR=1; AC_SUBST([HAVE_DECL_FCHDIR])
+ HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME])
+ HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
+ HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE])
+ HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL])
+ HAVE_DECL_TTYNAME_R=1; AC_SUBST([HAVE_DECL_TTYNAME_R])
+ HAVE_OS_H=0; AC_SUBST([HAVE_OS_H])
+ HAVE_SYS_PARAM_H=0; AC_SUBST([HAVE_SYS_PARAM_H])
+ REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN])
+ REPLACE_CLOSE=0; AC_SUBST([REPLACE_CLOSE])
+ REPLACE_DUP=0; AC_SUBST([REPLACE_DUP])
+ REPLACE_DUP2=0; AC_SUBST([REPLACE_DUP2])
+ REPLACE_FCHOWNAT=0; AC_SUBST([REPLACE_FCHOWNAT])
+ REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD])
+ REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME])
+ REPLACE_GETLOGIN_R=0; AC_SUBST([REPLACE_GETLOGIN_R])
+ REPLACE_GETGROUPS=0; AC_SUBST([REPLACE_GETGROUPS])
+ REPLACE_GETPAGESIZE=0; AC_SUBST([REPLACE_GETPAGESIZE])
+ REPLACE_LCHOWN=0; AC_SUBST([REPLACE_LCHOWN])
+ REPLACE_LINK=0; AC_SUBST([REPLACE_LINK])
+ REPLACE_LINKAT=0; AC_SUBST([REPLACE_LINKAT])
+ REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK])
+ REPLACE_PREAD=0; AC_SUBST([REPLACE_PREAD])
+ REPLACE_PWRITE=0; AC_SUBST([REPLACE_PWRITE])
+ REPLACE_READLINK=0; AC_SUBST([REPLACE_READLINK])
+ REPLACE_RMDIR=0; AC_SUBST([REPLACE_RMDIR])
+ REPLACE_SLEEP=0; AC_SUBST([REPLACE_SLEEP])
+ REPLACE_SYMLINK=0; AC_SUBST([REPLACE_SYMLINK])
+ REPLACE_TTYNAME_R=0; AC_SUBST([REPLACE_TTYNAME_R])
+ REPLACE_UNLINK=0; AC_SUBST([REPLACE_UNLINK])
+ REPLACE_UNLINKAT=0; AC_SUBST([REPLACE_UNLINKAT])
+ REPLACE_USLEEP=0; AC_SUBST([REPLACE_USLEEP])
+ REPLACE_WRITE=0; AC_SUBST([REPLACE_WRITE])
+ UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H])
+ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0;
+ AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS])
+])
diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4
new file mode 100644
index 0000000000..d2c03c42d2
--- /dev/null
+++ b/m4/wchar_t.m4
@@ -0,0 +1,24 @@
+# wchar_t.m4 serial 4 (gettext-0.18.2)
+dnl Copyright (C) 2002-2003, 2008-2011 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 Bruno Haible.
+dnl Test whether <stddef.h> has the 'wchar_t' type.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WCHAR_T],
+[
+ AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <stddef.h>
+ wchar_t foo = (wchar_t)'\0';]],
+ [[]])],
+ [gt_cv_c_wchar_t=yes],
+ [gt_cv_c_wchar_t=no])])
+ if test $gt_cv_c_wchar_t = yes; then
+ AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
+ fi
+])
diff --git a/make-dist b/make-dist
index 3d610c1eee..37e0fb3e64 100755
--- a/make-dist
+++ b/make-dist
@@ -1,8 +1,7 @@
#!/bin/sh
### make-dist: create an Emacs distribution tar file from current srcdir
-## Copyright (C) 1995, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005,
-## 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+## Copyright (C) 1995, 1997-1998, 2000-2011 Free Software Foundation, Inc.
## This file is part of GNU Emacs.
@@ -147,7 +146,9 @@ then
fi
### Find out which version of Emacs this is.
-version=`sed -n '/char emacs_version/ s/^[^"]*"\([^"]*\)".*$/\1/p' src/emacs.c`
+version=`
+ sed -n 's/^AC_INIT(emacs,[ ]*\([^ )]*\).*/\1/p' <configure.in
+` || version=
if [ ! "${version}" ]; then
echo "${progname}: can't find current Emacs version in \`./src/emacs.c'" >&2
exit 1
@@ -286,15 +287,19 @@ ln INSTALL README BUGS move-if-change ${tempdir}
ln ChangeLog Makefile.in configure configure.in ${tempdir}
ln config.bat make-dist update-subdirs vpath.sed .dir-locals.el ${tempdir}
ln mkinstalldirs config.sub config.guess install-sh ${tempdir}
+ln aclocal.m4 ${tempdir}
+ln compile depcomp missing ${tempdir}
+ln arg-nonnull.h c++defs.h warn-on-use.h ${tempdir}
echo "Creating subdirectories"
for subdir in site-lisp \
leim leim/CXTERM-DIC leim/MISC-DIC \
leim/SKK-DIC leim/ja-dic leim/quail \
- src src/m src/s src/bitmaps lib-src oldXMenu lwlib \
+ src src/m src/s src/bitmaps lib lib-src oldXMenu lwlib \
nt nt/inc nt/inc/sys nt/inc/arpa nt/inc/netinet nt/icons \
`find etc lisp -type d` \
doc doc/emacs doc/misc doc/man doc/lispref doc/lispintro \
+ test test/automated test/cedet test/cedet/tests test/indent \
info m4 msdos \
nextstep nextstep/Cocoa nextstep/Cocoa/Emacs.base \
nextstep/Cocoa/Emacs.base/Contents \
@@ -368,14 +373,20 @@ echo "Making links to \`src/s'"
(cd src/s
ln README [a-zA-Z0-9]*.h ../../${tempdir}/src/s)
+echo "Making links to \`lib'"
+(build_aux_h=`(ls *.h)`
+ cd lib
+ ln [a-zA-Z]*.[ch] ../${tempdir}/lib
+ ln gnulib.mk Makefile.am Makefile.in ../${tempdir}/lib
+ cd ../${tempdir}/lib
+ rm -f `(echo "$build_aux_h"; ls *.in.h) | sed '/[*]/d; s/.in.h$/.h/'`)
+
echo "Making links to \`lib-src'"
(cd lib-src
ln [a-zA-Z]*.[ch] ../${tempdir}/lib-src
ln ChangeLog Makefile.in README testfile vcdiff ../${tempdir}/lib-src
ln grep-changelog rcs2log rcs-checkin ../${tempdir}/lib-src
- ln makefile.w32-in ../${tempdir}/lib-src
- cd ../${tempdir}/lib-src
- rm -f getopt.h)
+ ln makefile.w32-in ../${tempdir}/lib-src)
echo "Making links to \`m4'"
(cd m4
@@ -474,10 +485,30 @@ echo "Making links to \`doc/man'"
ln ChangeLog* *.1 ../../${tempdir}/doc/man
cd ../../${tempdir}/doc/man)
+echo "Making links to \`test'"
+(cd test
+ ln *.el ChangeLog README ../${tempdir}/test)
+
+echo "Making links to \`test/automated'"
+(cd test/automated
+ ln *.el Makefile.in ../../${tempdir}/test/automated)
+
+echo "Making links to \`test/cedet'"
+(cd test/cedet
+ ln *.el ../../${tempdir}/test/cedet)
+
+echo "Making links to \`test/cedet/tests'"
+(cd test/cedet/tests
+ ln *.c *.[ch]pp *.el *.hh *.java *.make ../../../${tempdir}/test/cedet/tests)
+
+echo "Making links to \`test/indent'"
+(cd test/indent
+ ln *.m *.mod *.prolog Makefile ../../${tempdir}/test/indent)
+
### It would be nice if they could all be symlinks to top-level copy, but
### you're not supposed to have any symlinks in distribution tar files.
echo "Making sure copying notices are all copies of \`COPYING'"
-for subdir in . etc info leim lib-src lisp lwlib msdos nt src; do
+for subdir in . etc info leim lib lib-src lisp lwlib msdos nt src; do
rm -f ${tempdir}/${subdir}/COPYING
cp COPYING ${tempdir}/${subdir}
done
diff --git a/missing b/missing
new file mode 100755
index 0000000000..28055d2ae6
--- /dev/null
+++ b/missing
@@ -0,0 +1,376 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <[email protected]>, 1996.
+
+# 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 2, 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/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+ configure_ac=configure.ac
+else
+ configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ # Exit code 63 means version mismatch. This often happens
+ # when the user try to use an ancient version of a tool on
+ # a file that requires a minimum version. In this case we
+ # we should proceed has if the program had been absent, or
+ # if --run hadn't been passed.
+ if test $? = 63; then
+ run=:
+ msg="probably too old"
+ fi
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ autom4te touch the output file, or create a stub one
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
+ lex create \`lex.yy.c', if possible, from existing .c
+ makeinfo touch the output file
+ tar try tar, gnutar, gtar, then tar without non-portable flags
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
+Send bug reports to <[email protected]>."
+ exit $?
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# normalize program name to check for.
+program=`echo "$1" | sed '
+ s/^gnu-//; t
+ s/^gnu//; t
+ s/^g//; t'`
+
+# Now exit if we have it, but it failed. Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program). This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+ lex*|yacc*)
+ # Not GNU programs, they don't have --version.
+ ;;
+
+ tar*)
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ exit 1
+ fi
+ ;;
+
+ *)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ # Could not run --version or --help. This is probably someone
+ # running `$TOOL --version' or `$TOOL --help' to check whether
+ # $TOOL exists and not knowing $TOOL uses missing.
+ exit 1
+ fi
+ ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $program in
+ aclocal*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case $f in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
+ ;;
+
+ automake*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
+ ;;
+
+ autom4te*)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
+ bison*|yacc*)
+ echo 1>&2 "\
+WARNING: \`$1' $msg. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f y.tab.h; then
+ echo >y.tab.h
+ fi
+ if test ! -f y.tab.c; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex*|flex*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f lex.yy.c; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+
+ help2man*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit $?
+ fi
+ ;;
+
+ makeinfo*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ # The file to touch is that specified with -o ...
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -z "$file"; then
+ # ... or it is the one specified with @setfilename ...
+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '
+ /^@setfilename/{
+ s/.* \([^ ]*\) *$/\1/
+ p
+ q
+ }' $infile`
+ # ... or it is derived from the source name (dir/f.texi becomes f.info)
+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+ fi
+ # If the file does not exist, the user really needs makeinfo;
+ # let's fail without touching anything.
+ test -f $file || exit 1
+ touch $file
+ ;;
+
+ tar*)
+ shift
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+ # messages.
+ if (gnutar --version > /dev/null 2>&1); then
+ gnutar "$@" && exit 0
+ fi
+ if (gtar --version > /dev/null 2>&1); then
+ gtar "$@" && exit 0
+ fi
+ firstarg="$1"
+ if shift; then
+ case $firstarg in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ case $firstarg in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ fi
+
+ echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+ You may want to install GNU tar or Free paxutils, or check the
+ command line arguments."
+ exit 1
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequisites for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/mkinstalldirs b/mkinstalldirs
index be98de6be0..4191a45dbd 100755
--- a/mkinstalldirs
+++ b/mkinstalldirs
@@ -1,7 +1,7 @@
#! /bin/sh
# mkinstalldirs --- make directory hierarchy
-scriptversion=2006-05-11.19
+scriptversion=2009-04-28.21; # UTC
# Original author: Noah Friedman <[email protected]>
# Created: 1993-05-16
@@ -150,3 +150,13 @@ do
done
exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/move-if-change b/move-if-change
index ee9e355e3e..e7ba25e312 100755
--- a/move-if-change
+++ b/move-if-change
@@ -1,15 +1,83 @@
#!/bin/sh
-if
-test -r $2
-then
-if
-cmp $1 $2 > /dev/null
-then
-echo $2 is unchanged
-rm -f $1
+# Like mv $1 $2, but if the files are the same, just delete $1.
+# Status is zero if successful, nonzero otherwise.
+
+VERSION='2011-01-28 20:09'; # UTC
+# The definition above must lie within the first 8 lines in order
+# for the Emacs time-stamp write hook (at end) to update it.
+# If you change this file with Emacs, please let the write hook
+# do its job. Otherwise, update this string manually.
+
+# Copyright (C) 2002-2007, 2009-2011 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/>.
+
+usage="usage: $0 SOURCE DEST"
+
+help="$usage
+ or: $0 OPTION
+If SOURCE is different than DEST, then move it to DEST; else remove SOURCE.
+
+ --help display this help and exit
+ --version output version information and exit
+
+The variable CMPPROG can be used to specify an alternative to \`cmp'.
+
+Report bugs to <[email protected]>."
+
+version=`expr "$VERSION" : '\([^ ]*\)'`
+version="move-if-change (gnulib) $version
+Copyright (C) 2011 Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law."
+
+cmpprog=${CMPPROG-cmp}
+
+for arg
+do
+ case $arg in
+ --help | --hel | --he | --h)
+ exec echo "$help" ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v)
+ exec echo "$version" ;;
+ --)
+ shift
+ break ;;
+ -*)
+ echo "$0: invalid option: $arg" >&2
+ exit 1 ;;
+ *)
+ break ;;
+ esac
+done
+
+test $# -eq 2 || { echo "$0: $usage" >&2; exit 1; }
+
+if test -r "$2" && $cmpprog -- "$1" "$2" >/dev/null; then
+ rm -f -- "$1"
else
-mv -f $1 $2
-fi
-else
-mv -f $1 $2
+ if mv -f -- "$1" "$2"; then :; else
+ # Ignore failure due to a concurrent move-if-change.
+ test -r "$2" && $cmpprog -- "$1" "$2" >/dev/null && rm -f -- "$1"
+ fi
fi
+
+## Local Variables:
+## eval: (add-hook 'write-file-hooks 'time-stamp)
+## time-stamp-start: "VERSION='"
+## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
+## time-stamp-time-zone: "UTC"
+## time-stamp-end: "'; # UTC"
+## End:
diff --git a/msdos/ChangeLog b/msdos/ChangeLog
index 10cb8c7dae..b9b829c455 100644
--- a/msdos/ChangeLog
+++ b/msdos/ChangeLog
@@ -1,3 +1,11 @@
+2011-01-08 Glenn Morris <[email protected]>
+
+ * sedleim.inp (RUN-EMACS): -batch implies --no-init-file.
+
+2011-01-07 Eli Zaretskii <[email protected]>
+
+ * sed2v2.inp (HAVE___BUILTIN_UNWIND_INIT): Define.
+
2010-12-04 Andreas Schwab <[email protected]>
* sed1v2.inp (M_FILE, S_FILE): Add $(srcdir)/ prefix.
@@ -1080,11 +1088,9 @@
;; Local Variables:
;; coding: utf-8
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1994-1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -1100,5 +1106,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: b602fbb5-3776-4053-8de2-03da33c29d44
diff --git a/msdos/INSTALL b/msdos/INSTALL
index bbe4b9e5c5..3d5a2fc646 100644
--- a/msdos/INSTALL
+++ b/msdos/INSTALL
@@ -1,7 +1,6 @@
GNU Emacs Installation Guide for the DJGPP (a.k.a. MS-DOS) port
-Copyright (C) 1992, 1994, 1996, 1997, 2000, 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1992, 1994, 1996-1997, 2000-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
The DJGPP port of GNU Emacs builds and runs on plain DOS and also on
diff --git a/msdos/README b/msdos/README
index da0cf0801a..9f75d9c12b 100644
--- a/msdos/README
+++ b/msdos/README
@@ -1,5 +1,4 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
@@ -11,8 +10,7 @@ The files emacs.ico and emacs.pif are for using the DJGPP version on
Windows 3.X. Since these are binary files, their copyright notice is
reproduced here:
-# Copyright (C) 1993, 2002, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1993, 2002-2011 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
diff --git a/msdos/is_exec.c b/msdos/is_exec.c
index 493db79790..16b01c59a0 100644
--- a/msdos/is_exec.c
+++ b/msdos/is_exec.c
@@ -236,5 +236,3 @@ _is_executable(const char *filename, int fhandle, const char *extension)
return 0;
}
-/* arch-tag: b0965811-8c3e-4bc4-8d81-4447a3594785
- (do not change this comment) */
diff --git a/msdos/mainmake.v2 b/msdos/mainmake.v2
index 8965f746a6..2e389b15bc 100644
--- a/msdos/mainmake.v2
+++ b/msdos/mainmake.v2
@@ -1,7 +1,6 @@
# Top-level Makefile for Emacs under MS-DOS/DJGPP v2.0 or higher. -*-makefile-*-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1996-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
diff --git a/msdos/sed1v2.inp b/msdos/sed1v2.inp
index e2384ef286..1cfd4f803c 100644
--- a/msdos/sed1v2.inp
+++ b/msdos/sed1v2.inp
@@ -2,8 +2,7 @@
# Configuration script for src/Makefile under DJGPP v2.x
# ----------------------------------------------------------------------
#
-# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1996-1997, 1999-2011 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
@@ -178,4 +177,3 @@ s/echo.*buildobj.lst/dj&/
/^ *THEFILE=/s|$|\; cd ../src|
/^ echo.* buildobj.h/s|echo |djecho |
-# arch-tag: c7e3aacb-4162-460e-99f9-4252bca68d2c
diff --git a/msdos/sed1x.inp b/msdos/sed1x.inp
index aa755ee784..dff76fda27 100644
--- a/msdos/sed1x.inp
+++ b/msdos/sed1x.inp
@@ -2,8 +2,7 @@
# Extra configuration script for src/makefile for DesqView/X
# ----------------------------------------------------------------------
#
-# Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1994-1997, 1999-2011 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
@@ -31,4 +30,3 @@ s/DOC/DOC-X/g
/^WINDOW_SUPPORT *=/s!= *!= $(BASE_WINDOW_SUPPORT) $(X_WINDOW_SUPPORT)!
/^temacs *:/s!OLDXMENU!LIBXMENU!
-# arch-tag: 3e8a78f2-3dec-44f3-81f6-3785a562da19
diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp
index 3e77fe4f02..98e398053e 100644
--- a/msdos/sed2v2.inp
+++ b/msdos/sed2v2.inp
@@ -2,8 +2,7 @@
# Configuration script for src/config.h under DJGPP v2.x
# ----------------------------------------------------------------------
#
-# Copyright (C) 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2002, 2003,
-# 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1993-1997, 1999-2000, 2002-2011 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
@@ -50,6 +49,7 @@
/^#undef HAVE_MKSTEMP *$/s/^.*$/#define HAVE_MKSTEMP 1/
/^#undef HAVE_STRUCT_TM_TM_ZONE *$/s/^.*$/#define HAVE_STRUCT_TM_TM_ZONE 1/
/^#undef HAVE_SYNC *$/s/^.*$/#define HAVE_SYNC 1/
+/^#undef HAVE___BUILTIN_UNWIND_INIT *$/s/^.*$/#define HAVE___BUILTIN_UNWIND_INIT 1/
/^#undef ORDINARY_LINK/s/^.*$/#define ORDINARY_LINK 1/
/^#undef PACKAGE_BUGREPORT/s/^.*$/#define PACKAGE_BUGREPORT ""/
/^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/
@@ -90,4 +90,3 @@ s/^#undef POINTER_TYPE *$/#define POINTER_TYPE void/
/^#undef BSTRING/s|#undef|# undef|
/^#undef .*$/s|^.*$|/* & */|
-# arch-tag: 2acb5571-ff53-4822-9175-95b864b59f7c
diff --git a/msdos/sed2x.inp b/msdos/sed2x.inp
index d17dd85ace..d5f96d0e6d 100644
--- a/msdos/sed2x.inp
+++ b/msdos/sed2x.inp
@@ -2,8 +2,7 @@
# Extra configuration script for src/config.h for DesqView/X
# ----------------------------------------------------------------------
#
-# Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-# 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
@@ -24,4 +23,3 @@
/^#undef HAVE_XSETWMPROTOCOLS *$/s/undef/define/
/^#undef HAVE_SELECT *$/s/undef/define/
-# arch-tag: 4a41c3ea-eb6c-4e17-8432-307516498e5a
diff --git a/msdos/sed3v2.inp b/msdos/sed3v2.inp
index 4a19d36a58..3a9d14a35a 100644
--- a/msdos/sed3v2.inp
+++ b/msdos/sed3v2.inp
@@ -2,8 +2,7 @@
# Configuration script for lib-src/makefile under DJGPP v2
# ----------------------------------------------------------------------
#
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1996, 1998, 2000-2011 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
@@ -52,4 +51,3 @@ s!^ \./! !
s/movemail[^ ]* *//
}
-# arch-tag: 16f3be18-a45b-496c-b19c-e43840359de8
diff --git a/msdos/sed4.inp b/msdos/sed4.inp
index 5f64c5f939..50ffa655b8 100644
--- a/msdos/sed4.inp
+++ b/msdos/sed4.inp
@@ -2,8 +2,7 @@
# Configuration script for src/paths.h
# ----------------------------------------------------------------------
#
-# Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
@@ -21,4 +20,3 @@
/^#define *PATH_DOC/s/".*"/rootrelativepath ("etc")/
/^#define *PATH_INFO/s/".*"/rootrelativepath ("info")/
-# arch-tag: c84fa640-e434-4408-9e89-16d9e4ebe74e
diff --git a/msdos/sed5x.inp b/msdos/sed5x.inp
index e706b785d7..9c7257e0f7 100644
--- a/msdos/sed5x.inp
+++ b/msdos/sed5x.inp
@@ -2,8 +2,7 @@
# Configuration script for oldxmenu/makefile for DesqView/X
# ----------------------------------------------------------------------
#
-# Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-# 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
@@ -24,4 +23,3 @@
/^CFLAGS *=/s/@[^@\n]*@/-O2 -g/
s/|| true//
-# arch-tag: 612a79be-2a02-4cb0-8dec-779aac0a2f4f
diff --git a/msdos/sed6.inp b/msdos/sed6.inp
index 2382971c30..2c5f027360 100644
--- a/msdos/sed6.inp
+++ b/msdos/sed6.inp
@@ -3,8 +3,7 @@
# doc/lispintro/Makefile, and doc/misc/Makefile under DJGPP v2.x
# ---------------------------------------------------------------------------
#
-# Copyright (C) 1997, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1997, 2000-2011 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
@@ -45,4 +44,3 @@ export texinputdir := $(srcdir)";"$(TEXINPUTS)
/^mkinfodir *=/s| @.*$|@command.com /c if not exist ..\\..\\info\\emacs mkdir ..\\..\\info|
-# arch-tag: defe1001-f35a-47f7-9635-3f5d33ee5e97
diff --git a/msdos/sedalloc.inp b/msdos/sedalloc.inp
index 4546ea9e2a..1389355bf3 100644
--- a/msdos/sedalloc.inp
+++ b/msdos/sedalloc.inp
@@ -2,7 +2,7 @@
# Configuration script for SYSTEM_MALLOC/REL_ALLOC in src/config.h
# ----------------------------------------------------------------------
#
-# Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2008-2011 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
@@ -22,4 +22,3 @@
#define SYSTEM_MALLOC 1
/^#define REL_ALLOC *1 *$/s|^.*$|/* #undef REL_ALLOC */|
-# arch-tag: 20b3ad5d-fcd7-4751-aa34-e94e770ded87
diff --git a/msdos/sedleim.inp b/msdos/sedleim.inp
index b5193e665a..c2f7d84542 100644
--- a/msdos/sedleim.inp
+++ b/msdos/sedleim.inp
@@ -2,8 +2,7 @@
# Configuration script for leim/Makefile under DJGPP v2.x
# ----------------------------------------------------------------------
#
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1999-2011 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
@@ -34,7 +33,7 @@ s|\([ ]\)echo|\1djecho|g
/RUN-EMACS *=/,/^$/c\
export EMACSLOADPATH=${buildlisppath}\
-RUN-EMACS = ${BUILT-EMACS} -batch --no-init-file --no-site-file
+RUN-EMACS = ${BUILT-EMACS} -batch --no-site-file
/^ cd ../c\
${MAKE} -C ../src ${MFLAGS} emacs
@@ -60,4 +59,3 @@ install: all\
s|\(rm -f Makefile\)|\1 stamp-subdir|
}
-# arch-tag: 33c5eed1-78bc-4a6e-9d11-cbc7c541b763
diff --git a/msdos/sedlisp.inp b/msdos/sedlisp.inp
index 152dafbaa3..a09a171cd7 100644
--- a/msdos/sedlisp.inp
+++ b/msdos/sedlisp.inp
@@ -2,8 +2,7 @@
# Configuration script for lisp/Makefile under DJGPP v2.x
# ----------------------------------------------------------------------
#
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2000-2011 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
@@ -25,4 +24,3 @@ export FNCASE=y
/^top_srcdir *=/s|@top_srcdir@|./..|
/^abs_top_builddir *=/s|@abs_top_builddir@|$(CURDIR)/..|
-# arch-tag: da7a3cff-4839-4ad7-bbe3-e2b61c84c38e
diff --git a/msdos/sigaction.c b/msdos/sigaction.c
index 6a24c9929e..44f7954fa2 100644
--- a/msdos/sigaction.c
+++ b/msdos/sigaction.c
@@ -55,5 +55,3 @@ sigaction(int _sig, const struct sigaction *_act, struct sigaction *_oact)
-/* arch-tag: 39526405-3d3a-44fe-af28-82a515e0c8e8
- (do not change this comment) */
diff --git a/nextstep/ChangeLog b/nextstep/ChangeLog
index ac060bbcee..79d9a2f382 100644
--- a/nextstep/ChangeLog
+++ b/nextstep/ChangeLog
@@ -1,3 +1,10 @@
+2011-01-02 Glenn Morris <[email protected]>
+
+ * Cocoa/Emacs.base/Contents/Info.plist:
+ * Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings:
+ * GNUstep/Emacs.base/Resources/Info-gnustep.plist:
+ Set short copyright year to 2011.
+
2010-10-13 Glenn Morris <[email protected]>
* README: Remove information duplicated in AUTHORS.
@@ -190,7 +197,7 @@
;; coding: utf-8
;; End:
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2008-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/nextstep/Cocoa/Emacs.base/Contents/Info.plist b/nextstep/Cocoa/Emacs.base/Contents/Info.plist
index f064a1248e..b618e17440 100644
--- a/nextstep/Cocoa/Emacs.base/Contents/Info.plist
+++ b/nextstep/Cocoa/Emacs.base/Contents/Info.plist
@@ -1,5 +1,5 @@
<!--
-Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2008-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -553,7 +553,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
<key>CFBundleExecutable</key>
<string>Emacs</string>
<key>CFBundleGetInfoString</key>
- <string>Emacs 24.0.50 Copyright (C) 2010 Free Software Foundation, Inc.</string>
+ <string>Emacs 24.0.50 Copyright (C) 2011 Free Software Foundation, Inc.</string>
<key>CFBundleIconFile</key>
<string>Emacs.icns</string>
<key>CFBundleIdentifier</key>
diff --git a/nextstep/Cocoa/Emacs.base/Contents/Resources/Credits.html b/nextstep/Cocoa/Emacs.base/Contents/Resources/Credits.html
index c053cfadc3..9a9e2f3c69 100644
--- a/nextstep/Cocoa/Emacs.base/Contents/Resources/Credits.html
+++ b/nextstep/Cocoa/Emacs.base/Contents/Resources/Credits.html
@@ -1,4 +1 @@
<font face="lucida grande" size="-1"><a href="http://www.gnu.org/software/emacs">http://www.gnu.org/software/emacs</a></font>
-
-<!-- arch-tag: cc455793-f594-45c6-822c-f4a7bb362c15
- (do not change this comment) -->
diff --git a/nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings b/nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings
index 197e42cb6f..95bc8ad83e 100644
--- a/nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings
+++ b/nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings
@@ -3,4 +3,4 @@
CFBundleName = "Emacs";
CFBundleShortVersionString = "Version 24.0.50";
CFBundleGetInfoString = "Emacs version 24.0.50, NS Windowing";
-NSHumanReadableCopyright = "Copyright (C) 2010 Free Software Foundation, Inc.";
+NSHumanReadableCopyright = "Copyright (C) 2011 Free Software Foundation, Inc.";
diff --git a/nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist b/nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist
index ade3f0117e..e92d45ae68 100644
--- a/nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist
+++ b/nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist
@@ -11,7 +11,7 @@
"Carl Edman (NeXTStep)",
"..see http://emacs-app.sf.net/authorship.html"
);
- Copyright = "Copyright (C) 2010 Free Software Foundation, Inc.";
+ Copyright = "Copyright (C) 2011 Free Software Foundation, Inc.";
CopyrightDescription = "Released under the GNU General Public License Version 3 or later";
FullVersionID = "Emacs 24.0.50, NS Windowing";
NSExecutable = Emacs;
diff --git a/nextstep/INSTALL b/nextstep/INSTALL
index 5ed9598a75..5bc59c6c6f 100644
--- a/nextstep/INSTALL
+++ b/nextstep/INSTALL
@@ -1,4 +1,4 @@
-Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2008-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/nextstep/README b/nextstep/README
index 1ff2a4dd92..d333c2f816 100644
--- a/nextstep/README
+++ b/nextstep/README
@@ -1,4 +1,4 @@
-Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2008-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
This directory contains the files needed to build Emacs on
diff --git a/nt/.gitignore b/nt/.gitignore
index bdeeae1e89..4e2fa24e12 100644
--- a/nt/.gitignore
+++ b/nt/.gitignore
@@ -3,5 +3,3 @@ stamp_BLD
oo/
oo-spd/
-
-# arch-tag: a25a0376-d3d9-4b3e-a52a-7c3eac9fdba3
diff --git a/nt/ChangeLog b/nt/ChangeLog
index eca36a06be..355c7e83da 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,35 @@
+2011-01-29 Eli Zaretskii <[email protected]>
+
+ * makefile.w32-in (all-other-dirs-nmake, all-other-dirs-gmake)
+ (bootstrap-nmake, bootstrap-gmake, bootstrap-clean-nmake)
+ (bootstrap-clean-gmake, clean-other-dirs-nmake)
+ (clean-other-dirs-gmake, cleanall-other-dirs-nmake)
+ (cleanall-other-dirs-gmake, distclean-other-dirs-nmake)
+ (distclean-other-dirs-gmake, maintainer-clean-other-dirs-nmake)
+ (maintainer-clean-other-dirs-gmake): Recurse into ../lib as well.
+ (bootstrap-nmake, bootstrap-gmake): Fix the bootstrap.
+
+ * configure.bat: Create lib/makefile.
+
+ * config.nt (HAVE_MKTIME, BROKEN_MKTIME): Remove.
+ (HAVE_ATTRIBUTE_ALIGNED, HAVE_C99_STRTOLD, HAVE_DECL_GETENV)
+ (HAVE_DECL_LOCALTIME_R, HAVE_WCHAR_T, PACKAGE, VERSION, inline)
+ (_GL_UNUSED, _UNUSED_PARAMETER_): Add definitions, for gnulib.
+
+2011-01-07 Eli Zaretskii <[email protected]>
+
+ * config.nt (HAVE___BUILTIN_UNWIND_INIT) [GCC >= 2.8]: Define.
+
+2011-01-02 Eli Zaretskii <[email protected]>
+
+ * configure.bat (end): Unset environment variables used by this
+ batch file.
+
+ * INSTALL: Update the information about PNG support libraries.
+ (Bug#7716)
+
+ * README.W32: Update the information about PNG support libraries.
+
2010-11-23 Eli Zaretskii <[email protected]>
* config.nt (EXTERNALLY_VISIBLE): Define.
@@ -1906,8 +1938,7 @@
;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1995-1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -1924,4 +1955,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;;; arch-tag: b3d2c29c-04a0-45d0-b52d-57354711c414
diff --git a/nt/INSTALL b/nt/INSTALL
index a000b21ade..a0ca4a1ebb 100644
--- a/nt/INSTALL
+++ b/nt/INSTALL
@@ -1,8 +1,7 @@
Building and Installing Emacs on Windows
(from 95 to 7 and beyond)
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
* For the impatient
@@ -290,6 +289,23 @@
If GTK 2.0 is installed, addpm will arrange for its image libraries
to be on the DLL search path for Emacs.
+ For PNG images, we recommend to use versions 1.4.x and later of
+ libpng, because previous versions had security issues. You can find
+ precompiled libraries and headers on the GTK download page for
+ Windows (http://www.gtk.org/download-windows.html).
+
+ Versions 1.4.0 and later of libpng are binary incompatible with
+ earlier versions, so Emacs will only look for libpng libraries which
+ are compatible with the version it was compiled against. That
+ version is given by the value of the Lisp variable `libpng-version';
+ e.g., 10403 means version 1.4.3. The variable `dynamic-library-alist'
+ is automatically set to name only those DLL names that are known to
+ be compatible with the version given by `libpng-version'. If PNG
+ support does not work for you even though you have the support DLL
+ installed, check the name of the installed DLL against
+ `dynamic-library-alist' and the value of `libpng-version', and
+ download compatible DLLs if needed.
+
* Experimental SVG support
SVG support is currently experimental, and not built by default.
diff --git a/nt/README b/nt/README
index d8a12293f5..5d54ce9004 100644
--- a/nt/README
+++ b/nt/README
@@ -1,7 +1,6 @@
Emacs for Windows NT/2000 and Windows 95/98/ME
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
This directory contains support for compiling and running GNU Emacs on
diff --git a/nt/README.W32 b/nt/README.W32
index df869d6569..4e26ef1c8d 100644
--- a/nt/README.W32
+++ b/nt/README.W32
@@ -1,5 +1,4 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
Emacs for Windows
@@ -116,14 +115,19 @@ See the end of the file for license conditions.
libXpm library from X11R7.3.
Emacs can also support some other image formats with appropriate
- libraries. These libraries are all available as part of GTK, or from
- gnuwin32.sourceforge.net. Emacs will find them if the directory they
- are installed in is on the PATH.
-
- PNG: requires the PNG reference library 1.2 or later, which will
- be named libpng13d.dll, libpng13.dll, libpng12d.dll, libpng12.dll
- or libpng.dll. LibPNG requires zlib, which should come from the same
- source as you got libpng.
+ libraries. These libraries are all available as part of GTK
+ download for Windows (http://www.gtk.org/download-windows.html), or
+ from the GnuWin32 project. Emacs will find them if the directory
+ they are installed in is on the PATH.
+
+ PNG: requires the PNG reference library 1.4 or later, which will
+ be named libpng14.dll or libpng14-14.dll. LibPNG requires zlib,
+ which should come from the same source as you got libpng.
+ Starting with Emacs 23.3, the precompiled Emacs binaries are
+ built with libpng 1.4.x and later, and are incompatible with
+ earlier versions of libpng DLLs. So if you have libpng 1.2.x,
+ the PNG support will not work, and you will have to download
+ newer versions.
JPEG: requires the Independant JPEG Group's libjpeg 6b or later,
which will be called jpeg62.dll, libjpeg.dll, jpeg-62.dll or jpeg.dll.
@@ -134,6 +138,9 @@ See the end of the file for license conditions.
GIF: requires libungif or giflib 4.1 or later, which will be
called giflib4.dll, libungif4.dll or libungif.dll.
+ If you have image support DLLs under different names, customize the
+ value of `dynamic-library-alist'.
+
In addition, Emacs can be compiled to support SVG. This precompiled
distribution has not been compiled that way, since the SVG library
or one or more of its extensive dependencies appear to be
diff --git a/nt/addpm.c b/nt/addpm.c
index 719573de37..c2cd1a07ab 100644
--- a/nt/addpm.c
+++ b/nt/addpm.c
@@ -1,6 +1,5 @@
/* Add entries to the GNU Emacs Program Manager folder.
- Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -371,5 +370,3 @@ main (int argc, char *argv[])
return 0;
}
-/* arch-tag: f923609d-b781-4ef4-abce-ca0da29cbbf0
- (do not change this comment) */
diff --git a/nt/addsection.c b/nt/addsection.c
index 94087044bc..f189df0d6e 100644
--- a/nt/addsection.c
+++ b/nt/addsection.c
@@ -1,6 +1,5 @@
/* Add an uninitialized data section to an executable.
- Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -542,5 +541,3 @@ main (int argc, char **argv)
/* eof */
-/* arch-tag: 17e2b0aa-8c17-4bd1-b24b-1cda689245fa
- (do not change this comment) */
diff --git a/nt/cmdproxy.c b/nt/cmdproxy.c
index 7c68f86865..9a98e1e503 100644
--- a/nt/cmdproxy.c
+++ b/nt/cmdproxy.c
@@ -1,6 +1,5 @@
/* Proxy shell designed for use with Emacs on Windows 95 and NT.
- Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
Accepts subset of Unix sh(1) command-line options, for compatibility
with elisp code written for Unix. When possible, executes external
@@ -718,5 +717,3 @@ main (int argc, char ** argv)
return 0;
}
-/* arch-tag: 88678d93-07ac-4e2f-ad63-d4a740ca69ac
- (do not change this comment) */
diff --git a/nt/config.nt b/nt/config.nt
index 3df58a29ba..53d89701c6 100644
--- a/nt/config.nt
+++ b/nt/config.nt
@@ -1,7 +1,6 @@
/* GNU Emacs site configuration template file. -*- C -*-
-Copyright (C) 1988, 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1988, 1993-1994, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -225,7 +224,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#undef HAVE_SETSID
#undef HAVE_FPATHCONF
#undef HAVE_SELECT
-#undef HAVE_MKTIME
#undef HAVE_EUIDACCESS
#undef HAVE_GETPAGESIZE
#undef HAVE_GET_CURRENT_DIR_NAME
@@ -274,6 +272,67 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the `getopt_long_only' function. */
#undef HAVE_GETOPT_LONG_ONLY
+/* Preprocessor macros needed for gnulib imports. */
+
+/* Define to 1 if GCC-style __attribute__ ((__aligned__ (expr))) works. */
+#ifdef __GNUC__
+#define HAVE_ATTRIBUTE_ALIGNED 1
+#else
+#undef HAVE_ATTRIBUTE_ALIGNED
+#endif
+
+/* Define to 1 if strtold conforms to C99. */
+#ifdef __GNUC__
+#define HAVE_C99_STRTOLD 1
+#else
+#undef HAVE_C99_STRTOLD
+#endif
+
+/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
+ */
+#define HAVE_DECL_GETENV 1
+
+/* Define to 1 if you have the declaration of `localtime_r', and to 0 if you
+ don't. */
+#undef HAVE_DECL_LOCALTIME_R
+
+/* Define to 1 if you have the `localtime_r' function. */
+#undef HAVE_LOCALTIME_R
+
+/* Define if you have the 'wchar_t' type. */
+#define HAVE_WCHAR_T 1
+
+/* Name of package */
+#define PACKAGE "emacs"
+
+/* FIXME: This is defined by the various makefile.w32-in files for
+ now. Revisit if/when VERSION from config.h is used by any
+ Makefile.in files. */
+#if 0
+/* Version number of package */
+#define VERSION "24.0.50"
+#endif
+
+/* 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
+
+/* Define as a marker that can be attached to declarations that might not
+ be used. This helps to reduce warnings, such as from
+ GCC -Wunused-parameter. */
+#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _GL_UNUSED __attribute__ ((__unused__))
+#else
+# define _GL_UNUSED
+#endif
+/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name
+ is a misnomer outside of parameter lists. */
+#define _UNUSED_PARAMETER_ _GL_UNUSED
+
+/* End of gnulib-related stuff. */
+
/* If using GNU, then support inline function declarations. */
#ifdef __GNUC__
#define INLINE __inline__
@@ -287,6 +346,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define EXTERNALLY_VISIBLE
#endif
+#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8))
+#define HAVE___BUILTIN_UNWIND_INIT 1
+#endif
+
#undef EMACS_CONFIGURATION
#undef EMACS_CONFIG_OPTIONS
@@ -341,11 +404,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define RE_TRANSLATE_P(TBL) (XFASTINT (TBL) != 0)
#endif
-/* Avoid link-time collision with system mktime if we will use our own. */
-#if ! HAVE_MKTIME || BROKEN_MKTIME
-#define mktime emacs_mktime
-#endif
-
#define my_strftime nstrftime /* for strftime.c */
#ifndef WINDOWSNT
@@ -418,5 +476,3 @@ void w32_abort (void) NO_RETURN;
/* Make a leaner executable. */
#define WIN32_LEAN_AND_MEAN 1
-/* arch-tag: df720992-aa5a-499a-882d-958dc5eeb5e9
- (do not change this comment) */
diff --git a/nt/configure.bat b/nt/configure.bat
index 4da2592767..1450650304 100755
--- a/nt/configure.bat
+++ b/nt/configure.bat
@@ -1,8 +1,7 @@
@echo off
rem ----------------------------------------------------------------------
rem Configuration script for MS Windows operating systems
-rem Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-rem 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+rem Copyright (C) 1999-2011 Free Software Foundation, Inc.
rem This file is part of GNU Emacs.
@@ -680,6 +679,7 @@ if exist config.tmp del config.tmp
copy /b config.settings+%MAKECMD%.defs+..\nt\makefile.w32-in ..\nt\makefile
if exist ..\admin\unidata copy /b config.settings+%MAKECMD%.defs+..\admin\unidata\makefile.w32-in ..\admin\unidata\makefile
copy /b config.settings+%MAKECMD%.defs+..\lib-src\makefile.w32-in ..\lib-src\makefile
+copy /b config.settings+%MAKECMD%.defs+..\lib\makefile.w32-in ..\lib\makefile
copy /b config.settings+%MAKECMD%.defs+..\src\makefile.w32-in ..\src\makefile
copy /b config.settings+%MAKECMD%.defs+..\doc\emacs\makefile.w32-in ..\doc\emacs\makefile
copy /b config.settings+%MAKECMD%.defs+..\doc\misc\makefile.w32-in ..\doc\misc\makefile
@@ -788,7 +788,17 @@ set mf=
set distfiles=
set HAVE_DISTFILES=
set distFilesOk=
+set pngsupport=
+set jpegsupport=
+set gifsupport=
+set tiffsupport=
+set xpmsupport=
+set svgsupport=
+set libsOK=
+set HAVE_GIF=
+set HAVE_JPEG=
+set HAVE_PNG=
+set HAVE_TIFF=
+set HAVE_XPM=
+set dbginfo=
-goto skipArchTag
- arch-tag: 300d20a4-1675-4e75-b615-7ce1a8c5376c
-:skipArchTag
diff --git a/nt/ddeclient.c b/nt/ddeclient.c
index ef287f017b..fbb7d36e64 100644
--- a/nt/ddeclient.c
+++ b/nt/ddeclient.c
@@ -1,6 +1,5 @@
/* Simple client interface to DDE servers.
- Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -72,5 +71,3 @@ main (int argc, char *argv[])
return (0);
}
-/* arch-tag: 360d7a99-2cae-447e-8d06-41ca41987e30
- (do not change this comment) */
diff --git a/nt/emacs.rc b/nt/emacs.rc
index 253065b47c..7e753f084e 100644
--- a/nt/emacs.rc
+++ b/nt/emacs.rc
@@ -27,7 +27,7 @@ BEGIN
VALUE "FileDescription", "GNU Emacs: The extensible self-documenting text editor\0"
VALUE "FileVersion", "24, 0, 50, 0\0"
VALUE "InternalName", "Emacs\0"
- VALUE "LegalCopyright", "Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010\0"
+ VALUE "LegalCopyright", "Copyright (C) 2001-2011\0"
VALUE "OriginalFilename", "emacs.exe"
VALUE "ProductName", "Emacs\0"
VALUE "ProductVersion", "24, 0, 50, 0\0"
diff --git a/nt/emacsclient.rc b/nt/emacsclient.rc
index 98f0bcd4f8..274a0631ee 100644
--- a/nt/emacsclient.rc
+++ b/nt/emacsclient.rc
@@ -25,7 +25,7 @@ BEGIN
VALUE "FileDescription", "GNU EmacsClient: Client for the extensible self-documenting text editor\0"
VALUE "FileVersion", "24, 0, 50, 0\0"
VALUE "InternalName", "EmacsClient\0"
- VALUE "LegalCopyright", "Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010\0"
+ VALUE "LegalCopyright", "Copyright (C) 2001-2011\0"
VALUE "OriginalFilename", "emacsclientw.exe"
VALUE "ProductName", "EmacsClient\0"
VALUE "ProductVersion", "24, 0, 50, 0\0"
diff --git a/nt/envadd.bat b/nt/envadd.bat
index 11a4e40b93..b60a85a7b6 100644
--- a/nt/envadd.bat
+++ b/nt/envadd.bat
@@ -1,7 +1,7 @@
rem Hack to change/add environment variables in the makefiles for the
rem Windows platform.
-rem Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+rem Copyright (C) 2003-2011
rem Free Software Foundation, Inc.
rem This file is part of GNU Emacs.
@@ -42,6 +42,3 @@ shift
rem Now, run the command line
%1 %2 %3 %4 %5 %6 %7 %8 %9
-goto skipArchTag
- arch-tag: 148c5181-dbce-43ae-bba6-1cc6e2a9ea75
-:skipArchTag
diff --git a/nt/ftime-nostartup.bat b/nt/ftime-nostartup.bat
index 40f0a37628..f9e93b7f96 100755
--- a/nt/ftime-nostartup.bat
+++ b/nt/ftime-nostartup.bat
@@ -22,6 +22,3 @@ if errorlevel 1 goto done
plist ..\src\obj\i386\pemacs > %1
:done
-goto skipArchTag
- arch-tag: 927c5199-a8a3-4cf0-ab56-62b66fc6520d
-:skipArchTag
diff --git a/nt/ftime.bat b/nt/ftime.bat
index beb87af459..b7cdf968c1 100644
--- a/nt/ftime.bat
+++ b/nt/ftime.bat
@@ -22,6 +22,3 @@ if errorlevel 1 goto done
plist ..\src\obj\i386\pemacs > %1
:done
-goto skipArchTag
- arch-tag: d1c629de-9172-4d72-ab68-9d45ab9903cc
-:skipArchTag
diff --git a/nt/gmake.defs b/nt/gmake.defs
index 2265841efa..3dbb97ff65 100644
--- a/nt/gmake.defs
+++ b/nt/gmake.defs
@@ -1,6 +1,5 @@
# -*- Makefile -*- definition file for building GNU Emacs on Windows NT.
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-# 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2000-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -303,4 +302,3 @@ export XMFLAGS
$(BLD)/%.o: %.c
$(CC) $(CFLAGS) $(CC_OUT)$@ $<
-# arch-tag: 35eb9662-8534-4bcf-b891-0730a09d657f
diff --git a/nt/icons/README b/nt/icons/README
index 0d8d90ffef..5778e4bda1 100644
--- a/nt/icons/README
+++ b/nt/icons/README
@@ -2,13 +2,13 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
File: emacs.ico
Author: Kentaro Ohkouchi <[email protected]>
-Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+Copyright (C) 2008-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later
File: emacs22.ico
Author: Andrew Zhilin
-Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+Copyright (C) 2005-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
@@ -17,8 +17,7 @@ Files: gnu2a32.ico gnu2a32t.ico gnu2b48.ico gnu2b48t.ico
gnu5w32.ico gnu5w32t.ico gnu6w48.ico gnu6w48t.ico
gnu7.ico gnu8.ico gnu9.ico
Author: Rob Davenport <rgd at bigfoot.com>
-Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
- Free Software Foundation, Inc.
+Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
<http://users.adelphia.net/~rob.davenport/gnuicons.html>
diff --git a/nt/inc/arpa/inet.h b/nt/inc/arpa/inet.h
index 9074508a1d..075752a721 100644
--- a/nt/inc/arpa/inet.h
+++ b/nt/inc/arpa/inet.h
@@ -1,4 +1,2 @@
/* null version of <arpa/inet.h> - <sys/socket.h> has everything */
-/* arch-tag: 13c7a7f7-40d0-49e8-bdfb-6dcf2f3a7340
- (do not change this comment) */
diff --git a/nt/inc/grp.h b/nt/inc/grp.h
index d4988f62a7..1c439e2fb8 100644
--- a/nt/inc/grp.h
+++ b/nt/inc/grp.h
@@ -1,6 +1,6 @@
/* Replacement grp.h file for building GNU Emacs on Windows.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
- Free Software Foundation, Inc.
+
+Copyright (C) 2003-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -32,5 +32,3 @@ struct group *getgrgid(gid_t);
#endif /* _GRP_H */
-/* arch-tag: 82840357-7946-4a87-9c97-c0281b49aca3
- (do not change this comment) */
diff --git a/nt/inc/langinfo.h b/nt/inc/langinfo.h
index edf9c29f32..27aa5fa306 100644
--- a/nt/inc/langinfo.h
+++ b/nt/inc/langinfo.h
@@ -1,5 +1,6 @@
/* Replacement langinfo.h file for building GNU Emacs on Windows.
- Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+Copyright (C) 2006-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -58,5 +59,3 @@ extern char *nl_langinfo (nl_item);
#endif /* _LANGINFO_H */
-/* arch-tag: a8917b7c-fb2c-4685-902b-742d0f67661b
- (do not change this comment) */
diff --git a/nt/inc/netdb.h b/nt/inc/netdb.h
index bdb1ce546c..ffe4f02311 100644
--- a/nt/inc/netdb.h
+++ b/nt/inc/netdb.h
@@ -1,4 +1,2 @@
/* null version of <netdb.h> - <sys/socket.h> has everything */
-/* arch-tag: 237ba543-97e2-4bd5-9c9c-32271d955eb1
- (do not change this comment) */
diff --git a/nt/inc/netinet/in.h b/nt/inc/netinet/in.h
index 2e4f1e1a7e..798da461aa 100644
--- a/nt/inc/netinet/in.h
+++ b/nt/inc/netinet/in.h
@@ -1,4 +1,2 @@
/* null version of <netinet/in.h> - <sys/socket.h> has everything */
-/* arch-tag: 49ff589e-100e-4f8f-8b2a-1c3b542590df
- (do not change this comment) */
diff --git a/nt/inc/nl_types.h b/nt/inc/nl_types.h
index a663db95e6..b95018609c 100644
--- a/nt/inc/nl_types.h
+++ b/nt/inc/nl_types.h
@@ -1,5 +1,6 @@
/* Replacement nl_types.h file for building GNU Emacs on Windows.
- Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+Copyright (C) 2006-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -22,6 +23,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
typedef int nl_item;
#endif /* _NL_TYPES_H */
-
-/* arch-tag: 518aa765-b846-4a7a-a862-95fd022928a1
- (do not change this comment) */
diff --git a/nt/inc/pwd.h b/nt/inc/pwd.h
index d8a4ffc2e2..b39309d08f 100644
--- a/nt/inc/pwd.h
+++ b/nt/inc/pwd.h
@@ -24,5 +24,3 @@ struct passwd * getpwuid (unsigned);
#endif /* _PWD_H_ */
-/* arch-tag: 68308424-cb2b-49ed-bb52-b347fee416bf
- (do not change this comment) */
diff --git a/nt/inc/sys/dir.h b/nt/inc/sys/dir.h
index e317d008d2..dc075cd758 100644
--- a/nt/inc/sys/dir.h
+++ b/nt/inc/sys/dir.h
@@ -4,5 +4,3 @@
#include "..\..\..\src\ndir.h"
-/* arch-tag: 090c9091-3b16-429b-9c40-8aecce1162be
- (do not change this comment) */
diff --git a/nt/inc/sys/file.h b/nt/inc/sys/file.h
index 4460da0927..504dce56d8 100644
--- a/nt/inc/sys/file.h
+++ b/nt/inc/sys/file.h
@@ -10,5 +10,3 @@
#define D_OK 8
#endif
-/* arch-tag: 7df3e73e-56bc-4ad9-b699-33149ea47959
- (do not change this comment) */
diff --git a/nt/inc/sys/ioctl.h b/nt/inc/sys/ioctl.h
index b3c6b3b107..060def367f 100644
--- a/nt/inc/sys/ioctl.h
+++ b/nt/inc/sys/ioctl.h
@@ -4,5 +4,3 @@
* compiler will pick this up empty header instead.
*/
-/* arch-tag: c6e9015a-930a-4ad3-b368-ac32f84475d7
- (do not change this comment) */
diff --git a/nt/inc/sys/param.h b/nt/inc/sys/param.h
index 971d4b1075..27f64038c1 100644
--- a/nt/inc/sys/param.h
+++ b/nt/inc/sys/param.h
@@ -9,5 +9,3 @@
#endif /* _PARAM_H_ */
-/* arch-tag: b1d90296-ec38-4839-83bd-0ddfd2528435
- (do not change this comment) */
diff --git a/nt/inc/sys/socket.h b/nt/inc/sys/socket.h
index 153ad17450..ca70f8b41f 100644
--- a/nt/inc/sys/socket.h
+++ b/nt/inc/sys/socket.h
@@ -1,5 +1,4 @@
-/* Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -168,6 +167,3 @@ extern int h_errno;
#endif /* _SOCKET_H_ */
/* end of socket.h */
-
-/* arch-tag: e3b8b91c-aaa0-4bc4-be57-a85a1dd247b4
- (do not change this comment) */
diff --git a/nt/inc/sys/stat.h b/nt/inc/sys/stat.h
index 4d93430803..a217dea9d4 100644
--- a/nt/inc/sys/stat.h
+++ b/nt/inc/sys/stat.h
@@ -1,7 +1,7 @@
/* sys/stat.h supplied with MSVCRT uses too narrow data types for
inode and user/group id, so we replace them with our own.
- Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+Copyright (C) 2008-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -78,5 +78,3 @@ _CRTIMP int __cdecl __MINGW_NOTHROW stat (const char*, struct stat*);
#endif /* INC_SYS_STAT_H_ */
-/* arch-tag: 17d8fc06-f2e5-4d10-a01e-af819918fe42
- (do not change this comment) */
diff --git a/nt/inc/sys/time.h b/nt/inc/sys/time.h
index a3808f4c5c..c90d1fd62f 100644
--- a/nt/inc/sys/time.h
+++ b/nt/inc/sys/time.h
@@ -22,5 +22,3 @@ void gettimeofday (struct timeval *, struct timezone *);
/* end of sys/time.h */
-/* arch-tag: bc525883-0c81-4bea-b83d-3325461f38b5
- (do not change this comment) */
diff --git a/nt/inc/unistd.h b/nt/inc/unistd.h
index 9bf9cb7597..7e77f95da4 100644
--- a/nt/inc/unistd.h
+++ b/nt/inc/unistd.h
@@ -1,4 +1,2 @@
/* Fake unistd.h: config.h already provides most of the relevant things. */
-/* arch-tag: 68600bcd-3097-4501-a559-551db3cdb9fd
- (do not change this comment) */
diff --git a/nt/makefile.w32-in b/nt/makefile.w32-in
index f328cd6a9f..28ee8b6e09 100644
--- a/nt/makefile.w32-in
+++ b/nt/makefile.w32-in
@@ -1,6 +1,5 @@
# -*- Makefile -*- for GNU Emacs on the Microsoft W32 API.
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-# 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2000-2011 Free Software Foundation, Inc.
#
# Top level makefile for building GNU Emacs on Windows NT
#
@@ -93,6 +92,8 @@ $(BLD)/addpm.$(O) $(BLD)/ddeclient.$(O) $(BLD)/runemacs.$(O) $(BLD)/cmdproxy.$(O
all: which-sh stamp_BLD $(ALL) $(CLIENTRES) maybe-bootstrap all-other-dirs-$(MAKETYPE)
all-other-dirs-nmake: addsection
+ cd ..\lib
+ $(MAKE) $(MFLAGS) all
cd ..\lib-src
$(MAKE) $(MFLAGS) all
cd ..\src
@@ -104,6 +105,7 @@ all-other-dirs-nmake: addsection
cd ..\nt
all-other-dirs-gmake: addsection
+ $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib all
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src all
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src all
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp all
@@ -159,6 +161,8 @@ bootstrap-nmake: addsection cmdproxy
$(MAKE) $(MFLAGS) clean
cd ..\lib-src
$(MAKE) $(MFLAGS) clean
+ cd ..\lib
+ $(MAKE) $(MFLAGS) clean all
cd ..\src
$(MAKE) $(MFLAGS) bootstrap
$(MAKE) $(MFLAGS) bootstrap-clean
@@ -174,6 +178,7 @@ bootstrap-gmake: addsection cmdproxy
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp bootstrap-clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src clean
+ $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib clean all
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src bootstrap
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src bootstrap-clean
$(CP) $(BLD)/cmdproxy.exe ../bin
@@ -185,11 +190,14 @@ bootstrap-clean: bootstrap-clean-$(MAKETYPE)
bootstrap-clean-nmake:
cd ..\src
$(MAKE) $(MFLAGS) bootstrap-clean
+ cd ..\lib
+ $(MAKE) $(MFLAGS) clean
cd ..\lisp
$(MAKE) $(MFLAGS) bootstrap-clean
bootstrap-clean-gmake:
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src bootstrap-clean
+ $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp bootstrap-clean
$(INSTALL_DIR):
@@ -298,6 +306,8 @@ clean: clean-other-dirs-$(MAKETYPE)
- $(DEL) ../etc/DOC ../etc/DOC-X
clean-other-dirs-nmake:
+ cd ..\lib
+ $(MAKE) $(MFLAGS) clean
cd ..\lib-src
$(MAKE) $(MFLAGS) clean
cd ..\src
@@ -315,6 +325,7 @@ clean-other-dirs-nmake:
cd ..\nt
clean-other-dirs-gmake:
+ $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim clean
@@ -324,6 +335,8 @@ clean-other-dirs-gmake:
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispref clean
cleanall-other-dirs-nmake:
+ cd ..\lib
+ $(MAKE) $(MFLAGS) cleanall
cd ..\lib-src
$(MAKE) $(MFLAGS) cleanall
cd ..\src
@@ -331,6 +344,7 @@ cleanall-other-dirs-nmake:
cd ..\nt
cleanall-other-dirs-gmake:
+ $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib cleanall
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src cleanall
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src cleanall
@@ -356,6 +370,8 @@ top-distclean:
distclean: distclean-other-dirs-$(MAKETYPE) top-distclean
distclean-other-dirs-nmake:
+ cd ..\lib
+ $(MAKE) $(MFLAGS) distclean
cd ..\lib-src
$(MAKE) $(MFLAGS) distclean
cd ..\src
@@ -375,6 +391,7 @@ distclean-other-dirs-nmake:
cd ..\nt
distclean-other-dirs-gmake:
+ $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib distclean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src distclean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src distclean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp distclean
@@ -387,6 +404,8 @@ distclean-other-dirs-gmake:
maintainer-clean: maintainer-clean-other-dirs-$(MAKETYPE) top-distclean
maintainer-clean-other-dirs-nmake:
+ cd ..\lib
+ $(MAKE) $(MFLAGS) maintainer-clean
cd ..\lib-src
$(MAKE) $(MFLAGS) maintainer-clean
cd ..\src
@@ -406,6 +425,7 @@ maintainer-clean-other-dirs-nmake:
cd ..\nt
maintainer-clean-other-dirs-gmake:
+ $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib maintainer-clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src maintainer-clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src maintainer-clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp maintainer-clean
@@ -425,6 +445,7 @@ TAGS-gmake: frc
../lib-src/$(BLD)/etags $(CURDIR)/*.c
$(MAKE) $(MFLAGS) -C ../src TAGS TAGS-LISP
$(MAKE) $(MFLAGS) -C ../lib-src TAGS
+ $(MAKE) $(MFLAGS) -C ../lib TAGS
TAGS-nmake:
echo This target is not supported with NMake
diff --git a/nt/multi-install-info.bat b/nt/multi-install-info.bat
index 01ceea954e..e1eef98ba1 100644
--- a/nt/multi-install-info.bat
+++ b/nt/multi-install-info.bat
@@ -3,7 +3,7 @@
rem Hack to run install-info with multiple info files on the command
rem line on the Windows platform.
-rem Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+rem Copyright (C) 2003-2011
rem Free Software Foundation, Inc.
rem This file is part of GNU Emacs.
@@ -39,6 +39,3 @@ if .%1% == . goto EndLoop
goto Loop
:EndLoop
-goto skipArchTag
- arch-tag: 4f590862-8ead-497a-a71c-fb4b0e5d50db
-:skipArchTag
diff --git a/nt/nmake.defs b/nt/nmake.defs
index 412b0148bb..a150aafcc7 100644
--- a/nt/nmake.defs
+++ b/nt/nmake.defs
@@ -1,6 +1,5 @@
# -*- Makefile -*- definition file for building GNU Emacs on Windows NT.
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-# 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2000-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -246,4 +245,3 @@ EXTRA_LINK = -profile
$(CC) $(CFLAGS) -Fo$(BLD)\ $<
!ENDIF
-# arch-tag: fefa49b0-c23c-46c7-9094-cab2a405058e
diff --git a/nt/paths.h b/nt/paths.h
index 3ff8ec8dda..21c039c8d0 100644
--- a/nt/paths.h
+++ b/nt/paths.h
@@ -1,5 +1,7 @@
-/* Copyright (C) 1993, 1995, 1997, 1999, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+/* paths.h file for MS Windows
+
+Copyright (C) 1993, 1995, 1997, 1999, 2001-2011
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -56,5 +58,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* #define PATH_INFO "/usr/local/info" */
#define PATH_INFO "C:/emacs/info"
-/* arch-tag: f6d46f3c-e1e9-436b-8629-edcaf6597973
- (do not change this comment) */
diff --git a/nt/preprep.c b/nt/preprep.c
index 220b0e40ce..513ad14e96 100644
--- a/nt/preprep.c
+++ b/nt/preprep.c
@@ -1,6 +1,5 @@
/* Pre-process emacs.exe for profiling by MSVC.
- Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -828,5 +827,3 @@ main (int argc, char **argv)
/* eof */
-/* arch-tag: 144ca747-168e-43a0-9736-3f4c0ba1657f
- (do not change this comment) */
diff --git a/nt/runemacs.c b/nt/runemacs.c
index f4d7206262..07e24f745f 100644
--- a/nt/runemacs.c
+++ b/nt/runemacs.c
@@ -1,5 +1,6 @@
-/* Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+/* runemacs --- Simple program to start Emacs with its console window hidden.
+
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -202,5 +203,3 @@ set_user_model_id (void)
}
}
-/* arch-tag: 7e02df73-4df7-4aa0-baea-99c6d047a384
- (do not change this comment) */
diff --git a/nt/zipdist.bat b/nt/zipdist.bat
index af90f6173b..b87353347b 100644
--- a/nt/zipdist.bat
+++ b/nt/zipdist.bat
@@ -1,6 +1,5 @@
@echo off
-rem Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-rem Free Software Foundation, Inc.
+rem Copyright (C) 2001-2011 Free Software Foundation, Inc.
rem Author: Christoph Scholtes cschol2112 at gmail.com
diff --git a/oldXMenu/Activate.c b/oldXMenu/Activate.c
index 55bfca510b..42eb33d208 100644
--- a/oldXMenu/Activate.c
+++ b/oldXMenu/Activate.c
@@ -3,8 +3,7 @@
#include "copyright.h"
/*
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2001-2011 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
@@ -607,6 +606,3 @@ XMenuActivate(
return(ret_val);
}
-
-/* arch-tag: 6b90b578-ecea-4328-b460-a0c96963f872
- (do not change this comment) */
diff --git a/oldXMenu/AddPane.c b/oldXMenu/AddPane.c
index 6312aa2c70..67900a6bc7 100644
--- a/oldXMenu/AddPane.c
+++ b/oldXMenu/AddPane.c
@@ -102,5 +102,3 @@ XMenuAddPane(Display *display, register XMenu *menu, register char *label, int a
return((menu->p_count - 1));
}
-/* arch-tag: 62a26021-f29d-48ba-96ef-3b6c4ebd6547
- (do not change this comment) */
diff --git a/oldXMenu/AddSel.c b/oldXMenu/AddSel.c
index d2f2156b07..9183aba7e8 100644
--- a/oldXMenu/AddSel.c
+++ b/oldXMenu/AddSel.c
@@ -104,5 +104,3 @@ XMenuAddSelection(Display *display, register XMenu *menu, register int p_num, ch
return((pane->s_count - 1));
}
-/* arch-tag: 0161f024-c739-440d-9498-050280c6c355
- (do not change this comment) */
diff --git a/oldXMenu/ChangeLog b/oldXMenu/ChangeLog
index 329a4ac956..8a4b4eaba9 100644
--- a/oldXMenu/ChangeLog
+++ b/oldXMenu/ChangeLog
@@ -569,12 +569,9 @@
;; Local Variables:
;; coding: utf-8
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1993-1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -590,5 +587,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: 8b17c869-6677-40ce-be86-e62cf34061cf
diff --git a/oldXMenu/ChgPane.c b/oldXMenu/ChgPane.c
index 9217c84864..38b6382016 100644
--- a/oldXMenu/ChgPane.c
+++ b/oldXMenu/ChgPane.c
@@ -66,5 +66,3 @@ XMenuChangePane(register XMenu *menu, register int p_num, char *label)
return(p_num);
}
-/* arch-tag: e267e9de-a3f0-4a0d-8c45-413afa176fd8
- (do not change this comment) */
diff --git a/oldXMenu/ChgSel.c b/oldXMenu/ChgSel.c
index b23bb6fd34..dcefb6c3a5 100644
--- a/oldXMenu/ChgSel.c
+++ b/oldXMenu/ChgSel.c
@@ -88,5 +88,3 @@ XMenuChangeSelection(Display *display, register XMenu *menu, register int p_num,
return(s_num);
}
-/* arch-tag: 229732a6-46bf-4a3a-ad90-3d8ed65c0841
- (do not change this comment) */
diff --git a/oldXMenu/Create.c b/oldXMenu/Create.c
index f96e077a46..8354208773 100644
--- a/oldXMenu/Create.c
+++ b/oldXMenu/Create.c
@@ -3,8 +3,7 @@
#include "copyright.h"
/*
-Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1993-1994, 2001-2011 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
@@ -754,5 +753,3 @@ XMenuCreate(Display *display, Window parent, register char *def_env)
return(menu);
}
-/* arch-tag: 6945b7d2-3b13-40b9-8b6e-56b1b20f3463
- (do not change this comment) */
diff --git a/oldXMenu/DelPane.c b/oldXMenu/DelPane.c
index baa1b8def4..10234e0290 100644
--- a/oldXMenu/DelPane.c
+++ b/oldXMenu/DelPane.c
@@ -87,5 +87,3 @@ XMenuDeletePane(register Display *display, register XMenu *menu, register int p_
return(p_num);
}
-/* arch-tag: 32a5bfd4-4bac-4090-bb53-844110f4908e
- (do not change this comment) */
diff --git a/oldXMenu/DelSel.c b/oldXMenu/DelSel.c
index 9b0e3d7cd3..ca2ea28c4b 100644
--- a/oldXMenu/DelSel.c
+++ b/oldXMenu/DelSel.c
@@ -71,5 +71,3 @@ XMenuDeleteSelection(register Display *display, register XMenu *menu, register i
return(s_num);
}
-/* arch-tag: 24ca2bc7-8a37-471a-8095-e6363fc1ed10
- (do not change this comment) */
diff --git a/oldXMenu/Destroy.c b/oldXMenu/Destroy.c
index 906d92fb8c..6a379609ad 100644
--- a/oldXMenu/Destroy.c
+++ b/oldXMenu/Destroy.c
@@ -115,5 +115,3 @@ XMenuDestroy(Display *display, register XMenu *menu)
free(menu);
}
-/* arch-tag: 44c9589f-5893-46fc-bc23-1b03a7f9c015
- (do not change this comment) */
diff --git a/oldXMenu/Error.c b/oldXMenu/Error.c
index 6454974fd5..99f5eb6500 100644
--- a/oldXMenu/Error.c
+++ b/oldXMenu/Error.c
@@ -28,5 +28,3 @@ XMenuError(void)
return(message);
}
-/* arch-tag: 5fff4a23-40ca-40d0-8887-c50fc73dea9d
- (do not change this comment) */
diff --git a/oldXMenu/EvHand.c b/oldXMenu/EvHand.c
index fa99b8363a..5ee6877374 100644
--- a/oldXMenu/EvHand.c
+++ b/oldXMenu/EvHand.c
@@ -23,5 +23,3 @@ XMenuEventHandler(int (*handler) (XEvent*))
_XMEventHandler = handler;
}
-/* arch-tag: 8d614c8c-94d9-43c8-8e32-c438a3c8a8a3
- (do not change this comment) */
diff --git a/oldXMenu/FindPane.c b/oldXMenu/FindPane.c
index 0d0f818801..022e761903 100644
--- a/oldXMenu/FindPane.c
+++ b/oldXMenu/FindPane.c
@@ -61,5 +61,3 @@ XMenuFindPane(register XMenu *menu, register char *label)
return (XM_FAILURE);
}
-/* arch-tag: b6c94285-0d1d-4569-a071-b34b63c67a54
- (do not change this comment) */
diff --git a/oldXMenu/FindSel.c b/oldXMenu/FindSel.c
index 202bbc1b28..72ee142dc8 100644
--- a/oldXMenu/FindSel.c
+++ b/oldXMenu/FindSel.c
@@ -3,8 +3,7 @@
#include "copyright.h"
/*
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2001-2011 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
@@ -85,5 +84,3 @@ XMenuFindSelection(register XMenu *menu, int p_num, register char *label)
return (XM_FAILURE);
}
-/* arch-tag: 564a4a95-9ab0-4580-b05f-6970c4b25dd4
- (do not change this comment) */
diff --git a/oldXMenu/InsPane.c b/oldXMenu/InsPane.c
index 19ee33cb42..c1993f5bfd 100644
--- a/oldXMenu/InsPane.c
+++ b/oldXMenu/InsPane.c
@@ -111,5 +111,3 @@ XMenuInsertPane(register XMenu *menu, register int p_num, char *label, int activ
return(p_num);
}
-/* arch-tag: ab94d53d-f05b-4273-82d3-f1b01eb9dc9e
- (do not change this comment) */
diff --git a/oldXMenu/InsSel.c b/oldXMenu/InsSel.c
index 0f28cdbef0..be0e43e0cb 100644
--- a/oldXMenu/InsSel.c
+++ b/oldXMenu/InsSel.c
@@ -115,5 +115,3 @@ XMenuInsertSelection(register XMenu *menu, register int p_num, register int s_nu
return(s_num);
}
-/* arch-tag: 8398626f-81cb-4e13-8ebc-aac1b9237663
- (do not change this comment) */
diff --git a/oldXMenu/Internal.c b/oldXMenu/Internal.c
index cb87dd650c..23b54493e2 100644
--- a/oldXMenu/Internal.c
+++ b/oldXMenu/Internal.c
@@ -3,8 +3,7 @@
#include "copyright.h"
/*
-Copyright (C) 1993, 1996, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1993, 1996, 2001-2011 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
@@ -1015,5 +1014,3 @@ _XMRefreshSelection(register Display *display, register XMenu *menu, register XM
}
}
-/* arch-tag: 3ac61957-0852-4e72-8b88-7dfab1a5dee9
- (do not change this comment) */
diff --git a/oldXMenu/Locate.c b/oldXMenu/Locate.c
index c79f70bd83..1605b4bbb2 100644
--- a/oldXMenu/Locate.c
+++ b/oldXMenu/Locate.c
@@ -77,5 +77,3 @@ XMenuLocate(register Display *display, register XMenu *menu, int p_num, int s_nu
return(XM_SUCCESS);
}
-/* arch-tag: 1ff94bab-cf67-4c92-bff4-dc0130153173
- (do not change this comment) */
diff --git a/oldXMenu/Makefile.in b/oldXMenu/Makefile.in
index 8acfee07fd..51ee4cd207 100644
--- a/oldXMenu/Makefile.in
+++ b/oldXMenu/Makefile.in
@@ -15,8 +15,7 @@
## without express or implied warranty.
-## Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-## 2010 Free Software Foundation, Inc.
+## Copyright (C) 2001-2011 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
diff --git a/oldXMenu/Post.c b/oldXMenu/Post.c
index 07e24a2627..e78fedcf77 100644
--- a/oldXMenu/Post.c
+++ b/oldXMenu/Post.c
@@ -84,5 +84,3 @@ XMenuPost(register Display *display, register XMenu *menu, register int *p_num,
}
}
-/* arch-tag: 7b6104e5-fa32-4342-aa17-05296a30dd70
- (do not change this comment) */
diff --git a/oldXMenu/Recomp.c b/oldXMenu/Recomp.c
index 038ac3b0b6..2aec87a51d 100644
--- a/oldXMenu/Recomp.c
+++ b/oldXMenu/Recomp.c
@@ -103,5 +103,3 @@ XMenuRecompute(Display *display, register XMenu *menu)
return(XM_SUCCESS);
}
-/* arch-tag: 1fe99b82-3873-4aab-b2b3-f277c93e00d9
- (do not change this comment) */
diff --git a/oldXMenu/SetAEQ.c b/oldXMenu/SetAEQ.c
index 7cdb867ff0..f4d51d24be 100644
--- a/oldXMenu/SetAEQ.c
+++ b/oldXMenu/SetAEQ.c
@@ -28,5 +28,3 @@ XMenuSetAEQ(register XMenu *menu, register int aeq)
menu->aeq = aeq;
}
-/* arch-tag: 48fc22b4-0722-4852-a044-788444e4a9dc
- (do not change this comment) */
diff --git a/oldXMenu/SetFrz.c b/oldXMenu/SetFrz.c
index 43684db901..b16c659ed5 100644
--- a/oldXMenu/SetFrz.c
+++ b/oldXMenu/SetFrz.c
@@ -27,5 +27,3 @@ XMenuSetFreeze(register XMenu *menu, register int freeze)
menu->freeze = freeze;
}
-/* arch-tag: 69c5670b-3a46-4c78-8fdb-305936d79772
- (do not change this comment) */
diff --git a/oldXMenu/SetPane.c b/oldXMenu/SetPane.c
index 9f5a99a564..f29a81c5ca 100644
--- a/oldXMenu/SetPane.c
+++ b/oldXMenu/SetPane.c
@@ -42,5 +42,3 @@ XMenuSetPane(register XMenu *menu, register int p_num, register int active)
return(p_num);
}
-/* arch-tag: 90bc8d90-031d-41a2-a2c6-04bf94efbc90
- (do not change this comment) */
diff --git a/oldXMenu/SetSel.c b/oldXMenu/SetSel.c
index 162d3434ba..2f950d49fd 100644
--- a/oldXMenu/SetSel.c
+++ b/oldXMenu/SetSel.c
@@ -49,5 +49,3 @@ XMenuSetSelection(register XMenu *menu, register int p_num, register int s_num,
return(s_num);
}
-/* arch-tag: 79198ae0-c5a4-4d31-adb0-5747f833f56a
- (do not change this comment) */
diff --git a/oldXMenu/X10.h b/oldXMenu/X10.h
index 9a7766bc09..6b0626f212 100644
--- a/oldXMenu/X10.h
+++ b/oldXMenu/X10.h
@@ -76,5 +76,3 @@ char *XLookUpAssoc(Display *dpy, XAssocTable *table, XID x_id);
#endif /* _X10_H_ */
-/* arch-tag: b0b749fb-757b-470b-b405-af7d033a5aad
- (do not change this comment) */
diff --git a/oldXMenu/XCrAssoc.c b/oldXMenu/XCrAssoc.c
index aa98c27ff4..9443481406 100644
--- a/oldXMenu/XCrAssoc.c
+++ b/oldXMenu/XCrAssoc.c
@@ -54,5 +54,3 @@ XAssocTable *XCreateAssocTable(register int size)
return(table);
}
-/* arch-tag: 5df3237d-ada0-4345-a3ab-282cafb397aa
- (do not change this comment) */
diff --git a/oldXMenu/XDelAssoc.c b/oldXMenu/XDelAssoc.c
index 43446ae8a2..018c71c3a3 100644
--- a/oldXMenu/XDelAssoc.c
+++ b/oldXMenu/XDelAssoc.c
@@ -57,5 +57,3 @@ XDeleteAssoc(register Display *dpy, register XAssocTable *table, register XID x_
return;
}
-/* arch-tag: 90981a7e-601c-487a-b364-cdf55d6c475b
- (do not change this comment) */
diff --git a/oldXMenu/XDestAssoc.c b/oldXMenu/XDestAssoc.c
index c2dd8d4d89..135b0c2cda 100644
--- a/oldXMenu/XDestAssoc.c
+++ b/oldXMenu/XDestAssoc.c
@@ -36,5 +36,3 @@ XDestroyAssocTable(register XAssocTable *table)
free((char *)table);
}
-/* arch-tag: a536bf02-8d63-45f2-8c1a-c7f9fd4da2cf
- (do not change this comment) */
diff --git a/oldXMenu/XLookAssoc.c b/oldXMenu/XLookAssoc.c
index a1a06e900c..e287ebbaa7 100644
--- a/oldXMenu/XLookAssoc.c
+++ b/oldXMenu/XLookAssoc.c
@@ -56,5 +56,3 @@ caddr_t XLookUpAssoc(register Display *dpy, register XAssocTable *table, registe
return(NULL);
}
-/* arch-tag: d5075d0c-4b71-467d-b33c-3f5c4c4afcf2
- (do not change this comment) */
diff --git a/oldXMenu/XMakeAssoc.c b/oldXMenu/XMakeAssoc.c
index 3c79d17dc6..3626eb01f5 100644
--- a/oldXMenu/XMakeAssoc.c
+++ b/oldXMenu/XMakeAssoc.c
@@ -86,5 +86,3 @@ XMakeAssoc(register Display *dpy, register XAssocTable *table, register XID x_id
emacs_insque((struct qelem *)new_entry, (struct qelem *)Entry->prev);
}
-/* arch-tag: d7e3fb8a-f3b3-4c5d-a307-75ca67ec1b49
- (do not change this comment) */
diff --git a/oldXMenu/XMenu.h b/oldXMenu/XMenu.h
index 88ebf5b3ac..b94c6c3ced 100644
--- a/oldXMenu/XMenu.h
+++ b/oldXMenu/XMenu.h
@@ -266,5 +266,3 @@ char *XMenuError(void);
#endif
/* Don't add after this point. */
-/* arch-tag: 7e57b5ac-9355-4057-9385-afbe6912d60f
- (do not change this comment) */
diff --git a/oldXMenu/XMenuInt.h b/oldXMenu/XMenuInt.h
index dc6a0e5192..c937346021 100644
--- a/oldXMenu/XMenuInt.h
+++ b/oldXMenu/XMenuInt.h
@@ -61,5 +61,3 @@ int _XMRefreshPane(register Display *display, register XMenu *menu, register XMP
#endif
/* Don't add stuff after this #endif */
-/* arch-tag: 00640af1-9386-48b5-a4be-35620b8cd3aa
- (do not change this comment) */
diff --git a/oldXMenu/copyright.h b/oldXMenu/copyright.h
index c5a4316043..629bc1f547 100644
--- a/oldXMenu/copyright.h
+++ b/oldXMenu/copyright.h
@@ -16,5 +16,3 @@ without express or implied warranty.
*/
-/* arch-tag: c689b1bc-a3ba-41a1-baa0-a3622b5445b2
- (do not change this comment) */
diff --git a/oldXMenu/insque.c b/oldXMenu/insque.c
index c6f8f6ef1f..b324ade1d5 100644
--- a/oldXMenu/insque.c
+++ b/oldXMenu/insque.c
@@ -1,6 +1,5 @@
/*
-Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1993-1998, 2001-2011 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
@@ -52,5 +51,3 @@ emacs_remque (struct qelem *elem)
prev->q_forw = next;
}
-/* arch-tag: a8719d1a-5c3f-4bce-b36b-173106d36165
- (do not change this comment) */
diff --git a/src/.gdbinit b/src/.gdbinit
index 73fecea597..3072dc956b 100644
--- a/src/.gdbinit
+++ b/src/.gdbinit
@@ -1,6 +1,4 @@
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-# Free Software Foundation, Inc.
+# Copyright (C) 1992-1998, 2000-2011 Free Software Foundation, Inc.
#
# This file is part of GNU Emacs.
#
@@ -51,7 +49,7 @@ handle SIGALRM ignore
# Using a constant runs into GDB bugs sometimes.
define xgetptr
set $bugfix = $arg0
- set $ptr = (gdb_use_union ? $bugfix.u.val : $bugfix & $valmask) | gdb_data_seg_bits
+ set $ptr = (gdb_use_union ? (gdb_use_lsb ? $bugfix.u.val << gdb_gctypebits : $bugfix.u.val) : $bugfix & $valmask) | gdb_data_seg_bits
end
define xgetint
@@ -1227,7 +1225,8 @@ define xbacktrace
xprintsym (*$bt->function)
printf " (0x%x)\n", $bt->args
else
- printf "0x%x ", *$bt->function
+ xgetptr *$bt->function
+ printf "0x%x ", $ptr
if $type == Lisp_Vectorlike
xgetptr (*$bt->function)
set $size = ((struct Lisp_Vector *) $ptr)->size
@@ -1316,7 +1315,7 @@ show environment DISPLAY
show environment TERM
# People get bothered when they see messages about non-existent functions...
-xgetptr Vsystem_type
+xgetptr globals.f_Vsystem_type
# $ptr is NULL in temacs
if ($ptr != 0)
set $tem = (struct Lisp_Symbol *) $ptr
@@ -1341,7 +1340,7 @@ end
tbreak init_sys_modes
commands
silent
- xgetptr Vinitial_window_system
+ xgetptr globals.f_Vinitial_window_system
set $tem = (struct Lisp_Symbol *) $ptr
xgetptr $tem->xname
set $tem = (struct Lisp_String *) $ptr
@@ -1354,4 +1353,3 @@ commands
end
continue
end
-# arch-tag: 12f34321-7bfa-4240-b77a-3cd3a1696dfe
diff --git a/src/.gitignore b/src/.gitignore
index c0a9b2cf13..070a38fea5 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -5,5 +5,3 @@ stamp_BLD
oo/
oo-spd/
-
-# arch-tag: 0648c91e-6070-4cc5-a029-cade1f8b6098
diff --git a/src/ChangeLog.1 b/src/ChangeLog.1
index 8b4a9afbc6..e32db190cd 100644
--- a/src/ChangeLog.1
+++ b/src/ChangeLog.1
@@ -3521,8 +3521,7 @@
* minibuf.c: Don't allow entry to minibuffer
while minibuffer is selected.
- Copyright (C) 1985, 1986, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985-1986, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -3539,4 +3538,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;;; arch-tag: 2d2c1086-b0a5-437c-bc58-fb38ce2e0f9b
diff --git a/src/ChangeLog.10 b/src/ChangeLog.10
index 393c7bdf8d..869ab5b07d 100644
--- a/src/ChangeLog.10
+++ b/src/ChangeLog.10
@@ -27912,8 +27912,7 @@ See ChangeLog.9 for earlier changes.
;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -27930,4 +27929,3 @@ See ChangeLog.9 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;;; arch-tag: 5dcc435f-4038-4141-b3bf-5be51cd76bd4
diff --git a/src/ChangeLog.2 b/src/ChangeLog.2
index 0397478f09..ca7feaee9f 100644
--- a/src/ChangeLog.2
+++ b/src/ChangeLog.2
@@ -4771,8 +4771,7 @@
See ChangeLog.1 for earlier changes.
- Copyright (C) 1986, 1987, 1988, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1986-1988, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -4789,4 +4788,3 @@ See ChangeLog.1 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;;; arch-tag: 3334fc8a-ec24-4601-99fc-4c8adc2b31bb
diff --git a/src/ChangeLog.3 b/src/ChangeLog.3
index e3ba2b37cc..a361142faa 100644
--- a/src/ChangeLog.3
+++ b/src/ChangeLog.3
@@ -16507,8 +16507,7 @@ See ChangeLog.2 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -16524,5 +16523,3 @@ See ChangeLog.2 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: 136a8e5c-4f83-403b-9132-874f1c47f8a9
diff --git a/src/ChangeLog.4 b/src/ChangeLog.4
index c853ad7b4a..dc8fe23a22 100644
--- a/src/ChangeLog.4
+++ b/src/ChangeLog.4
@@ -6906,8 +6906,7 @@ See ChangeLog.3 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1993-1994, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -6923,5 +6922,3 @@ See ChangeLog.3 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: 2e44924a-e45a-4129-ad93-1f7bb410b609
diff --git a/src/ChangeLog.5 b/src/ChangeLog.5
index cc3fcdd88f..1f21e9fb99 100644
--- a/src/ChangeLog.5
+++ b/src/ChangeLog.5
@@ -7148,8 +7148,7 @@ See ChangeLog.4 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1994-1995, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -7165,5 +7164,3 @@ See ChangeLog.4 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: aea244d6-d513-4b51-8dba-5ecdf1aa5875
diff --git a/src/ChangeLog.6 b/src/ChangeLog.6
index 3b1bdbffab..d790356810 100644
--- a/src/ChangeLog.6
+++ b/src/ChangeLog.6
@@ -5354,8 +5354,7 @@
See ChangeLog.5 for earlier changes.
- Copyright (C) 1995, 1996, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1995-1996, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -5371,5 +5370,3 @@ See ChangeLog.5 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: 66a98e1c-2268-45e8-8a57-286b9c85a4e9
diff --git a/src/ChangeLog.7 b/src/ChangeLog.7
index b592710880..d5bebec660 100644
--- a/src/ChangeLog.7
+++ b/src/ChangeLog.7
@@ -11092,8 +11092,7 @@ See ChangeLog.6 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1997-1998, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -11109,5 +11108,3 @@ See ChangeLog.6 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: 3b03e091-1123-4031-b67d-41683932cc48
diff --git a/src/ChangeLog.8 b/src/ChangeLog.8
index 9c38b29ff3..833119c9fc 100644
--- a/src/ChangeLog.8
+++ b/src/ChangeLog.8
@@ -13979,8 +13979,7 @@
See ChangeLog.7 for earlier changes.
- Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -13996,5 +13995,3 @@ See ChangeLog.7 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: 4d73444a-8f6e-4255-92a6-d3abc438b8d3
diff --git a/src/ChangeLog.9 b/src/ChangeLog.9
index 3c3a506893..0c39de74a6 100644
--- a/src/ChangeLog.9
+++ b/src/ChangeLog.9
@@ -13294,8 +13294,7 @@ See ChangeLog.8 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -13311,4 +13310,3 @@ See ChangeLog.8 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
diff --git a/src/ChangeLog.trunk b/src/ChangeLog.trunk
index 18c482c2e9..f96fe5eb2f 100644
--- a/src/ChangeLog.trunk
+++ b/src/ChangeLog.trunk
@@ -1,3 +1,1209 @@
+2011-01-31 Paul Eggert <[email protected]>
+
+ src/emacs.c now gets version number from configure.in
+ * emacs.c (emacs_version): Set to VERSION so that it
+ is determined automatically from ../configure.in.
+
+2011-01-31 Jim Meyering <[email protected]>
+
+ * charset.c (load_charset_map): Don't deref NULL on failed malloc.
+ Use xmalloc rather than malloc.
+
+2011-01-30 Paul Eggert <[email protected]>
+
+ strftime: import from gnulib
+ * Makefile.in (obj): Remove strftime.o, as gnulib now does this for us.
+ * deps.mk (strftime.o): Remove.
+ * editfns.c: Include <strftime.h>, supplied by gnulib.
+ (emacs_strftimeu): Remove decl.
+ (emacs_memftimeu): Use nstrftime (the gnulib name) rather than
+ emacs_strftimeu.
+ * config.in: Regenerate.
+ * strftime.c: Remove; we now use strftime from gnulib.
+
+ Use SSDATA when the context wants char *.
+ * alloc.c, buffer.c, bytecode.c, callproc.c, dired.c:
+ * dispnew.c, doc.c, editfns.c, emacs.c, fileio.c, filelock.c:
+ * fns.c, font.c, frame.c, image.c, indent.c, keyboard.c:
+ * lread.c, minibuf.c, print.c, process.c, search.c, widget.c:
+ * xdisp.c, xfaces.c, xfns.c, xml.c, xselect.c, xterm.c:
+ Use SSDATA (not SDATA) when the context of the expression wants
+ char * (not unsigned char *).
+
+2011-01-30 Jan Djärv <[email protected]>
+
+ * .gdbinit: Read global lisp variables as globals.f_V*.
+
+2011-01-30 Andreas Schwab <[email protected]>
+
+ * font.c (PROP_MATCH): Remove parameter N and use strlen instead.
+ All uses changed.
+ (PROP_SAVE): Likewise.
+
+2011-01-29 Chong Yidong <[email protected]>
+
+ * keyboard.c (make_lispy_position): Fix typo in last change
+ (Bug#7935).
+
+2011-01-29 Eli Zaretskii <[email protected]>
+
+ * s/ms-w32.h (HAVE_MKTIME): Remove.
+
+ * makefile.w32-in (LOCAL_FLAGS): Add -I../lib.
+ (GNULIB): New variable.
+ (LIBS): Add $(GNULIB).
+ $(TEMACS): Depend on $(GNULIB).
+ <top-level>: Fix font-lock disrupted by a lone `"'.
+
+2011-01-29 Jan Djärv <[email protected]>
+
+ * nsselect.m (ns_string_from_pasteboard): Get length of string
+ and use make_string instead of build_string (Bug#7934).
+ (ns_string_to_pasteboard_internal): Use initWithBytesNoCopy
+ instead of stringWithUTF8String (Bug#7934).
+
+2011-01-29 Anders Lindgren <[email protected]> (tiny change)
+
+ * nsfont.m (nsfont_open): Ensure that fonts with inexact
+ descenders would not become one pixel too tall (Bug#7887).
+
+2011-01-28 Chong Yidong <[email protected]>
+
+ * keyboard.c (make_lispy_position): For clicks on right fringe or
+ margin, compute text position using the X coordinate relative to
+ the left of the text area (Bug#7839).
+
+2011-01-28 Kenichi Handa <[email protected]>
+
+ * ftfont.c (ftfont_spec_pattern): Check each extra property
+ value.
+
+2011-01-28 Stefan Monnier <[email protected]>
+
+ * xdisp.c (safe_eval_handler): Distinguish symbols and strings.
+
+2011-01-27 Chong Yidong <[email protected]>
+
+ * font.c (font_parse_fcname): Undefine a temporary macro.
+
+2011-01-26 Stefan Monnier <[email protected]>
+
+ Let the debugger continue to the normal handler (bug#7825).
+ * eval.c (maybe_call_debugger): Declare before new use.
+ (find_handler_clause): Don't call debugger any more.
+ Ignore Vstack_trace_on_error.
+ Use XCAR/XCDR.
+ (syms_of_eval): Remove Vstack_trace_on_error.
+ (Fsignal): Only modify handlerlist when we know we need to do it.
+ Call the debugger when necessary.
+ * globals.h (Vstack_trace_on_error): Remove.
+
+2011-01-26 Chong Yidong <[email protected]>
+
+ * font.c (font_parse_fcname): Rewrite GTK font name parser.
+
+2011-01-25 Stefan Monnier <[email protected]>
+
+ * xdisp.c (handle_fontified_prop): Be careful with font-lock changing
+ the buffer's point-max (bug#7876).
+
+2011-01-25 Chong Yidong <[email protected]>
+
+ * lisp.h (XPNTR): Obey DATA_SEG_BITS in all non-USE_LSB_TAG cases.
+ Remove unused case (Bug#6811).
+
+2011-01-23 Jan Djärv <[email protected]>
+
+ * nsterm.m (x_set_offset): Set dont_constrain to 0 so the call to
+ setFrameTopLeftPoint is constrained.
+
+2011-01-23 Paul Eggert <[email protected]>
+
+ Check return values of some library calls.
+ * emacs.c (main): Check dup result.
+ * frame.c: Include <limits.h>, for INT_MIN and INT_MAX.
+ (frame_name_fnn_p): Check strtol result.
+
+ * image.c (x_create_bitmap_from_xpm_data): Add cast to fix type clash
+ when calling XpmCreatePixmapFromData.
+
+ Promote SSDATA macro from gtkutil.c and xsmfns.c to lisp.h.
+ * lisp.h (SSDATA): New macro.
+ All uses of (char *) SDATA (x) replaced with SSDATA (x),
+ and all uses of (unsigned char *) SDATA (x) replaced with SDATA (x).
+ * gtkutil.c (SSDATA): Remove, as lisp.h now defines this.
+ * xsmfns.c (SSDATA): Likewise.
+
+2011-01-22 Martin Rudalics <[email protected]>
+
+ * window.c (select_window): New function.
+ (Fselect_window): Call it.
+ (inhibit_point_swap): Variable deleted.
+ (Fset_window_configuration): Call select_window directly.
+
+2011-01-22 Jan Djärv <[email protected]>
+
+ * nsterm.m (constrainFrameRect): Only constrain the first time called.
+
+2011-01-21 Jan Djärv <[email protected]>
+
+ * nsterm.m (x_set_offset, windowDidMove): When calculating y, use first
+ screen, not the window screen.
+ (x_set_window_size): Remove constraints.
+ Calculate origin.y only if zooming is 0 and without referring to a
+ screen.
+ (windowWillResize): Don't modify frameSize.
+ (windowDidBecomeKey, mouseDown): Set dont_constrain to 1.
+ (initFrameFromEmacs): Initialize ns_userRect.
+ (windowShouldZoom): Set zooming to one. Remove all other code.
+ (windowWillUseStandardFrame): Move static ns_userRect to EmacsView.
+ Zero it after restore.
+ (constrainFrameRect): New method for EmacsWindow.
+ (mouseDragged): Always post NSWindowDidResizeNotification after call to
+ windowWillResize.
+
+ * nsterm.h (ns_output): Add dont_constrain and zooming.
+ (EmacsView): Add ns_userRect.
+
+ * nsterm.m (keyDown): If ns_right_alternate_modifier is Qleft, check
+ if ns_alternate_modifier is none.
+
+2011-01-20 Jan Djärv <[email protected]>
+
+ * unexmacosx.c: Add comment about include order.
+
+2011-01-20 Glenn Morris <[email protected]>
+
+ * minibuf.c (syms_of_minibuf) <read-expression-history>:
+ Give it a doc string.
+ * globals.h: Add Vread_expression_history.
+
+ * macros.c (syms_of_macros) <kbd-macro-termination-hook>:
+ Give it a doc string.
+ * globals.h: Add Vkbd_macro_termination_hook.
+
+2011-01-20 Chong Yidong <[email protected]>
+
+ * fns.c (Fyes_or_no_p): Revert 2011-01-07 change, removing ARGS.
+
+2011-01-19 Paul Eggert <[email protected]>
+
+ Fix X11 compilation failure.
+ * globals.h (struct emacs_globals): Document f_Vselection_alist.
+ * xselect.c (Vselection_alist): Remove declaration, moving its
+ documentation to globals.h. This fixes a compilation failure
+ induced by the earlier change to globals.h today.
+
+2011-01-19 Jan Djärv <[email protected]>
+
+ * unexmacosx.c: Include config.h before unistd.h (Bug#7859).
+
+ * nsterm.m (ns_input_file, ns_input_font, ns_input_fontsize)
+ (ns_input_line, ns_input_color, ns_input_text, ns_working_text)
+ (ns_input_spi_name, ns_input_spi_arg)
+ (ns_alternate_modifier, ns_right_alternate_modifier)
+ (ns_command_modifier, ns_right_command_modifier, ns_control_modifier)
+ (ns_right_control_modifier, ns_function_modifier)
+ (ns_antialias_text, ns_confirm_quit): Move to globals.h.
+ (Vx_toolkit_scroll_bars, x_use_underline_position_properties)
+ (x_underline_at_descent_line): Remove declaration.
+ (syms_of_nsterm): Remove & from DEFVAR_LISP and DEFVAR_BOOL.
+
+ * nsselect.m (Vns_sent_selection_hooks, Vns_lost_selection_hooks
+ (Vselection_alist, Vselection_converter_alist): Move to globals.h.
+ (syms_of_nsselect): Remove & from DEFVAR_LISP.
+
+ * nsmenu.m (Voverriding_local_map, Voverriding_local_map_menu_flag):
+ Remove declaration.
+
+ * nsfont.m (Vns_reg_to_script, ns_antialias_text): Move to
+ globals.h.
+ (syms_of_nsfont): Remove & from DEFVAR_LISP.
+
+ * nsfns.m (Vmenu_bar_mode, Vtool_bar_mode): Remove declaration.
+ (Vns_icon_type_alist, Vns_version_string): Move to globals.h.
+ (syms_of_nsfns): Remove & from DEFVAR_LISP calls.
+
+ * globals.h (struct emacs_globals): Add f_ns_input_file,
+ f_ns_input_font, f_ns_input_fontsize, f_ns_input_line,
+ f_ns_input_color, f_ns_input_text, f_ns_working_text,
+ f_ns_input_spi_name, f_ns_input_spi_arg, f_ns_alternate_modifier,
+ f_ns_right_alternate_modifier, f_ns_command_modifier,
+ f_ns_right_command_modifier, f_ns_control_modifier,
+ f_ns_right_control_modifier, f_ns_function_modifier,
+ f_ns_antialias_text, f_ns_confirm_quit, f_Vns_icon_type_alist,
+ f_Vns_version_string, f_Vns_sent_selection_hooks,
+ f_Vns_lost_selection_hooks, f_Vselection_alist, f_Vns_reg_to_script
+ and corresponding defines.
+
+
+2011-01-19 Sam Steingold <[email protected]>
+
+ * w32.c (check_windows_init_file): Remove declarations of
+ Vwindow_system, Vload_path, Qfile_exists_p to fix compilation.
+ * w32fns.c: Fix an error introduced by the previous patch.
+
+2011-01-19 Tom Tromey <[email protected]>
+
+ * window.c: Fix error introduced by previous patch.
+
+2011-01-18 Tom Tromey <tromey@parfait>
+
+ * globals.h: New file.
+ * xterm.h (Vx_pixel_size_width_font_regexp): Remove declaration.
+ * window.h (Vinitial_window_system, Vminibuf_scroll_window)
+ (Vwindow_system_version): Remove declaration.
+ * w32term.h (Vw32_enable_palette)
+ (Vx_pixel_size_width_font_regexp): Remove declaration.
+ * w32menu.c (Voverriding_local_map)
+ (Voverriding_local_map_menu_flag): Remove declaration.
+ * w32inevt.c (Vw32_alt_is_meta, Vw32_apps_modifier)
+ (Vw32_capslock_is_shiftlock, Vw32_enable_caps_lock)
+ (Vw32_enable_num_lock, Vw32_lwindow_modifier)
+ (Vw32_pass_lwindow_to_system, Vw32_pass_rwindow_to_system)
+ (Vw32_phantom_key_code, Vw32_recognize_altgr)
+ (Vw32_rwindow_modifier, Vw32_scroll_lock_modifier)
+ (w32_use_full_screen_buffer): Remove declaration.
+ * w32.c (Vsystem_configuration, Vw32_downcase_file_names)
+ (Vw32_generate_fake_inodes, Vw32_get_true_file_attributes)
+ (w32_num_mouse_buttons, w32_pipe_read_delay): Remove declaration.
+ * termopts.h (Vtruncate_partial_width_windows, inverse_video)
+ (no_redraw_on_reenter, visible_bell): Remove declaration.
+ * sysdep.c (Vsystem_name): Remove declaration.
+ * syntax.h (parse_sexp_lookup_properties): Remove declaration.
+ * menu.h (Vmenu_updating_frame): Remove declaration.
+ * macros.h (Vexecuting_kbd_macro, executing_kbd_macro_index):
+ Remove declaration.
+ * lisp.h (Vafter_init_time, Vafter_load_alist)
+ (Vauto_save_list_file_name, Vbefore_init_time, Vcommand_history)
+ (Vcompletion_regexp_list, Vcurrent_load_list)
+ (Vcurrent_prefix_arg, Vdata_directory, Vdebug_on_error)
+ (Vdoc_directory, Vdoc_file_name, Vdynamic_library_alist)
+ (Vexec_directory, Vexec_path, Vexec_suffixes)
+ (Vface_font_rescale_alist, Vface_ignored_fonts, Vfeatures)
+ (Vhelp_form, Vhistory_length, Vinhibit_field_text_motion)
+ (Vinhibit_quit, Vinhibit_read_only, Vinhibit_redisplay)
+ (Vinstallation_directory, Vinvocation_directory)
+ (Vinvocation_name, Vload_file_rep_suffixes, Vload_history)
+ (Vload_suffixes, Vmark_even_if_inactive, Vmemory_full)
+ (Vmessage_log_max, Vobarray, Vprint_length, Vprint_level)
+ (Vpurify_flag, Vquit_flag, Vsaved_region_selection)
+ (Vscalable_fonts_allowed, Vselect_active_regions)
+ (Vshell_file_name, Vstandard_input, Vstandard_output)
+ (Vsystem_name, Vtemporary_file_directory, Vthrow_on_input)
+ (Vtop_level, Vtty_erase_char, Vundo_outer_limit)
+ (Vuser_login_name, Vwindow_scroll_functions)
+ (Vwindow_system_version, Vx_no_window_manager)
+ (Vx_resource_class, Vx_resource_name, baud_rate)
+ (completion_ignore_case, debug_on_next_call, gc_cons_threshold)
+ (history_delete_duplicates, inhibit_x_resources)
+ (last_nonmenu_event, load_in_progress, max_specpdl_size)
+ (minibuffer_auto_raise, print_escape_newlines, scroll_margin)
+ (use_dialog_box, use_file_dialog): Remove declaration. Include
+ globals.h.
+ * keymap.h (Voverriding_local_map)
+ (Voverriding_local_map_menu_flag, meta_prefix_char): Remove
+ declaration.
+ * keyboard.h (Vdouble_click_time, Vfunction_key_map)
+ (Vinput_method_function, Vkey_translation_map)
+ (Vlucid_menu_bar_dirty_flag, Vthis_original_command)
+ (do_mouse_tracking, extra_keyboard_modifiers)
+ (num_nonmacro_input_events): Remove declaration.
+ * intervals.h (Vchar_property_alias_alist)
+ (Vdefault_text_properties, Vinhibit_point_motion_hooks)
+ (Vtext_property_default_nonsticky): Remove declaration.
+ * gtkutil.h (x_gtk_file_dialog_help_text)
+ (x_gtk_show_hidden_files, x_gtk_use_old_file_dialog)
+ (x_gtk_whole_detached_tool_bar): Remove declaration.
+ * frame.h (Vdefault_frame_alist, Vframe_alpha_lower_limit)
+ (Vmenu_bar_mode, Vmouse_highlight, Vterminal_frame)
+ (Vtool_bar_mode, Vx_resource_class, Vx_resource_name)
+ (focus_follows_mouse): Remove declaration.
+ * fontset.h (Valternate_fontname_alist, Vfontset_alias_alist)
+ (Vignore_relative_composition, Votf_script_alist)
+ (Vuse_default_ascent, Vvertical_centering_font_regexp): Remove
+ declaration.
+ * font.h (Vfont_log): Remove declaration.
+ * dosfns.h (Vdos_display_scancodes, Vdos_version)
+ (Vdos_windows_version, dos_codepage, dos_country_code)
+ (dos_decimal_point, dos_hyper_key, dos_keyboard_layout)
+ (dos_keypad_mode, dos_super_key, dos_timezone_offset): Remove
+ declaration.
+ * disptab.h (Vglyph_table, Vstandard_display_table): Remove
+ declaration.
+ * dispextern.h (Vface_remapping_alist, Vglyphless_char_display)
+ (Vmouse_autoselect_window, Voverflow_newline_into_fringe)
+ (Vshow_trailing_whitespace, Vtool_bar_button_margin)
+ (Vtool_bar_style, cursor_in_echo_area, display_hourglass_p)
+ (inverse_video, mode_line_in_non_selected_windows)
+ (tool_bar_button_relief, tool_bar_max_label_size)
+ (underline_minimum_offset)
+ (unibyte_display_via_language_environment, x_stretch_cursor_p):
+ Remove declaration.
+ * composite.h (Vauto_composition_function)
+ (Vcomposition_function_table): Remove declaration.
+ * commands.h (Vexecuting_kbd_macro)
+ (Vminibuffer_local_completion_map)
+ (Vminibuffer_local_filename_completion_map)
+ (Vminibuffer_local_filename_must_match_map)
+ (Vminibuffer_local_map, Vminibuffer_local_must_match_map)
+ (Vminibuffer_local_ns_map, Vthis_command)
+ (Vunread_command_events, cursor_in_echo_area)
+ (last_command_event, last_nonmenu_event, unread_command_char):
+ Remove declaration.
+ * coding.h (Vcoding_system_for_read, Vcoding_system_for_write)
+ (Vdefault_file_name_coding_system)
+ (Vdefault_process_coding_system, Vfile_name_coding_system)
+ (Vlast_coding_system_used, Vlocale_coding_system)
+ (Vselect_safe_coding_system_function)
+ (Vtranslation_table_for_input, coding_system_require_warning)
+ (eol_mnemonic_dos, eol_mnemonic_mac, eol_mnemonic_undecided)
+ (eol_mnemonic_unix, inherit_process_coding_system): Remove
+ declaration.
+ * charset.h (Vcharset_list, Vcurrent_iso639_language): Remove
+ declaration.
+ * character.h (Vauto_fill_chars, Vchar_direction_table)
+ (Vchar_script_table, Vchar_width_table, Vprintable_chars)
+ (Vscript_representative_chars, Vtranslation_table_vector)
+ (Vunicode_category_table): Remove declaration.
+ * ccl.h (Vfont_ccl_encoder_alist): Remove declaration.
+ * buffer.h (Vafter_change_functions, Vbefore_change_functions)
+ (Vdeactivate_mark, Vfirst_change_hook, Vtransient_mark_mode)
+ (inhibit_modification_hooks): Remove declaration.
+ * xterm.c (syms_of_xterm): Update.
+ (Vx_alt_keysym, Vx_hyper_keysym, Vx_keysym_table)
+ (Vx_meta_keysym, Vx_super_keysym, Vx_toolkit_scroll_bars)
+ (x_mouse_click_focus_ignore_position)
+ (x_underline_at_descent_line)
+ (x_use_underline_position_properties): Remove.
+ * xsmfns.c (syms_of_xsmfns): Update.
+ (Vx_session_id, Vx_session_previous_id): Remove.
+ * xsettings.c (syms_of_xsettings): Update.
+ (Vxft_settings, use_system_font): Remove.
+ * xselect.c (syms_of_xselect): Update.
+ (Vselection_converter_alist, Vx_lost_selection_functions)
+ (Vx_sent_selection_functions, x_selection_timeout): Remove.
+ * xfns.c (syms_of_xfns): Update.
+ (Vgtk_version_string, Vmotif_version_string)
+ (Vx_cursor_fore_pixel, Vx_hourglass_pointer_shape)
+ (Vx_max_tooltip_size, Vx_mode_pointer_shape)
+ (Vx_no_window_manager, Vx_nontext_pointer_shape)
+ (Vx_pixel_size_width_font_regexp, Vx_pointer_shape)
+ (Vx_sensitive_text_pointer_shape)
+ (Vx_window_horizontal_drag_shape, x_gtk_file_dialog_help_text)
+ (x_gtk_show_hidden_files, x_gtk_use_old_file_dialog)
+ (x_gtk_use_system_tooltips, x_gtk_whole_detached_tool_bar):
+ Remove.
+ * xfaces.c (syms_of_xfaces): Update.
+ (Vface_default_stipple, Vface_font_rescale_alist)
+ (Vface_ignored_fonts, Vface_new_frame_defaults)
+ (Vface_remapping_alist, Vfont_list_limit)
+ (Vscalable_fonts_allowed, Vtty_defined_color_alist): Remove.
+ * xdisp.c (syms_of_xdisp): Update.
+ (Vauto_resize_tool_bars, Vblink_cursor_alist)
+ (Vdisplay_pixels_per_inch, Vfontification_functions)
+ (Vframe_title_format, Vglobal_mode_string)
+ (Vglyphless_char_display, Vhourglass_delay, Vhscroll_step)
+ (Vicon_title_format, Vinhibit_redisplay)
+ (Vline_number_display_limit, Vline_prefix)
+ (Vmax_mini_window_height, Vmenu_bar_update_hook)
+ (Vmenu_updating_frame, Vmessage_log_max)
+ (Vmouse_autoselect_window, Vnobreak_char_display)
+ (Voverlay_arrow_position, Voverlay_arrow_string)
+ (Voverlay_arrow_variable_list, Vredisplay_end_trigger_functions)
+ (Vresize_mini_windows, Vshow_trailing_whitespace)
+ (Vtool_bar_border, Vtool_bar_button_margin, Vtool_bar_style)
+ (Vtruncate_partial_width_windows, Vvoid_text_area_pointer)
+ (Vwindow_scroll_functions, Vwindow_size_change_functions)
+ (Vwindow_text_change_functions, Vwrap_prefix)
+ (auto_raise_tool_bar_buttons_p, automatic_hscrolling_p)
+ (debug_end_pos, display_hourglass_p, emacs_scroll_step)
+ (highlight_nonselected_windows, hscroll_margin)
+ (inhibit_eval_during_redisplay, inhibit_free_realized_faces)
+ (inhibit_menubar_update, inhibit_try_cursor_movement)
+ (inhibit_try_window_id, inhibit_try_window_reusing)
+ (line_number_display_limit_width)
+ (make_cursor_line_fully_visible_p, message_truncate_lines)
+ (mode_line_inverse_video, multiple_frames, overline_margin)
+ (scroll_conservatively, scroll_margin, tool_bar_button_relief)
+ (tool_bar_max_label_size, underline_minimum_offset)
+ (unibyte_display_via_language_environment, x_stretch_cursor_p):
+ Remove.
+ * window.c (syms_of_window): Update.
+ (Vminibuf_scroll_window, Vother_window_scroll_buffer)
+ (Vrecenter_redisplay, Vscroll_preserve_screen_position)
+ (Vtemp_buffer_show_function, Vwindow_configuration_change_hook)
+ (Vwindow_point_insertion_type, auto_window_vscroll_p)
+ (mode_line_in_non_selected_windows, next_screen_context_lines)
+ (window_min_height, window_min_width): Remove.
+ (scroll_margin): Remove declaration.
+ * w32term.c (syms_of_w32term): Update.
+ (Vw32_capslock_is_shiftlock, Vw32_grab_focus_on_raise)
+ (Vw32_recognize_altgr, Vw32_swap_mouse_buttons)
+ (Vx_toolkit_scroll_bars, w32_num_mouse_buttons)
+ (w32_use_visible_system_caret, x_underline_at_descent_line)
+ (x_use_underline_position_properties): Remove.
+ (Vcommand_line_args, Vsystem_name, extra_keyboard_modifiers):
+ Remove declaration.
+ * w32select.c (syms_of_w32select): Update.
+ (Vnext_selection_coding_system, Vselection_coding_system): Remove.
+ * w32proc.c (syms_of_ntproc): Update.
+ (Vw32_downcase_file_names, Vw32_generate_fake_inodes)
+ (Vw32_get_true_file_attributes, Vw32_quote_process_args)
+ (Vw32_start_process_inherit_error_mode)
+ (Vw32_start_process_share_console)
+ (Vw32_start_process_show_window, w32_pipe_read_delay): Remove.
+ (Vsystem_name): Remove declaration.
+ * w32font.c (syms_of_w32font): Update.
+ (Vw32_charset_info_alist): Remove.
+ * w32fns.c (globals_of_w32fns, syms_of_w32fns): Update.
+ (Vw32_alt_is_meta, Vw32_apps_modifier, Vw32_bdf_filename_alist)
+ (Vw32_color_map, Vw32_enable_caps_lock, Vw32_enable_num_lock)
+ (Vw32_enable_palette, Vw32_lwindow_modifier)
+ (Vw32_pass_alt_to_system, Vw32_pass_lwindow_to_system)
+ (Vw32_pass_rwindow_to_system, Vw32_phantom_key_code)
+ (Vw32_rwindow_modifier, Vw32_scroll_lock_modifier)
+ (Vx_cursor_fore_pixel, Vx_hourglass_pointer_shape)
+ (Vx_max_tooltip_size, Vx_mode_pointer_shape)
+ (Vx_no_window_manager, Vx_nontext_pointer_shape)
+ (Vx_pixel_size_width_font_regexp, Vx_pointer_shape)
+ (Vx_sensitive_text_pointer_shape)
+ (Vx_window_horizontal_drag_shape, w32_ansi_code_page)
+ (w32_enable_synthesized_fonts, w32_mouse_button_tolerance)
+ (w32_mouse_move_interval)
+ (w32_pass_extra_mouse_buttons_to_system)
+ (w32_pass_multimedia_buttons_to_system, w32_quit_key)
+ (w32_strict_fontnames, w32_strict_painting): Remove.
+ (Vhourglass_delay, Vmenu_bar_mode, Vtool_bar_mode)
+ (Vw32_recognize_altgr, Vwindow_system_version)
+ (w32_num_mouse_buttons, w32_use_visible_system_caret): Remove
+ declaration.
+ * w32console.c (syms_of_ntterm): Update.
+ (w32_use_full_screen_buffer): Remove.
+ (Vtty_defined_color_alist): Remove declaration.
+ * w16select.c (syms_of_win16select): Update.
+ (Vnext_selection_coding_system, Vselection_coding_system): Remove.
+ * undo.c (syms_of_undo): Update.
+ (Vundo_outer_limit, Vundo_outer_limit_function)
+ (undo_inhibit_record_point, undo_limit, undo_strong_limit):
+ Remove.
+ * textprop.c (syms_of_textprop): Update.
+ (Vchar_property_alias_alist, Vdefault_text_properties)
+ (Vinhibit_point_motion_hooks, Vtext_property_default_nonsticky):
+ Remove.
+ * terminal.c (syms_of_terminal): Update.
+ (Vdelete_terminal_functions, Vring_bell_function): Remove.
+ * term.c (syms_of_term): Update.
+ (Vresume_tty_functions, Vsuspend_tty_functions)
+ (no_redraw_on_reenter, system_uses_terminfo, visible_cursor):
+ Remove.
+ * syntax.c (syms_of_syntax): Update.
+ (Vfind_word_boundary_function_table, multibyte_syntax_as_symbol)
+ (open_paren_in_column_0_is_defun_start)
+ (parse_sexp_ignore_comments, parse_sexp_lookup_properties)
+ (words_include_escapes): Remove.
+ * search.c (syms_of_search): Update.
+ (Vinhibit_changing_match_data, Vsearch_spaces_regexp): Remove.
+ * process.c (syms_of_process): Update.
+ (Vprocess_adaptive_read_buffering, Vprocess_connection_type)
+ (delete_exited_processes): Remove.
+ * print.c (syms_of_print): Update.
+ (Vfloat_output_format, Vprint_charset_text_property)
+ (Vprint_circle, Vprint_continuous_numbering, Vprint_gensym)
+ (Vprint_length, Vprint_level, Vprint_number_table)
+ (Vstandard_output, print_escape_multibyte)
+ (print_escape_newlines, print_escape_nonascii, print_quoted):
+ Remove.
+ * msdos.c (syms_of_msdos): Update.
+ (Vdos_unsupported_char_glyph): Remove.
+ (unibyte_display_via_language_environment): Remove declaration.
+ * minibuf.c (syms_of_minibuf): Update.
+ (Vcompletion_regexp_list, Vhistory_add_new_input)
+ (Vhistory_length, Vminibuffer_completing_file_name)
+ (Vminibuffer_completion_confirm)
+ (Vminibuffer_completion_predicate, Vminibuffer_completion_table)
+ (Vminibuffer_exit_hook, Vminibuffer_help_form)
+ (Vminibuffer_history_position, Vminibuffer_history_variable)
+ (Vminibuffer_prompt_properties, Vminibuffer_setup_hook)
+ (Vread_buffer_function, Vread_expression_map)
+ (completion_ignore_case, enable_recursive_minibuffers)
+ (history_delete_duplicates, minibuffer_allow_text_properties)
+ (minibuffer_auto_raise, read_buffer_completion_ignore_case):
+ Remove.
+ * marker.c (syms_of_marker): Update.
+ (byte_debug_flag): Remove.
+ * macros.c (syms_of_macros): Update.
+ (Vexecuting_kbd_macro, executing_kbd_macro_index): Remove.
+ * lread.c (syms_of_lread): Update.
+ (Vafter_load_alist, Vbyte_boolean_vars)
+ (Vbytecomp_version_regexp, Vcurrent_load_list)
+ (Veval_buffer_list, Vload_file_name, Vload_file_rep_suffixes)
+ (Vload_history, Vload_path, Vload_read_function)
+ (Vload_source_file_function, Vload_suffixes, Vobarray)
+ (Vold_style_backquotes, Vpreloaded_file_list, Vread_circle)
+ (Vread_symbol_positions_list, Vread_with_symbol_positions)
+ (Vsource_directory, Vstandard_input, Vuser_init_file, Vvalues)
+ (force_load_messages, load_convert_to_unibyte)
+ (load_dangerous_libraries, load_force_doc_strings)
+ (load_in_progress): Remove.
+ * keymap.c (syms_of_keymap): Update.
+ (Vdefine_key_rebound_commands, Vemulation_mode_map_alists)
+ (Vminibuffer_local_completion_map)
+ (Vminibuffer_local_filename_completion_map)
+ (Vminibuffer_local_filename_must_match_map)
+ (Vminibuffer_local_map, Vminibuffer_local_must_match_map)
+ (Vminibuffer_local_ns_map, Vminor_mode_map_alist)
+ (Vminor_mode_overriding_map_alist, Vwhere_is_preferred_modifier):
+ Remove.
+ * keyboard.c (syms_of_keyboard): Update.
+ (Vauto_save_timeout, Vcommand_error_function)
+ (Vcommand_hook_internal, Vdeactivate_mark)
+ (Vdeferred_action_function, Vdeferred_action_list)
+ (Vdisable_point_adjustment, Vdouble_click_time)
+ (Vecho_keystrokes, Venable_disabled_menus_and_buttons)
+ (Vfunction_key_map, Vglobal_disable_point_adjustment)
+ (Vhelp_char, Vhelp_event_list, Vhelp_form)
+ (Vinput_method_function, Vinput_method_previous_message)
+ (Vkey_translation_map, Vlast_event_frame)
+ (Vlucid_menu_bar_dirty_flag, Vmenu_bar_final_items)
+ (Vminibuffer_message_timeout, Voverriding_local_map)
+ (Voverriding_local_map_menu_flag, Vpost_command_hook)
+ (Vpre_command_hook, Vprefix_help_command)
+ (Vsaved_region_selection, Vselect_active_regions)
+ (Vshow_help_function, Vspecial_event_map, Vsuggest_key_bindings)
+ (Vthis_command, Vthis_command_keys_shift_translated)
+ (Vthis_original_command, Vthrow_on_input, Vtimer_idle_list)
+ (Vtimer_list, Vtool_bar_separator_image_expression, Vtop_level)
+ (Vtty_erase_char, Vunread_command_events)
+ (Vunread_input_method_events, Vunread_post_input_method_events)
+ (auto_save_interval, cannot_suspend, do_mouse_tracking)
+ (double_click_fuzz, extra_keyboard_modifiers)
+ (inhibit_local_menu_bar_menus, last_command_event)
+ (last_input_event, last_nonmenu_event, menu_prompt_more_char)
+ (menu_prompting, meta_prefix_char, num_input_keys)
+ (num_nonmacro_input_events, polling_period, unread_command_char):
+ Remove.
+ * insdel.c (syms_of_insdel): Update.
+ (Vcombine_after_change_calls, check_markers_debug_flag): Remove.
+ * indent.c (syms_of_indent): Update.
+ (indent_tabs_mode): Remove.
+ * image.c (syms_of_image): Update.
+ (Vimage_cache_eviction_delay, Vimage_types)
+ (Vimagemagick_render_type, Vmax_image_size, Vx_bitmap_file_path)
+ (cross_disabled_images): Remove.
+ * fringe.c (syms_of_fringe): Update.
+ (Vfringe_bitmaps, Voverflow_newline_into_fringe): Remove.
+ * frame.c (syms_of_frame): Update.
+ (Vdefault_frame_alist, Vdefault_frame_scroll_bars)
+ (Vdelete_frame_functions, Vframe_alpha_lower_limit)
+ (Vmake_pointer_invisible, Vmenu_bar_mode, Vmouse_highlight)
+ (Vmouse_position_function, Vterminal_frame, Vtool_bar_mode)
+ (Vx_resource_class, Vx_resource_name, focus_follows_mouse):
+ Remove.
+ * fontset.c (syms_of_fontset): Update.
+ (Valternate_fontname_alist, Vfont_encoding_charset_alist)
+ (Vfontset_alias_alist, Vignore_relative_composition)
+ (Votf_script_alist, Vuse_default_ascent)
+ (Vvertical_centering_font_regexp): Remove.
+ * font.c (syms_of_font): Update.
+ (Vfont_encoding_alist, Vfont_log, Vfont_slant_table)
+ (Vfont_weight_table, Vfont_width_table): Remove.
+ * fns.c (syms_of_fns): Update.
+ (Vfeatures, use_dialog_box, use_file_dialog): Remove.
+ * filelock.c (syms_of_filelock): Update.
+ (Vtemporary_file_directory): Remove.
+ * fileio.c (syms_of_fileio): Update.
+ (Vafter_insert_file_functions, Vauto_save_include_big_deletions)
+ (Vauto_save_list_file_name, Vauto_save_visited_file_name)
+ (Vdefault_file_name_coding_system, Vfile_name_coding_system)
+ (Vfile_name_handler_alist, Vinhibit_file_name_handlers)
+ (Vinhibit_file_name_operation, Vset_auto_coding_function)
+ (Vwrite_region_annotate_functions)
+ (Vwrite_region_annotations_so_far)
+ (Vwrite_region_post_annotation_function)
+ (delete_by_moving_to_trash, write_region_inhibit_fsync): Remove.
+ (Vw32_get_true_file_attributes): Remove declaration.
+ * eval.c (syms_of_eval): Update.
+ (Vdebug_ignored_errors, Vdebug_on_error, Vdebug_on_signal)
+ (Vdebugger, Vinhibit_quit, Vmacro_declaration_function)
+ (Vquit_flag, Vsignal_hook_function, Vstack_trace_on_error)
+ (debug_on_next_call, debug_on_quit, debugger_may_continue)
+ (max_lisp_eval_depth, max_specpdl_size): Remove.
+ * emacs.c (syms_of_emacs): Update.
+ (Vafter_init_time, Vbefore_init_time, Vcommand_line_args)
+ (Vdynamic_library_alist, Vemacs_copyright, Vemacs_version)
+ (Vinstallation_directory, Vinvocation_directory)
+ (Vinvocation_name, Vkill_emacs_hook, Vpath_separator)
+ (Vprevious_system_messages_locale, Vprevious_system_time_locale)
+ (Vsystem_configuration, Vsystem_configuration_options)
+ (Vsystem_messages_locale, Vsystem_time_locale, Vsystem_type)
+ (inhibit_x_resources, noninteractive1): Remove.
+ * editfns.c (syms_of_editfns): Update.
+ (Vbuffer_access_fontified_property)
+ (Vbuffer_access_fontify_functions, Vinhibit_field_text_motion)
+ (Voperating_system_release, Vsystem_name, Vuser_full_name)
+ (Vuser_login_name, Vuser_real_login_name): Remove.
+ * dosfns.c (syms_of_dosfns): Update.
+ (Vdos_display_scancodes, Vdos_version, Vdos_windows_version)
+ (dos_codepage, dos_country_code, dos_decimal_point)
+ (dos_hyper_key, dos_keyboard_layout, dos_keypad_mode)
+ (dos_super_key, dos_timezone_offset): Remove.
+ * doc.c (syms_of_doc): Update.
+ (Vbuild_files, Vdoc_file_name): Remove.
+ * dispnew.c (syms_of_display): Update.
+ (Vglyph_table, Vinitial_window_system)
+ (Vredisplay_preemption_period, Vstandard_display_table)
+ (Vwindow_system_version, baud_rate, cursor_in_echo_area)
+ (inverse_video, redisplay_dont_pause, visible_bell): Remove.
+ * dired.c (syms_of_dired): Update.
+ (Vcompletion_ignored_extensions): Remove.
+ (Vw32_get_true_file_attributes): Remove declaration.
+ * dbusbind.c (syms_of_dbusbind): Update.
+ (Vdbus_debug, Vdbus_registered_buses)
+ (Vdbus_registered_objects_table): Remove.
+ * data.c (syms_of_data): Update.
+ (Vmost_negative_fixnum, Vmost_positive_fixnum): Remove.
+ * composite.c (syms_of_composite): Update.
+ (Vauto_composition_function, Vauto_composition_mode)
+ (Vcompose_chars_after_function, Vcomposition_function_table):
+ Remove.
+ * coding.c (syms_of_coding): Update.
+ (Vcharset_revision_table, Vcoding_category_list)
+ (Vcoding_system_alist, Vcoding_system_for_read)
+ (Vcoding_system_for_write, Vcoding_system_list)
+ (Vdefault_process_coding_system, Venable_character_translation)
+ (Vfile_coding_system_alist, Vlast_code_conversion_error)
+ (Vlast_coding_system_used, Vlatin_extra_code_table)
+ (Vlocale_coding_system, Vnetwork_coding_system_alist)
+ (Vprocess_coding_system_alist)
+ (Vselect_safe_coding_system_function)
+ (Vstandard_translation_table_for_decode)
+ (Vstandard_translation_table_for_encode)
+ (Vtranslation_table_for_input, coding_system_require_warning)
+ (eol_mnemonic_dos, eol_mnemonic_mac, eol_mnemonic_undecided)
+ (eol_mnemonic_unix, inherit_process_coding_system)
+ (inhibit_eol_conversion, inhibit_iso_escape_detection)
+ (inhibit_null_byte_detection): Remove.
+ * cmds.c (syms_of_cmds): Update.
+ (Vpost_self_insert_hook): Remove.
+ * charset.c (syms_of_charset): Update.
+ (Vcharset_list, Vcharset_map_path, Vcurrent_iso639_language)
+ (inhibit_load_charset_map): Remove.
+ * character.c (syms_of_character): Update.
+ (Vauto_fill_chars, Vchar_direction_table, Vchar_script_table)
+ (Vchar_width_table, Vprintable_chars)
+ (Vscript_representative_chars, Vtranslation_table_vector)
+ (Vunicode_category_table): Remove.
+ * ccl.c (syms_of_ccl): Update.
+ (Vcode_conversion_map_vector, Vfont_ccl_encoder_alist)
+ (Vtranslation_hash_table_vector): Remove.
+ * category.c (syms_of_category): Update.
+ (Vword_combining_categories, Vword_separating_categories): Remove.
+ * callproc.c (syms_of_callproc): Update.
+ (Vconfigure_info_directory, Vdata_directory, Vdoc_directory)
+ (Vexec_directory, Vexec_path, Vexec_suffixes)
+ (Vinitial_environment, Vprocess_environment)
+ (Vshared_game_score_directory, Vshell_file_name): Remove.
+ * callint.c (syms_of_callint): Update.
+ (Vcommand_debug_status, Vcommand_history, Vcurrent_prefix_arg)
+ (Vmark_even_if_inactive, Vmouse_leave_buffer_hook): Remove.
+ * bytecode.c (syms_of_bytecode): Update.
+ (Vbyte_code_meter, byte_metering_on): Remove.
+ * buffer.c (syms_of_buffer): Update.
+ (Vafter_change_functions, Vbefore_change_functions)
+ (Vchange_major_mode_hook, Vfirst_change_hook)
+ (Vinhibit_read_only, Vkill_buffer_query_functions)
+ (Vtransient_mark_mode, inhibit_modification_hooks): Remove.
+ * alloc.c (syms_of_alloc): Update.
+ (Vgc_cons_percentage, Vgc_elapsed, Vmemory_full)
+ (Vmemory_signal_data, Vpost_gc_hook, Vpurify_flag)
+ (cons_cells_consed, floats_consed, garbage_collection_messages)
+ (gc_cons_threshold, gcs_done, intervals_consed)
+ (misc_objects_consed, pure_bytes_used, string_chars_consed)
+ (strings_consed, symbols_consed, vector_cells_consed): Remove.
+
+ * lisp.h (DEFVAR_LISP, DEFVAR_LISP_NOPRO, DEFVAR_BOOL)
+ (DEFVAR_INT): Assume global is in `globals'.
+ * alloc.c (globals): Define.
+
+2011-01-18 Tom Tromey <[email protected]>
+
+ * image.c (Vimagemagick_render_type): Remove redundant
+ definition.
+
+2011-01-18 Tom Tromey <[email protected]>
+
+ * xdisp.c (emacs_scroll_step): Rename from scroll_step.
+ (try_scrolling): Rename argument to 'arg_scroll_conservatively'.
+ (redisplay_window): Update.
+ (syms_of_xdisp): Update.
+
+2011-01-18 Tom Tromey <[email protected]>
+
+ * gtkutil.h (x_gtk_use_old_file_dialog, x_gtk_show_hidden_files)
+ (x_gtk_file_dialog_help_text, x_gtk_whole_detached_tool_bar):
+ Declare.
+ * gtkutil.c (xg_uses_old_file_dialog):
+ (xg_get_file_with_chooser):
+ (xg_tool_bar_detach_callback): Don't redeclare globals.
+
+2011-01-18 Tom Tromey <[email protected]>
+
+ * lisp.h (DEFVAR_BUFFER_DEFAULTS): New macro.
+ * buffer.c (syms_of_buffer): Use DEFVAR_BUFFER_DEFAULTS.
+
+2011-01-18 Paul Eggert <[email protected]>
+
+ * lisp.h (DECL_ALIGN): Define if HAVE_ATTRIBUTE_ALIGNED, not if
+ defined __GNUC__. ../configure now checks for this GCC feature,
+ which is now also supported by IBM and Oracle compilers.
+ (USE_LSB_TAG) [defined DECL_ALIGN]: Also define if defined __sun,
+ since Solaris malloc returns mult-of-8.
+
+2011-01-18 Stefan Monnier <[email protected]>
+
+ * image.c (syms_of_image): Don't access XSYMBOL's internals directly.
+
+2011-01-17 Paul Eggert <[email protected]>
+
+ Give a name FLOAT_TO_STRING_BUFSIZE to the constant 350.
+ * lisp.h (FLOAT_TO_STRING_BUFSIZE): New macro.
+ * data.c (Fnumber_to_string): Use it.
+ * print.c (float_to_string, print_object): Likewise.
+
+ Include <unistd.h> unilaterally.
+ * alloc.c, atimer.c, buffer.c, callproc.c, dired.c, dispnew.c, doc.c:
+ * doprnt.c, editfns.c, emacs.c, fileio.c, filelock.c, fns.c:
+ * getloadavg.c, getpagesize.h, gmalloc.c, image.c, keyboard.c:
+ * lread.c, process.c, process.h, ralloc.c, regex.c, sysdep.c:
+ * systty.h, term.c, termcap.c, xfns.c, xrdb.c, xselect.c, xsmfns.c:
+ * xterm.c:
+ Include <unistd.h> without worrying about HAVE_UNISTD_H, since
+ unistd.h is always present now, possibly supplied by gnulib.
+
+ * mktime.c: Remove; moving to ../lib.
+
+ Use gnulib's mktime module.
+ * deps.mk (mktime.o): Remove rule.
+
+ Use gnulib's ftoastr module.
+ * print.c: Include ftoastr.h.
+ (FLT_RADIX, DBL_MANT_DIG, DBL_DIG, DBL_MIN, DOUBLE_DIGITS_BOUND):
+ Remove; no longer needed.
+ (float_to_string): Use dtoastr rather than rolling our own code,
+ which had an off-by-one bug on non-IEEE hosts.
+
+ Automate syncing from gnulib.
+ * Makefile.in (lib): New macro.
+ (ALL_CFLAGS): Add -I$(lib) -I$(srcdir)/../lib.
+ ($(lib)/libgnu.a): New rule.
+ (temacs$(EXEEXT)): Also link $(lib)/libgnu.a.
+
+ * xfns.c (x_real_positions): Fix signedness of local var 'ign'.
+ XGetGeometry wants unsigned int *, not int *, for its last 4 args,
+ so change the type of 'ign' to unsigned int from int.
+
+ * regex.c (analyse_first): Remove unreachable 'continue' statement.
+
+ * xterm.h (struct x_display_info): Remove stray semicolon.
+ The extra semicolon didn't conform to the C standard.
+ Problem reported by Sun cc.
+
+ * lisp.h: Redo flags and XSET slightly to avoid overflow diagnostics.
+ These changes make compilation easier to follow with Sun cc.
+ (ARRAY_MARK_FLAG): Make it signed, so that it can be assigned to
+ EMACS_INT values without provoking overflow diagnostics.
+ (PSEUDOVECTOR_FLAG): Likewise, for consistency.
+ (XSET) [! USE_LSB_TAG]: Use unsigned left shift to avoid overflow
+ diagnostic with signed left shift.
+
+ * fileio.c (make_temp_name): Remove unreachable code.
+
+ * fontset.c (free_realized_fontset): Mark unreachable code with if (0).
+ Previously it was marked by preceding it with "return;", but
+ Sun cc complains about this.
+
+ * coding.c (decode_coding_emacs_mule): Remove unreachable code.
+ This is a typo left over from 2009-03-06T07:51:[email protected],
+ which fixed Bug#2370. Caught by Sun cc.
+
+2011-01-15 Martin Rudalics <[email protected]>
+
+ * window.c (inhibit_point_swap): New variable.
+ (Fselect_window): If inhibit_point_swap is nonzero, avoid swapping
+ point this time.
+ (Fset_window_configuration): Set inhibit_point_swap to 1 instead
+ of setting selected_window to nil (Bug#7728).
+
+2011-01-11 Tassilo Horn <[email protected]>
+
+ * image.c (imagemagick_load_image, Finit_image_library):
+ Free intermediate image after creating a MagickWand from it.
+ Terminate MagickWand environment after image loading.
+
+2011-01-10 Michael Albinus <[email protected]>
+
+ * dbusbind.c (Fdbus_register_service): Raise an error in case of
+ unexpected return values.
+ (Fdbus_register_method): Remove connection initialization.
+
+2011-01-10 Jan Moringen <[email protected]>
+
+ * dbusbind.c (QCdbus_request_name_allow_replacement): New symbol;
+ used by Fdbus_register_service.
+ (QCdbus_request_name_replace_existing): Likewise.
+ (QCdbus_request_name_do_not_queue): Likewise.
+ (QCdbus_request_name_reply_primary_owner): Likewise.
+ (QCdbus_request_name_reply_in_queue): Likewise.
+ (QCdbus_request_name_reply_exists): Likewise.
+ (QCdbus_request_name_reply_already_owner): Likewise.
+ (Fdbus_register_service): New function.
+ (Fdbus_register_method): Use Fdbus_register_service to do the name
+ registration.
+ (syms_of_dbusbind): Add symbols dbus-register-service,
+ :allow-replacement, :replace-existing, :do-not-queue,
+ :primary-owner, :existing, :in-queue and :already-owner.
+
+2011-01-09 Chong Yidong <[email protected]>
+
+ * gtkutil.c (update_frame_tool_bar): Don't advance tool-bar index
+ when removing extra buttons.
+
+2011-01-08 Chong Yidong <[email protected]>
+
+ * fns.c (Fyes_or_no_p): Doc fix.
+
+2011-01-08 Andreas Schwab <[email protected]>
+
+ * fns.c (Fyes_or_no_p): Add usage.
+
+2011-01-08 Glenn Morris <[email protected]>
+
+ * makefile.w32-in ($(EMACS)):
+ * Makefile.in (emacs$(EXEEXT)): -batch implies -q.
+
+ * xdisp.c (syms_of_xdisp) <Qrisky_local_variable>: Move from here...
+ * emacs.c (syms_of_emacs) <Qrisky_local_variable>: ...to here.
+
+2011-01-07 Andreas Schwab <[email protected]>
+
+ * image.c (imagemagick_load_image): Fix some resource leaks and
+ error handling.
+
+2011-01-07 Chong Yidong <[email protected]>
+
+ * fns.c (Fyes_or_no_p): Accept format string args.
+
+2011-01-07 Glenn Morris <[email protected]>
+
+ * emacs.c (no_site_lisp): New int.
+ (USAGE1): Add --no-site-lisp, mention -Q uses it.
+ (main): Set no_site_lisp.
+ (standard_args): Add --no-site-lisp.
+ * lisp.h (no_site_lisp): New int.
+ * lread.c (init_lread): If no_site_lisp, don't re-add site-lisp
+ directories to Vload_path.
+
+2011-01-05 Andreas Schwab <[email protected]>
+
+ * alloc.c (mark_stack): Use __builtin_unwind_init if available.
+
+2011-01-04 Jan Moringen <[email protected]>
+
+ * dbusbind.c (Fdbus_register_method): Add optional parameter
+ dont_register_service. Updated docstring accordingly.
+
+2011-01-04 Glenn Morris <[email protected]>
+
+ * emacs.c (emacs_copyright): Update short copyright year to 2011.
+
+2011-01-03 Eli Zaretskii <[email protected]>
+
+ * image.c (png_jmpbuf): Remove definition.
+ (my_png_error, png_load): Don't use png_jmpbuf.
+
+2011-01-02 Eli Zaretskii <[email protected]>
+
+ * keyboard.c (Vselect_active_regions): Doc fix. (Bug#7702)
+
+2011-01-02 Eli Zaretskii <[email protected]>
+
+ * image.c <Qlibpng_version>: New variable.
+ (syms_of_image): Intern and staticpro it. Set its value to the
+ version of PNG library we were compiled with.
+ (my_png_error, png_load): Avoid GCC warnings about direct access
+ to png_ptr->jmpbuf. (Bug#7716)
+ (png_jmpbuf): New macro.
+ (my_png_error, png_load): Use it instead of #ifdef'ing according
+ to PNG_LIBPNG_VER_MAJOR and PNG_LIBPNG_VER_MINOR.
+
+2011-01-02 Stefan Monnier <[email protected]>
+
+ * .gdbinit (xgetptr): Fix the union+lsb case.
+ (xbacktrace): Fix the union case.
+
+2011-01-02 Stefan Monnier <[email protected]>
+
+ * window.c (Fmove_to_window_line): Avoid abort when called in a buffer
+ different from selected-window's.
+
+2011-01-02 Eli Zaretskii <[email protected]>
+
+ * keyboard.c (parse_menu_item): Prepend " " to the key sequence
+ equivalent of a menu item when the key sequence is given by the
+ `:keys' attribute. (Bug#7662)
+
+ * xdisp.c (Fformat_mode_line): Doc fix: no need to state that only
+ the basic faces are supported.
+
+2011-01-02 Jan Djärv <[email protected]>
+
+ * xterm.c (x_check_fullscreen): Fix pixel/character mixup.
+
+2011-01-02 Eli Zaretskii <[email protected]>
+
+ * xdisp.c (Fformat_mode_line): Fix last change.
+
+2011-01-02 Chong Yidong <[email protected]>
+
+ * xdisp.c (Fformat_mode_line): Restrict the FACE argument to basic
+ faces (Bug#7587).
+
+2011-01-02 Eli Zaretskii <[email protected]>
+
+ * fileio.c (Fexpand_file_name): One more doc fix.
+
+2011-01-01 Chong Yidong <[email protected]>
+
+ * gtkutil.c (xg_get_tool_bar_widgets): Use NULL for a missing
+ image or label in the container.
+ (xg_make_tool_item): Replace VERT_ONLY arg with HORIZ, TEXT_IMAGE.
+ (xg_show_toolbar_item): Function deleted.
+ (xg_tool_item_stale_p): New function.
+ (update_frame_tool_bar): Calculate tool-bar style once per call.
+ Instead of hiding text labels, omit them. Don't use
+ xg_show_toolbar_item; create new GtkToolItems from scratch if
+ necessary, instead of trying to re-use them. This avoids an
+ annoying animation when changing tool-bars.
+
+2010-12-31 Jan Djärv <[email protected]>
+
+ * nsfns.m (ns_set_name_as_filename): Always use buffer name for
+ title and buffer filename only for RepresentedFilename.
+ Handle bad UTF-8 in buffer name (Bug#7517).
+
+2010-12-30 Jan Djärv <[email protected]>
+
+ * coding.h (ENCODE_UTF_8): Remove "Used by ..." comment.
+
+ * nsfns.m (ns_set_name_iconic): Remove.
+ (ns_set_name_internal): New function (Bug#7517).
+ (Vicon_title_format): Extern declare.
+ (ns_set_name): Call ns_set_name_internal.
+ (x_explicitly_set_name): Remove call to ns_set_name_iconic.
+ (x_implicitly_set_name): Ditto.
+ (x_set_title): Remove commet about EXPLICIT. Call ns_set_name_internal.
+ (ns_set_name_as_filename): Encode name with ENCODE_UTF_8 (Bug#7517).
+
+2010-12-29 Štěpán Němec <[email protected]> (tiny change)
+
+ * window.c (syms_of_window): Add missing defsubr for
+ window-use-time.
+
+2010-12-28 Andreas Schwab <[email protected]>
+
+ * xterm.h (x_alloc_lighter_color_for_widget): Restore declaration.
+ * xterm.c (x_alloc_lighter_color_for_widget): Restore.
+
+2010-12-27 Andreas Schwab <[email protected]>
+
+ * buffer.c: Remove unused declarations.
+ * buffer.h: Likewise.
+ * charset.h: Likewise.
+ * composite.h: Likewise.
+ * dispextern.h: Likewise.
+ * dispnew.c: Likewise.
+ * font.h: Likewise.
+ * fontset.c: Likewise.
+ * fontset.h: Likewise.
+ * intervals.h: Likewise.
+ * keymap.h: Likewise.
+ * lisp.h: Likewise.
+ * syntax.c: Likewise.
+ * syntax.h: Likewise.
+ * termhooks.h: Likewise.
+ * window.h: Likewise.
+ * xsettings.h: Likewise.
+ * xterm.c: Likewise.
+ * xterm.h: Likewise.
+
+ * chartab.c (sub_char_table_ref): Make static.
+ * dispnew.c (line_hash_code, required_matrix_height)
+ (required_matrix_width): Likewise.
+ * eval.c (interactive_p, apply_lambda): Likewise.
+ * fns.c (string_make_multibyte, copy_hash_table, hash_clear):
+ Likewise.
+ * font.c (QCadstyle, QCregistry, font_make_spec)
+ (font_parse_fcname, font_encode_char, font_at): Likewise.
+ * frame.c (x_frame_get_arg): Likewise.
+ * keymap.c (get_keyelt): Likewise.
+ * lread.c (read_filtered_event): Likewise.
+ * print.c (write_string_1): Likewise.
+ * window.c (delete_window, window_height, window_width)
+ (foreach_window): Likewise.
+ * xrdb.c (x_get_customization_string, x_get_resource): Likewise.
+ * xterm.c (x_scroll_bar_clear, xembed_set_info)
+ (xembed_send_message): Likewise.
+
+ * eval.c (run_hook_list_with_args): Delete.
+ * font.c (font_unparse_gtkname, font_update_lface): Likewise.
+ * terminal.c (get_terminal_param): Likewise.
+ * xterm.c (x_alloc_lighter_color_for_widget): Likewise.
+
+ * scroll.c: Fix comment.
+
+ * dispnew.c (add_window_display_history)
+ (add_frame_display_history, glyph_row_slice_p)
+ (find_glyph_row_slice, flush_stdout)
+ (check_matrix_pointer_lossage, matrix_row)
+ (check_matrix_invariants, check_window_matrix_pointers)
+ (check_matrix_pointers, window_to_frame_vpos)
+ (window_to_frame_hpos): Prototize.
+ * textprop.c (erase_properties): Likewise.
+
+2010-12-22 Stefan Monnier <[email protected]>
+
+ * print.c (PRINT_NUMBER_OBJECT, PRINT_NUMBER_STATUS): Remove.
+ (print_preprocess): Fix handling of uninterned symbols in last change.
+
+ * print.c (print, print_preprocess, print_object): Use a hash table
+ rather than a linear table for Vprint_number_table.
+
+2010-12-20 Chong Yidong <[email protected]>
+
+ * frame.c (focus_follows_mouse): Default to 0 (Bug#7269).
+
+2010-12-20 Chong Yidong <[email protected]>
+
+ * keyboard.c (Vtool_bar_separator_image_expression): New variable.
+ (parse_tool_bar_item): Use it to obtain image separators for
+ displays not using native tool-bar separators.
+
+ * xdisp.c (build_desired_tool_bar_string): Don't handle separators
+ specially, since this is now done in parse_tool_bar_item.
+
+2010-12-19 Stefan Monnier <[email protected]>
+
+ Minor clean up to silence some gcc warnings.
+ * window.c (Fset_window_buffer):
+ * xterm.c (x_set_frame_alpha): Restructure code to silence
+ compiler warning.
+ (handle_one_xevent): Remove unused var `p'.
+ (do_ewmh_fullscreen): Remove unused var `lval'.
+ (xembed_set_info): Remove unused var `atom'.
+ * textprop.c (Fremove_list_of_text_properties): Add braces to silence
+ compiler warning.
+ * fontset.c (fontset_id_valid_p, dump_fontset):
+ * ftfont.c (ftfont_drive_otf): Modernize k&r declaration.
+ * eval.c (Feval, Ffuncall): Avoid unneeded gotos.
+ * dispnew.c (update_frame, update_frame_1): Compile the `do_pause'
+ label only when it's used.
+ * image.c (x_create_bitmap_from_xpm_data):
+ * dispextern.h (x_create_bitmap_from_xpm_data): Use const char** like
+ its callers.
+ * coding.c (detect_coding_utf_16): Remove unused vars `src_base' and
+ `consumed_chars'.
+ (DECODE_EMACS_MULE_21_COMPOSITION): Remove unused var `charbuf_base'.
+ (decode_coding_emacs_mule): Remove unused label `retry'.
+ (detect_eol): Add parens to silence compiler warning.
+ * alloc.c (bytes_used_when_reconsidered): Move to the #ifdef where
+ it's used to silence the compiler.
+ (make_number): Modernize k&r declaration.
+ (mark_char_table): Add parens to silence compiler warning.
+
+2010-12-17 Chong Yidong <[email protected]>
+
+ * keyboard.c (parse_tool_bar_item): Allow menu separators in
+ tool-bar maps.
+ (menu_separator_name_p): New function, from gtkutil.c.
+ (separator_names): Move from gtkutil.c.
+
+ * keyboard.h (menu_separator_name_p): Add prototype.
+
+ * gtkutil.c (XG_BIN_CHILD): New macro.
+ (xg_get_menu_item_label, xg_update_menubar)
+ (xg_update_menu_item, xg_tool_bar_menu_proxy)
+ (xg_show_toolbar_item, update_frame_tool_bar): Use it.
+ (separator_names, xg_separator_p): Move to keyboard.c.
+ (create_menus, xg_update_submenu, update_frame_tool_bar):
+ Use menu_separator_name_p.
+
+ * nsmenu.m (name_is_separator): Function deleted.
+ (addItemWithWidgetValue): Use menu_separator_name_p.
+
+ * w32menu.c (name_is_separator): Function deleted.
+ (add_menu_item): Use menu_separator_name_p.
+
+2010-12-16 Jan Djärv <[email protected]>
+
+ * nsterm.m (ns_draw_window_cursor): If the cursor color is the
+ same as the background, use the face forground as cursor.
+
+2010-12-13 Eli Zaretskii <[email protected]>
+
+ * fileio.c (Fexpand_file_name): Doc fix. (Bug#7617)
+
+2010-12-13 Eli Zaretskii <[email protected]>
+
+ * xdisp.c (string_pos_nchars_ahead, c_string_pos)
+ (face_before_or_after_it_pos, next_element_from_string)
+ (next_element_from_c_string, produce_stretch_glyph): Remove unused
+ calculations of maximum string length before calling
+ string_char_and_length and STRING_CHAR_AND_LENGTH.
+ (string_char_and_length): Update commentary: MAXLEN is no longer
+ needed.
+
+2010-12-13 Jan Djärv <[email protected]>
+
+ * keyboard.c (kbd_buffer_get_event): Construct SAVE_SESSION_EVENT
+ as (Qsave_session arg).
+
+ * xsmfns.c (smc_interact_CB): Set arg to Qnil.
+ (smc_die_CB): Make an event with arg Qt.
+ (Fhandle_save_session): If event has Qt as argument,
+ call Fkill_emacs (Bug#7552).
+
+2010-12-13 Chong Yidong <[email protected]>
+
+ * buffer.c (transient-mark-mode): Doc fix (Bug#7465).
+
+2010-12-13 Jan Djärv <[email protected]>
+
+ * xsmfns.c (smc_die_CB): Call Fkill_emacs (Bug#7552).
+
+2010-12-13 Chong Yidong <[email protected]>
+
+ * dispextern.h (struct it): New member overlay_strings_charpos.
+
+ * xdisp.c (next_overlay_string, load_overlay_strings): Record the
+ charpos where we computed n_overlay_strings.
+ (next_overlay_string): Load overlay strings at recorded position,
+ which may not be the same as the iterator's charpos (Bug#7016).
+
+2010-12-13 Chong Yidong <[email protected]>
+
+ * xdisp.c (try_scrolling): Avoid infloop if the first line is
+ obscured due to a vscroll (Bug#7537).
+
+2010-12-13 Jan Djärv <[email protected]>
+
+ * nsterm.h (FRAME_NS_TOOLBAR_HEIGHT): Rename to FRAME_TOOLBAR_HEIGHT.
+
+ * nsterm.m (x_set_window_size, windowWillResize, initFrameFromEmacs):
+ Use FRAME_TOOLBAR_HEIGHT.
+ (x_set_offset): Handle XNegative and YNegative in
+ f->size_hint_flags (Bug#7510).
+
2010-12-11 Eli Zaretskii <[email protected]>
* w32fns.c (Fx_show_tip): Call try_window with last argument
@@ -864,8 +2070,8 @@
strings and R2L glyph rows. Fix comments.
(note_mouse_highlight): When bidi reordering is turned on in a
buffer, call next-single-property-change and
- previous-single-property-change with last argument nil. Clear
- mouse highlight when mouse pointer is in a R2L row on the stretch
+ previous-single-property-change with last argument nil.
+ Clear mouse highlight when mouse pointer is in a R2L row on the stretch
glyph that stands for no text beyond the line end.
(row_containing_pos): Don't return too early when CHARPOS is in a
bidi-reordered continued line. Return immediately when the first
@@ -1308,8 +2514,8 @@
2010-09-30 Lars Magne Ingebrigtsen <[email protected]>
- * eval.c (Fbacktrace): Don't overwrite print-level on exit. Also
- only override Vprint_level if it isn't already bound, and increase
+ * eval.c (Fbacktrace): Don't overwrite print-level on exit.
+ Also only override Vprint_level if it isn't already bound, and increase
the level to 8 to produce more useful backtraces for bug reports.
2010-09-30 Dan Nicolaescu <[email protected]>
@@ -1448,7 +2654,7 @@
2010-09-27 Lars Magne Ingebrigtsen <[email protected]>
- * gnutls.c (gnutls_log_function): Added more debugging.
+ * gnutls.c (gnutls_log_function): Add more debugging.
(emacs_gnutls_read): Don't infloop while reading.
2010-09-27 Kenichi Handa <[email protected]>
@@ -1490,7 +2696,7 @@
* process.c (gpm_wait_mask, max_gpm_desc): Remove.
(write_mask): New variable.
- (max_input_desc): Renamed from max_keyboard_desc.
+ (max_input_desc): Rename from max_keyboard_desc.
(fd_callback_info): New variable.
(add_read_fd, delete_read_fd, add_write_fd, delete_write_fd):
New functions.
@@ -2109,7 +3315,7 @@
2010-09-14 Lars Magne Ingebrigtsen <[email protected]>
- * xml.c (parse_buffer): Renamed to parse_string(), since that's
+ * xml.c (parse_buffer): Rename to parse_string(), since that's
what it does.
(parse_string): Return nil when the document can't be parsed.
@@ -3267,7 +4473,7 @@
(xg_height_or_width_changed): Use FRAME_TOTAL_PIXEL_WIDTH.
(xg_create_frame_widgets): Create a hobox for placing widgets
vertically. Use gtk_box_pack_start.
- (xg_height_or_width_changed): Renamed from xg_height_changed.
+ (xg_height_or_width_changed): Rename from xg_height_changed.
(x_wm_set_size_hint): Add FRAME_TOOLBAR_WIDTH to base_width.
(xg_update_frame_menubar, free_frame_menubar): Change to
xg_height_or_width_changed.
@@ -3907,7 +5113,7 @@
(Ffont_get): If KEY is :otf and the font-object doesn't have the
property, get the property value dynamically.
(Ffont_put): Accept font-entity and font-object too.
- (Ffont_get_glyhphs): Renamed from Fget_font_glyphs. Arguments and
+ (Ffont_get_glyhphs): Rename from Fget_font_glyphs. Arguments and
return value changed.
(syms_of_font): Adjust for the above change.
@@ -3980,7 +5186,7 @@
* doprnt.c (doprnt): Take a va_list argument instead of count and
pointer.
* eval.c (error): Change to a standard-C variadic function.
- * xdisp.c (vmessage): Renamed from message, made static, and
+ * xdisp.c (vmessage): Rename from message, made static, and
changed to take a va_list argument.
(message): New variadic wrapper.
(message_nolog): Now a variadic function, calling vmessage.
@@ -4993,8 +6199,8 @@
* xdisp.c (try_scrolling): Compute the limit for searching point
in forward scroll from scroll_max, instead of an arbitrary limit
- of 10 screen lines. See
- http://lists.gnu.org/archive/html/emacs-devel/2010-06/msg00766.html
+ of 10 screen lines.
+ See http://lists.gnu.org/archive/html/emacs-devel/2010-06/msg00766.html
and
http://lists.gnu.org/archive/html/emacs-devel/2010-06/msg00773.html
for details.
@@ -5242,8 +6448,8 @@
Fix cursor motion in bidi-reordered continued lines.
* xdisp.c (try_cursor_movement): Backup to non-continuation line
only after finding point's row. Fix the logic. Rewrite the loop
- over continuation lines in bidi-reordered buffers. Return
- CURSOR_MOVEMENT_MUST_SCROLL upon failure to find a suitable row,
+ over continuation lines in bidi-reordered buffers.
+ Return CURSOR_MOVEMENT_MUST_SCROLL upon failure to find a suitable row,
rather than CURSOR_MOVEMENT_CANNOT_BE_USED.
2010-05-28 Michael Albinus <[email protected]>
@@ -6362,13 +7568,13 @@
store_config_changed_event.
(parse_settings): Rename from parse_xft_settings.
Read non-xft xsettings outside #ifdef HAVE_XFT.
- (read_settings): Renamed from read_xft_settings.
+ (read_settings): Rename from read_xft_settings.
(apply_xft_settings): Take current settings as parameter. Do not
call read_(xft)_settings.
(read_and_apply_settings): New function.
(xft_settings_event): Do non-xft stuff out of HAVE_XFT.
Call read_and_apply_settings if there are settings to be read.
- (init_xsettings): Renamed from init_xfd_settings.
+ (init_xsettings): Rename from init_xfd_settings.
Call read_and_apply_settings unconditionally.
(xsettings_initialize): Call init_xsettings.
(Ftool_bar_get_system_style): New function.
@@ -9524,7 +10730,7 @@
* makefile.w32-in ($(BLD)/doc.$(O)): Depend on buildobj.h, not on
$(SRC)/buildobj.h.
- (buildobj.h): Renamed from $(SRC)/buildobj.h.
+ (buildobj.h): Rename from $(SRC)/buildobj.h.
(make-buildobj-CMD, make-buildobj-SH): Create buildobj.h, not
$(SRC)/buildobj.h.
(clean): Add buildobj.h.
@@ -12568,12 +13774,12 @@
2008-12-13 Kenichi Handa <[email protected]>
- * font.c (font_rescale_ratio): Moved from xfaces.c.
+ * font.c (font_rescale_ratio): Move from xfaces.c.
Argument type changed. Handle a font-spec too.
(font_score): Check Vface_font_rescale_alist.
(font_open_entity): Likewise. (Bug#1547)
- * xfaces.c (font_rescale_ratio): Moved to font.c.
+ * xfaces.c (font_rescale_ratio): Move to font.c.
2008-12-13 Chong Yidong <[email protected]>
@@ -12591,7 +13797,7 @@
2008-12-11 Chong Yidong <[email protected]>
- * term.c (tty_free_frame_resources): Renamed from delete_tty_output;
+ * term.c (tty_free_frame_resources): Rename from delete_tty_output;
all callers changed. Call free_frame_faces to free the face cache.
2008-12-11 Jason Rumney <[email protected]>
@@ -17921,7 +19127,7 @@
(FONT_WEIGHT_NAME_NUMERIC, FONT_SLANT_NAME_NUMERIC)
(FONT_WIDTH_NAME_NUMERIC, FONT_SET_STYLE): New macros.
(struct font_spec, struct font_entity): New structs.
- (FONT_ENCODING_NOT_DECIDED): Moved from fontset.h.
+ (FONT_ENCODING_NOT_DECIDED): Move from fontset.h.
(struct font): Many members from old "struct font_info" moved to
here. Members font and entity deleted.
(FONT_SPEC_P, FONT_ENTITY_P, FONT_OBJECT_P, FONTP): Modified for
@@ -17929,7 +19135,7 @@
(CHECK_FONT_SPEC, CHECK_FONT_ENTITY, CHECK_FONT_OBJECT)
(CHECK_FONT_GET_OBJECT): Likewise.
(XFONT_SPEC, XFONT_ENTITY, XFONT_OBJECT, XSETFONT): New macros.
- (PT_PER_INCH, POINT_TO_PIXEL, PIXEL_TO_POINT): Moved from font.h.
+ (PT_PER_INCH, POINT_TO_PIXEL, PIXEL_TO_POINT): Move from font.h.
(struct font_driver): New members case_sensitive anc check.
Type of the member list and open changed.
(enable_font_backend, font_symbolic_weight, font_symbolic_slant)
@@ -17941,7 +19147,7 @@
(enable_font_backend): Delete it.
(Qfont_spec, Qfont_entity, Qfont_object): New variables.
(CHECK_VALIDATE_FONT_SPEC): Delete it.
- (PT_PER_INCH, POINT_TO_PIXEL, PIXEL_TO_POINT): Moved to font.h.
+ (PT_PER_INCH, POINT_TO_PIXEL, PIXEL_TO_POINT): Move to font.h.
(null_string): Delete it.
(null_vector): Make it static.
(font_family_alist): Delete it.
@@ -17949,7 +19155,7 @@
(QCextra, QClanguage): Delete it.
(QClang, QCavgwidth, QCfont_entity, QCfc_unknown_spec): New variables.
(font_make_spec, font_make_entity, font_make_object)
- (font_intern_prop): Renamed from intern_downcase. Don't downcase
+ (font_intern_prop): Rename from intern_downcase. Don't downcase
the string. Callers changed.
(font_pixel_size): Adjust for the format change of font-related
objects.
@@ -17969,7 +19175,7 @@
(font_expand_wildcards, font_parse_xlfd, font_unparse_xlfd)
(font_parse_fcname, font_unparse_fcname)
(font_prepare_composition): Likewise.
- (font_parse_family_registry): Renamed from font_merge_old_spec.
+ (font_parse_family_registry): Rename from font_merge_old_spec.
(otf_open): Delete the 1st arg entity.
(font_otf_capability): Adjust for the above change.
(font_score): New arg alternate_families. Adjusted for the change
@@ -17997,7 +19203,7 @@
(Ffontp, Ffont_spec, Ffont_get, Ffont_put, Flist_fonts)
(Ffont_xlfd_name): Adjust for the change of font-related objects.
(Fcopy_font_spec, Fmerge_font_spec): New function.
- (Ffont_family_list): Renamed from list-families.
+ (Ffont_family_list): Rename from list-families.
(Finternal_set_font_style_table): Arguments changed.
(Ffont_fill_gstring, Ffont_shape_text, Fopen_font)
(Ffont_drive_otf, Fquery_font, Ffont_match_p): Adjust for the
@@ -18006,7 +19212,7 @@
* fontset.h (struct font_info): Delete it. Most members go to
struct font.
- (FONT_ENCODING_NOT_DECIDED): Moved to font.h.
+ (FONT_ENCODING_NOT_DECIDED): Move to font.h.
(enum FONT_SPEC_INDEX): Delete it.
(font_info, list_fonts_func, load_font_func, query_font_func)
(set_frame_fontset_func, find_ccl_program_func)
@@ -18048,7 +19254,7 @@
(Fnew_fontset): Use font_unparse_xlfd to generate
FONTSET_ASCII (fontset).
(new_fontset_from_font_name): Deleted.
- (fontset_from_font): Renamed from new_fontset_from_font. Check if
+ (fontset_from_font): Rename from new_fontset_from_font. Check if
a fontset is already created for the font. FIx updating of
Vfontset_alias_alist.
(fontset_ascii_font): Deleted.
@@ -18157,7 +19363,7 @@
by FONTP.
(lface_fully_specified_p): Don't check LFACE_AVGWIDTH.
(set_lface_from_font_name): Delete it.
- (set_lface_from_font): Renamed from
+ (set_lface_from_font): Rename from
set_lface_from_font_and_fontset. Caller changed. Don't set
LFACE_AVGWIDTH. Use FONT_XXX_FOR_FACE to get a symbol suitable
for face.
@@ -18198,12 +19404,12 @@
* xfont.c: Include <stdlib.h> and "ccl.h".
(struct xfont_info): New structure.
(xfont_query_font): Deleted.
- (xfont_find_ccl_program): Renamed from x_find_ccl_program and
+ (xfont_find_ccl_program): Rename from x_find_ccl_program and
moved from xterm.c.
(xfont_driver): Adjust for the change of struct font_driver.
(compare_font_names): New function.
- (xfont_list_pattern): Sort font names case insensitively. Make
- font_entity by calling font_make_entity. Avoid auto-scaled fonts.
+ (xfont_list_pattern): Sort font names case insensitively.
+ Make font_entity by calling font_make_entity. Avoid auto-scaled fonts.
(xfont_list): Return a list, not vector.
(xfont_match): If the font doesn't have QCname property, generate
a name from the other font properties.
@@ -18251,12 +19457,12 @@
(x_draw_composite_glyph_string_foreground): Likewise.
(x_draw_glyph_string): Likewise. Use font->underline_position and
font->underline_thickness.
- (x_new_font): Renamed from x_new_fontset2.
+ (x_new_font): Rename from x_new_fontset2.
(x_new_fontset, x_get_font_info, x_list_fonts): Deleted.
(x_check_font): Call `check' method of a font driver.
(x_font_min_bounds, x_compute_min_glyph_bounds, x_load_font)
(x_query_font, x_get_font_repertory): Deleted.
- (x_find_ccl_program): Renamed and moved to xfont.c.
+ (x_find_ccl_program): Rename and moved to xfont.c.
(x_redisplay_interface): Adjust for the change of `struct
redisplay_interface'.
@@ -18281,7 +19487,7 @@
(w32font_close): Don't free struct font. Adjusted for the change
of struct w32font_info.
(w32font_encode_char, w32font_text_extents, w32font_draw):
- Adjusted for the change of struct w32font_info.
+ Adjust for the change of struct w32font_info.
(w32font_draw): Likewise.
(w32font_list_internal): Return a list, not vector.
(w32font_open_internal): Change the 4th arg to font-object.
@@ -19683,11 +20889,11 @@
* xterm.c (handle_one_xevent): For Gtk+ and ConfigureNotify, call
xg_frame_resized when the event is for the edit widget.
- * gtkutil.h (xg_frame_resized): Renamed from xg_resize_widgets.
+ * gtkutil.h (xg_frame_resized): Rename from xg_resize_widgets.
* gtkutil.c (xg_resize_outer_widget): Only do one of set_geometry or
set_char_size.
- (xg_frame_resized): Renamed from xg_resize_widgets. Remove all
+ (xg_frame_resized): Rename from xg_resize_widgets. Remove all
operations on widgets here. Just set frame size if needed.
(flush_and_sync, x_wm_size_hint_off, xg_pack_tool_bar): New functions.
(xg_frame_set_char_size): Call x_wm_size_hint_off before resizing.
@@ -22083,7 +23289,7 @@
* font.c (enum xlfd_field_index): Rename XLFD_XXX_SIZE_INDEX to
XLFD_XXX_INDEX.
(enum xlfd_field_mask): New enum.
- (intern_font_field): Changed argument. Change caller. If digits
+ (intern_font_field): Change argument. Change caller. If digits
are followed by non-digits, return a symbol.
(font_expand_wildcards): New function.
(font_parse_xlfd): Fix wildcard handling.
@@ -24823,8 +26029,8 @@
(DECODE_EMACS_MULE_COMPOSITION_RULE_20): Rename from
DECODE_EMACS_MULE_COMPOSITION_RULE. Change caller.
(DECODE_EMACS_MULE_COMPOSITION_RULE_21): New macro.
- (DECODE_EMACS_MULE_21_COMPOSITION): Call
- DECODE_EMACS_MULE_COMPOSITION_RULE_21. Produce correct annotation
+ (DECODE_EMACS_MULE_21_COMPOSITION):
+ Call DECODE_EMACS_MULE_COMPOSITION_RULE_21. Produce correct annotation
sequence.
(decode_coding_emacs_mule): Handle composition correctly. Rewind
`src' and `consumed_chars' correctly before calling emacs_mule_char.
@@ -25245,7 +26451,7 @@
(SUB_CHAR_TABLE_P): Check PVEC_CHAR_TABLE.
(GC_SUB_CHAR_TABLE_P): New macro.
(Fencode_coding_string, Fdecode_coding_string): Update EXFUN.
- (code_convert_string_norecord): Deleted extern.
+ (code_convert_string_norecord): Delete extern.
(init_character_once, syms_of_character, init_charset)
(syms_of_composite, Qeq, Fmakehash, insert_from_gap): Extern them.
@@ -29135,8 +30341,7 @@ See ChangeLog.10 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2007-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -29152,4 +30357,3 @@ See ChangeLog.10 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
diff --git a/src/Makefile.in b/src/Makefile.in
index 61b42f1703..98b4c98148 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,7 +1,6 @@
# src/Makefile for GNU Emacs.
-# Copyright (C) 1985, 1987, 1988, 1993, 1994, 1995, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+# Copyright (C) 1985, 1987-1988, 1993-1995, 1999-2011
# Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -47,6 +46,7 @@ version = @version@
LIBOBJS = @LIBOBJS@
lispsource = $(srcdir)/../lisp
+lib = ../lib
libsrc = ../lib-src
etc = ../etc
oldXMenudir = ../oldXMenu
@@ -320,6 +320,7 @@ MKDEPDIR=@MKDEPDIR@
##
## FIXME? MYCPPFLAGS only referenced in etc/DEBUG.
ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I$(srcdir) \
+ -I$(lib) -I$(srcdir)/../lib \
$(C_SWITCH_MACHINE) $(C_SWITCH_SYSTEM) $(C_SWITCH_X_SITE) \
$(C_SWITCH_X_SYSTEM) $(CFLAGS_SOUND) $(RSVG_CFLAGS) $(IMAGEMAGICK_CFLAGS) \
$(LIBXML2_CFLAGS) $(DBUS_CFLAGS) \
@@ -352,7 +353,7 @@ obj= dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
syntax.o $(UNEXEC_OBJ) bytecode.o \
process.o gnutls.o callproc.o \
region-cache.o sound.o atimer.o \
- doprnt.o strftime.o intervals.o textprop.o composite.o md5.o xml.o \
+ doprnt.o intervals.o textprop.o composite.o md5.o xml.o \
$(MSDOS_OBJ) $(MSDOS_X_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_OBJ)
## Object files used on some machine or other.
@@ -612,12 +613,12 @@ all: emacs$(EXEEXT) $(OTHER_FILES)
emacs$(EXEEXT): temacs$(EXEEXT) $(etc)/DOC $(lisp)
if test "$(CANNOT_DUMP)" = "yes"; then \
ln -f temacs$(EXEEXT) emacs$(EXEEXT); \
- EMACSLOADPATH=$(lispsource) ./emacs -q -batch \
+ EMACSLOADPATH=$(lispsource) ./emacs -batch \
-f list-load-path-shadows || true; \
else \
LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump || exit 1; \
ln -f emacs$(EXEEXT) bootstrap-emacs$(EXEEXT); \
- ./emacs -q -batch -f list-load-path-shadows || true; \
+ ./emacs -batch -f list-load-path-shadows || true; \
fi
## We run make-docfile twice because the command line may get too long
@@ -644,10 +645,12 @@ $(libsrc)/make-docfile$(EXEEXT):
buildobj.h: Makefile
echo "#define BUILDOBJ \"$(obj) $(otherobj) " "\"" > buildobj.h
+$(lib)/libgnu.a: $(config_h)
+ cd $(lib) && $(MAKE) libgnu.a
-temacs$(EXEEXT): $(START_FILES) stamp-oldxmenu $(obj) $(otherobj)
+temacs$(EXEEXT): $(START_FILES) stamp-oldxmenu $(obj) $(otherobj) $(lib)/libgnu.a
$(CC) $(LD_FIRSTFLAG) $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(TEMACS_LDFLAGS2) \
- -o temacs $(START_FILES) $(obj) $(otherobj) $(LIBES)
+ -o temacs $(START_FILES) $(obj) $(otherobj) $(lib)/libgnu.a $(LIBES)
## The following oldxmenu-related rules are only (possibly) used if
## HAVE_X11 && !USE_GTK, but there is no harm in always defining them
diff --git a/src/README b/src/README
index b4ce91b150..f568797a1e 100644
--- a/src/README
+++ b/src/README
@@ -1,5 +1,4 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/src/alloc.c b/src/alloc.c
index b18fd6feb3..990622a30f 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -1,6 +1,5 @@
/* Storage allocation and gc for GNU Emacs Lisp interpreter.
- Copyright (C) 1985, 1986, 1988, 1993, 1994, 1995, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985-1986, 1988, 1993-1995, 1997-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -59,9 +58,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#undef GC_MALLOC_CHECK
#endif
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#else
+#ifndef HAVE_UNISTD_H
extern POINTER_TYPE *sbrk ();
#endif
@@ -143,8 +141,6 @@ static pthread_mutex_t alloc_mutex;
static __malloc_size_t bytes_used_when_full;
-static __malloc_size_t bytes_used_when_reconsidered;
-
/* Mark, unmark, query mark bit of a Lisp string. S must be a pointer
to a struct Lisp_String. */
@@ -164,31 +160,17 @@ static __malloc_size_t bytes_used_when_reconsidered;
#define GC_STRING_BYTES(S) (STRING_BYTES (S))
#define GC_STRING_CHARS(S) ((S)->size & ~ARRAY_MARK_FLAG)
+/* Global variables. */
+struct emacs_globals globals;
+
/* Number of bytes of consing done since the last gc. */
int consing_since_gc;
-/* Count the amount of consing of various sorts of space. */
-
-EMACS_INT cons_cells_consed;
-EMACS_INT floats_consed;
-EMACS_INT vector_cells_consed;
-EMACS_INT symbols_consed;
-EMACS_INT string_chars_consed;
-EMACS_INT misc_objects_consed;
-EMACS_INT intervals_consed;
-EMACS_INT strings_consed;
-
-/* Minimum number of bytes of consing since GC before next GC. */
-
-EMACS_INT gc_cons_threshold;
-
/* Similar minimum, computed from Vgc_cons_percentage. */
EMACS_INT gc_relative_threshold;
-static Lisp_Object Vgc_cons_percentage;
-
/* Minimum number of bytes of consing since GC before next GC,
when memory is full. */
@@ -204,10 +186,6 @@ int gc_in_progress;
int abort_on_gc;
-/* Nonzero means display messages at beginning and end of GC. */
-
-int garbage_collection_messages;
-
/* Number of live and free conses etc. */
static int total_conses, total_markers, total_symbols, total_vector_size;
@@ -228,14 +206,6 @@ static char *spare_memory[7];
static int malloc_hysteresis;
-/* Non-nil means defun should do purecopy on the function definition. */
-
-Lisp_Object Vpurify_flag;
-
-/* Non-nil means we are handling a memory-full error. */
-
-Lisp_Object Vmemory_full;
-
/* Initialize it to a nonzero value to force it into data space
(rather than bss space). That way unexec will remap it into text
space (pure), on some systems. We have not implemented the
@@ -263,10 +233,6 @@ static size_t pure_bytes_used_before_overflow;
&& ((PNTR_COMPARISON_TYPE) (P) \
>= (PNTR_COMPARISON_TYPE) purebeg))
-/* Total number of bytes allocated in pure storage. */
-
-EMACS_INT pure_bytes_used;
-
/* Index in pure at which next pure Lisp object will be allocated.. */
static EMACS_INT pure_bytes_used_lisp;
@@ -280,10 +246,6 @@ static EMACS_INT pure_bytes_used_non_lisp;
const char *pending_malloc_warning;
-/* Pre-computed signal argument for use when memory is exhausted. */
-
-Lisp_Object Vmemory_signal_data;
-
/* Maximum amount of C stack to save when a GC happens. */
#ifndef MAX_SAVE_STACK
@@ -304,10 +266,7 @@ Lisp_Object Qgc_cons_threshold, Qchar_table_extra_slots;
/* Hook run after GC has finished. */
-Lisp_Object Vpost_gc_hook, Qpost_gc_hook;
-
-Lisp_Object Vgc_elapsed; /* accumulated elapsed time in GC */
-EMACS_INT gcs_done; /* accumulated GCs */
+Lisp_Object Qpost_gc_hook;
static void mark_buffer (Lisp_Object);
static void mark_terminals (void);
@@ -1140,6 +1099,8 @@ static void * (*old_malloc_hook) (size_t, const void *);
static void * (*old_realloc_hook) (void *, size_t, const void*);
static void (*old_free_hook) (void*, const void*);
+static __malloc_size_t bytes_used_when_reconsidered;
+
/* This function is used as the hook for free to call. */
static void
@@ -4279,7 +4240,7 @@ Please mail the result to <[email protected]>.\n\
can prove that. */
static void
-test_setjmp ()
+test_setjmp (void)
{
char buf[10];
register int x;
@@ -4327,7 +4288,7 @@ test_setjmp ()
/* Abort if anything GCPRO'd doesn't survive the GC. */
static void
-check_gcpros ()
+check_gcpros (void)
{
struct gcpro *p;
int i;
@@ -4343,7 +4304,7 @@ check_gcpros ()
#elif GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES
static void
-dump_zombies ()
+dump_zombies (void)
{
int i;
@@ -4378,6 +4339,11 @@ dump_zombies ()
have to be true! It must be verified for each system, possibly
by taking a look at the source code of setjmp.
+ If __builtin_unwind_init is available (defined by GCC >= 2.8) we
+ can use it as a machine independent method to store all registers
+ to the stack. In this case the macros described in the previous
+ two paragraphs are not used.
+
Stack Layout
Architectures differ in the way their processor stack is organized.
@@ -4416,6 +4382,13 @@ mark_stack (void)
volatile int stack_grows_down_p = (char *) &j > (char *) stack_base;
void *end;
+#ifdef HAVE___BUILTIN_UNWIND_INIT
+ /* Force callee-saved registers and register windows onto the stack.
+ This is the preferred method if available, obviating the need for
+ machine dependent methods. */
+ __builtin_unwind_init ();
+ end = &end;
+#else /* not HAVE___BUILTIN_UNWIND_INIT */
/* This trick flushes the register windows so that all the state of
the process is contained in the stack. */
/* Fixme: Code in the Boehm GC suggests flushing (with `flushrs') is
@@ -4451,6 +4424,7 @@ mark_stack (void)
setjmp (j.j);
end = stack_grows_down_p ? (char *) &j + sizeof j : (char *) &j;
#endif /* not GC_SAVE_REGISTERS_ON_STACK */
+#endif /* not HAVE___BUILTIN_UNWIND_INIT */
/* This assumes that the stack is a contiguous region in memory. If
that's not the case, something has to be done here to iterate
@@ -4839,7 +4813,7 @@ Does not copy symbols. Copies strings without text properties. */)
else if (FLOATP (obj))
obj = make_pure_float (XFLOAT_DATA (obj));
else if (STRINGP (obj))
- obj = make_pure_string (SDATA (obj), SCHARS (obj),
+ obj = make_pure_string (SSDATA (obj), SCHARS (obj),
SBYTES (obj),
STRING_MULTIBYTE (obj));
else if (FUNVECP (obj) || VECTORP (obj))
@@ -5326,7 +5300,7 @@ mark_char_table (struct Lisp_Vector *ptr)
{
Lisp_Object val = ptr->contents[i];
- if (INTEGERP (val) || SYMBOLP (val) && XSYMBOL (val)->gcmarkbit)
+ if (INTEGERP (val) || (SYMBOLP (val) && XSYMBOL (val)->gcmarkbit))
continue;
if (SUB_CHAR_TABLE_P (val))
{
@@ -6255,7 +6229,7 @@ init_alloc (void)
void
syms_of_alloc (void)
{
- DEFVAR_INT ("gc-cons-threshold", &gc_cons_threshold,
+ DEFVAR_INT ("gc-cons-threshold", gc_cons_threshold,
doc: /* *Number of bytes of consing between garbage collections.
Garbage collection can happen automatically once this many bytes have been
allocated since the last garbage collection. All data types count.
@@ -6266,57 +6240,57 @@ By binding this temporarily to a large number, you can effectively
prevent garbage collection during a part of the program.
See also `gc-cons-percentage'. */);
- DEFVAR_LISP ("gc-cons-percentage", &Vgc_cons_percentage,
+ DEFVAR_LISP ("gc-cons-percentage", Vgc_cons_percentage,
doc: /* *Portion of the heap used for allocation.
Garbage collection can happen automatically once this portion of the heap
has been allocated since the last garbage collection.
If this portion is smaller than `gc-cons-threshold', this is ignored. */);
Vgc_cons_percentage = make_float (0.1);
- DEFVAR_INT ("pure-bytes-used", &pure_bytes_used,
+ DEFVAR_INT ("pure-bytes-used", pure_bytes_used,
doc: /* Number of bytes of sharable Lisp data allocated so far. */);
- DEFVAR_INT ("cons-cells-consed", &cons_cells_consed,
+ DEFVAR_INT ("cons-cells-consed", cons_cells_consed,
doc: /* Number of cons cells that have been consed so far. */);
- DEFVAR_INT ("floats-consed", &floats_consed,
+ DEFVAR_INT ("floats-consed", floats_consed,
doc: /* Number of floats that have been consed so far. */);
- DEFVAR_INT ("vector-cells-consed", &vector_cells_consed,
+ DEFVAR_INT ("vector-cells-consed", vector_cells_consed,
doc: /* Number of vector cells that have been consed so far. */);
- DEFVAR_INT ("symbols-consed", &symbols_consed,
+ DEFVAR_INT ("symbols-consed", symbols_consed,
doc: /* Number of symbols that have been consed so far. */);
- DEFVAR_INT ("string-chars-consed", &string_chars_consed,
+ DEFVAR_INT ("string-chars-consed", string_chars_consed,
doc: /* Number of string characters that have been consed so far. */);
- DEFVAR_INT ("misc-objects-consed", &misc_objects_consed,
+ DEFVAR_INT ("misc-objects-consed", misc_objects_consed,
doc: /* Number of miscellaneous objects that have been consed so far. */);
- DEFVAR_INT ("intervals-consed", &intervals_consed,
+ DEFVAR_INT ("intervals-consed", intervals_consed,
doc: /* Number of intervals that have been consed so far. */);
- DEFVAR_INT ("strings-consed", &strings_consed,
+ DEFVAR_INT ("strings-consed", strings_consed,
doc: /* Number of strings that have been consed so far. */);
- DEFVAR_LISP ("purify-flag", &Vpurify_flag,
+ DEFVAR_LISP ("purify-flag", Vpurify_flag,
doc: /* Non-nil means loading Lisp code in order to dump an executable.
This means that certain objects should be allocated in shared (pure) space.
It can also be set to a hash-table, in which case this table is used to
do hash-consing of the objects allocated to pure space. */);
- DEFVAR_BOOL ("garbage-collection-messages", &garbage_collection_messages,
+ DEFVAR_BOOL ("garbage-collection-messages", garbage_collection_messages,
doc: /* Non-nil means display messages at start and end of garbage collection. */);
garbage_collection_messages = 0;
- DEFVAR_LISP ("post-gc-hook", &Vpost_gc_hook,
+ DEFVAR_LISP ("post-gc-hook", Vpost_gc_hook,
doc: /* Hook run after garbage collection has finished. */);
Vpost_gc_hook = Qnil;
Qpost_gc_hook = intern_c_string ("post-gc-hook");
staticpro (&Qpost_gc_hook);
- DEFVAR_LISP ("memory-signal-data", &Vmemory_signal_data,
+ DEFVAR_LISP ("memory-signal-data", Vmemory_signal_data,
doc: /* Precomputed `signal' argument for memory-full error. */);
/* We build this in advance because if we wait until we need it, we might
not be able to allocate the memory to hold it. */
@@ -6324,7 +6298,7 @@ do hash-consing of the objects allocated to pure space. */);
= pure_cons (Qerror,
pure_cons (make_pure_c_string ("Memory exhausted--use M-x save-some-buffers then exit and restart Emacs"), Qnil));
- DEFVAR_LISP ("memory-full", &Vmemory_full,
+ DEFVAR_LISP ("memory-full", Vmemory_full,
doc: /* Non-nil means Emacs cannot get much more Lisp memory. */);
Vmemory_full = Qnil;
@@ -6334,10 +6308,10 @@ do hash-consing of the objects allocated to pure space. */);
staticpro (&Qchar_table_extra_slots);
Qchar_table_extra_slots = intern_c_string ("char-table-extra-slots");
- DEFVAR_LISP ("gc-elapsed", &Vgc_elapsed,
+ DEFVAR_LISP ("gc-elapsed", Vgc_elapsed,
doc: /* Accumulated time elapsed in garbage collections.
The time is in seconds as a floating point value. */);
- DEFVAR_INT ("gcs-done", &gcs_done,
+ DEFVAR_INT ("gcs-done", gcs_done,
doc: /* Accumulated number of garbage collections done. */);
defsubr (&Scons);
@@ -6360,6 +6334,3 @@ The time is in seconds as a floating point value. */);
defsubr (&Sgc_status);
#endif
}
-
-/* arch-tag: 6695ca10-e3c5-4c2c-8bc3-ed26a7dda857
- (do not change this comment) */
diff --git a/src/atimer.c b/src/atimer.c
index 6258908e0b..309a4eaee4 100644
--- a/src/atimer.c
+++ b/src/atimer.c
@@ -1,6 +1,5 @@
/* Asynchronous timers.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2000-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -26,10 +25,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "systime.h"
#include "blockinput.h"
#include "atimer.h"
-
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
@@ -447,5 +443,3 @@ init_atimer (void)
signal (SIGALRM, alarm_signal_handler);
}
-/* arch-tag: e6308261-eec6-404b-89fb-6e5909518d70
- (do not change this comment) */
diff --git a/src/atimer.h b/src/atimer.h
index c2245d30e6..798181fcd7 100644
--- a/src/atimer.h
+++ b/src/atimer.h
@@ -1,6 +1,5 @@
/* Asynchronous timers.
- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2000-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -82,5 +81,3 @@ Lisp_Object unwind_stop_other_atimers (Lisp_Object);
#endif /* EMACS_ATIMER_H */
-/* arch-tag: 02c7c1c8-45bd-4222-b874-4ca44662f60b
- (do not change this comment) */
diff --git a/src/bidi.c b/src/bidi.c
index 1f14f6ab84..9740fe8f1d 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -1,5 +1,5 @@
/* Low-level bidirectional buffer-scanning functions for GNU Emacs.
- Copyright (C) 2000, 2001, 2004, 2005, 2009, 2010
+ Copyright (C) 2000-2001, 2004-2005, 2009-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/src/blockinput.h b/src/blockinput.h
index 7ba6fc264f..aa46d67ee5 100644
--- a/src/blockinput.h
+++ b/src/blockinput.h
@@ -1,6 +1,5 @@
/* blockinput.h - interface to blocking complicated interrupt-driven input.
- Copyright (C) 1989, 1993, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1989, 1993, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -126,5 +125,3 @@ extern void reinvoke_input_signal (void);
#endif /* EMACS_BLOCKINPUT_H */
-/* arch-tag: 51a9ec86-945a-4966-8f04-2d1341250e03
- (do not change this comment) */
diff --git a/src/buffer.c b/src/buffer.c
index 8f8bfb54a2..7a0260f584 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1,8 +1,6 @@
/* Buffer manipulation primitives for GNU Emacs.
-Copyright (C) 1985, 1986, 1987, 1988, 1989, 1993, 1994, 1995, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985-1989, 1993-1995, 1997-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -27,10 +25,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <errno.h>
#include <stdio.h>
#include <setjmp.h>
-
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#include "lisp.h"
#include "intervals.h"
@@ -105,7 +100,6 @@ static char buffer_permanent_local_flags[MAX_PER_BUFFER_VARS];
int last_per_buffer_idx;
-EXFUN (Fset_buffer, 1);
static void call_overlay_mod_hooks (Lisp_Object list, Lisp_Object overlay,
int after, Lisp_Object arg1,
Lisp_Object arg2, Lisp_Object arg3);
@@ -117,36 +111,16 @@ static void reset_buffer_local_variables (struct buffer *b, int permanent_too);
to prevent lossage due to user rplac'ing this alist or its elements. */
Lisp_Object Vbuffer_alist;
-/* Functions to call before and after each text change. */
-Lisp_Object Vbefore_change_functions;
-Lisp_Object Vafter_change_functions;
-
-Lisp_Object Vtransient_mark_mode;
-
-/* t means ignore all read-only text properties.
- A list means ignore such a property if its value is a member of the list.
- Any non-nil value means ignore buffer-read-only. */
-Lisp_Object Vinhibit_read_only;
-
-/* List of functions to call that can query about killing a buffer.
- If any of these functions returns nil, we don't kill it. */
-Lisp_Object Vkill_buffer_query_functions;
Lisp_Object Qkill_buffer_query_functions;
/* Hook run before changing a major mode. */
-Lisp_Object Vchange_major_mode_hook, Qchange_major_mode_hook;
-
-/* List of functions to call before changing an unmodified buffer. */
-Lisp_Object Vfirst_change_hook;
+Lisp_Object Qchange_major_mode_hook;
Lisp_Object Qfirst_change_hook;
Lisp_Object Qbefore_change_functions;
Lisp_Object Qafter_change_functions;
Lisp_Object Qucs_set_table_for_input;
-/* If nonzero, all modification hooks are suppressed. */
-int inhibit_modification_hooks;
-
Lisp_Object Qfundamental_mode, Qmode_class, Qpermanent_local;
Lisp_Object Qpermanent_local_hook;
@@ -1664,7 +1638,7 @@ the current buffer's major mode. */)
CHECK_BUFFER (buffer);
if (STRINGP (XBUFFER (buffer)->name)
- && strcmp (SDATA (XBUFFER (buffer)->name), "*scratch*") == 0)
+ && strcmp (SSDATA (XBUFFER (buffer)->name), "*scratch*") == 0)
function = find_symbol_value (intern ("initial-major-mode"));
else
{
@@ -3777,8 +3751,6 @@ modify_overlay (struct buffer *buf, EMACS_INT start, EMACS_INT end)
}
-Lisp_Object Fdelete_overlay (Lisp_Object overlay);
-
static struct Lisp_Overlay *
unchain_overlay (struct Lisp_Overlay *list, struct Lisp_Overlay *overlay)
{
@@ -5257,7 +5229,7 @@ init_buffer (void)
because of the ange-ftp completion handler.
However, it is not necessary to turn / into /:/.
So avoid doing that. */
- && strcmp ("/", SDATA (current_buffer->directory)))
+ && strcmp ("/", SSDATA (current_buffer->directory)))
current_buffer->directory
= concat2 (build_string ("/:"), current_buffer->directory);
@@ -5369,147 +5341,147 @@ syms_of_buffer (void)
/* All these use DEFVAR_LISP_NOPRO because the slots in
buffer_defaults will all be marked via Vbuffer_defaults. */
- DEFVAR_LISP_NOPRO ("default-mode-line-format",
- &buffer_defaults.mode_line_format,
- doc: /* Default value of `mode-line-format' for buffers that don't override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-mode-line-format",
+ mode_line_format,
+ doc: /* Default value of `mode-line-format' for buffers that don't override it.
This is the same as (default-value 'mode-line-format). */);
- DEFVAR_LISP_NOPRO ("default-header-line-format",
- &buffer_defaults.header_line_format,
- doc: /* Default value of `header-line-format' for buffers that don't override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-header-line-format",
+ header_line_format,
+ doc: /* Default value of `header-line-format' for buffers that don't override it.
This is the same as (default-value 'header-line-format). */);
- DEFVAR_LISP_NOPRO ("default-cursor-type", &buffer_defaults.cursor_type,
- doc: /* Default value of `cursor-type' for buffers that don't override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-cursor-type", cursor_type,
+ doc: /* Default value of `cursor-type' for buffers that don't override it.
This is the same as (default-value 'cursor-type). */);
- DEFVAR_LISP_NOPRO ("default-line-spacing",
- &buffer_defaults.extra_line_spacing,
- doc: /* Default value of `line-spacing' for buffers that don't override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-line-spacing",
+ extra_line_spacing,
+ doc: /* Default value of `line-spacing' for buffers that don't override it.
This is the same as (default-value 'line-spacing). */);
- DEFVAR_LISP_NOPRO ("default-cursor-in-non-selected-windows",
- &buffer_defaults.cursor_in_non_selected_windows,
- doc: /* Default value of `cursor-in-non-selected-windows'.
+ DEFVAR_BUFFER_DEFAULTS ("default-cursor-in-non-selected-windows",
+ cursor_in_non_selected_windows,
+ doc: /* Default value of `cursor-in-non-selected-windows'.
This is the same as (default-value 'cursor-in-non-selected-windows). */);
- DEFVAR_LISP_NOPRO ("default-abbrev-mode",
- &buffer_defaults.abbrev_mode,
- doc: /* Default value of `abbrev-mode' for buffers that do not override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-abbrev-mode",
+ abbrev_mode,
+ doc: /* Default value of `abbrev-mode' for buffers that do not override it.
This is the same as (default-value 'abbrev-mode). */);
- DEFVAR_LISP_NOPRO ("default-ctl-arrow",
- &buffer_defaults.ctl_arrow,
- doc: /* Default value of `ctl-arrow' for buffers that do not override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-ctl-arrow",
+ ctl_arrow,
+ doc: /* Default value of `ctl-arrow' for buffers that do not override it.
This is the same as (default-value 'ctl-arrow). */);
- DEFVAR_LISP_NOPRO ("default-enable-multibyte-characters",
- &buffer_defaults.enable_multibyte_characters,
- doc: /* *Default value of `enable-multibyte-characters' for buffers not overriding it.
+ DEFVAR_BUFFER_DEFAULTS ("default-enable-multibyte-characters",
+ enable_multibyte_characters,
+ doc: /* *Default value of `enable-multibyte-characters' for buffers not overriding it.
This is the same as (default-value 'enable-multibyte-characters). */);
- DEFVAR_LISP_NOPRO ("default-buffer-file-coding-system",
- &buffer_defaults.buffer_file_coding_system,
- doc: /* Default value of `buffer-file-coding-system' for buffers not overriding it.
+ DEFVAR_BUFFER_DEFAULTS ("default-buffer-file-coding-system",
+ buffer_file_coding_system,
+ doc: /* Default value of `buffer-file-coding-system' for buffers not overriding it.
This is the same as (default-value 'buffer-file-coding-system). */);
- DEFVAR_LISP_NOPRO ("default-truncate-lines",
- &buffer_defaults.truncate_lines,
- doc: /* Default value of `truncate-lines' for buffers that do not override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-truncate-lines",
+ truncate_lines,
+ doc: /* Default value of `truncate-lines' for buffers that do not override it.
This is the same as (default-value 'truncate-lines). */);
- DEFVAR_LISP_NOPRO ("default-fill-column",
- &buffer_defaults.fill_column,
- doc: /* Default value of `fill-column' for buffers that do not override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-fill-column",
+ fill_column,
+ doc: /* Default value of `fill-column' for buffers that do not override it.
This is the same as (default-value 'fill-column). */);
- DEFVAR_LISP_NOPRO ("default-left-margin",
- &buffer_defaults.left_margin,
- doc: /* Default value of `left-margin' for buffers that do not override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-left-margin",
+ left_margin,
+ doc: /* Default value of `left-margin' for buffers that do not override it.
This is the same as (default-value 'left-margin). */);
- DEFVAR_LISP_NOPRO ("default-tab-width",
- &buffer_defaults.tab_width,
- doc: /* Default value of `tab-width' for buffers that do not override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-tab-width",
+ tab_width,
+ doc: /* Default value of `tab-width' for buffers that do not override it.
This is the same as (default-value 'tab-width). */);
- DEFVAR_LISP_NOPRO ("default-case-fold-search",
- &buffer_defaults.case_fold_search,
- doc: /* Default value of `case-fold-search' for buffers that don't override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-case-fold-search",
+ case_fold_search,
+ doc: /* Default value of `case-fold-search' for buffers that don't override it.
This is the same as (default-value 'case-fold-search). */);
#ifdef DOS_NT
- DEFVAR_LISP_NOPRO ("default-buffer-file-type",
- &buffer_defaults.buffer_file_type,
- doc: /* Default file type for buffers that do not override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-buffer-file-type",
+ buffer_file_type,
+ doc: /* Default file type for buffers that do not override it.
This is the same as (default-value 'buffer-file-type).
The file type is nil for text, t for binary. */);
#endif
- DEFVAR_LISP_NOPRO ("default-left-margin-width",
- &buffer_defaults.left_margin_cols,
- doc: /* Default value of `left-margin-width' for buffers that don't override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-left-margin-width",
+ left_margin_cols,
+ doc: /* Default value of `left-margin-width' for buffers that don't override it.
This is the same as (default-value 'left-margin-width). */);
- DEFVAR_LISP_NOPRO ("default-right-margin-width",
- &buffer_defaults.right_margin_cols,
- doc: /* Default value of `right-margin-width' for buffers that don't override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-right-margin-width",
+ right_margin_cols,
+ doc: /* Default value of `right-margin-width' for buffers that don't override it.
This is the same as (default-value 'right-margin-width). */);
- DEFVAR_LISP_NOPRO ("default-left-fringe-width",
- &buffer_defaults.left_fringe_width,
- doc: /* Default value of `left-fringe-width' for buffers that don't override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-left-fringe-width",
+ left_fringe_width,
+ doc: /* Default value of `left-fringe-width' for buffers that don't override it.
This is the same as (default-value 'left-fringe-width). */);
- DEFVAR_LISP_NOPRO ("default-right-fringe-width",
- &buffer_defaults.right_fringe_width,
- doc: /* Default value of `right-fringe-width' for buffers that don't override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-right-fringe-width",
+ right_fringe_width,
+ doc: /* Default value of `right-fringe-width' for buffers that don't override it.
This is the same as (default-value 'right-fringe-width). */);
- DEFVAR_LISP_NOPRO ("default-fringes-outside-margins",
- &buffer_defaults.fringes_outside_margins,
- doc: /* Default value of `fringes-outside-margins' for buffers that don't override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-fringes-outside-margins",
+ fringes_outside_margins,
+ doc: /* Default value of `fringes-outside-margins' for buffers that don't override it.
This is the same as (default-value 'fringes-outside-margins). */);
- DEFVAR_LISP_NOPRO ("default-scroll-bar-width",
- &buffer_defaults.scroll_bar_width,
- doc: /* Default value of `scroll-bar-width' for buffers that don't override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-scroll-bar-width",
+ scroll_bar_width,
+ doc: /* Default value of `scroll-bar-width' for buffers that don't override it.
This is the same as (default-value 'scroll-bar-width). */);
- DEFVAR_LISP_NOPRO ("default-vertical-scroll-bar",
- &buffer_defaults.vertical_scroll_bar_type,
- doc: /* Default value of `vertical-scroll-bar' for buffers that don't override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-vertical-scroll-bar",
+ vertical_scroll_bar_type,
+ doc: /* Default value of `vertical-scroll-bar' for buffers that don't override it.
This is the same as (default-value 'vertical-scroll-bar). */);
- DEFVAR_LISP_NOPRO ("default-indicate-empty-lines",
- &buffer_defaults.indicate_empty_lines,
- doc: /* Default value of `indicate-empty-lines' for buffers that don't override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-indicate-empty-lines",
+ indicate_empty_lines,
+ doc: /* Default value of `indicate-empty-lines' for buffers that don't override it.
This is the same as (default-value 'indicate-empty-lines). */);
- DEFVAR_LISP_NOPRO ("default-indicate-buffer-boundaries",
- &buffer_defaults.indicate_buffer_boundaries,
- doc: /* Default value of `indicate-buffer-boundaries' for buffers that don't override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-indicate-buffer-boundaries",
+ indicate_buffer_boundaries,
+ doc: /* Default value of `indicate-buffer-boundaries' for buffers that don't override it.
This is the same as (default-value 'indicate-buffer-boundaries). */);
- DEFVAR_LISP_NOPRO ("default-fringe-indicator-alist",
- &buffer_defaults.fringe_indicator_alist,
- doc: /* Default value of `fringe-indicator-alist' for buffers that don't override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-fringe-indicator-alist",
+ fringe_indicator_alist,
+ doc: /* Default value of `fringe-indicator-alist' for buffers that don't override it.
This is the same as (default-value 'fringe-indicator-alist'). */);
- DEFVAR_LISP_NOPRO ("default-fringe-cursor-alist",
- &buffer_defaults.fringe_cursor_alist,
- doc: /* Default value of `fringe-cursor-alist' for buffers that don't override it.
+ DEFVAR_BUFFER_DEFAULTS ("default-fringe-cursor-alist",
+ fringe_cursor_alist,
+ doc: /* Default value of `fringe-cursor-alist' for buffers that don't override it.
This is the same as (default-value 'fringe-cursor-alist'). */);
- DEFVAR_LISP_NOPRO ("default-scroll-up-aggressively",
- &buffer_defaults.scroll_up_aggressively,
- doc: /* Default value of `scroll-up-aggressively'.
+ DEFVAR_BUFFER_DEFAULTS ("default-scroll-up-aggressively",
+ scroll_up_aggressively,
+ doc: /* Default value of `scroll-up-aggressively'.
This value applies in buffers that don't have their own local values.
This is the same as (default-value 'scroll-up-aggressively). */);
- DEFVAR_LISP_NOPRO ("default-scroll-down-aggressively",
- &buffer_defaults.scroll_down_aggressively,
- doc: /* Default value of `scroll-down-aggressively'.
+ DEFVAR_BUFFER_DEFAULTS ("default-scroll-down-aggressively",
+ scroll_down_aggressively,
+ doc: /* Default value of `scroll-down-aggressively'.
This value applies in buffers that don't have their own local values.
This is the same as (default-value 'scroll-down-aggressively). */);
@@ -5574,8 +5546,8 @@ A string is printed verbatim in the mode line except for %-constructs:
%% -- print %. %- -- print infinitely many dashes.
Decimal digits after the % specify field width to which to pad. */);
- DEFVAR_LISP_NOPRO ("default-major-mode", &buffer_defaults.major_mode,
- doc: /* *Value of `major-mode' for new buffers. */);
+ DEFVAR_BUFFER_DEFAULTS ("default-major-mode", major_mode,
+ doc: /* *Value of `major-mode' for new buffers. */);
DEFVAR_PER_BUFFER ("major-mode", &current_buffer->major_mode,
make_number (Lisp_Symbol),
@@ -5950,7 +5922,7 @@ between 0.0 and 1.0, inclusive. */);
"Don't ask.");
*/
- DEFVAR_LISP ("before-change-functions", &Vbefore_change_functions,
+ DEFVAR_LISP ("before-change-functions", Vbefore_change_functions,
doc: /* List of functions to call before each text change.
Two arguments are passed to each function: the positions of
the beginning and end of the range of old text to be changed.
@@ -5966,7 +5938,7 @@ the variable's value remains nil. That prevents the error
from happening repeatedly and making Emacs nonfunctional. */);
Vbefore_change_functions = Qnil;
- DEFVAR_LISP ("after-change-functions", &Vafter_change_functions,
+ DEFVAR_LISP ("after-change-functions", Vafter_change_functions,
doc: /* List of functions to call after each text change.
Three arguments are passed to each function: the positions of
the beginning and end of the range of changed text,
@@ -5984,7 +5956,7 @@ the variable's value remains nil. That prevents the error
from happening repeatedly and making Emacs nonfunctional. */);
Vafter_change_functions = Qnil;
- DEFVAR_LISP ("first-change-hook", &Vfirst_change_hook,
+ DEFVAR_LISP ("first-change-hook", Vfirst_change_hook,
doc: /* A list of functions to call before changing a buffer which is unmodified.
The functions are run using the `run-hooks' function. */);
Vfirst_change_hook = Qnil;
@@ -6099,7 +6071,7 @@ The function `set-window-buffer' updates this variable
to the value obtained by calling `current-time'.
If the buffer has never been shown in a window, the value is nil. */);
- DEFVAR_LISP ("transient-mark-mode", &Vtransient_mark_mode,
+ DEFVAR_LISP ("transient-mark-mode", Vtransient_mark_mode,
doc: /* Non-nil if Transient Mark mode is enabled.
See the command `transient-mark-mode' for a description of this minor mode.
@@ -6107,18 +6079,20 @@ Non-nil also enables highlighting of the region whenever the mark is active.
The variable `highlight-nonselected-windows' controls whether to highlight
all windows or just the selected window.
-If the value is `lambda', that enables Transient Mark mode temporarily.
-After any subsequent action that would normally deactivate the mark
-\(such as buffer modification), Transient Mark mode is turned off.
+Lisp programs may give this variable certain special values:
-If the value is (only . OLDVAL), that enables Transient Mark mode
-temporarily. After any subsequent point motion command that is not
-shift-translated, or any other action that would normally deactivate
-the mark (such as buffer modification), the value of
-`transient-mark-mode' is set to OLDVAL. */);
+- A value of `lambda' enables Transient Mark mode temporarily.
+ It is disabled again after any subsequent action that would
+ normally deactivate the mark (e.g. buffer modification).
+
+- A value of (only . OLDVAL) enables Transient Mark mode
+ temporarily. After any subsequent point motion command that is
+ not shift-translated, or any other action that would normally
+ deactivate the mark (e.g. buffer modification), the value of
+ `transient-mark-mode' is set to OLDVAL. */);
Vtransient_mark_mode = Qnil;
- DEFVAR_LISP ("inhibit-read-only", &Vinhibit_read_only,
+ DEFVAR_LISP ("inhibit-read-only", Vinhibit_read_only,
doc: /* *Non-nil means disregard read-only status of buffers or characters.
If the value is t, disregard `buffer-read-only' and all `read-only'
text properties. If the value is a list, disregard `buffer-read-only'
@@ -6161,13 +6135,13 @@ If t, displays a cursor related to the usual cursor type
You can also specify the cursor type as in the `cursor-type' variable.
Use Custom to set this variable and update the display." */);
- DEFVAR_LISP ("kill-buffer-query-functions", &Vkill_buffer_query_functions,
+ DEFVAR_LISP ("kill-buffer-query-functions", Vkill_buffer_query_functions,
doc: /* List of functions called with no args to query before killing a buffer.
The buffer being killed will be current while the functions are running.
If any of them returns nil, the buffer is not killed. */);
Vkill_buffer_query_functions = Qnil;
- DEFVAR_LISP ("change-major-mode-hook", &Vchange_major_mode_hook,
+ DEFVAR_LISP ("change-major-mode-hook", Vchange_major_mode_hook,
doc: /* Normal hook run before changing the major mode of a buffer.
The function `kill-all-local-variables' runs this before doing anything else. */);
Vchange_major_mode_hook = Qnil;
@@ -6235,4 +6209,3 @@ keys_of_buffer (void)
initialized when that function gets called. */
Fput (intern_c_string ("erase-buffer"), Qdisabled, Qt);
}
-
diff --git a/src/buffer.h b/src/buffer.h
index 79acd16b6f..31f96040b2 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -1,8 +1,7 @@
/* Header file for the buffer manipulation primitives.
-Copyright (C) 1985, 1986, 1993, 1994, 1995, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 1985-1986, 1993-1995, 1997-2011
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -895,28 +894,16 @@ extern void mmap_set_vars (int);
} \
} while (0)
-EXFUN (Fbuffer_list, 1);
EXFUN (Fbuffer_live_p, 1);
EXFUN (Fbuffer_name, 1);
-EXFUN (Fget_file_buffer, 1);
EXFUN (Fnext_overlay_change, 1);
EXFUN (Fdelete_overlay, 1);
EXFUN (Fbuffer_local_value, 2);
-EXFUN (Fgenerate_new_buffer_name, 2);
-/* Functions to call before and after each text change. */
-extern Lisp_Object Vbefore_change_functions;
-extern Lisp_Object Vafter_change_functions;
-extern Lisp_Object Vfirst_change_hook;
extern Lisp_Object Qbefore_change_functions;
extern Lisp_Object Qafter_change_functions;
extern Lisp_Object Qfirst_change_hook;
-/* If nonzero, all modification hooks are suppressed. */
-extern int inhibit_modification_hooks;
-
-extern Lisp_Object Vdeactivate_mark;
-extern Lisp_Object Vtransient_mark_mode;
/* Overlays */
diff --git a/src/bytecode.c b/src/bytecode.c
index eb12b9c496..96d2aa273f 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -1,6 +1,5 @@
/* Execution of byte code produced by bytecomp.el.
- Copyright (C) 1985, 1986, 1987, 1988, 1993, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985-1988, 1993, 2000-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -58,9 +57,7 @@ by Hallvard:
#ifdef BYTE_CODE_METER
-Lisp_Object Vbyte_code_meter, Qbyte_code_meter;
-int byte_metering_on;
-
+Lisp_Object Qbyte_code_meter;
#define METER_2(code1, code2) \
XFASTINT (XVECTOR (XVECTOR (Vbyte_code_meter)->contents[(code1)]) \
->contents[(code2)])
@@ -938,7 +935,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
case Btemp_output_buffer_setup:
BEFORE_POTENTIAL_GC ();
CHECK_STRING (TOP);
- temp_output_buffer_setup (SDATA (TOP));
+ temp_output_buffer_setup (SSDATA (TOP));
AFTER_POTENTIAL_GC ();
TOP = Vstandard_output;
break;
@@ -1799,7 +1796,7 @@ syms_of_bytecode (void)
#ifdef BYTE_CODE_METER
- DEFVAR_LISP ("byte-code-meter", &Vbyte_code_meter,
+ DEFVAR_LISP ("byte-code-meter", Vbyte_code_meter,
doc: /* A vector of vectors which holds a histogram of byte-code usage.
\(aref (aref byte-code-meter 0) CODE) indicates how many times the byte
opcode CODE has been executed.
@@ -1807,7 +1804,7 @@ opcode CODE has been executed.
indicates how many times the byte opcodes CODE1 and CODE2 have been
executed in succession. */);
- DEFVAR_BOOL ("byte-metering-on", &byte_metering_on,
+ DEFVAR_BOOL ("byte-metering-on", byte_metering_on,
doc: /* If non-nil, keep profiling information on byte code usage.
The variable byte-code-meter indicates how often each byte opcode is used.
If a symbol has a property named `byte-code-meter' whose value is an
@@ -1825,6 +1822,3 @@ integer, it is incremented each time that symbol's function is called. */);
}
#endif
}
-
-/* arch-tag: b9803b6f-1ed6-4190-8adf-33fd3a9d10e9
- (do not change this comment) */
diff --git a/src/callint.c b/src/callint.c
index 5eb65b31cb..d2f94f6080 100644
--- a/src/callint.c
+++ b/src/callint.c
@@ -1,6 +1,5 @@
/* Call a Lisp function interactively.
- Copyright (C) 1985, 1986, 1993, 1994, 1995, 1997, 2000, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985-1986, 1993-1995, 1997, 2000-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -29,20 +28,14 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "window.h"
#include "keymap.h"
-Lisp_Object Vcurrent_prefix_arg, Qminus, Qplus;
+Lisp_Object Qminus, Qplus;
Lisp_Object Qcall_interactively;
-Lisp_Object Vcommand_history;
-
-Lisp_Object Vcommand_debug_status, Qcommand_debug_status;
+Lisp_Object Qcommand_debug_status;
Lisp_Object Qenable_recursive_minibuffers;
-/* Non-nil means treat the mark as active
- even if mark_active is 0. */
-Lisp_Object Vmark_even_if_inactive;
-
Lisp_Object Qhandle_shift_selection;
-Lisp_Object Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook;
+Lisp_Object Qmouse_leave_buffer_hook;
Lisp_Object Qlist, Qlet, Qletx, Qsave_excursion, Qprogn, Qif, Qwhen;
static Lisp_Object preserved_fns;
@@ -652,7 +645,7 @@ invoke it. If KEYS is omitted or nil, the return value of
if (next_event >= key_count)
error ("%s must be bound to an event with parameters",
(SYMBOLP (function)
- ? (char *) SDATA (SYMBOL_NAME (function))
+ ? SSDATA (SYMBOL_NAME (function))
: "command"));
args[i] = AREF (keys, next_event);
next_event++;
@@ -940,7 +933,7 @@ normally commands can get this prefix argument with (interactive "P"). */);
doc: /* The value of the prefix argument for the previous editing command.
See `prefix-arg' for the meaning of the value. */);
- DEFVAR_LISP ("current-prefix-arg", &Vcurrent_prefix_arg,
+ DEFVAR_LISP ("current-prefix-arg", Vcurrent_prefix_arg,
doc: /* The value of the prefix argument for this editing command.
It may be a number, or the symbol `-' for just a minus sign as arg,
or a list whose car is a number for just one or more C-u's
@@ -948,7 +941,7 @@ or nil if no argument has been specified.
This is what `(interactive \"P\")' returns. */);
Vcurrent_prefix_arg = Qnil;
- DEFVAR_LISP ("command-history", &Vcommand_history,
+ DEFVAR_LISP ("command-history", Vcommand_history,
doc: /* List of recent commands that read arguments from terminal.
Each command is represented as a form to evaluate.
@@ -956,13 +949,13 @@ Maximum length of the history list is determined by the value
of `history-length', which see. */);
Vcommand_history = Qnil;
- DEFVAR_LISP ("command-debug-status", &Vcommand_debug_status,
+ DEFVAR_LISP ("command-debug-status", Vcommand_debug_status,
doc: /* Debugging status of current interactive command.
Bound each time `call-interactively' is called;
may be set by the debugger as a reminder for itself. */);
Vcommand_debug_status = Qnil;
- DEFVAR_LISP ("mark-even-if-inactive", &Vmark_even_if_inactive,
+ DEFVAR_LISP ("mark-even-if-inactive", Vmark_even_if_inactive,
doc: /* *Non-nil means you can use the mark even when inactive.
This option makes a difference in Transient Mark mode.
When the option is non-nil, deactivation of the mark
@@ -970,7 +963,7 @@ turns off region highlighting, but commands that use the mark
behave as if the mark were still active. */);
Vmark_even_if_inactive = Qt;
- DEFVAR_LISP ("mouse-leave-buffer-hook", &Vmouse_leave_buffer_hook,
+ DEFVAR_LISP ("mouse-leave-buffer-hook", Vmouse_leave_buffer_hook,
doc: /* Hook to run when about to switch windows with a mouse command.
Its purpose is to give temporary modes such as Isearch mode
a way to turn themselves off when a mouse command switches windows. */);
@@ -980,6 +973,3 @@ a way to turn themselves off when a mouse command switches windows. */);
defsubr (&Scall_interactively);
defsubr (&Sprefix_numeric_value);
}
-
-/* arch-tag: a3a7cad7-bcac-42ce-916e-1bd2546ebf37
- (do not change this comment) */
diff --git a/src/callproc.c b/src/callproc.c
index 59067040fd..09d0ca5b42 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -1,6 +1,5 @@
/* Synchronous subprocess invocation for GNU Emacs.
- Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985-1988, 1993-1995, 1999-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -25,10 +24,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <stdio.h>
#include <setjmp.h>
#include <sys/types.h>
-
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#include <sys/file.h>
#include <fcntl.h>
@@ -75,17 +71,9 @@ extern char **environ;
#endif
#endif
-Lisp_Object Vexec_path, Vexec_directory, Vexec_suffixes;
-Lisp_Object Vdata_directory, Vdoc_directory;
-Lisp_Object Vconfigure_info_directory, Vshared_game_score_directory;
-
/* Pattern used by call-process-region to make temp files. */
static Lisp_Object Vtemp_file_name_pattern;
-Lisp_Object Vshell_file_name;
-
-Lisp_Object Vprocess_environment, Vinitial_environment;
-
#ifdef DOS_NT
Lisp_Object Qbuffer_file_type;
#endif /* DOS_NT */
@@ -361,7 +349,7 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
display_p = INTERACTIVE && nargs >= 4 && !NILP (args[3]);
- filefd = emacs_open (SDATA (infile), O_RDONLY, 0);
+ filefd = emacs_open (SSDATA (infile), O_RDONLY, 0);
if (filefd < 0)
{
infile = DECODE_FILE (infile);
@@ -477,11 +465,11 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
else if (STRINGP (error_file))
{
#ifdef DOS_NT
- fd_error = emacs_open (SDATA (error_file),
+ fd_error = emacs_open (SSDATA (error_file),
O_WRONLY | O_TRUNC | O_CREAT | O_TEXT,
S_IREAD | S_IWRITE);
#else /* not DOS_NT */
- fd_error = creat (SDATA (error_file), 0666);
+ fd_error = creat (SSDATA (error_file), 0666);
#endif /* not DOS_NT */
}
@@ -1091,7 +1079,7 @@ child_setup (int in, int out, int err, register char **new_argv, int set_pgrp, L
CONSP (tem) && STRINGP (XCAR (tem));
tem = XCDR (tem))
{
- if (strncmp (SDATA (XCAR (tem)), "DISPLAY", 7) == 0
+ if (strncmp (SSDATA (XCAR (tem)), "DISPLAY", 7) == 0
&& (SDATA (XCAR (tem)) [7] == '\0'
|| SDATA (XCAR (tem)) [7] == '='))
/* DISPLAY is specified in process-environment. */
@@ -1123,10 +1111,10 @@ child_setup (int in, int out, int err, register char **new_argv, int set_pgrp, L
if (STRINGP (display))
{
- int vlen = strlen ("DISPLAY=") + strlen (SDATA (display)) + 1;
+ int vlen = strlen ("DISPLAY=") + strlen (SSDATA (display)) + 1;
char *vdata = (char *) alloca (vlen);
strcpy (vdata, "DISPLAY=");
- strcat (vdata, SDATA (display));
+ strcat (vdata, SSDATA (display));
new_env = add_env (env, new_env, vdata);
}
@@ -1134,7 +1122,7 @@ child_setup (int in, int out, int err, register char **new_argv, int set_pgrp, L
for (tem = Vprocess_environment;
CONSP (tem) && STRINGP (XCAR (tem));
tem = XCDR (tem))
- new_env = add_env (env, new_env, SDATA (XCAR (tem)));
+ new_env = add_env (env, new_env, SSDATA (XCAR (tem)));
*new_env = 0;
@@ -1289,7 +1277,7 @@ getenv_internal_1 (const char *var, int varlen, char **value, int *valuelen,
{
if (SBYTES (entry) > varlen && SREF (entry, varlen) == '=')
{
- *value = (char *) SDATA (entry) + (varlen + 1);
+ *value = SSDATA (entry) + (varlen + 1);
*valuelen = SBYTES (entry) - (varlen + 1);
return 1;
}
@@ -1321,7 +1309,7 @@ getenv_internal (const char *var, int varlen, char **value, int *valuelen,
= Fframe_parameter (NILP (frame) ? selected_frame : frame, Qdisplay);
if (STRINGP (display))
{
- *value = (char *) SDATA (display);
+ *value = SSDATA (display);
*valuelen = SBYTES (display);
return 1;
}
@@ -1352,13 +1340,13 @@ If optional parameter ENV is a list, then search this list instead of
CHECK_STRING (variable);
if (CONSP (env))
{
- if (getenv_internal_1 (SDATA (variable), SBYTES (variable),
+ if (getenv_internal_1 (SSDATA (variable), SBYTES (variable),
&value, &valuelen, env))
return value ? make_string (value, valuelen) : Qt;
else
return Qnil;
}
- else if (getenv_internal (SDATA (variable), SBYTES (variable),
+ else if (getenv_internal (SSDATA (variable), SBYTES (variable),
&value, &valuelen, env))
return make_string (value, valuelen);
else
@@ -1471,13 +1459,13 @@ init_callproc (void)
#endif
{
tempdir = Fdirectory_file_name (Vexec_directory);
- if (access (SDATA (tempdir), 0) < 0)
+ if (access (SSDATA (tempdir), 0) < 0)
dir_warning ("Warning: arch-dependent data dir (%s) does not exist.\n",
Vexec_directory);
}
tempdir = Fdirectory_file_name (Vdata_directory);
- if (access (SDATA (tempdir), 0) < 0)
+ if (access (SSDATA (tempdir), 0) < 0)
dir_warning ("Warning: arch-independent data dir (%s) does not exist.\n",
Vdata_directory);
@@ -1529,41 +1517,41 @@ syms_of_callproc (void)
#endif
staticpro (&Vtemp_file_name_pattern);
- DEFVAR_LISP ("shell-file-name", &Vshell_file_name,
+ DEFVAR_LISP ("shell-file-name", Vshell_file_name,
doc: /* *File name to load inferior shells from.
Initialized from the SHELL environment variable, or to a system-dependent
default if SHELL is not set. */);
- DEFVAR_LISP ("exec-path", &Vexec_path,
+ DEFVAR_LISP ("exec-path", Vexec_path,
doc: /* *List of directories to search programs to run in subprocesses.
Each element is a string (directory name) or nil (try default directory). */);
- DEFVAR_LISP ("exec-suffixes", &Vexec_suffixes,
+ DEFVAR_LISP ("exec-suffixes", Vexec_suffixes,
doc: /* *List of suffixes to try to find executable file names.
Each element is a string. */);
Vexec_suffixes = Qnil;
- DEFVAR_LISP ("exec-directory", &Vexec_directory,
+ DEFVAR_LISP ("exec-directory", Vexec_directory,
doc: /* Directory for executables for Emacs to invoke.
More generally, this includes any architecture-dependent files
that are built and installed from the Emacs distribution. */);
- DEFVAR_LISP ("data-directory", &Vdata_directory,
+ DEFVAR_LISP ("data-directory", Vdata_directory,
doc: /* Directory of machine-independent files that come with GNU Emacs.
These are files intended for Emacs to use while it runs. */);
- DEFVAR_LISP ("doc-directory", &Vdoc_directory,
+ DEFVAR_LISP ("doc-directory", Vdoc_directory,
doc: /* Directory containing the DOC file that comes with GNU Emacs.
This is usually the same as `data-directory'. */);
- DEFVAR_LISP ("configure-info-directory", &Vconfigure_info_directory,
+ DEFVAR_LISP ("configure-info-directory", Vconfigure_info_directory,
doc: /* For internal use by the build procedure only.
This is the name of the directory in which the build procedure installed
Emacs's info files; the default value for `Info-default-directory-list'
includes this. */);
Vconfigure_info_directory = build_string (PATH_INFO);
- DEFVAR_LISP ("shared-game-score-directory", &Vshared_game_score_directory,
+ DEFVAR_LISP ("shared-game-score-directory", Vshared_game_score_directory,
doc: /* Directory of score files for games which come with GNU Emacs.
If this variable is nil, then Emacs is unable to use a shared directory. */);
#ifdef DOS_NT
@@ -1572,13 +1560,13 @@ If this variable is nil, then Emacs is unable to use a shared directory. */);
Vshared_game_score_directory = build_string (PATH_GAME);
#endif
- DEFVAR_LISP ("initial-environment", &Vinitial_environment,
+ DEFVAR_LISP ("initial-environment", Vinitial_environment,
doc: /* List of environment variables inherited from the parent process.
Each element should be a string of the form ENVVARNAME=VALUE.
The elements must normally be decoded (using `locale-coding-system') for use. */);
Vinitial_environment = Qnil;
- DEFVAR_LISP ("process-environment", &Vprocess_environment,
+ DEFVAR_LISP ("process-environment", Vprocess_environment,
doc: /* List of overridden environment variables for subprocesses to inherit.
Each element should be a string of the form ENVVARNAME=VALUE.
@@ -1605,4 +1593,3 @@ See `setenv' and `getenv'. */);
defsubr (&Sgetenv_internal);
defsubr (&Scall_process_region);
}
-
diff --git a/src/casefiddle.c b/src/casefiddle.c
index a9169f7995..6f82f99bd2 100644
--- a/src/casefiddle.c
+++ b/src/casefiddle.c
@@ -1,6 +1,6 @@
/* GNU Emacs case conversion functions.
- Copyright (C) 1985, 1994, 1997, 1998, 1999, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1985, 1994, 1997-1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -443,5 +443,3 @@ keys_of_casefiddle (void)
initial_define_key (meta_map, 'c', "capitalize-word");
}
-/* arch-tag: 60a73c66-5489-47e7-a81f-cead4057c526
- (do not change this comment) */
diff --git a/src/casetab.c b/src/casetab.c
index eed6e22087..0db9d63f7a 100644
--- a/src/casetab.c
+++ b/src/casetab.c
@@ -1,6 +1,5 @@
/* GNU Emacs routines to deal with case tables.
- Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993-1994, 2001-2011 Free Software Foundation, Inc.
Author: Howard Gayle
@@ -304,5 +303,3 @@ syms_of_casetab (void)
defsubr (&Sset_standard_case_table);
}
-/* arch-tag: e06388ad-99fe-40ec-ba67-9d010fcc4916
- (do not change this comment) */
diff --git a/src/category.c b/src/category.c
index 5c38f351d0..06046959b6 100644
--- a/src/category.c
+++ b/src/category.c
@@ -1,13 +1,13 @@
/* GNU Emacs routines to deal with category tables.
- Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010
- National Institute of Advanced Industrial Science and Technology (AIST)
- Registration Number H14PRO021
- Copyright (C) 2003
- National Institute of Advanced Industrial Science and Technology (AIST)
- Registration Number H13PRO009
+
+Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+ 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ National Institute of Advanced Industrial Science and Technology (AIST)
+ Registration Number H14PRO021
+Copyright (C) 2003
+ National Institute of Advanced Industrial Science and Technology (AIST)
+ Registration Number H13PRO009
This file is part of GNU Emacs.
@@ -50,9 +50,6 @@ static int category_table_version;
Lisp_Object Qcategory_table, Qcategoryp, Qcategorysetp, Qcategory_table_p;
-/* Variables to determine word boundary. */
-Lisp_Object Vword_combining_categories, Vword_separating_categories;
-
/* Temporary internal variable used in macro CHAR_HAS_CATEGORY. */
Lisp_Object _temp_category_set;
@@ -481,7 +478,7 @@ syms_of_category (void)
Qcategory_table_p = intern_c_string ("category-table-p");
staticpro (&Qcategory_table_p);
- DEFVAR_LISP ("word-combining-categories", &Vword_combining_categories,
+ DEFVAR_LISP ("word-combining-categories", Vword_combining_categories,
doc: /* List of pair (cons) of categories to determine word boundary.
Emacs treats a sequence of word constituent characters as a single
@@ -519,7 +516,7 @@ the element `(?H . ?K) should be in this list. */);
Vword_combining_categories = Qnil;
- DEFVAR_LISP ("word-separating-categories", &Vword_separating_categories,
+ DEFVAR_LISP ("word-separating-categories", Vword_separating_categories,
doc: /* List of pair (cons) of categories to determine word boundary.
See the documentation of the variable `word-combining-categories'. */);
@@ -542,5 +539,3 @@ See the documentation of the variable `word-combining-categories'. */);
category_table_version = 0;
}
-/* arch-tag: 74ebf524-121b-4d9c-bd68-07f8d708b211
- (do not change this comment) */
diff --git a/src/category.h b/src/category.h
index e636e32827..561b06b6f6 100644
--- a/src/category.h
+++ b/src/category.h
@@ -1,6 +1,6 @@
/* Declarations having to do with Emacs category tables.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010
+ 2005, 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H14PRO021
Copyright (C) 2003
@@ -116,5 +116,3 @@ extern Lisp_Object _temp_category_set;
extern int word_boundary_p (int, int);
extern void set_category_set (Lisp_Object, Lisp_Object, Lisp_Object);
-/* arch-tag: 309dfe83-c3e2-4d22-8e81-faae5aece0ff
- (do not change this comment) */
diff --git a/src/ccl.c b/src/ccl.c
index ca4a147909..411c041b22 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -1,8 +1,7 @@
/* CCL (Code Conversion Language) interpreter.
- Copyright (C) 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010
+ 2005, 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H14PRO021
Copyright (C) 2003
@@ -37,12 +36,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
Lisp_Object Qccl, Qcclp;
-/* This contains all code conversion map available to CCL. */
-Lisp_Object Vcode_conversion_map_vector;
-
-/* Alist of fontname patterns vs corresponding CCL program. */
-Lisp_Object Vfont_ccl_encoder_alist;
-
/* This symbol is a property which associates with ccl program vector.
Ex: (get 'ccl-big5-encoder 'ccl-program) returns ccl program vector. */
Lisp_Object Qccl_program;
@@ -65,9 +58,6 @@ Lisp_Object Qccl_program_idx;
was once used. */
Lisp_Object Vccl_program_table;
-/* Vector of registered hash tables for translation. */
-Lisp_Object Vtranslation_hash_table_vector;
-
/* Return a hash table of id number ID. */
#define GET_HASH_TABLE(id) \
(XHASH_TABLE (XCDR(XVECTOR(Vtranslation_hash_table_vector)->contents[(id)])))
@@ -2321,11 +2311,11 @@ syms_of_ccl (void)
Qcode_conversion_map_id = intern_c_string ("code-conversion-map-id");
staticpro (&Qcode_conversion_map_id);
- DEFVAR_LISP ("code-conversion-map-vector", &Vcode_conversion_map_vector,
+ DEFVAR_LISP ("code-conversion-map-vector", Vcode_conversion_map_vector,
doc: /* Vector of code conversion maps. */);
Vcode_conversion_map_vector = Fmake_vector (make_number (16), Qnil);
- DEFVAR_LISP ("font-ccl-encoder-alist", &Vfont_ccl_encoder_alist,
+ DEFVAR_LISP ("font-ccl-encoder-alist", Vfont_ccl_encoder_alist,
doc: /* Alist of fontname patterns vs corresponding CCL program.
Each element looks like (REGEXP . CCL-CODE),
where CCL-CODE is a compiled CCL program.
@@ -2338,7 +2328,7 @@ The code point in the font is set in CCL registers R1 and R2
If the font is single-byte font, the register R2 is not used. */);
Vfont_ccl_encoder_alist = Qnil;
- DEFVAR_LISP ("translation-hash-table-vector", &Vtranslation_hash_table_vector,
+ DEFVAR_LISP ("translation-hash-table-vector", Vtranslation_hash_table_vector,
doc: /* Vector containing all translation hash tables ever defined.
Comprises pairs (SYMBOL . TABLE) where SYMBOL and TABLE were set up by calls
to `define-translation-hash-table'. The vector is indexed by the table id
@@ -2352,5 +2342,3 @@ used by CCL. */);
defsubr (&Sregister_code_conversion_map);
}
-/* arch-tag: bb9a37be-68ce-4576-8d3d-15d750e4a860
- (do not change this comment) */
diff --git a/src/ccl.h b/src/ccl.h
index e4414ddf65..8c1f5e5cbd 100644
--- a/src/ccl.h
+++ b/src/ccl.h
@@ -1,6 +1,6 @@
/* Header for CCL (Code Conversion Language) interpreter.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010
+ 2005, 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H14PRO021
Copyright (C) 2003
@@ -92,9 +92,6 @@ struct ccl_spec {
#define CODING_SPEC_CCL_PROGRAM(coding) ((coding)->spec.ccl.ccl)
-/* Alist of fontname patterns vs corresponding CCL program. */
-extern Lisp_Object Vfont_ccl_encoder_alist;
-
/* Setup fields of the structure pointed by CCL appropriately for the
execution of ccl program CCL_PROG (symbol or vector). */
extern int setup_ccl_program (struct ccl_program *, Lisp_Object);
@@ -124,5 +121,3 @@ EXFUN (Fccl_program_p, 1);
#endif /* EMACS_CCL_H */
-/* arch-tag: 14681df7-876d-43de-bc71-6b78e23a4e3c
- (do not change this comment) */
diff --git a/src/character.c b/src/character.c
index 1c8fae8817..9936ac281c 100644
--- a/src/character.c
+++ b/src/character.c
@@ -1,11 +1,11 @@
/* Basic character support.
- Copyright (C) 1995, 1997, 1998, 2001 Electrotechnical Laboratory, JAPAN.
- Licensed to the Free Software Foundation.
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- National Institute of Advanced Industrial Science and Technology (AIST)
- Registration Number H13PRO009
+
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
+Copyright (C) 1995, 1997, 1998, 2001 Electrotechnical Laboratory, JAPAN.
+ Licensed to the Free Software Foundation.
+Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ National Institute of Advanced Industrial Science and Technology (AIST)
+ Registration Number H13PRO009
This file is part of GNU Emacs.
@@ -50,43 +50,17 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
Lisp_Object Qcharacterp;
-/* Vector of translation table ever defined.
- ID of a translation table is used to index this vector. */
-Lisp_Object Vtranslation_table_vector;
-
-/* A char-table for characters which may invoke auto-filling. */
-Lisp_Object Vauto_fill_chars;
-
Lisp_Object Qauto_fill_chars;
/* Char-table of information about which character to unify to which
Unicode character. Mainly used by the macro MAYBE_UNIFY_CHAR. */
Lisp_Object Vchar_unify_table;
-/* A char-table. An element is non-nil iff the corresponding
- character has a printable glyph. */
-Lisp_Object Vprintable_chars;
-
-/* A char-table. An elemnent is a column-width of the corresponding
- character. */
-Lisp_Object Vchar_width_table;
-
-/* A char-table. An element is a symbol indicating the direction
- property of corresponding character. */
-Lisp_Object Vchar_direction_table;
-
/* Variable used locally in the macro FETCH_MULTIBYTE_CHAR. */
unsigned char *_fetch_multibyte_char_p;
-/* Char table of scripts. */
-Lisp_Object Vchar_script_table;
-
-/* Alist of scripts vs representative characters. */
-Lisp_Object Vscript_representative_chars;
-
static Lisp_Object Qchar_script_table;
-Lisp_Object Vunicode_category_table;
/* If character code C has modifier masks, reflect them to the
@@ -1071,14 +1045,14 @@ syms_of_character (void)
defsubr (&Schar_resolve_modifiers);
defsubr (&Sget_byte);
- DEFVAR_LISP ("translation-table-vector", &Vtranslation_table_vector,
+ DEFVAR_LISP ("translation-table-vector", Vtranslation_table_vector,
doc: /*
Vector recording all translation tables ever defined.
Each element is a pair (SYMBOL . TABLE) relating the table to the
symbol naming it. The ID of a translation table is an index into this vector. */);
Vtranslation_table_vector = Fmake_vector (make_number (16), Qnil);
- DEFVAR_LISP ("auto-fill-chars", &Vauto_fill_chars,
+ DEFVAR_LISP ("auto-fill-chars", Vauto_fill_chars,
doc: /*
A char-table for characters which invoke auto-filling.
Such characters have value t in this table. */);
@@ -1086,7 +1060,7 @@ Such characters have value t in this table. */);
CHAR_TABLE_SET (Vauto_fill_chars, ' ', Qt);
CHAR_TABLE_SET (Vauto_fill_chars, '\n', Qt);
- DEFVAR_LISP ("char-width-table", &Vchar_width_table,
+ DEFVAR_LISP ("char-width-table", Vchar_width_table,
doc: /*
A char-table for width (columns) of each character. */);
Vchar_width_table = Fmake_char_table (Qnil, make_number (1));
@@ -1094,11 +1068,11 @@ A char-table for width (columns) of each character. */);
char_table_set_range (Vchar_width_table, MAX_5_BYTE_CHAR + 1, MAX_CHAR,
make_number (4));
- DEFVAR_LISP ("char-direction-table", &Vchar_direction_table,
+ DEFVAR_LISP ("char-direction-table", Vchar_direction_table,
doc: /* A char-table for direction of each character. */);
Vchar_direction_table = Fmake_char_table (Qnil, make_number (1));
- DEFVAR_LISP ("printable-chars", &Vprintable_chars,
+ DEFVAR_LISP ("printable-chars", Vprintable_chars,
doc: /* A char-table for each printable character. */);
Vprintable_chars = Fmake_char_table (Qnil, Qnil);
Fset_char_table_range (Vprintable_chars,
@@ -1107,7 +1081,7 @@ A char-table for width (columns) of each character. */);
Fcons (make_number (160),
make_number (MAX_5_BYTE_CHAR)), Qt);
- DEFVAR_LISP ("char-script-table", &Vchar_script_table,
+ DEFVAR_LISP ("char-script-table", Vchar_script_table,
doc: /* Char table of script symbols.
It has one extra slot whose value is a list of script symbols. */);
@@ -1119,7 +1093,7 @@ It has one extra slot whose value is a list of script symbols. */);
Fput (Qchar_script_table, Qchar_table_extra_slots, make_number (1));
Vchar_script_table = Fmake_char_table (Qchar_script_table, Qnil);
- DEFVAR_LISP ("script-representative-chars", &Vscript_representative_chars,
+ DEFVAR_LISP ("script-representative-chars", Vscript_representative_chars,
doc: /* Alist of scripts vs the representative characters.
Each element is a cons (SCRIPT . CHARS).
SCRIPT is a symbol representing a script or a subgroup of a script.
@@ -1129,7 +1103,7 @@ If it is a vector, one of the characters in the vector is necessary.
This variable is used to find a font for a specific script. */);
Vscript_representative_chars = Qnil;
- DEFVAR_LISP ("unicode-category-table", &Vunicode_category_table,
+ DEFVAR_LISP ("unicode-category-table", Vunicode_category_table,
doc: /* Char table of Unicode's "General Category".
All Unicode characters have one of the following values (symbol):
Lu, Ll, Lt, Lm, Lo, Mn, Mc, Me, Nd, Nl, No, Pc, Pd, Ps, Pe, Pi, Pf, Po,
@@ -1140,6 +1114,3 @@ See The Unicode Standard for the meaning of those values. */);
}
#endif /* emacs */
-
-/* arch-tag: b6665960-3c3d-4184-85cd-af4318197999
- (do not change this comment) */
diff --git a/src/character.h b/src/character.h
index aea1a47a1f..259aebbb8a 100644
--- a/src/character.h
+++ b/src/character.h
@@ -1,7 +1,7 @@
/* Header for multibyte character handler.
Copyright (C) 1995, 1997, 1998 Electrotechnical Laboratory, JAPAN.
Licensed to the Free Software Foundation.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H13PRO009
@@ -618,31 +618,16 @@ extern EMACS_INT c_string_width (const unsigned char *, EMACS_INT, int,
extern EMACS_INT lisp_string_width (Lisp_Object, int,
EMACS_INT *, EMACS_INT *);
-extern Lisp_Object Vprintable_chars;
-
extern Lisp_Object Qcharacterp, Qauto_fill_chars;
-extern Lisp_Object Vtranslation_table_vector;
-extern Lisp_Object Vchar_width_table;
-extern Lisp_Object Vchar_direction_table;
extern Lisp_Object Vchar_unify_table;
-extern Lisp_Object Vunicode_category_table;
-
extern Lisp_Object string_escape_byte8 (Lisp_Object);
/* Return a translation table of id number ID. */
#define GET_TRANSLATION_TABLE(id) \
(XCDR(XVECTOR(Vtranslation_table_vector)->contents[(id)]))
-/* A char-table for characters which may invoke auto-filling. */
-extern Lisp_Object Vauto_fill_chars;
-
-extern Lisp_Object Vchar_script_table;
-extern Lisp_Object Vscript_representative_chars;
-
#define DEFSYM(sym, name) \
do { (sym) = intern_c_string ((name)); staticpro (&(sym)); } while (0)
#endif /* EMACS_CHARACTER_H */
-/* arch-tag: 4ef86004-2eff-4073-8cea-cfcbcf7188ac
- (do not change this comment) */
diff --git a/src/charset.c b/src/charset.c
index 39a376a947..a604660019 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -1,8 +1,7 @@
/* Basic character set support.
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010
+ 2005, 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H14PRO021
@@ -54,10 +53,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
*/
-/* List of all charsets. This variable is used only from Emacs
- Lisp. */
-Lisp_Object Vcharset_list;
-
/* Hash table that contains attributes of each charset. Keys are
charset symbols, and values are vectors of charset attributes. */
Lisp_Object Vcharset_hash_table;
@@ -120,13 +115,6 @@ int emacs_mule_charset[256];
CHARS, and FINAL-CHAR) to Emacs' charset. */
int iso_charset_table[ISO_MAX_DIMENSION][ISO_MAX_CHARS][ISO_MAX_FINAL];
-Lisp_Object Vcharset_map_path;
-
-/* If nonzero, don't load charset maps. */
-int inhibit_load_charset_map;
-
-Lisp_Object Vcurrent_iso639_language;
-
#define CODE_POINT_TO_INDEX(charset, code) \
((charset)->code_linear_p \
? (code) - (charset)->min_code \
@@ -304,7 +292,7 @@ load_charset_map (struct charset *charset, struct charset_map_entries *entries,
else
{
if (! temp_charset_work)
- temp_charset_work = malloc (sizeof (*temp_charset_work));
+ temp_charset_work = xmalloc (sizeof (*temp_charset_work));
if (control_flag == 1)
{
memset (temp_charset_work->table.decoder, -1,
@@ -677,7 +665,7 @@ map_charset_for_dump (void (*c_function) (Lisp_Object, Lisp_Object), Lisp_Object
c = temp_charset_work->min_char;
stop = (temp_charset_work->max_char < 0x20000
? temp_charset_work->max_char : 0xFFFF);
-
+
while (1)
{
int index = GET_TEMP_CHARSET_WORK_ENCODER (c);
@@ -1839,7 +1827,7 @@ encode_char (struct charset *charset, int c)
else
{
code = GET_TEMP_CHARSET_WORK_ENCODER (c);
- code = INDEX_TO_CODE_POINT (charset, code);
+ code = INDEX_TO_CODE_POINT (charset, code);
}
}
else /* method == CHARSET_METHOD_OFFSET */
@@ -2306,7 +2294,7 @@ init_charset (void)
{
Lisp_Object tempdir;
tempdir = Fexpand_file_name (build_string ("charsets"), Vdata_directory);
- if (access ((char *) SDATA (tempdir), 0) < 0)
+ if (access (SSDATA (tempdir), 0) < 0)
{
dir_warning ("Error: charsets directory (%s) does not exist.\n\
Emacs will not function correctly without the character map files.\n\
@@ -2404,19 +2392,19 @@ syms_of_charset (void)
defsubr (&Scharset_id_internal);
defsubr (&Ssort_charsets);
- DEFVAR_LISP ("charset-map-path", &Vcharset_map_path,
+ DEFVAR_LISP ("charset-map-path", Vcharset_map_path,
doc: /* *List of directories to search for charset map files. */);
Vcharset_map_path = Qnil;
- DEFVAR_BOOL ("inhibit-load-charset-map", &inhibit_load_charset_map,
+ DEFVAR_BOOL ("inhibit-load-charset-map", inhibit_load_charset_map,
doc: /* Inhibit loading of charset maps. Used when dumping Emacs. */);
inhibit_load_charset_map = 0;
- DEFVAR_LISP ("charset-list", &Vcharset_list,
+ DEFVAR_LISP ("charset-list", Vcharset_list,
doc: /* List of all charsets ever defined. */);
Vcharset_list = Qnil;
- DEFVAR_LISP ("current-iso639-language", &Vcurrent_iso639_language,
+ DEFVAR_LISP ("current-iso639-language", Vcurrent_iso639_language,
doc: /* ISO639 language mnemonic symbol for the current language environment.
If the current language environment is for multiple languages (e.g. "Latin-1"),
the value may be a list of mnemonics. */);
@@ -2442,6 +2430,3 @@ the value may be a list of mnemonics. */);
}
#endif /* emacs */
-
-/* arch-tag: 66a89b8d-4c28-47d3-9ca1-56f78440d69f
- (do not change this comment) */
diff --git a/src/charset.h b/src/charset.h
index 6e6422f3c7..1fc552a5bd 100644
--- a/src/charset.h
+++ b/src/charset.h
@@ -1,8 +1,7 @@
/* Header for charset handler.
- Copyright (C) 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010
+ 2005, 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H14PRO021
@@ -251,14 +250,11 @@ extern Lisp_Object Vcharset_non_preferred_head;
/* Incremented everytime we change the priority of charsets. */
extern unsigned short charset_ordered_list_tick;
-extern Lisp_Object Vcharset_list;
extern Lisp_Object Viso_2022_charset_list;
extern Lisp_Object Vemacs_mule_charset_list;
extern int emacs_mule_charset[256];
-extern Lisp_Object Vcurrent_iso639_language;
-
/* Macros to access information about charset. */
/* Return the attribute vector of charset whose symbol is SYMBOL. */
@@ -544,9 +540,5 @@ extern void map_charset_chars (void (*) (Lisp_Object, Lisp_Object),
Lisp_Object, Lisp_Object,
struct charset *, unsigned, unsigned);
-EXFUN (Funify_charset, 3);
-
#endif /* EMACS_CHARSET_H */
-/* arch-tag: 3b96db55-4961-481d-ac3e-219f46a2b3aa
- (do not change this comment) */
diff --git a/src/chartab.c b/src/chartab.c
index fddd8a3d40..cd8aa784eb 100644
--- a/src/chartab.c
+++ b/src/chartab.c
@@ -1,5 +1,5 @@
/* chartab.c -- char-table support
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H13PRO009
@@ -168,7 +168,7 @@ copy_char_table (Lisp_Object table)
return copy;
}
-Lisp_Object
+static Lisp_Object
sub_char_table_ref (Lisp_Object table, int c)
{
struct Lisp_Sub_Char_Table *tbl = XSUB_CHAR_TABLE (table);
@@ -1013,5 +1013,3 @@ syms_of_chartab (void)
defsubr (&Smap_char_table);
}
-/* arch-tag: 18b5b560-7ab5-4108-b09e-d5dd65dc6fda
- (do not change this comment) */
diff --git a/src/cm.c b/src/cm.c
index dac6ece7b2..d4aedad6db 100644
--- a/src/cm.c
+++ b/src/cm.c
@@ -1,6 +1,5 @@
/* Cursor motion subroutines for GNU Emacs.
- Copyright (C) 1985, 1995, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1995, 2001-2011 Free Software Foundation, Inc.
based primarily on public domain code written by Chris Torek
This file is part of GNU Emacs.
@@ -462,5 +461,3 @@ Wcm_init (struct tty_display_info *tty)
return 0;
}
-/* arch-tag: bcf64c02-00f6-44ef-94b6-c56eab5b3dc4
- (do not change this comment) */
diff --git a/src/cm.h b/src/cm.h
index 0ede5e0cc9..7b4bedd4e8 100644
--- a/src/cm.h
+++ b/src/cm.h
@@ -1,6 +1,5 @@
/* Cursor motion calculation definitions for GNU Emacs
- Copyright (C) 1985, 1989, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1989, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -170,5 +169,3 @@ extern void cmgoto (struct tty_display_info *, int, int);
extern void Wcm_clear (struct tty_display_info *);
extern int Wcm_init (struct tty_display_info *);
-/* arch-tag: acc1535a-7136-49d6-b22d-9bc85702251b
- (do not change this comment) */
diff --git a/src/cmds.c b/src/cmds.c
index b2f454199f..ce05b19e1c 100644
--- a/src/cmds.c
+++ b/src/cmds.c
@@ -1,7 +1,6 @@
/* Simple built-in editing commands.
- Copyright (C) 1985, 1993, 1994, 1995, 1996, 1997, 1998, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+
+Copyright (C) 1985, 1993-1998, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -320,7 +319,7 @@ After insertion, the value of `auto-fill-function' is called if the
A value of 2 means this did things that call for an undo boundary. */
static Lisp_Object Qexpand_abbrev;
-static Lisp_Object Qpost_self_insert_hook, Vpost_self_insert_hook;
+static Lisp_Object Qpost_self_insert_hook;
static int
internal_self_insert (int c, EMACS_INT n)
@@ -523,7 +522,7 @@ syms_of_cmds (void)
Qpost_self_insert_hook = intern_c_string ("post-self-insert-hook");
staticpro (&Qpost_self_insert_hook);
- DEFVAR_LISP ("post-self-insert-hook", &Vpost_self_insert_hook,
+ DEFVAR_LISP ("post-self-insert-hook", Vpost_self_insert_hook,
doc: /* Hook run at the end of `self-insert-command'.
This is run after inserting the character. */);
Vpost_self_insert_hook = Qnil;
@@ -561,5 +560,3 @@ keys_of_cmds (void)
initial_define_key (global_map, Ctl ('F'), "forward-char");
}
-/* arch-tag: 022ba3cd-67f9-4978-9c5d-7d2b18d8644e
- (do not change this comment) */
diff --git a/src/coding.c b/src/coding.c
index a7b7c7d6b2..3a3ba11ee9 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -1,8 +1,7 @@
/* Coding system handler (conversion, detection, etc).
- Copyright (C) 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010
+ 2005, 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H14PRO021
Copyright (C) 2003
@@ -327,16 +326,6 @@ Lisp_Object Qinterrupted, Qinsufficient_memory;
symbol as a coding system. */
static Lisp_Object Qcoding_system_define_form;
-int coding_system_require_warning;
-
-Lisp_Object Vselect_safe_coding_system_function;
-
-/* Mnemonic string for each format of end-of-line. */
-Lisp_Object eol_mnemonic_unix, eol_mnemonic_dos, eol_mnemonic_mac;
-/* Mnemonic string to indicate format of end-of-line is not yet
- decided. */
-Lisp_Object eol_mnemonic_undecided;
-
/* Format of end-of-line decided by system. This is Qunix on
Unix and Mac, Qdos on DOS/Windows.
This has an effect only for external encoding (i.e. for output to
@@ -345,8 +334,6 @@ static Lisp_Object system_eol_type;
#ifdef emacs
-Lisp_Object Vcoding_system_list, Vcoding_system_alist;
-
Lisp_Object Qcoding_system_p, Qcoding_system_error;
/* Coding system emacs-mule and raw-text are for converting only
@@ -356,64 +343,17 @@ Lisp_Object Qutf_8_emacs;
/* Coding-systems are handed between Emacs Lisp programs and C internal
routines by the following three variables. */
-/* Coding-system for reading files and receiving data from process. */
-Lisp_Object Vcoding_system_for_read;
-/* Coding-system for writing files and sending data to process. */
-Lisp_Object Vcoding_system_for_write;
-/* Coding-system actually used in the latest I/O. */
-Lisp_Object Vlast_coding_system_used;
-/* Set to non-nil when an error is detected while code conversion. */
-Lisp_Object Vlast_code_conversion_error;
-/* A vector of length 256 which contains information about special
- Latin codes (especially for dealing with Microsoft codes). */
-Lisp_Object Vlatin_extra_code_table;
-
-/* Flag to inhibit code conversion of end-of-line format. */
-int inhibit_eol_conversion;
-
-/* Flag to inhibit ISO2022 escape sequence detection. */
-int inhibit_iso_escape_detection;
-
-/* Flag to inhibit detection of binary files through null bytes. */
-int inhibit_null_byte_detection;
-
-/* Flag to make buffer-file-coding-system inherit from process-coding. */
-int inherit_process_coding_system;
-
/* Coding system to be used to encode text for terminal display when
terminal coding system is nil. */
struct coding_system safe_terminal_coding;
-Lisp_Object Vfile_coding_system_alist;
-Lisp_Object Vprocess_coding_system_alist;
-Lisp_Object Vnetwork_coding_system_alist;
-
-Lisp_Object Vlocale_coding_system;
-
#endif /* emacs */
-/* Flag to tell if we look up translation table on character code
- conversion. */
-Lisp_Object Venable_character_translation;
-/* Standard translation table to look up on decoding (reading). */
-Lisp_Object Vstandard_translation_table_for_decode;
-/* Standard translation table to look up on encoding (writing). */
-Lisp_Object Vstandard_translation_table_for_encode;
-
Lisp_Object Qtranslation_table;
Lisp_Object Qtranslation_table_id;
Lisp_Object Qtranslation_table_for_decode;
Lisp_Object Qtranslation_table_for_encode;
-/* Alist of charsets vs revision number. */
-static Lisp_Object Vcharset_revision_table;
-
-/* Default coding systems used for process I/O. */
-Lisp_Object Vdefault_process_coding_system;
-
-/* Char table for translating Quail and self-inserting input. */
-Lisp_Object Vtranslation_table_for_input;
-
/* Two special coding systems. */
Lisp_Object Vsjis_coding_system;
Lisp_Object Vbig5_coding_system;
@@ -681,10 +621,6 @@ enum coding_category
| CATEGORY_MASK_UTF_8_NOSIG \
| CATEGORY_MASK_UTF_8_SIG)
-/* List of symbols `coding-category-xxx' ordered by priority. This
- variable is exposed to Emacs Lisp. */
-static Lisp_Object Vcoding_category_list;
-
/* Table of coding categories (Lisp symbols). This variable is for
internal use only. */
static Lisp_Object Vcoding_category_table;
@@ -1607,10 +1543,9 @@ static int
detect_coding_utf_16 (struct coding_system *coding,
struct coding_detection_info *detect_info)
{
- const unsigned char *src = coding->source, *src_base = src;
+ const unsigned char *src = coding->source;
const unsigned char *src_end = coding->source + coding->src_bytes;
int multibytep = coding->src_multibyte;
- int consumed_chars = 0;
int c1, c2;
detect_info->checked |= CATEGORY_MASK_UTF_16;
@@ -2277,7 +2212,6 @@ emacs_mule_char (struct coding_system *coding, const unsigned char *src,
#define DECODE_EMACS_MULE_21_COMPOSITION() \
do { \
enum composition_method method = c - 0xF2; \
- int *charbuf_base = charbuf; \
int nbytes, nchars; \
\
ONE_MORE_BYTE (c); \
@@ -2633,11 +2567,6 @@ decode_coding_emacs_mule (struct coding_system *coding)
}
continue;
- retry:
- src = src_base;
- consumed_chars = consumed_chars_base;
- continue;
-
invalid_code:
EMACS_MULE_MAYBE_FINISH_COMPOSITION ();
src = src_base;
@@ -5450,9 +5379,9 @@ detect_coding_charset (struct coding_system *coding,
attrs = CODING_ID_ATTRS (coding->id);
valids = AREF (attrs, coding_attr_charset_valids);
name = CODING_ID_NAME (coding->id);
- if (strncmp ((char *) SDATA (SYMBOL_NAME (name)),
+ if (strncmp (SSDATA (SYMBOL_NAME (name)),
"iso-8859-", sizeof ("iso-8859-") - 1) == 0
- || strncmp ((char *) SDATA (SYMBOL_NAME (name)),
+ || strncmp (SSDATA (SYMBOL_NAME (name)),
"iso-latin-", sizeof ("iso-latin-") - 1) == 0)
check_latin_extra = 1;
@@ -6260,8 +6189,9 @@ detect_eol (const unsigned char *source, EMACS_INT src_bytes,
{
/* The found type is different from what found before.
Allow for stray ^M characters in DOS EOL files. */
- if (eol_seen == EOL_SEEN_CR && this_eol == EOL_SEEN_CRLF
- || eol_seen == EOL_SEEN_CRLF && this_eol == EOL_SEEN_CR)
+ if ((eol_seen == EOL_SEEN_CR && this_eol == EOL_SEEN_CRLF)
+ || (eol_seen == EOL_SEEN_CRLF
+ && this_eol == EOL_SEEN_CR))
eol_seen = EOL_SEEN_CRLF;
else
{
@@ -6276,42 +6206,40 @@ detect_eol (const unsigned char *source, EMACS_INT src_bytes,
}
}
else
- {
- while (src < src_end)
- {
- c = *src++;
- if (c == '\n' || c == '\r')
- {
- int this_eol;
+ while (src < src_end)
+ {
+ c = *src++;
+ if (c == '\n' || c == '\r')
+ {
+ int this_eol;
- if (c == '\n')
- this_eol = EOL_SEEN_LF;
- else if (src >= src_end || *src != '\n')
- this_eol = EOL_SEEN_CR;
- else
- this_eol = EOL_SEEN_CRLF, src++;
+ if (c == '\n')
+ this_eol = EOL_SEEN_LF;
+ else if (src >= src_end || *src != '\n')
+ this_eol = EOL_SEEN_CR;
+ else
+ this_eol = EOL_SEEN_CRLF, src++;
- if (eol_seen == EOL_SEEN_NONE)
- /* This is the first end-of-line. */
- eol_seen = this_eol;
- else if (eol_seen != this_eol)
- {
- /* The found type is different from what found before.
- Allow for stray ^M characters in DOS EOL files. */
- if (eol_seen == EOL_SEEN_CR && this_eol == EOL_SEEN_CRLF
- || eol_seen == EOL_SEEN_CRLF && this_eol == EOL_SEEN_CR)
- eol_seen = EOL_SEEN_CRLF;
- else
- {
- eol_seen = EOL_SEEN_LF;
- break;
- }
- }
- if (++total == MAX_EOL_CHECK_COUNT)
- break;
- }
- }
- }
+ if (eol_seen == EOL_SEEN_NONE)
+ /* This is the first end-of-line. */
+ eol_seen = this_eol;
+ else if (eol_seen != this_eol)
+ {
+ /* The found type is different from what found before.
+ Allow for stray ^M characters in DOS EOL files. */
+ if ((eol_seen == EOL_SEEN_CR && this_eol == EOL_SEEN_CRLF)
+ || (eol_seen == EOL_SEEN_CRLF && this_eol == EOL_SEEN_CR))
+ eol_seen = EOL_SEEN_CRLF;
+ else
+ {
+ eol_seen = EOL_SEEN_LF;
+ break;
+ }
+ }
+ if (++total == MAX_EOL_CHECK_COUNT)
+ break;
+ }
+ }
return eol_seen;
}
@@ -10533,7 +10461,7 @@ syms_of_coding (void)
defsubr (&Scoding_system_eol_type);
defsubr (&Scoding_system_priority_list);
- DEFVAR_LISP ("coding-system-list", &Vcoding_system_list,
+ DEFVAR_LISP ("coding-system-list", Vcoding_system_list,
doc: /* List of coding systems.
Do not alter the value of this variable manually. This variable should be
@@ -10541,7 +10469,7 @@ updated by the functions `define-coding-system' and
`define-coding-system-alias'. */);
Vcoding_system_list = Qnil;
- DEFVAR_LISP ("coding-system-alist", &Vcoding_system_alist,
+ DEFVAR_LISP ("coding-system-alist", Vcoding_system_alist,
doc: /* Alist of coding system names.
Each element is one element list of coding system name.
This variable is given to `completing-read' as COLLECTION argument.
@@ -10551,7 +10479,7 @@ updated by the functions `make-coding-system' and
`define-coding-system-alias'. */);
Vcoding_system_alist = Qnil;
- DEFVAR_LISP ("coding-category-list", &Vcoding_category_list,
+ DEFVAR_LISP ("coding-category-list", Vcoding_category_list,
doc: /* List of coding-categories (symbols) ordered by priority.
On detecting a coding system, Emacs tries code detection algorithms
@@ -10570,7 +10498,7 @@ Don't modify this variable directly, but use `set-coding-system-priority'. */);
Vcoding_category_list);
}
- DEFVAR_LISP ("coding-system-for-read", &Vcoding_system_for_read,
+ DEFVAR_LISP ("coding-system-for-read", Vcoding_system_for_read,
doc: /* Specify the coding system for read operations.
It is useful to bind this variable with `let', but do not set it globally.
If the value is a coding system, it is used for decoding on read operation.
@@ -10579,7 +10507,7 @@ There are three such tables: `file-coding-system-alist',
`process-coding-system-alist', and `network-coding-system-alist'. */);
Vcoding_system_for_read = Qnil;
- DEFVAR_LISP ("coding-system-for-write", &Vcoding_system_for_write,
+ DEFVAR_LISP ("coding-system-for-write", Vcoding_system_for_write,
doc: /* Specify the coding system for write operations.
Programs bind this variable with `let', but you should not set it globally.
If the value is a coding system, it is used for encoding of output,
@@ -10593,12 +10521,12 @@ For output to files, if the above procedure does not specify a coding system,
the value of `buffer-file-coding-system' is used. */);
Vcoding_system_for_write = Qnil;
- DEFVAR_LISP ("last-coding-system-used", &Vlast_coding_system_used,
+ DEFVAR_LISP ("last-coding-system-used", Vlast_coding_system_used,
doc: /*
Coding system used in the latest file or process I/O. */);
Vlast_coding_system_used = Qnil;
- DEFVAR_LISP ("last-code-conversion-error", &Vlast_code_conversion_error,
+ DEFVAR_LISP ("last-code-conversion-error", Vlast_code_conversion_error,
doc: /*
Error status of the last code conversion.
@@ -10615,21 +10543,21 @@ explicitly set this variable to nil before performing code
conversion. */);
Vlast_code_conversion_error = Qnil;
- DEFVAR_BOOL ("inhibit-eol-conversion", &inhibit_eol_conversion,
+ DEFVAR_BOOL ("inhibit-eol-conversion", inhibit_eol_conversion,
doc: /*
*Non-nil means always inhibit code conversion of end-of-line format.
See info node `Coding Systems' and info node `Text and Binary' concerning
such conversion. */);
inhibit_eol_conversion = 0;
- DEFVAR_BOOL ("inherit-process-coding-system", &inherit_process_coding_system,
+ DEFVAR_BOOL ("inherit-process-coding-system", inherit_process_coding_system,
doc: /*
Non-nil means process buffer inherits coding system of process output.
Bind it to t if the process output is to be treated as if it were a file
read from some filesystem. */);
inherit_process_coding_system = 0;
- DEFVAR_LISP ("file-coding-system-alist", &Vfile_coding_system_alist,
+ DEFVAR_LISP ("file-coding-system-alist", Vfile_coding_system_alist,
doc: /*
Alist to decide a coding system to use for a file I/O operation.
The format is ((PATTERN . VAL) ...),
@@ -10650,7 +10578,7 @@ See also the function `find-operation-coding-system'
and the variable `auto-coding-alist'. */);
Vfile_coding_system_alist = Qnil;
- DEFVAR_LISP ("process-coding-system-alist", &Vprocess_coding_system_alist,
+ DEFVAR_LISP ("process-coding-system-alist", Vprocess_coding_system_alist,
doc: /*
Alist to decide a coding system to use for a process I/O operation.
The format is ((PATTERN . VAL) ...),
@@ -10666,7 +10594,7 @@ or a cons of coding systems which are used as above.
See also the function `find-operation-coding-system'. */);
Vprocess_coding_system_alist = Qnil;
- DEFVAR_LISP ("network-coding-system-alist", &Vnetwork_coding_system_alist,
+ DEFVAR_LISP ("network-coding-system-alist", Vnetwork_coding_system_alist,
doc: /*
Alist to decide a coding system to use for a network I/O operation.
The format is ((PATTERN . VAL) ...),
@@ -10683,48 +10611,48 @@ or a cons of coding systems which are used as above.
See also the function `find-operation-coding-system'. */);
Vnetwork_coding_system_alist = Qnil;
- DEFVAR_LISP ("locale-coding-system", &Vlocale_coding_system,
+ DEFVAR_LISP ("locale-coding-system", Vlocale_coding_system,
doc: /* Coding system to use with system messages.
Also used for decoding keyboard input on X Window system. */);
Vlocale_coding_system = Qnil;
/* The eol mnemonics are reset in startup.el system-dependently. */
- DEFVAR_LISP ("eol-mnemonic-unix", &eol_mnemonic_unix,
+ DEFVAR_LISP ("eol-mnemonic-unix", eol_mnemonic_unix,
doc: /*
*String displayed in mode line for UNIX-like (LF) end-of-line format. */);
eol_mnemonic_unix = make_pure_c_string (":");
- DEFVAR_LISP ("eol-mnemonic-dos", &eol_mnemonic_dos,
+ DEFVAR_LISP ("eol-mnemonic-dos", eol_mnemonic_dos,
doc: /*
*String displayed in mode line for DOS-like (CRLF) end-of-line format. */);
eol_mnemonic_dos = make_pure_c_string ("\\");
- DEFVAR_LISP ("eol-mnemonic-mac", &eol_mnemonic_mac,
+ DEFVAR_LISP ("eol-mnemonic-mac", eol_mnemonic_mac,
doc: /*
*String displayed in mode line for MAC-like (CR) end-of-line format. */);
eol_mnemonic_mac = make_pure_c_string ("/");
- DEFVAR_LISP ("eol-mnemonic-undecided", &eol_mnemonic_undecided,
+ DEFVAR_LISP ("eol-mnemonic-undecided", eol_mnemonic_undecided,
doc: /*
*String displayed in mode line when end-of-line format is not yet determined. */);
eol_mnemonic_undecided = make_pure_c_string (":");
- DEFVAR_LISP ("enable-character-translation", &Venable_character_translation,
+ DEFVAR_LISP ("enable-character-translation", Venable_character_translation,
doc: /*
*Non-nil enables character translation while encoding and decoding. */);
Venable_character_translation = Qt;
DEFVAR_LISP ("standard-translation-table-for-decode",
- &Vstandard_translation_table_for_decode,
+ Vstandard_translation_table_for_decode,
doc: /* Table for translating characters while decoding. */);
Vstandard_translation_table_for_decode = Qnil;
DEFVAR_LISP ("standard-translation-table-for-encode",
- &Vstandard_translation_table_for_encode,
+ Vstandard_translation_table_for_encode,
doc: /* Table for translating characters while encoding. */);
Vstandard_translation_table_for_encode = Qnil;
- DEFVAR_LISP ("charset-revision-table", &Vcharset_revision_table,
+ DEFVAR_LISP ("charset-revision-table", Vcharset_revision_table,
doc: /* Alist of charsets vs revision numbers.
While encoding, if a charset (car part of an element) is found,
designate it with the escape sequence identifying revision (cdr part
@@ -10732,13 +10660,13 @@ of the element). */);
Vcharset_revision_table = Qnil;
DEFVAR_LISP ("default-process-coding-system",
- &Vdefault_process_coding_system,
+ Vdefault_process_coding_system,
doc: /* Cons of coding systems used for process I/O by default.
The car part is used for decoding a process output,
the cdr part is used for encoding a text to be sent to a process. */);
Vdefault_process_coding_system = Qnil;
- DEFVAR_LISP ("latin-extra-code-table", &Vlatin_extra_code_table,
+ DEFVAR_LISP ("latin-extra-code-table", Vlatin_extra_code_table,
doc: /*
Table of extra Latin codes in the range 128..159 (inclusive).
This is a vector of length 256.
@@ -10751,7 +10679,7 @@ Only 128th through 159th elements have a meaning. */);
Vlatin_extra_code_table = Fmake_vector (make_number (256), Qnil);
DEFVAR_LISP ("select-safe-coding-system-function",
- &Vselect_safe_coding_system_function,
+ Vselect_safe_coding_system_function,
doc: /*
Function to call to select safe coding system for encoding a text.
@@ -10765,7 +10693,7 @@ The default value is `select-safe-coding-system' (which see). */);
Vselect_safe_coding_system_function = Qnil;
DEFVAR_BOOL ("coding-system-require-warning",
- &coding_system_require_warning,
+ coding_system_require_warning,
doc: /* Internal use only.
If non-nil, on writing a file, `select-safe-coding-system-function' is
called even if `coding-system-for-write' is non-nil. The command
@@ -10774,7 +10702,7 @@ called even if `coding-system-for-write' is non-nil. The command
DEFVAR_BOOL ("inhibit-iso-escape-detection",
- &inhibit_iso_escape_detection,
+ inhibit_iso_escape_detection,
doc: /*
If non-nil, Emacs ignores ISO-2022 escape sequences during code detection.
@@ -10802,7 +10730,7 @@ escape sequence (e.g `latin-1') on reading by \\[universal-coding-system-argumen
inhibit_iso_escape_detection = 0;
DEFVAR_BOOL ("inhibit-null-byte-detection",
- &inhibit_null_byte_detection,
+ inhibit_null_byte_detection,
doc: /* If non-nil, Emacs ignores null bytes on code detection.
By default, Emacs treats it as binary data, and does not attempt to
decode it. The effect is as if you specified `no-conversion' for
@@ -10814,7 +10742,7 @@ from GNU Find and GNU Grep. Emacs will then ignore the null bytes and
decode text as usual. */);
inhibit_null_byte_detection = 0;
- DEFVAR_LISP ("translation-table-for-input", &Vtranslation_table_for_input,
+ DEFVAR_LISP ("translation-table-for-input", Vtranslation_table_for_input,
doc: /* Char table for translating self-inserting characters.
This is applied to the result of input methods, not their input.
See also `keyboard-translate-table'.
@@ -10898,13 +10826,10 @@ emacs_strerror (int error_number)
Lisp_Object dec = code_convert_string_norecord (build_string (str),
Vlocale_coding_system,
0);
- str = (char *) SDATA (dec);
+ str = SSDATA (dec);
}
return str;
}
#endif /* emacs */
-
-/* arch-tag: 3a3a2b01-5ff6-4071-9afe-f5b808d9229d
- (do not change this comment) */
diff --git a/src/coding.h b/src/coding.h
index 7233726a25..6238a708e7 100644
--- a/src/coding.h
+++ b/src/coding.h
@@ -1,8 +1,7 @@
/* Header for coding system handler.
- Copyright (C) 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010
+ 2005, 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H14PRO021
Copyright (C) 2003
@@ -686,8 +685,7 @@ struct coding_system
? code_convert_string_norecord (str, Vlocale_coding_system, 0) \
: str)
-/* Used by the gtk menu code. Note that this encodes utf-8, not
- utf-8-emacs, so it's not a no-op. */
+/* Note that this encodes utf-8, not utf-8-emacs, so it's not a no-op. */
#define ENCODE_UTF_8(str) code_convert_string_norecord (str, Qutf_8, 1)
/* Extern declarations. */
@@ -770,11 +768,6 @@ extern Lisp_Object Qunix, Qdos, Qmac;
extern Lisp_Object Qtranslation_table;
extern Lisp_Object Qtranslation_table_id;
-/* Mnemonic strings to indicate each type of end-of-line. */
-extern Lisp_Object eol_mnemonic_unix, eol_mnemonic_dos, eol_mnemonic_mac;
-/* Mnemonic string to indicate type of end-of-line is not yet decided. */
-extern Lisp_Object eol_mnemonic_undecided;
-
#ifdef emacs
extern Lisp_Object Qfile_coding_system;
extern Lisp_Object Qcall_process, Qcall_process_region;
@@ -783,44 +776,10 @@ extern Lisp_Object Qwrite_region;
extern char *emacs_strerror (int);
-/* Coding-system for reading files and receiving data from process. */
-extern Lisp_Object Vcoding_system_for_read;
-/* Coding-system for writing files and sending data to process. */
-extern Lisp_Object Vcoding_system_for_write;
-/* Coding-system actually used in the latest I/O. */
-extern Lisp_Object Vlast_coding_system_used;
-/* Coding-system to use with system messages (e.g. strerror). */
-extern Lisp_Object Vlocale_coding_system;
-
-/* If non-zero, process buffer inherits the coding system used to decode
- the subprocess output. */
-extern int inherit_process_coding_system;
-
/* Coding system to be used to encode text for terminal display when
terminal coding system is nil. */
extern struct coding_system safe_terminal_coding;
-/* Default coding systems used for process I/O. */
-extern Lisp_Object Vdefault_process_coding_system;
-
-/* Char table for translating Quail and self-inserting input. */
-extern Lisp_Object Vtranslation_table_for_input;
-
-/* Function to call to force a user to force select a propert coding
- system. */
-extern Lisp_Object Vselect_safe_coding_system_function;
-
-/* If nonzero, on writing a file, Vselect_safe_coding_system_function
- is called even if Vcoding_system_for_write is non-nil. */
-extern int coding_system_require_warning;
-
-/* Coding system for file names, or nil if none. */
-extern Lisp_Object Vfile_name_coding_system;
-
-/* Coding system for file names used only when
- Vfile_name_coding_system is nil. */
-extern Lisp_Object Vdefault_file_name_coding_system;
-
#endif
/* Error signaled when there's a problem with detecting coding system */
@@ -831,5 +790,3 @@ extern int emacs_mule_string_char (unsigned char *);
#endif /* EMACS_CODING_H */
-/* arch-tag: 2bc3b4fa-6870-4f64-8135-b962b2d290e4
- (do not change this comment) */
diff --git a/src/commands.h b/src/commands.h
index 6b22da8ba1..925e0ba1b8 100644
--- a/src/commands.h
+++ b/src/commands.h
@@ -1,6 +1,5 @@
/* Definitions needed by most editing commands.
- Copyright (C) 1985, 1994, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1994, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -28,42 +27,6 @@ extern Lisp_Object global_map;
extern Lisp_Object meta_map;
extern Lisp_Object control_x_map;
-extern Lisp_Object Vminibuffer_local_map;
-
-extern Lisp_Object Vminibuffer_local_ns_map;
-
-/* keymap used for minibuffers when doing completion */
-extern Lisp_Object Vminibuffer_local_completion_map;
-
-/* keymap used for minibuffers when doing completion in filenames*/
-extern Lisp_Object Vminibuffer_local_filename_completion_map;
-
-/* keymap used for minibuffers when doing completion and require a match */
-extern Lisp_Object Vminibuffer_local_must_match_map;
-
-/* keymap used for minibuffers when doing completion in filenames
- and require a match */
-extern Lisp_Object Vminibuffer_local_filename_must_match_map;
-
-/* Last input event read as a command. */
-extern Lisp_Object last_command_event;
-
-/* Last input event read as a command, not counting menus
- reached by the mouse. */
-extern Lisp_Object last_nonmenu_event;
-
-/* List of command events to be re-read, or Qnil. */
-extern Lisp_Object Vunread_command_events;
-
-/* Command char event to be re-read, or -1 if none.
- Setting this is obsolete, but some things should still check it. */
-extern EMACS_INT unread_command_char;
-
-/* The command being executed by the command loop.
- Commands may set this, and the value set will be copied into
- current_kboard->Vlast_command instead of the actual command. */
-extern Lisp_Object Vthis_command;
-
/* If not Qnil, this is a switch-frame event which we decided to put
off until the end of a key sequence. This should be read as the
next command input, after any Vunread_command_events.
@@ -85,8 +48,6 @@ extern Lisp_Object last_point_position_window;
/* Nonzero means ^G can quit instantly */
extern int immediate_quit;
-extern Lisp_Object Vexecuting_kbd_macro;
-
/* Nonzero if input is coming from the keyboard */
#define INTERACTIVE (NILP (Vexecuting_kbd_macro) && !noninteractive)
@@ -95,10 +56,3 @@ extern Lisp_Object Vexecuting_kbd_macro;
extern int update_mode_lines;
-/* Nonzero means reading single-character input with prompt
- so put cursor on minibuffer after the prompt. */
-
-extern int cursor_in_echo_area;
-
-/* arch-tag: 4f7ca0b7-6a56-4b20-8bf5-b67a99921d1d
- (do not change this comment) */
diff --git a/src/composite.c b/src/composite.c
index be9aafbeac..58bc68597c 100644
--- a/src/composite.c
+++ b/src/composite.c
@@ -1,7 +1,6 @@
/* Composite sequence support.
- Copyright (C) 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
- Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H14PRO021
Copyright (C) 2003, 2006
@@ -153,15 +152,8 @@ int n_compositions;
COMPOSITION-ID. */
Lisp_Object composition_hash_table;
-/* Function to call to adjust composition. */
-Lisp_Object Vcompose_chars_after_function;
-
Lisp_Object Qauto_composed;
-Lisp_Object Vauto_composition_mode;
-Lisp_Object Vauto_composition_function;
Lisp_Object Qauto_composition_function;
-Lisp_Object Vcomposition_function_table;
-
/* Maximum number of characters to look back for
auto-compositions. */
#define MAX_AUTO_COMPOSITION_LOOKBACK 3
@@ -1964,7 +1956,7 @@ syms_of_composite (void)
Vtext_property_default_nonsticky
= Fcons (Fcons (Qcomposition, Qt), Vtext_property_default_nonsticky);
- DEFVAR_LISP ("compose-chars-after-function", &Vcompose_chars_after_function,
+ DEFVAR_LISP ("compose-chars-after-function", Vcompose_chars_after_function,
doc: /* Function to adjust composition of buffer text.
This function is called with three arguments: FROM, TO, and OBJECT.
@@ -1984,12 +1976,12 @@ The default value is the function `compose-chars-after'. */);
Qauto_composition_function = intern_c_string ("auto-composition-function");
staticpro (&Qauto_composition_function);
- DEFVAR_LISP ("auto-composition-mode", &Vauto_composition_mode,
+ DEFVAR_LISP ("auto-composition-mode", Vauto_composition_mode,
doc: /* Non-nil if Auto-Composition mode is enabled.
Use the command `auto-composition-mode' to change this variable. */);
Vauto_composition_mode = Qt;
- DEFVAR_LISP ("auto-composition-function", &Vauto_composition_function,
+ DEFVAR_LISP ("auto-composition-function", Vauto_composition_function,
doc: /* Function to call to compose characters automatically.
This function is called from the display routine with four arguments:
FROM, TO, WINDOW, and STRING.
@@ -2002,7 +1994,7 @@ string. In this case, the function must compose characters in the
string. */);
Vauto_composition_function = Qnil;
- DEFVAR_LISP ("composition-function-table", &Vcomposition_function_table,
+ DEFVAR_LISP ("composition-function-table", Vcomposition_function_table,
doc: /* Char-table of functions for automatic character composition.
For each character that has to be composed automatically with
preceding and/or following characters, this char-table contains
@@ -2041,5 +2033,3 @@ See also the documentation of `auto-composition-mode'. */);
defsubr (&Scomposition_get_gstring);
}
-/* arch-tag: 79cefaf8-ca48-4eed-97e5-d5afb290d272
- (do not change this comment) */
diff --git a/src/composite.h b/src/composite.h
index 5c8ade3959..b8943fbfdc 100644
--- a/src/composite.h
+++ b/src/composite.h
@@ -1,7 +1,6 @@
/* Header for composite sequence handler.
- Copyright (C) 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H14PRO021
Copyright (C) 2003, 2006
@@ -208,10 +207,7 @@ extern int n_compositions;
extern Lisp_Object Qcomposition;
extern Lisp_Object composition_hash_table;
extern Lisp_Object Qauto_composed;
-extern Lisp_Object Vauto_composition_function;
extern Lisp_Object Qauto_composition_function;
-extern Lisp_Object Vcomposition_function_table;
-
extern int get_composition_id (EMACS_INT, EMACS_INT, EMACS_INT,
Lisp_Object, Lisp_Object);
extern int find_composition (EMACS_INT, EMACS_INT, EMACS_INT *, EMACS_INT *,
@@ -322,11 +318,7 @@ extern int composition_update_it (struct composition_it *,
extern EMACS_INT composition_adjust_point (EMACS_INT, EMACS_INT);
-EXFUN (Fcompose_region_internal, 4);
-EXFUN (Fcompose_string_internal, 5);
EXFUN (Fcomposition_get_gstring, 4);
#endif /* not EMACS_COMPOSITE_H */
-/* arch-tag: 59524d89-c645-47bd-b5e6-65e861690118
- (do not change this comment) */
diff --git a/src/config.in b/src/config.in
index 105f343870..48fc7a23d8 100644
--- a/src/config.in
+++ b/src/config.in
@@ -1,8 +1,9 @@
/* src/config.in. Generated from configure.in by autoheader. */
/* GNU Emacs site configuration template file.
- Copyright (C) 1988, 1993, 1994, 1999, 2000, 2001, 2002, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2011
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -30,9 +31,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define if building universal (internal helper macro) */
#undef AC_APPLE_UNIVERSAL_BUILD
-/* Define to 1 if the mktime function is broken. */
-#undef BROKEN_MKTIME
-
/* Define if Emacs cannot be dumped on your system. */
#undef CANNOT_DUMP
@@ -105,6 +103,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if ALSA is available. */
#undef HAVE_ALSA
+/* Define to 1 if GCC-style __attribute__ ((__aligned__ (expr))) works. */
+#undef HAVE_ATTRIBUTE_ALIGNED
+
+/* Define to 1 if strtold conforms to C99. */
+#undef HAVE_C99_STRTOLD
+
/* Define to 1 if you have the `cbrt' function. */
#undef HAVE_CBRT
@@ -132,6 +136,14 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the `dbus_watch_get_unix_fd' function. */
#undef HAVE_DBUS_WATCH_GET_UNIX_FD
+/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
+ */
+#undef HAVE_DECL_GETENV
+
+/* Define to 1 if you have the declaration of `localtime_r', and to 0 if you
+ don't. */
+#undef HAVE_DECL_LOCALTIME_R
+
/* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you
don't. */
#undef HAVE_DECL_SYS_SIGLIST
@@ -426,6 +438,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
+/* Define to 1 if you have the `localtime_r' function. */
+#undef HAVE_LOCALTIME_R
+
/* Define to 1 if you have the `logb' function. */
#undef HAVE_LOGB
@@ -494,9 +509,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the `mkstemp' function. */
#undef HAVE_MKSTEMP
-/* Define to 1 if you have the `mktime' function. */
-#undef HAVE_MKTIME
-
/* Define to 1 if you have a working `mmap' system call. */
#undef HAVE_MMAP
@@ -603,6 +615,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if `speed_t' is declared by <termios.h>. */
#undef HAVE_SPEED_T
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
@@ -618,9 +633,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the `strerror' function. */
#undef HAVE_STRERROR
-/* Define to 1 if you have the `strftime' function. */
-#undef HAVE_STRFTIME
-
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
@@ -717,7 +729,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if `struct timeval' is declared by <sys/time.h>. */
#undef HAVE_TIMEVAL
-/* Define to 1 if `tm_gmtoff' is member of `struct tm'. */
+/* Define if struct tm has the tm_gmtoff member. */
#undef HAVE_TM_GMTOFF
/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
@@ -758,6 +770,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the <vfork.h> header file. */
#undef HAVE_VFORK_H
+/* Define if you have the 'wchar_t' type. */
+#undef HAVE_WCHAR_T
+
/* Define if you have a window system. */
#undef HAVE_WINDOW_SYSTEM
@@ -816,6 +831,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you want to use the X window system. */
#undef HAVE_X_WINDOWS
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define to 1 if you have the `__builtin_unwind_init' function. */
+#undef HAVE___BUILTIN_UNWIND_INIT
+
/* Define to 1 if you have the `__executable_start' function. */
#undef HAVE___EXECUTABLE_START
@@ -859,6 +880,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you don't have struct exception in math.h. */
#undef NO_MATHERR
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
/* Define to 1 if `NSInteger' is defined. */
#undef NS_HAVE_NSINTEGER
@@ -871,6 +895,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define if the C compiler is the linker. */
#undef ORDINARY_LINK
+/* Name of package */
+#undef PACKAGE
+
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
@@ -954,28 +981,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if using the Motif X toolkit. */
#undef USE_MOTIF
-/* Enable extensions on AIX 3, Interix. */
-#ifndef _ALL_SOURCE
-# undef _ALL_SOURCE
-#endif
-/* Enable GNU extensions on systems that have them. */
-#ifndef _GNU_SOURCE
-# undef _GNU_SOURCE
-#endif
-/* Enable threading extensions on Solaris. */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# undef _POSIX_PTHREAD_SEMANTICS
-#endif
-/* Enable extensions on HP NonStop. */
-#ifndef _TANDEM_SOURCE
-# undef _TANDEM_SOURCE
-#endif
-/* Enable general extensions on Solaris. */
-#ifndef __EXTENSIONS__
-# undef __EXTENSIONS__
-#endif
-
-
/* Define to 1 if we should use toolkit scroll bars. */
#undef USE_TOOLKIT_SCROLL_BARS
@@ -985,6 +990,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if using an X toolkit. */
#undef USE_X_TOOLKIT
+/* Version number of package */
+#undef VERSION
+
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */
#if defined AC_APPLE_UNIVERSAL_BUILD
@@ -1023,6 +1031,31 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you need to in order for `stat' and other things to work. */
#undef _POSIX_SOURCE
+/* Define to 500 only on HP-UX. */
+#undef _XOPEN_SOURCE
+
+/* Enable extensions on AIX 3, Interix. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris. */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop. */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
/* Define to rpl_ if the getopt replacement functions and variables should be
used. */
#undef __GETOPT_PREFIX
@@ -1030,10 +1063,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define like PROTOTYPES; this can be used by system headers. */
#undef __PROTOTYPES
-/* Define to compiler's equivalent of C99 restrict keyword. Don't define if
- equivalent is `__restrict'. */
-#undef __restrict
-
/* Define to compiler's equivalent of C99 restrict keyword in array
declarations. Define as empty for no equivalent. */
#undef __restrict_arr
@@ -1047,18 +1076,64 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
+/* 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__.
+ __APPLE__ && __MACH__ test for MacOS X.
+ __APPLE_CC__ tests for the Apple compiler and its version.
+ __STDC_VERSION__ tests for the C99 mode. */
+#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
+# define __GNUC_STDC_INLINE__ 1
+#endif
+
/* Define to a type if <wchar.h> does not define. */
#undef mbstate_t
+/* Define to the name of the strftime replacement function. */
+#undef my_strftime
+
/* Define to `int' if <sys/types.h> does not define. */
#undef pid_t
+/* Define to the equivalent of the C99 'restrict' keyword, or to
+ nothing if this is not supported. Do not define if restrict is
+ supported directly. */
+#undef restrict
+/* Work around a bug in Sun C++: it does not support _Restrict or
+ __restrict__, even though the corresponding Sun C compiler ends up with
+ "#define restrict _Restrict" or "#define restrict __restrict__" in the
+ previous line. Perhaps some future version of Sun C++ will work with
+ restrict; if so, hopefully it defines __RESTRICT like Sun C does. */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+# define __restrict__
+#endif
+
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t
/* Define to any substitute for sys_siglist. */
#undef sys_siglist
+/* Define as a marker that can be attached to declarations that might not
+ be used. This helps to reduce warnings, such as from
+ GCC -Wunused-parameter. */
+#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _GL_UNUSED __attribute__ ((__unused__))
+#else
+# define _GL_UNUSED
+#endif
+/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name
+ is a misnomer outside of parameter lists. */
+#define _UNUSED_PARAMETER_ _GL_UNUSED
+
+
/* Define as `fork' if `vfork' does not work. */
#undef vfork
@@ -1123,13 +1198,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif
#endif
-/* Avoid link-time collision with system mktime if we will use our own. */
-#if ! HAVE_MKTIME || BROKEN_MKTIME
-#define mktime emacs_mktime
-#endif
-
-#define my_strftime nstrftime /* for strftime.c */
-
/* These default definitions are good for almost all machines.
The exceptions override them in m/MACHINE.h. */
diff --git a/src/data.c b/src/data.c
index 42d9e076e8..8b1f4a035b 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1,6 +1,5 @@
/* Primitive operations on Lisp data types for GNU Emacs Lisp interpreter.
- Copyright (C) 1985, 1986, 1988, 1993, 1994, 1995, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985-1986, 1988, 1993-1995, 1997-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -94,8 +93,6 @@ Lisp_Object Qinteractive_form;
static void swap_in_symval_forwarding (struct Lisp_Symbol *, struct Lisp_Buffer_Local_Value *);
-Lisp_Object Vmost_positive_fixnum, Vmost_negative_fixnum;
-
void
circular_list_error (Lisp_Object list)
@@ -2385,7 +2382,7 @@ NUMBER may be an integer or a floating point number. */)
if (FLOATP (number))
{
- char pigbuf[350]; /* see comments in float_to_string */
+ char pigbuf[FLOAT_TO_STRING_BUFSIZE];
float_to_string (pigbuf, XFLOAT_DATA (number));
return build_string (pigbuf);
@@ -3313,12 +3310,12 @@ syms_of_data (void)
XSYMBOL (Qwholenump)->function = XSYMBOL (Qnatnump)->function;
- DEFVAR_LISP ("most-positive-fixnum", &Vmost_positive_fixnum,
+ DEFVAR_LISP ("most-positive-fixnum", Vmost_positive_fixnum,
doc: /* The largest value that is representable in a Lisp integer. */);
Vmost_positive_fixnum = make_number (MOST_POSITIVE_FIXNUM);
XSYMBOL (intern_c_string ("most-positive-fixnum"))->constant = 1;
- DEFVAR_LISP ("most-negative-fixnum", &Vmost_negative_fixnum,
+ DEFVAR_LISP ("most-negative-fixnum", Vmost_negative_fixnum,
doc: /* The smallest value that is representable in a Lisp integer. */);
Vmost_negative_fixnum = make_number (MOST_NEGATIVE_FIXNUM);
XSYMBOL (intern_c_string ("most-negative-fixnum"))->constant = 1;
@@ -3351,5 +3348,3 @@ init_data (void)
#endif /* uts */
}
-/* arch-tag: 25879798-b84d-479a-9c89-7d148e2109f7
- (do not change this comment) */
diff --git a/src/dbusbind.c b/src/dbusbind.c
index 6ab976b58d..7e5104026c 100644
--- a/src/dbusbind.c
+++ b/src/dbusbind.c
@@ -1,5 +1,5 @@
/* Elisp bindings for D-Bus.
- Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2007-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -38,6 +38,7 @@ Lisp_Object Qdbus_call_method_asynchronously;
Lisp_Object Qdbus_method_return_internal;
Lisp_Object Qdbus_method_error_internal;
Lisp_Object Qdbus_send_signal;
+Lisp_Object Qdbus_register_service;
Lisp_Object Qdbus_register_signal;
Lisp_Object Qdbus_register_method;
@@ -50,6 +51,17 @@ Lisp_Object QCdbus_system_bus, QCdbus_session_bus;
/* Lisp symbol for method call timeout. */
Lisp_Object QCdbus_timeout;
+/* Lisp symbols for name request flags. */
+Lisp_Object QCdbus_request_name_allow_replacement;
+Lisp_Object QCdbus_request_name_replace_existing;
+Lisp_Object QCdbus_request_name_do_not_queue;
+
+/* Lisp symbols for name request replies. */
+Lisp_Object QCdbus_request_name_reply_primary_owner;
+Lisp_Object QCdbus_request_name_reply_in_queue;
+Lisp_Object QCdbus_request_name_reply_exists;
+Lisp_Object QCdbus_request_name_reply_already_owner;
+
/* Lisp symbols of D-Bus types. */
Lisp_Object QCdbus_type_byte, QCdbus_type_boolean;
Lisp_Object QCdbus_type_int16, QCdbus_type_uint16;
@@ -63,15 +75,6 @@ Lisp_Object QCdbus_type_unix_fd;
Lisp_Object QCdbus_type_array, QCdbus_type_variant;
Lisp_Object QCdbus_type_struct, QCdbus_type_dict_entry;
-/* Registered buses. */
-Lisp_Object Vdbus_registered_buses;
-
-/* Hash table which keeps function definitions. */
-Lisp_Object Vdbus_registered_objects_table;
-
-/* Whether to debug D-Bus. */
-Lisp_Object Vdbus_debug;
-
/* Whether we are reading a D-Bus event. */
int xd_in_read_queued_messages = 0;
@@ -1835,6 +1838,114 @@ xd_read_queued_messages (int fd, void *data, int for_read)
xd_in_read_queued_messages = 0;
}
+DEFUN ("dbus-register-service", Fdbus_register_service, Sdbus_register_service,
+ 2, MANY, 0,
+ doc: /* Register known name SERVICE on the D-Bus BUS.
+
+BUS is either a Lisp symbol, `:system' or `:session', or a string
+denoting the bus address.
+
+SERVICE is the D-Bus service name that should be registered. It must
+be a known name.
+
+FLAGS are keywords, which control how the service name is registered.
+The following keywords are recognized:
+
+`:allow-replacement': Allow another service to become the primary
+owner if requested.
+
+`:replace-existing': Request to replace the current primary owner.
+
+`:do-not-queue': If we can not become the primary owner do not place
+us in the queue.
+
+The function returns a keyword, indicating the result of the
+operation. One of the following keywords is returned:
+
+`:primary-owner': Service has become the primary owner of the
+requested name.
+
+`:in-queue': Service could not become the primary owner and has been
+placed in the queue.
+
+`:exists': Service is already in the queue.
+
+`:already-owner': Service is already the primary owner.
+
+Example:
+
+\(dbus-register-service :session dbus-service-emacs)
+
+ => :primary-owner.
+
+\(dbus-register-service
+ :session "org.freedesktop.TextEditor"
+ dbus-service-allow-replacement dbus-service-replace-existing)
+
+ => :already-owner.
+
+usage: (dbus-register-service BUS SERVICE &rest FLAGS) */)
+ (int nargs, register Lisp_Object *args)
+{
+ Lisp_Object bus, service;
+ struct gcpro gcpro1, gcpro2;
+ DBusConnection *connection;
+ unsigned int i;
+ unsigned int value;
+ unsigned int flags = 0;
+ int result;
+ DBusError derror;
+
+ bus = args[0];
+ service = args[1];
+
+ /* Check parameters. */
+ CHECK_STRING (service);
+
+ /* Process flags. */
+ for (i = 2; i < nargs; ++i) {
+ value = ((EQ (args[i], QCdbus_request_name_replace_existing))
+ ? DBUS_NAME_FLAG_REPLACE_EXISTING
+ : (EQ (args[i], QCdbus_request_name_allow_replacement))
+ ? DBUS_NAME_FLAG_ALLOW_REPLACEMENT
+ : (EQ (args[i], QCdbus_request_name_do_not_queue))
+ ? DBUS_NAME_FLAG_DO_NOT_QUEUE
+ : -1);
+ if (value == -1)
+ XD_SIGNAL2 (build_string ("Unrecognized name request flag"), args[i]);
+ flags |= value;
+ }
+
+ /* Open a connection to the bus. */
+ connection = xd_initialize (bus, TRUE);
+
+ /* Request the known name from the bus. */
+ dbus_error_init (&derror);
+ result = dbus_bus_request_name (connection, SDATA (service), flags,
+ &derror);
+ if (dbus_error_is_set (&derror))
+ XD_ERROR (derror);
+
+ /* Cleanup. */
+ dbus_error_free (&derror);
+
+ /* Return object. */
+ switch (result)
+ {
+ case DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER:
+ return QCdbus_request_name_reply_primary_owner;
+ case DBUS_REQUEST_NAME_REPLY_IN_QUEUE:
+ return QCdbus_request_name_reply_in_queue;
+ case DBUS_REQUEST_NAME_REPLY_EXISTS:
+ return QCdbus_request_name_reply_exists;
+ case DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER:
+ return QCdbus_request_name_reply_already_owner;
+ default:
+ /* This should not happen. */
+ XD_SIGNAL2 (build_string ("Could not register service"), service);
+ }
+}
+
DEFUN ("dbus-register-signal", Fdbus_register_signal, Sdbus_register_signal,
6, MANY, 0,
doc: /* Register for signal SIGNAL on the D-Bus BUS.
@@ -1983,26 +2094,36 @@ usage: (dbus-register-signal BUS SERVICE PATH INTERFACE SIGNAL HANDLER &rest ARG
}
DEFUN ("dbus-register-method", Fdbus_register_method, Sdbus_register_method,
- 6, 6, 0,
+ 6, 7, 0,
doc: /* Register for method METHOD on the D-Bus BUS.
BUS is either a Lisp symbol, `:system' or `:session', or a string
denoting the bus address.
SERVICE is the D-Bus service name of the D-Bus object METHOD is
-registered for. It must be a known name.
-
-PATH is the D-Bus object path SERVICE is registered. INTERFACE is the
-interface offered by SERVICE. It must provide METHOD. HANDLER is a
-Lisp function to be called when a method call is received. It must
-accept the input arguments of METHOD. The return value of HANDLER is
-used for composing the returning D-Bus message. */)
- (Lisp_Object bus, Lisp_Object service, Lisp_Object path, Lisp_Object interface, Lisp_Object method, Lisp_Object handler)
+registered for. It must be a known name (See discussion of
+DONT-REGISTER-SERVICE below).
+
+PATH is the D-Bus object path SERVICE is registered (See discussion of
+DONT-REGISTER-SERVICE below). INTERFACE is the interface offered by
+SERVICE. It must provide METHOD. HANDLER is a Lisp function to be
+called when a method call is received. It must accept the input
+arguments of METHOD. The return value of HANDLER is used for
+composing the returning D-Bus message.
+
+When DONT-REGISTER-SERVICE is non-nil, the known name SERVICE is not
+registered. This means that other D-Bus clients have no way of
+noticing the newly registered method. When interfaces are constructed
+incrementally by adding single methods or properties at a time,
+DONT-REGISTER-SERVICE can be use to prevent other clients from
+discovering the still incomplete interface.*/)
+ (Lisp_Object bus, Lisp_Object service, Lisp_Object path,
+ Lisp_Object interface, Lisp_Object method, Lisp_Object handler,
+ Lisp_Object dont_register_service)
{
Lisp_Object key, key1, value;
- DBusConnection *connection;
- int result;
DBusError derror;
+ Lisp_Object args[2] = { bus, service };
/* Check parameters. */
CHECK_STRING (service);
@@ -2014,15 +2135,9 @@ used for composing the returning D-Bus message. */)
/* TODO: We must check for a valid service name, otherwise there is
a segmentation fault. */
- /* Open a connection to the bus. */
- connection = xd_initialize (bus, TRUE);
-
- /* Request the known name from the bus. We can ignore the result,
- it is set to -1 if there is an error - kind of redundancy. */
- dbus_error_init (&derror);
- result = dbus_bus_request_name (connection, SDATA (service), 0, &derror);
- if (dbus_error_is_set (&derror))
- XD_ERROR (derror);
+ /* Request the name. */
+ if (NILP (dont_register_service))
+ Fdbus_register_service (2, args);
/* Create a hash table entry. We use nil for the unique name,
because the method might be called from anybody. */
@@ -2033,9 +2148,6 @@ used for composing the returning D-Bus message. */)
if (NILP (Fmember (key1, value)))
Fputhash (key, Fcons (key1, value), Vdbus_registered_objects_table);
- /* Cleanup. */
- dbus_error_free (&derror);
-
/* Return object. */
return list2 (key, list3 (service, path, handler));
}
@@ -2077,6 +2189,10 @@ syms_of_dbusbind (void)
staticpro (&Qdbus_send_signal);
defsubr (&Sdbus_send_signal);
+ Qdbus_register_service = intern_c_string ("dbus-register-service");
+ staticpro (&Qdbus_register_service);
+ defsubr (&Sdbus_register_service);
+
Qdbus_register_signal = intern_c_string ("dbus-register-signal");
staticpro (&Qdbus_register_signal);
defsubr (&Sdbus_register_signal);
@@ -2098,6 +2214,27 @@ syms_of_dbusbind (void)
QCdbus_session_bus = intern_c_string (":session");
staticpro (&QCdbus_session_bus);
+ QCdbus_request_name_allow_replacement = intern_c_string (":allow-replacement");
+ staticpro (&QCdbus_request_name_allow_replacement);
+
+ QCdbus_request_name_replace_existing = intern_c_string (":replace-existing");
+ staticpro (&QCdbus_request_name_replace_existing);
+
+ QCdbus_request_name_do_not_queue = intern_c_string (":do-not-queue");
+ staticpro (&QCdbus_request_name_do_not_queue);
+
+ QCdbus_request_name_reply_primary_owner = intern_c_string (":primary-owner");
+ staticpro (&QCdbus_request_name_reply_primary_owner);
+
+ QCdbus_request_name_reply_exists = intern_c_string (":exists");
+ staticpro (&QCdbus_request_name_reply_exists);
+
+ QCdbus_request_name_reply_in_queue = intern_c_string (":in-queue");
+ staticpro (&QCdbus_request_name_reply_in_queue);
+
+ QCdbus_request_name_reply_already_owner = intern_c_string (":already-owner");
+ staticpro (&QCdbus_request_name_reply_already_owner);
+
QCdbus_timeout = intern_c_string (":timeout");
staticpro (&QCdbus_timeout);
@@ -2155,12 +2292,12 @@ syms_of_dbusbind (void)
staticpro (&QCdbus_type_dict_entry);
DEFVAR_LISP ("dbus-registered-buses",
- &Vdbus_registered_buses,
+ Vdbus_registered_buses,
doc: /* List of D-Bus buses we are polling for messages. */);
Vdbus_registered_buses = Qnil;
DEFVAR_LISP ("dbus-registered-objects-table",
- &Vdbus_registered_objects_table,
+ Vdbus_registered_objects_table,
doc: /* Hash table of registered functions for D-Bus.
There are two different uses of the hash table: for accessing
@@ -2197,7 +2334,7 @@ be called when the D-Bus reply message arrives. */);
Vdbus_registered_objects_table = Fmake_hash_table (2, args);
}
- DEFVAR_LISP ("dbus-debug", &Vdbus_debug,
+ DEFVAR_LISP ("dbus-debug", Vdbus_debug,
doc: /* If non-nil, debug messages of D-Bus bindings are raised. */);
#ifdef DBUS_DEBUG
Vdbus_debug = Qt;
@@ -2214,5 +2351,3 @@ be called when the D-Bus reply message arrives. */);
#endif /* HAVE_DBUS */
-/* arch-tag: 0e828477-b571-4fe4-b559-5c9211bc14b8
- (do not change this comment) */
diff --git a/src/deps.mk b/src/deps.mk
index eebf98ec00..7f90688c03 100644
--- a/src/deps.mk
+++ b/src/deps.mk
@@ -1,7 +1,6 @@
### deps.mk --- src/Makefile fragment for GNU Emacs
-## Copyright (C) 1985, 1987, 1988, 1993, 1994, 1995, 1999, 2000, 2001, 2002,
-## 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+## Copyright (C) 1985, 1987-1988, 1993-1995, 1999-2011
## Free Software Foundation, Inc.
## This file is part of GNU Emacs.
@@ -138,7 +137,6 @@ md5.o: md5.c md5.h $(config_h)
minibuf.o: minibuf.c syntax.h frame.h window.h keyboard.h systime.h \
buffer.h commands.h character.h msdos.h $(INTERVALS_H) keymap.h \
termhooks.h lisp.h $(config_h) coding.h
-mktime.o: mktime.c $(config_h)
msdos.o: msdos.c msdos.h dosfns.h systime.h termhooks.h dispextern.h frame.h \
termopts.h termchar.h character.h coding.h ccl.h disptab.h window.h \
keyboard.h $(INTERVALS_H) buffer.h commands.h blockinput.h atimer.h \
@@ -170,7 +168,6 @@ search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \
$(INTERVALS_H) \
lisp.h $(config_h)
sound.o: sound.c dispextern.h syssignal.h lisp.h $(config_h) atimer.h systime.h
-strftime.o: strftime.c $(config_h)
syntax.o: syntax.c syntax.h buffer.h commands.h category.h character.h \
keymap.h regex.h $(INTERVALS_H) lisp.h $(config_h)
sysdep.o: sysdep.c syssignal.h systty.h systime.h syswait.h blockinput.h \
diff --git a/src/dired.c b/src/dired.c
index d72ea54a51..08aa230f65 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -1,6 +1,5 @@
/* Lisp functions for making directory listings.
- Copyright (C) 1985, 1986, 1993, 1994, 1999, 2000, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985-1986, 1993-1994, 1999-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -31,10 +30,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <grp.h>
#include <errno.h>
-
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
/* The d_nameln member of a struct dirent includes the '\0' character
on some systems, but not on others. What's worse, you can't tell
@@ -96,9 +92,6 @@ extern void filemodestring (struct stat *, char *);
#define lstat stat
#endif
-extern Lisp_Object Vw32_get_true_file_attributes;
-
-Lisp_Object Vcompletion_ignored_extensions;
Lisp_Object Qdirectory_files;
Lisp_Object Qdirectory_files_and_attributes;
Lisp_Object Qfile_name_completion;
@@ -183,7 +176,7 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full, Lisp_Object m
which might compile a new regexp until we're done with the loop! */
BLOCK_INPUT;
- d = opendir (SDATA (dirfilename));
+ d = opendir (SSDATA (dirfilename));
UNBLOCK_INPUT;
if (d == NULL)
report_file_error ("Opening directory", Fcons (directory, Qnil));
@@ -265,7 +258,7 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full, Lisp_Object m
QUIT;
if (NILP (match)
- || (0 <= re_search (bufp, SDATA (name), len, 0, len, 0)))
+ || (0 <= re_search (bufp, SSDATA (name), len, 0, len, 0)))
wanted = 1;
immediate_quit = 0;
@@ -505,7 +498,7 @@ file_name_completion (Lisp_Object file, Lisp_Object dirname, int all_flag, int v
encoded_dir = ENCODE_FILE (dirname);
BLOCK_INPUT;
- d = opendir (SDATA (Fdirectory_file_name (encoded_dir)));
+ d = opendir (SSDATA (Fdirectory_file_name (encoded_dir)));
UNBLOCK_INPUT;
if (!d)
report_file_error ("Opening directory", Fcons (dirname, Qnil));
@@ -977,7 +970,7 @@ so last access time will always be midnight of that day. */)
encoded = ENCODE_FILE (filename);
UNGCPRO;
- if (lstat (SDATA (encoded), &s) < 0)
+ if (lstat (SSDATA (encoded), &s) < 0)
return Qnil;
switch (s.st_mode & S_IFMT)
@@ -1098,7 +1091,7 @@ syms_of_dired (void)
defsubr (&Sfile_attributes);
defsubr (&Sfile_attributes_lessp);
- DEFVAR_LISP ("completion-ignored-extensions", &Vcompletion_ignored_extensions,
+ DEFVAR_LISP ("completion-ignored-extensions", Vcompletion_ignored_extensions,
doc: /* Completion ignores file names ending in any string in this list.
It does not ignore them if all possible completions end in one of
these strings or when displaying a list of completions.
@@ -1106,6 +1099,3 @@ It ignores directory names if they match any string in this list which
ends in a slash. */);
Vcompletion_ignored_extensions = Qnil;
}
-
-/* arch-tag: 1ac8deca-4d8f-4d41-ade9-089154d98c03
- (do not change this comment) */
diff --git a/src/dispextern.h b/src/dispextern.h
index 7426c03b5e..26e0bb61f1 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -1,7 +1,6 @@
/* Interface definitions for display code.
- Copyright (C) 1985, 1993, 1994, 1997, 1998, 1999, 2000, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+
+Copyright (C) 1985, 1993-1994, 1997-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -1145,12 +1144,6 @@ extern struct window *updated_window;
extern struct glyph_row *updated_row;
extern int updated_area;
-/* Non-zero means reading single-character input with prompt so put
- cursor on mini-buffer after the prompt. Positive means at end of
- text in echo area; negative means at beginning of line. */
-
-extern int cursor_in_echo_area;
-
/* Non-zero means last display completed. Zero means it was
preempted. */
@@ -2178,6 +2171,12 @@ struct it
OVERLAY_STRING_CHUNK_SIZE. */
int n_overlay_strings;
+ /* The charpos where n_overlay_strings was calculated. This should
+ be set at the same time as n_overlay_strings. It is needed
+ because we show before-strings at the start of invisible text;
+ see handle_invisible_prop in xdisp.c. */
+ int overlay_strings_charpos;
+
/* Vector of overlays to process. Overlay strings are processed
OVERLAY_STRING_CHUNK_SIZE at a time. */
#define OVERLAY_STRING_CHUNK_SIZE 16
@@ -2875,7 +2874,8 @@ enum tool_bar_item_idx
/* The binding. */
TOOL_BAR_ITEM_BINDING,
- /* Button type. One of nil, `:radio' or `:toggle'. */
+ /* Button type. One of nil (default button), t (a separator),
+ `:radio', or `:toggle'. The latter two currently do nothing. */
TOOL_BAR_ITEM_TYPE,
/* Help string. */
@@ -2907,23 +2907,8 @@ enum tool_bar_item_image
TOOL_BAR_IMAGE_DISABLED_DESELECTED
};
-/* Margin around tool-bar buttons in pixels. */
-
-extern Lisp_Object Vtool_bar_button_margin;
-
-/* Tool bar style */
-
-extern Lisp_Object Vtool_bar_style;
-
-/* Maximum number of characters a label can have to be shown. */
-
-extern EMACS_INT tool_bar_max_label_size;
#define DEFAULT_TOOL_BAR_LABEL_SIZE 14
-/* Thickness of relief to draw around tool-bar buttons. */
-
-extern EMACS_INT tool_bar_button_relief;
-
/* Default values of the above variables. */
#define DEFAULT_TOOL_BAR_BUTTON_MARGIN 4
@@ -3013,8 +2998,6 @@ int in_display_vector_p (struct it *);
int frame_mode_line_height (struct frame *);
void highlight_trailing_whitespace (struct frame *, struct glyph_row *);
extern Lisp_Object Qtool_bar;
-extern Lisp_Object Vshow_trailing_whitespace;
-extern int mode_line_in_non_selected_windows;
extern int redisplaying_p;
extern int help_echo_showing_p;
extern int current_mode_line_height, current_header_line_height;
@@ -3023,11 +3006,6 @@ extern Lisp_Object help_echo_object, previous_help_echo_string;
extern EMACS_INT help_echo_pos;
extern struct frame *last_mouse_frame;
extern int last_tool_bar_item;
-extern Lisp_Object Vmouse_autoselect_window;
-extern int unibyte_display_via_language_environment;
-extern EMACS_INT underline_minimum_offset;
-extern Lisp_Object Vglyphless_char_display;
-
extern void reseat_at_previous_visible_line_start (struct it *);
extern Lisp_Object lookup_glyphless_char_display (int, struct it *);
extern int calc_pixel_width_or_height (double *, struct it *, Lisp_Object,
@@ -3047,7 +3025,6 @@ extern void x_write_glyphs (struct glyph *, int);
extern void x_insert_glyphs (struct glyph *, int len);
extern void x_clear_end_of_line (int);
-extern int x_stretch_cursor_p;
extern struct cursor_pos output_cursor;
extern void x_fix_overlapping_area (struct window *, struct glyph_row *,
@@ -3098,9 +3075,6 @@ extern void tty_draw_row_with_mouse_face (struct window *, struct glyph_row *,
#define TRY_WINDOW_CHECK_MARGINS (1 << 0)
#define TRY_WINDOW_IGNORE_FONTS_CHANGE (1 << 1)
-/* Defined in fringe.c */
-
-extern Lisp_Object Voverflow_newline_into_fringe;
int lookup_fringe_bitmap (Lisp_Object);
void draw_fringe_bitmap (struct window *, struct glyph_row *, int);
void draw_row_fringe_bitmaps (struct window *, struct glyph_row *);
@@ -3124,7 +3098,7 @@ extern int x_create_bitmap_from_data (struct frame *, char *,
unsigned int, unsigned int);
extern int x_create_bitmap_from_file (struct frame *, Lisp_Object);
#if defined (HAVE_XPM) && defined (HAVE_X_WINDOWS)
-extern int x_create_bitmap_from_xpm_data (struct frame *f, char **bits);
+extern int x_create_bitmap_from_xpm_data (struct frame *f, const char **bits);
#endif
#ifndef x_destroy_bitmap
extern void x_destroy_bitmap (struct frame *, int);
@@ -3206,8 +3180,6 @@ extern Lisp_Object Qforeground_color, Qbackground_color;
extern Lisp_Object Qframe_set_background_mode;
extern char unspecified_fg[], unspecified_bg[];
-extern Lisp_Object Vface_remapping_alist;
-
/* Defined in xfns.c */
#ifdef HAVE_X_WINDOWS
@@ -3224,12 +3196,10 @@ void x_implicitly_set_name (struct frame *, Lisp_Object, Lisp_Object);
extern Lisp_Object tip_frame;
extern Window tip_window;
-EXFUN (Fx_show_tip, 6);
EXFUN (Fx_hide_tip, 0);
extern void start_hourglass (void);
extern void cancel_hourglass (void);
extern int hourglass_started (void);
-extern int display_hourglass_p;
extern int hourglass_shown_p;
struct atimer; /* Defined in atimer.h. */
/* If non-null, an asynchronous timer that, when it expires, displays
@@ -3265,11 +3235,6 @@ extern void hide_hourglass (void);
int popup_activated (void);
-/* Defined in dispnew.c */
-
-extern int inverse_video;
-extern int required_matrix_width (struct window *);
-extern int required_matrix_height (struct window *);
extern Lisp_Object buffer_posn_from_coords (struct window *,
int *, int *,
struct display_pos *,
@@ -3287,7 +3252,6 @@ extern void redraw_frame (struct frame *);
extern void redraw_garbaged_frames (void);
extern void cancel_line (int, struct frame *);
extern void init_desired_glyphs (struct frame *);
-extern int scroll_frame_lines (struct frame *, int, int, int, int);
extern int update_frame (struct frame *, int, int);
extern int scrolling (struct frame *);
extern void bitch_at_user (void);
@@ -3309,7 +3273,6 @@ void increment_row_positions (struct glyph_row *, EMACS_INT, EMACS_INT);
void enable_glyph_matrix_rows (struct glyph_matrix *, int, int, int);
void clear_glyph_row (struct glyph_row *);
void prepare_desired_row (struct glyph_row *);
-int line_hash_code (struct glyph_row *);
void set_window_update_flags (struct window *, int);
void update_single_window (struct window *, int);
void do_pending_window_change (int);
@@ -3386,9 +3349,6 @@ enum resource_types
extern Lisp_Object x_get_arg (Display_Info *, Lisp_Object,
Lisp_Object, const char *, const char *class,
enum resource_types);
-extern Lisp_Object x_frame_get_arg (struct frame *, Lisp_Object,
- Lisp_Object, const char *, const char *,
- enum resource_types);
extern Lisp_Object x_frame_get_and_record_arg (struct frame *, Lisp_Object,
Lisp_Object,
const char *, const char *,
@@ -3402,5 +3362,3 @@ extern Lisp_Object x_default_parameter (struct frame *, Lisp_Object,
#endif /* not DISPEXTERN_H_INCLUDED */
-/* arch-tag: c65c475f-1c1e-4534-8795-990b8509fd65
- (do not change this comment) */
diff --git a/src/dispnew.c b/src/dispnew.c
index 5d4ce01253..1aef70f1a5 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -1,7 +1,5 @@
/* Updating of data structures for redisplay.
- Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995,
- 1997, 1998, 1999, 2000, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985-1988, 1993-1995, 1997-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -23,10 +21,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <stdio.h>
#include <ctype.h>
#include <setjmp.h>
-
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#include "lisp.h"
#include "termchar.h"
@@ -121,6 +116,8 @@ static unsigned line_draw_cost (struct glyph_matrix *, int);
static void update_frame_line (struct frame *, int);
static struct dim allocate_matrices_for_frame_redisplay
(Lisp_Object, int, int, int, int *);
+static int required_matrix_height (struct window *);
+static int required_matrix_width (struct window *);
static void allocate_matrices_for_window_redisplay (struct window *);
static int realloc_glyph_pool (struct glyph_pool *, struct dim);
static void adjust_frame_glyphs (struct frame *);
@@ -167,22 +164,10 @@ static int update_window_tree (struct window *, int);
static int update_window (struct window *, int);
static int update_frame_1 (struct frame *, int, int);
static void set_window_cursor_after_update (struct window *);
-static int row_equal_p (struct window *, struct glyph_row *,
- struct glyph_row *, int);
static void adjust_frame_glyphs_for_window_redisplay (struct frame *);
static void adjust_frame_glyphs_for_frame_redisplay (struct frame *);
-static void reverse_rows (struct glyph_matrix *, int, int);
-static int margin_glyphs_to_reserve (struct window *, int, Lisp_Object);
-static void sync_window_with_frame_matrix_rows (struct window *);
-struct window *frame_row_to_window (struct window *, int);
-/* Non-zero means don't pause redisplay for pending input. (This is
- for debugging and for a future implementation of EDT-like
- scrolling. */
-
-int redisplay_dont_pause;
-
/* Define PERIODIC_PREEMPTION_CHECKING to 1, if micro-second timers
are supported, so we can check for input during redisplay at
regular intervals. */
@@ -194,10 +179,6 @@ int redisplay_dont_pause;
#if PERIODIC_PREEMPTION_CHECKING
-/* If a number (float), check for user input every N seconds. */
-
-Lisp_Object Vredisplay_preemption_period;
-
/* Redisplay preemption timers. */
static EMACS_TIME preemption_period;
@@ -214,49 +195,6 @@ int frame_garbaged;
int display_completed;
-/* Lisp variable visible-bell; enables use of screen-flash instead of
- audible bell. */
-
-int visible_bell;
-
-/* Invert the color of the whole frame, at a low level. */
-
-int inverse_video;
-
-/* Line speed of the terminal. */
-
-EMACS_INT baud_rate;
-
-/* Either nil or a symbol naming the window system under which Emacs
- creates the first frame. */
-
-Lisp_Object Vinitial_window_system;
-
-/* Version number of X windows: 10, 11 or nil. */
-
-Lisp_Object Vwindow_system_version;
-
-/* Vector of glyph definitions. Indexed by glyph number, the contents
- are a string which is how to output the glyph.
-
- If Vglyph_table is nil, a glyph is output by using its low 8 bits
- as a character code.
-
- This is an obsolete feature that is no longer used. The variable
- is retained for compatibility. */
-
-Lisp_Object Vglyph_table;
-
-/* Display table to use for vectors that don't specify their own. */
-
-Lisp_Object Vstandard_display_table;
-
-/* Nonzero means reading single-character input with prompt so put
- cursor on mini-buffer after the prompt. Positive means at end of
- text in echo area; negative means at beginning of line. */
-
-int cursor_in_echo_area;
-
Lisp_Object Qdisplay_table, Qredisplay_dont_pause;
@@ -358,10 +296,7 @@ static void add_window_display_history (struct window *, char *, int);
has been interrupted for pending input. */
static void
-add_window_display_history (w, msg, paused_p)
- struct window *w;
- char *msg;
- int paused_p;
+add_window_display_history (struct window *w, char *msg, int paused_p)
{
char *buf;
@@ -375,7 +310,7 @@ add_window_display_history (w, msg, paused_p)
w,
((BUFFERP (w->buffer)
&& STRINGP (XBUFFER (w->buffer)->name))
- ? (char *) SDATA (XBUFFER (w->buffer)->name)
+ ? SSDATA (XBUFFER (w->buffer)->name)
: "???"),
paused_p ? " ***paused***" : "");
strcat (buf, msg);
@@ -387,9 +322,7 @@ add_window_display_history (w, msg, paused_p)
pending input. */
static void
-add_frame_display_history (f, paused_p)
- struct frame *f;
- int paused_p;
+add_frame_display_history (struct frame *f, int paused_p)
{
char *buf;
@@ -1244,8 +1177,7 @@ assign_row (struct glyph_row *to, struct glyph_row *from)
#if GLYPH_DEBUG
static int
-glyph_row_slice_p (window_row, frame_row)
- struct glyph_row *window_row, *frame_row;
+glyph_row_slice_p (struct glyph_row *window_row, struct glyph_row *frame_row)
{
struct glyph *window_glyph_start = window_row->glyphs[0];
struct glyph *frame_glyph_start = frame_row->glyphs[0];
@@ -1264,9 +1196,8 @@ glyph_row_slice_p (window_row, frame_row)
in WINDOW_MATRIX is found satisfying the condition. */
static struct glyph_row *
-find_glyph_row_slice (window_matrix, frame_matrix, row)
- struct glyph_matrix *window_matrix, *frame_matrix;
- int row;
+find_glyph_row_slice (struct glyph_matrix *window_matrix,
+ struct glyph_matrix *frame_matrix, int row)
{
int i;
@@ -1303,7 +1234,7 @@ prepare_desired_row (struct glyph_row *row)
/* Return a hash code for glyph row ROW. */
-int
+static int
line_hash_code (struct glyph_row *row)
{
int hash = 0;
@@ -1570,7 +1501,7 @@ realloc_glyph_pool (struct glyph_pool *pool, struct dim matrix_dim)
*/
void
-flush_stdout ()
+flush_stdout (void)
{
fflush (stdout);
}
@@ -1582,8 +1513,7 @@ flush_stdout ()
MATRIX. */
void
-check_matrix_pointer_lossage (matrix)
- struct glyph_matrix *matrix;
+check_matrix_pointer_lossage (struct glyph_matrix *matrix)
{
int i, j;
@@ -1598,9 +1528,7 @@ check_matrix_pointer_lossage (matrix)
/* Get a pointer to glyph row ROW in MATRIX, with bounds checks. */
struct glyph_row *
-matrix_row (matrix, row)
- struct glyph_matrix *matrix;
- int row;
+matrix_row (struct glyph_matrix *matrix, int row)
{
xassert (matrix && matrix->rows);
xassert (row >= 0 && row < matrix->nrows);
@@ -1624,8 +1552,7 @@ matrix_row (matrix, row)
window W. */
static void
-check_matrix_invariants (w)
- struct window *w;
+check_matrix_invariants (struct window *w)
{
struct glyph_matrix *matrix = w->current_matrix;
int yb = window_text_bottom_y (w);
@@ -1893,7 +1820,7 @@ allocate_matrices_for_frame_redisplay (Lisp_Object window, int x, int y,
/* Return the required height of glyph matrices for window W. */
-int
+static int
required_matrix_height (struct window *w)
{
#ifdef HAVE_WINDOW_SYSTEM
@@ -1919,7 +1846,7 @@ required_matrix_height (struct window *w)
/* Return the required width of glyph matrices for window W. */
-int
+static int
required_matrix_width (struct window *w)
{
#ifdef HAVE_WINDOW_SYSTEM
@@ -3146,8 +3073,7 @@ mirror_line_dance (struct window *w, int unchanged_at_top, int nlines, int *copy
glyph pointers. */
void
-check_window_matrix_pointers (w)
- struct window *w;
+check_window_matrix_pointers (struct window *w)
{
while (w)
{
@@ -3173,8 +3099,8 @@ check_window_matrix_pointers (w)
corresponding frame row. If it isn't, abort. */
static void
-check_matrix_pointers (window_matrix, frame_matrix)
- struct glyph_matrix *window_matrix, *frame_matrix;
+check_matrix_pointers (struct glyph_matrix *window_matrix,
+ struct glyph_matrix *frame_matrix)
{
/* Row number in WINDOW_MATRIX. */
int i = 0;
@@ -3208,9 +3134,7 @@ check_matrix_pointers (window_matrix, frame_matrix)
vertical position relative to W's frame. */
static int
-window_to_frame_vpos (w, vpos)
- struct window *w;
- int vpos;
+window_to_frame_vpos (struct window *w, int vpos)
{
struct frame *f = XFRAME (w->frame);
@@ -3226,9 +3150,7 @@ window_to_frame_vpos (w, vpos)
a horizontal position relative to W's frame. */
static int
-window_to_frame_hpos (w, hpos)
- struct window *w;
- int hpos;
+window_to_frame_hpos (struct window *w, int hpos)
{
xassert (!FRAME_WINDOW_P (XFRAME (w->frame)));
hpos += WINDOW_LEFT_EDGE_COL (w);
@@ -3447,7 +3369,9 @@ update_frame (struct frame *f, int force_p, int inhibit_hairy_id_p)
#endif
}
+#if PERIODIC_PREEMPTION_CHECKING
do_pause:
+#endif
/* Reset flags indicating that a window should be updated. */
set_window_update_flags (root_window, 0);
@@ -4908,7 +4832,9 @@ update_frame_1 (struct frame *f, int force_p, int inhibit_id_p)
}
}
+#if !PERIODIC_PREEMPTION_CHECKING
do_pause:
+#endif
clear_desired_matrices (f);
return pause;
@@ -5923,7 +5849,7 @@ FILE = nil means just close any termscript file currently open. */)
if (! NILP (file))
{
file = Fexpand_file_name (file, Qnil);
- tty->termscript = fopen (SDATA (file), "w");
+ tty->termscript = fopen (SSDATA (file), "w");
if (tty->termscript == 0)
report_file_error ("Opening termscript", Fcons (file, Qnil));
}
@@ -6575,27 +6501,27 @@ syms_of_display (void)
Qredisplay_dont_pause = intern_c_string ("redisplay-dont-pause");
staticpro (&Qredisplay_dont_pause);
- DEFVAR_INT ("baud-rate", &baud_rate,
+ DEFVAR_INT ("baud-rate", baud_rate,
doc: /* *The output baud rate of the terminal.
On most systems, changing this value will affect the amount of padding
and the other strategic decisions made during redisplay. */);
- DEFVAR_BOOL ("inverse-video", &inverse_video,
+ DEFVAR_BOOL ("inverse-video", inverse_video,
doc: /* *Non-nil means invert the entire frame display.
This means everything is in inverse video which otherwise would not be. */);
- DEFVAR_BOOL ("visible-bell", &visible_bell,
+ DEFVAR_BOOL ("visible-bell", visible_bell,
doc: /* *Non-nil means try to flash the frame to represent a bell.
See also `ring-bell-function'. */);
- DEFVAR_BOOL ("no-redraw-on-reenter", &no_redraw_on_reenter,
+ DEFVAR_BOOL ("no-redraw-on-reenter", no_redraw_on_reenter,
doc: /* *Non-nil means no need to redraw entire frame after suspending.
A non-nil value is useful if the terminal can automatically preserve
Emacs's frame display when you reenter Emacs.
It is up to you to set this variable if your terminal can do that. */);
- DEFVAR_LISP ("initial-window-system", &Vinitial_window_system,
+ DEFVAR_LISP ("initial-window-system", Vinitial_window_system,
doc: /* Name of the window system that Emacs uses for the first frame.
The value is a symbol:
nil for a termcap frame (a character-only terminal),
@@ -6621,14 +6547,14 @@ Use of this variable as a boolean is deprecated. Instead,
use `display-graphic-p' or any of the other `display-*-p'
predicates which report frame's specific UI-related capabilities. */);
- DEFVAR_LISP ("window-system-version", &Vwindow_system_version,
+ DEFVAR_LISP ("window-system-version", Vwindow_system_version,
doc: /* The version number of the window system in use.
For X windows, this is 11. */);
- DEFVAR_BOOL ("cursor-in-echo-area", &cursor_in_echo_area,
+ DEFVAR_BOOL ("cursor-in-echo-area", cursor_in_echo_area,
doc: /* Non-nil means put cursor in minibuffer, at end of any message there. */);
- DEFVAR_LISP ("glyph-table", &Vglyph_table,
+ DEFVAR_LISP ("glyph-table", Vglyph_table,
doc: /* Table defining how to output a glyph code to the frame.
If not nil, this is a vector indexed by glyph code to define the glyph.
Each element can be:
@@ -6639,17 +6565,17 @@ Each element can be:
while outputting it. */);
Vglyph_table = Qnil;
- DEFVAR_LISP ("standard-display-table", &Vstandard_display_table,
+ DEFVAR_LISP ("standard-display-table", Vstandard_display_table,
doc: /* Display table to use for buffers that specify none.
See `buffer-display-table' for more information. */);
Vstandard_display_table = Qnil;
- DEFVAR_BOOL ("redisplay-dont-pause", &redisplay_dont_pause,
+ DEFVAR_BOOL ("redisplay-dont-pause", redisplay_dont_pause,
doc: /* *Non-nil means update isn't paused when input is detected. */);
redisplay_dont_pause = 0;
#if PERIODIC_PREEMPTION_CHECKING
- DEFVAR_LISP ("redisplay-preemption-period", &Vredisplay_preemption_period,
+ DEFVAR_LISP ("redisplay-preemption-period", Vredisplay_preemption_period,
doc: /* *The period in seconds between checking for input during redisplay.
If input is detected, redisplay is pre-empted, and the input is processed.
If nil, never pre-empt redisplay. */);
@@ -6664,6 +6590,3 @@ If nil, never pre-empt redisplay. */);
Vwindow_system_version = Qnil;
}
}
-
-/* arch-tag: 8d812b1f-04a2-4195-a9c4-381f8457a413
- (do not change this comment) */
diff --git a/src/disptab.h b/src/disptab.h
index 1a7f63050b..be611cb8a9 100644
--- a/src/disptab.h
+++ b/src/disptab.h
@@ -1,6 +1,5 @@
/* Things for GLYPHS and glyph tables.
- Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -49,16 +48,9 @@ extern struct Lisp_Char_Table *window_display_table (struct window *);
/* Defined in indent.c. */
extern struct Lisp_Char_Table *buffer_display_table (void);
-/* Display table to use for vectors that don't specify their own. */
-extern Lisp_Object Vstandard_display_table;
-
/* This is the `purpose' slot of a display table. */
extern Lisp_Object Qdisplay_table;
-/* Vector of GLYPH definitions. Indexed by GLYPH number,
- the contents are a string which is how to output the GLYPH. */
-extern Lisp_Object Vglyph_table;
-
/* Return the current length of the GLYPH table,
or 0 if the table isn't currently valid. */
#define GLYPH_TABLE_LENGTH \
@@ -104,5 +96,3 @@ extern Lisp_Object Vglyph_table;
#define SET_GLYPH_FROM_CHAR(glyph, c) \
SET_GLYPH (glyph, c, DEFAULT_FACE_ID)
-/* arch-tag: d7f792d2-f59c-4904-a91e-91522e3ab349
- (do not change this comment) */
diff --git a/src/doc.c b/src/doc.c
index 8ae152dca9..f9f67c0386 100644
--- a/src/doc.c
+++ b/src/doc.c
@@ -1,6 +1,5 @@
/* Record indices of function doc strings stored in a file.
- Copyright (C) 1985, 1986, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985-1986, 1993-1995, 1997-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -26,10 +25,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <ctype.h>
#include <setjmp.h>
#include <fcntl.h>
-
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#include "lisp.h"
#include "buffer.h"
@@ -38,13 +34,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "keymap.h"
#include "buildobj.h"
-Lisp_Object Vdoc_file_name;
-
Lisp_Object Qfunction_documentation;
-/* A list of files used to build this Emacs binary. */
-static Lisp_Object Vbuild_files;
-
extern Lisp_Object Qclosure;
/* Buffer used for reading from documentation file. */
static char *get_doc_string_buffer;
@@ -130,12 +121,12 @@ get_doc_string (Lisp_Object filepos, int unibyte, int definition)
if (minsize < 8)
minsize = 8;
name = (char *) alloca (minsize + SCHARS (file) + 8);
- strcpy (name, SDATA (Vdoc_directory));
- strcat (name, SDATA (file));
+ strcpy (name, SSDATA (Vdoc_directory));
+ strcat (name, SSDATA (file));
}
else
{
- name = (char *) SDATA (file);
+ name = SSDATA (file);
}
fd = emacs_open (name, O_RDONLY, 0);
@@ -147,7 +138,7 @@ get_doc_string (Lisp_Object filepos, int unibyte, int definition)
/* Preparing to dump; DOC file is probably not installed.
So check in ../etc. */
strcpy (name, "../etc/");
- strcat (name, SDATA (file));
+ strcat (name, SSDATA (file));
fd = emacs_open (name, O_RDONLY, 0);
}
@@ -578,9 +569,9 @@ the same file name is found in the `doc-directory'. */)
CHECK_STRING (Vdoc_directory);
name = (char *) alloca (SCHARS (filename)
+ SCHARS (Vdoc_directory) + 1);
- strcpy (name, SDATA (Vdoc_directory));
+ strcpy (name, SSDATA (Vdoc_directory));
}
- strcat (name, SDATA (filename)); /*** Add this line ***/
+ strcat (name, SSDATA (filename)); /*** Add this line ***/
/* Vbuild_files is nil when temacs is run, and non-nil after that. */
if (NILP (Vbuild_files))
@@ -909,7 +900,7 @@ a new string, without any text properties, is returned. */)
bufp += length_byte;
nchars += length;
/* Check STRING again in case gc relocated it. */
- strp = (unsigned char *) SDATA (string) + idx;
+ strp = SDATA (string) + idx;
}
}
else if (! multibyte) /* just copy other chars */
@@ -943,11 +934,11 @@ syms_of_doc (void)
Qfunction_documentation = intern_c_string ("function-documentation");
staticpro (&Qfunction_documentation);
- DEFVAR_LISP ("internal-doc-file-name", &Vdoc_file_name,
+ DEFVAR_LISP ("internal-doc-file-name", Vdoc_file_name,
doc: /* Name of file containing documentation strings of built-in symbols. */);
Vdoc_file_name = Qnil;
- DEFVAR_LISP ("build-files", &Vbuild_files,
+ DEFVAR_LISP ("build-files", Vbuild_files,
doc: /* A list of files used to build this Emacs binary. */);
Vbuild_files = Qnil;
@@ -956,6 +947,3 @@ syms_of_doc (void)
defsubr (&Ssnarf_documentation);
defsubr (&Ssubstitute_command_keys);
}
-
-/* arch-tag: 56281d4d-6949-43e2-be2e-f6517de744ba
- (do not change this comment) */
diff --git a/src/doprnt.c b/src/doprnt.c
index 02adc51f1e..979cce3c40 100644
--- a/src/doprnt.c
+++ b/src/doprnt.c
@@ -1,8 +1,7 @@
/* Output like sprintf to a buffer of specified size.
Also takes args differently: pass one pointer to an array of strings
in addition to the format string which is separate.
- Copyright (C) 1985, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -29,9 +28,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <float.h>
#endif
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#include "lisp.h"
@@ -281,5 +278,3 @@ doprnt (char *buffer, register int bufsize, const char *format,
return bufptr - buffer;
}
-/* arch-tag: aa0ab528-7c5f-4c73-894c-aa2526a1efb3
- (do not change this comment) */
diff --git a/src/dosfns.c b/src/dosfns.c
index fea70386f1..3b9b2dbc03 100644
--- a/src/dosfns.c
+++ b/src/dosfns.c
@@ -1,7 +1,6 @@
/* MS-DOS specific Lisp utilities. Coded by Manabu Higashida, 1991.
Major changes May-July 1993 Morten Welinder (only 10% original code left)
- Copyright (C) 1991, 1993, 1996, 1997, 1998, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1993, 1996-1998, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -227,12 +226,6 @@ Return nil if startup screen is not available. */)
return Qt;
}
-/* country info */
-EMACS_INT dos_country_code;
-EMACS_INT dos_codepage;
-EMACS_INT dos_timezone_offset;
-EMACS_INT dos_decimal_point;
-EMACS_INT dos_keyboard_layout;
unsigned char dos_country_info[DOS_COUNTRY_INFO];
static unsigned char usa_country_info[DOS_COUNTRY_INFO] = {
0, 0, /* date format */
@@ -249,17 +242,8 @@ static unsigned char usa_country_info[DOS_COUNTRY_INFO] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /* reserved */
};
-EMACS_INT dos_hyper_key;
-EMACS_INT dos_super_key;
-EMACS_INT dos_keypad_mode;
-
-Lisp_Object Vdos_version;
-Lisp_Object Vdos_display_scancodes;
-
#ifndef HAVE_X_WINDOWS
static unsigned dos_windows_version;
-Lisp_Object Vdos_windows_version;
-
char parent_vm_title[50]; /* Ralf Brown says 30 is enough */
int w95_set_virtual_machine_title (const char *);
@@ -697,11 +681,11 @@ syms_of_dosfns (void)
defsubr (&Smsdos_mouse_p);
#endif
- DEFVAR_INT ("dos-country-code", &dos_country_code,
+ DEFVAR_INT ("dos-country-code", dos_country_code,
doc: /* The country code returned by Dos when Emacs was started.
Usually this is the international telephone prefix. */);
- DEFVAR_INT ("dos-codepage", &dos_codepage,
+ DEFVAR_INT ("dos-codepage", dos_codepage,
doc: /* The codepage active when Emacs was started.
The following are known:
437 United States
@@ -713,19 +697,19 @@ The following are known:
863 Canada (French)
865 Norway/Denmark */);
- DEFVAR_INT ("dos-timezone-offset", &dos_timezone_offset,
+ DEFVAR_INT ("dos-timezone-offset", dos_timezone_offset,
doc: /* The current timezone offset to UTC in minutes.
Implicitly modified when the TZ variable is changed. */);
- DEFVAR_LISP ("dos-version", &Vdos_version,
+ DEFVAR_LISP ("dos-version", Vdos_version,
doc: /* The (MAJOR . MINOR) Dos version (subject to modification with setver). */);
#ifndef HAVE_X_WINDOWS
- DEFVAR_LISP ("dos-windows-version", &Vdos_windows_version,
+ DEFVAR_LISP ("dos-windows-version", Vdos_windows_version,
doc: /* The (MAJOR . MINOR) Windows version for DOS session on MS-Windows. */);
#endif
- DEFVAR_LISP ("dos-display-scancodes", &Vdos_display_scancodes,
+ DEFVAR_LISP ("dos-display-scancodes", Vdos_display_scancodes,
doc: /* *Controls whether DOS raw keyboard events are displayed as you type.
When non-nil, the keyboard scan-codes are displayed at the bottom right
corner of the display (typically at the end of the mode line).
@@ -733,17 +717,17 @@ The output format is: scan code:char code*modifiers. */);
Vdos_display_scancodes = Qnil;
- DEFVAR_INT ("dos-hyper-key", &dos_hyper_key,
+ DEFVAR_INT ("dos-hyper-key", dos_hyper_key,
doc: /* *If set to 1, use right ALT key as hyper key.
If set to 2, use right CTRL key as hyper key. */);
dos_hyper_key = 0;
- DEFVAR_INT ("dos-super-key", &dos_super_key,
+ DEFVAR_INT ("dos-super-key", dos_super_key,
doc: /* *If set to 1, use right ALT key as super key.
If set to 2, use right CTRL key as super key. */);
dos_super_key = 0;
- DEFVAR_INT ("dos-keypad-mode", &dos_keypad_mode,
+ DEFVAR_INT ("dos-keypad-mode", dos_keypad_mode,
doc: /* *Controls what key code is returned by a key in the numeric keypad.
The `numlock ON' action is only taken if no modifier keys are pressed.
The value is an integer constructed by adding the following bits together:
@@ -767,12 +751,12 @@ The value is an integer constructed by adding the following bits together:
0x200 ALT-0..ALT-9 in top-row produces shifted codes. */);
dos_keypad_mode = 0x75;
- DEFVAR_INT ("dos-keyboard-layout", &dos_keyboard_layout,
+ DEFVAR_INT ("dos-keyboard-layout", dos_keyboard_layout,
doc: /* Contains the country code for the current keyboard layout.
Use msdos-set-keyboard to select another keyboard layout. */);
dos_keyboard_layout = 1; /* US */
- DEFVAR_INT ("dos-decimal-point", &dos_decimal_point,
+ DEFVAR_INT ("dos-decimal-point", dos_decimal_point,
doc: /* The character to produce when kp-decimal key is pressed.
If non-zero, this variable contains the character to be returned when the
decimal point key in the numeric keypad is pressed when Num Lock is on.
@@ -781,5 +765,3 @@ If zero, the decimal point key returns the country code specific value. */);
}
#endif /* MSDOS */
-/* arch-tag: f5ea8847-a014-42c9-83f5-7738ad640b17
- (do not change this comment) */
diff --git a/src/dosfns.h b/src/dosfns.h
index d31401247b..89800598d2 100644
--- a/src/dosfns.h
+++ b/src/dosfns.h
@@ -2,8 +2,8 @@
Coded by Manabu Higashida, 1991.
Modified by Morten Welinder, 1993-1994.
- Copyright (C) 1991, 1994, 1995, 1997, 1999, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1991, 1994-1995, 1997, 1999, 2001-2011
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -20,28 +20,12 @@ 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/>. */
-extern EMACS_INT dos_hyper_key;
-extern EMACS_INT dos_super_key;
-extern EMACS_INT dos_decimal_point;
-extern EMACS_INT dos_keypad_mode;
-
-extern EMACS_INT dos_keyboard_layout;
-extern EMACS_INT dos_country_code;
-extern EMACS_INT dos_codepage;
-extern EMACS_INT dos_timezone_offset;
-
#define DOS_COUNTRY_INFO 34 /* no of bytes returned by dos int 38h */
extern unsigned char dos_country_info[DOS_COUNTRY_INFO];
-extern Lisp_Object Vdos_version;
-extern Lisp_Object Vdos_windows_version;
#ifndef HAVE_X_WINDOWS
-extern Lisp_Object Vdos_display_scancodes;
-
extern int msdos_stdcolor_idx (const char *);
extern Lisp_Object msdos_stdcolor_name (int);
extern void x_set_title (struct frame *, Lisp_Object);
#endif
-/* arch-tag: a83b8c4c-63c8-451e-9e94-bc72e3e2f8bc
- (do not change this comment) */
diff --git a/src/editfns.c b/src/editfns.c
index 4a9e2314a8..7364a5bcf1 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -1,8 +1,6 @@
/* Lisp functions pertaining to editing.
-Copyright (C) 1985, 1986, 1987, 1989, 1993, 1994, 1995, 1996, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985-1987, 1989, 1993-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -29,9 +27,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <pwd.h>
#endif
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#ifdef HAVE_SYS_UTSNAME_H
#include <sys/utsname.h>
@@ -49,6 +45,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif
#include <ctype.h>
+#include <strftime.h>
#include "intervals.h"
#include "buffer.h"
@@ -86,9 +83,6 @@ extern char **environ;
(1000 - TM_YEAR_BASE <= (tm_year) && (tm_year) <= 9999 - TM_YEAR_BASE)
#endif
-extern size_t emacs_strftimeu (char *, size_t, const char *,
- const struct tm *, int);
-
#ifdef WINDOWSNT
extern Lisp_Object w32_get_internal_run_time (void);
#endif
@@ -110,24 +104,9 @@ static Lisp_Object subst_char_in_region_unwind_1 (Lisp_Object);
static void transpose_markers (EMACS_INT, EMACS_INT, EMACS_INT, EMACS_INT,
EMACS_INT, EMACS_INT, EMACS_INT, EMACS_INT);
-Lisp_Object Vbuffer_access_fontify_functions;
Lisp_Object Qbuffer_access_fontify_functions;
-Lisp_Object Vbuffer_access_fontified_property;
-
Lisp_Object Fuser_full_name (Lisp_Object);
-/* Non-nil means don't stop at field boundary in text motion commands. */
-
-Lisp_Object Vinhibit_field_text_motion;
-
-/* Some static data, and a function to initialize it for each run */
-
-Lisp_Object Vsystem_name;
-Lisp_Object Vuser_real_login_name; /* login name of current user ID */
-Lisp_Object Vuser_full_name; /* full name of current user */
-Lisp_Object Vuser_login_name; /* user name from LOGNAME or USER */
-Lisp_Object Voperating_system_release; /* Operating System Release */
-
/* Symbol for the text property used to mark fields. */
Lisp_Object Qfield;
@@ -1364,7 +1343,7 @@ name, or nil if there is no such user. */)
else if (STRINGP (uid))
{
BLOCK_INPUT;
- pw = (struct passwd *) getpwnam (SDATA (uid));
+ pw = (struct passwd *) getpwnam (SSDATA (uid));
UNBLOCK_INPUT;
}
else
@@ -1391,7 +1370,7 @@ name, or nil if there is no such user. */)
r = (unsigned char *) alloca (strlen (p) + SCHARS (login) + 1);
memcpy (r, p, q - p);
r[q - p] = 0;
- strcat (r, SDATA (login));
+ strcat (r, SSDATA (login));
r[q - p] = UPCASE (r[q - p]);
strcat (r, q + 1);
full = build_string (r);
@@ -1414,7 +1393,7 @@ const char *
get_system_name (void)
{
if (STRINGP (Vsystem_name))
- return (const char *) SDATA (Vsystem_name);
+ return SSDATA (Vsystem_name);
else
return "";
}
@@ -1423,7 +1402,7 @@ const char *
get_operating_system_release (void)
{
if (STRINGP (Voperating_system_release))
- return (char *) SDATA (Voperating_system_release);
+ return SSDATA (Voperating_system_release);
else
return "";
}
@@ -1575,8 +1554,8 @@ or (if you need time as a string) `format-time-string'. */)
determine how many bytes would be written, use NULL for S and
((size_t) -1) for MAXSIZE.
- This function behaves like emacs_strftimeu, except it allows null
- bytes in FORMAT. */
+ This function behaves like nstrftime, except it allows null
+ bytes in FORMAT and it does not support nanoseconds. */
static size_t
emacs_memftimeu (char *s, size_t maxsize, const char *format, size_t format_len, const struct tm *tp, int ut)
{
@@ -1585,7 +1564,7 @@ emacs_memftimeu (char *s, size_t maxsize, const char *format, size_t format_len,
/* Loop through all the null-terminated strings in the format
argument. Normally there's just one null-terminated string, but
there can be arbitrarily many, concatenated together, if the
- format contains '\0' bytes. emacs_strftimeu stops at the first
+ format contains '\0' bytes. nstrftime stops at the first
'\0' byte so we must invoke it separately for each such string. */
for (;;)
{
@@ -1595,7 +1574,7 @@ emacs_memftimeu (char *s, size_t maxsize, const char *format, size_t format_len,
if (s)
s[0] = '\1';
- result = emacs_strftimeu (s, maxsize, format, tp, ut);
+ result = nstrftime (s, maxsize, format, tp, ut, 0);
if (s)
{
@@ -1699,7 +1678,7 @@ For example, to produce full ISO 8601 format, use "%Y-%m-%dT%T%z". */)
buf[0] = '\1';
BLOCK_INPUT;
- result = emacs_memftimeu (buf, size, SDATA (format_string),
+ result = emacs_memftimeu (buf, size, SSDATA (format_string),
SBYTES (format_string),
tm, ut);
UNBLOCK_INPUT;
@@ -1710,7 +1689,7 @@ For example, to produce full ISO 8601 format, use "%Y-%m-%dT%T%z". */)
/* If buffer was too small, make it bigger and try again. */
BLOCK_INPUT;
result = emacs_memftimeu (NULL, (size_t) -1,
- SDATA (format_string),
+ SSDATA (format_string),
SBYTES (format_string),
tm, ut);
UNBLOCK_INPUT;
@@ -1831,7 +1810,7 @@ usage: (encode-time SECOND MINUTE HOUR DAY MONTH YEAR &optional ZONE) */)
if (EQ (zone, Qt))
tzstring = "UTC0";
else if (STRINGP (zone))
- tzstring = (char *) SDATA (zone);
+ tzstring = SSDATA (zone);
else if (INTEGERP (zone))
{
int abszone = eabs (XINT (zone));
@@ -2020,7 +1999,7 @@ If TZ is t, use Universal Time. */)
else
{
CHECK_STRING (tz);
- tzstring = (char *) SDATA (tz);
+ tzstring = SSDATA (tz);
}
set_time_zone_rule (tzstring);
@@ -4557,12 +4536,12 @@ syms_of_editfns (void)
= intern_c_string ("buffer-access-fontify-functions");
staticpro (&Qbuffer_access_fontify_functions);
- DEFVAR_LISP ("inhibit-field-text-motion", &Vinhibit_field_text_motion,
+ DEFVAR_LISP ("inhibit-field-text-motion", Vinhibit_field_text_motion,
doc: /* Non-nil means text motion commands don't notice fields. */);
Vinhibit_field_text_motion = Qnil;
DEFVAR_LISP ("buffer-access-fontify-functions",
- &Vbuffer_access_fontify_functions,
+ Vbuffer_access_fontify_functions,
doc: /* List of functions called by `buffer-substring' to fontify if necessary.
Each function is called with two arguments which specify the range
of the buffer being accessed. */);
@@ -4580,25 +4559,25 @@ of the buffer being accessed. */);
}
DEFVAR_LISP ("buffer-access-fontified-property",
- &Vbuffer_access_fontified_property,
+ Vbuffer_access_fontified_property,
doc: /* Property which (if non-nil) indicates text has been fontified.
`buffer-substring' need not call the `buffer-access-fontify-functions'
functions if all the text being accessed has this property. */);
Vbuffer_access_fontified_property = Qnil;
- DEFVAR_LISP ("system-name", &Vsystem_name,
+ DEFVAR_LISP ("system-name", Vsystem_name,
doc: /* The host name of the machine Emacs is running on. */);
- DEFVAR_LISP ("user-full-name", &Vuser_full_name,
+ DEFVAR_LISP ("user-full-name", Vuser_full_name,
doc: /* The full name of the user logged in. */);
- DEFVAR_LISP ("user-login-name", &Vuser_login_name,
+ DEFVAR_LISP ("user-login-name", Vuser_login_name,
doc: /* The user's name, taken from environment variables if possible. */);
- DEFVAR_LISP ("user-real-login-name", &Vuser_real_login_name,
+ DEFVAR_LISP ("user-real-login-name", Vuser_real_login_name,
doc: /* The user's name, based upon the real uid only. */);
- DEFVAR_LISP ("operating-system-release", &Voperating_system_release,
+ DEFVAR_LISP ("operating-system-release", Voperating_system_release,
doc: /* The release of the operating system Emacs is running on. */);
defsubr (&Spropertize);
@@ -4694,6 +4673,3 @@ functions if all the text being accessed has this property. */);
defsubr (&Ssave_restriction);
defsubr (&Stranspose_regions);
}
-
-/* arch-tag: fc3827d8-6f60-4067-b11e-c3218031b018
- (do not change this comment) */
diff --git a/src/emacs-icon.h b/src/emacs-icon.h
index 82f0a6e701..292d1a023d 100644
--- a/src/emacs-icon.h
+++ b/src/emacs-icon.h
@@ -1,7 +1,7 @@
/* XPM */
/* Emacs icon
-Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2008-2011 Free Software Foundation, Inc.
Author: Kentaro Ohkouchi <[email protected]>
@@ -351,5 +351,3 @@ static unsigned char gnu_xbm_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00};
-/* arch-tag: b57020c7-c937-4d77-8ca6-3875178d9828
- (do not change this comment) */
diff --git a/src/emacs.c b/src/emacs.c
index 49716c7eb4..53786b0ada 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -1,7 +1,6 @@
/* Fully extensible Emacs, running on Unix, intended for GNU.
-Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1998, 1999,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+Copyright (C) 1985-1987, 1993-1995, 1997-1999, 2001-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -28,10 +27,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <sys/types.h>
#include <sys/file.h>
#include <setjmp.h>
-
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#ifdef WINDOWSNT
#include <fcntl.h>
@@ -92,10 +88,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif
#endif
-/* If you change the following line, remember to update
- msdos/mainmake.v2 which gleans the Emacs version from it! */
-static const char emacs_copyright[] = "Copyright (C) 2010 Free Software Foundation, Inc.";
-static const char emacs_version[] = "24.0.50";
+static const char emacs_version[] = VERSION;
+static const char emacs_copyright[] = "Copyright (C) 2011 Free Software Foundation, Inc.";
/* Make these values available in GDB, which doesn't see macros. */
@@ -122,32 +116,9 @@ EMACS_INT gdb_array_mark_flag EXTERNALLY_VISIBLE = ARRAY_MARK_FLAG;
least one symbol with that type, and then xbacktrace could fail. */
enum pvec_type gdb_pvec_type EXTERNALLY_VISIBLE = PVEC_TYPE_MASK;
-/* Command line args from shell, as list of strings. */
-Lisp_Object Vcommand_line_args;
-
-/* The name under which Emacs was invoked, with any leading directory
- names discarded. */
-Lisp_Object Vinvocation_name;
-
-/* The directory name from which Emacs was invoked. */
-Lisp_Object Vinvocation_directory;
-
-/* The directory name in which to find subdirs such as lisp and etc.
- nil means get them only from PATH_LOADSEARCH. */
-Lisp_Object Vinstallation_directory;
-
-/* The values of `current-time' before and after Emacs initialization. */
-Lisp_Object Vbefore_init_time, Vafter_init_time;
-
-/* Hook run by `kill-emacs' before it does really anything. */
-Lisp_Object Vkill_emacs_hook;
-
/* Empty lisp strings. To avoid having to build any others. */
Lisp_Object empty_unibyte_string, empty_multibyte_string;
-/* Search path separator. */
-Lisp_Object Vpath_separator;
-
/* Set nonzero after Emacs has started up the first time.
Prevents reinitialization of the Lisp world and keymaps
on subsequent starts. */
@@ -166,30 +137,9 @@ extern int malloc_set_state (void*);
int malloc_using_checking;
#endif
-/* Variable whose value is symbol giving operating system type. */
-Lisp_Object Vsystem_type;
-
-/* Variable whose value is string giving configuration built for. */
-Lisp_Object Vsystem_configuration;
-
-/* Variable whose value is string giving configuration options,
- for use when reporting bugs. */
-Lisp_Object Vsystem_configuration_options;
-
Lisp_Object Qfile_name_handler_alist;
-/* Current and previous system locales for messages and time. */
-Lisp_Object Vsystem_messages_locale;
-Lisp_Object Vprevious_system_messages_locale;
-Lisp_Object Vsystem_time_locale;
-Lisp_Object Vprevious_system_time_locale;
-
-/* Copyright and version info. The version number may be updated by
- Lisp code. */
-Lisp_Object Vemacs_copyright, Vemacs_version;
-
-/* Alist of external libraries and files implementing them. */
-Lisp_Object Vdynamic_library_alist;
+Lisp_Object Qrisky_local_variable;
/* If non-zero, emacs should not attempt to use a window-specific code,
but instead should use the virtual terminal under which it was started. */
@@ -222,14 +172,8 @@ static unsigned long heap_bss_diff;
int noninteractive;
-/* Value of Lisp variable `noninteractive'.
- Normally same as C variable `noninteractive'
- but nothing terrible happens if user sets this one. */
-
-int noninteractive1;
-
-/* Nonzero means Emacs was run in --quick mode. */
-int inhibit_x_resources;
+/* Nonzero means remove site-lisp directories from load-path. */
+int no_site_lisp;
/* Name for the server started by the daemon.*/
static char *daemon_name;
@@ -268,9 +212,11 @@ Initialization options:\n\
--no-init-file, -q load neither ~/.emacs nor default.el\n\
--no-shared-memory, -nl do not use shared memory\n\
--no-site-file do not load site-start.el\n\
+--no-site-lisp, -nsl do not add site-lisp directories to load-path\n\
--no-splash do not display a splash screen on startup\n\
--no-window-system, -nw do not communicate with X, ignoring $DISPLAY\n\
---quick, -Q equivalent to -q --no-site-file --no-splash\n\
+--quick, -Q equivalent to:\n\
+ -q --no-site-file --no-site-lisp --no-splash\n\
--script FILE run FILE as an Emacs Lisp script\n\
--terminal, -t DEVICE use DEVICE for terminal I/O\n\
--user, -u USER load ~USER/.emacs instead of your own\n\
@@ -807,8 +753,8 @@ main (int argc, char **argv)
}
else
{
- version = SDATA (tem);
- copyright = SDATA (tem2);
+ version = SSDATA (tem);
+ copyright = SSDATA (tem2);
}
}
else
@@ -963,13 +909,12 @@ main (int argc, char **argv)
emacs_close (0);
emacs_close (1);
result = emacs_open (term, O_RDWR, 0);
- if (result < 0)
+ if (result < 0 || dup (0) < 0)
{
char *errstring = strerror (errno);
fprintf (stderr, "%s: %s: %s\n", argv[0], term, errstring);
exit (1);
}
- dup (0);
if (! isatty (0))
{
fprintf (stderr, "%s: %s: not a tty\n", argv[0], term);
@@ -1341,6 +1286,9 @@ main (int argc, char **argv)
no_loadup
= argmatch (argv, argc, "-nl", "--no-loadup", 6, NULL, &skip_args);
+ no_site_lisp
+ = argmatch (argv, argc, "-nsl", "--no-site-lisp", 11, NULL, &skip_args);
+
#ifdef HAVE_NS
ns_alloc_autorelease_pool();
if (!noninteractive)
@@ -1409,9 +1357,27 @@ main (int argc, char **argv)
&& argv[count_before + 1][1] == '-')
argv[count_before + 1] = "-d";
+ if (! no_site_lisp)
+ {
+ if (argmatch (argv, argc, "-Q", "--quick", 3, NULL, &skip_args)
+ || argmatch (argv, argc, "-quick", 0, 2, NULL, &skip_args))
+ no_site_lisp = 1;
+ }
+
/* Don't actually discard this arg. */
skip_args = count_before;
}
+#else /* !HAVE_X_WINDOWS */
+ if (! no_site_lisp)
+ {
+ int count_before = skip_args;
+
+ if (argmatch (argv, argc, "-Q", "--quick", 3, NULL, &skip_args)
+ || argmatch (argv, argc, "-quick", 0, 2, NULL, &skip_args))
+ no_site_lisp = 1;
+
+ skip_args = count_before;
+ }
#endif
/* argmatch must not be used after here,
@@ -1743,10 +1709,12 @@ const struct standard_args standard_args[] =
{ "-daemon", "--daemon", 99, 0 },
{ "-help", "--help", 90, 0 },
{ "-nl", "--no-loadup", 70, 0 },
+ { "-nsl", "--no-site-lisp", 65, 0 },
/* -d must come last before the options handled in startup.el. */
{ "-d", "--display", 60, 1 },
{ "-display", 0, 60, 1 },
/* Now for the options handled in `command-line' (startup.el). */
+ /* (Note that to imply -nsl, -Q is partially handled here.) */
{ "-Q", "--quick", 55, 0 },
{ "-quick", 0, 55, 0 },
{ "-q", "--no-init-file", 50, 0 },
@@ -2018,7 +1986,7 @@ all of which are called before Emacs is actually killed. */)
kill it because we are exiting Emacs deliberately (not crashing).
Do it after shut_down_emacs, which does an auto-save. */
if (STRINGP (Vauto_save_list_file_name))
- unlink (SDATA (Vauto_save_list_file_name));
+ unlink (SSDATA (Vauto_save_list_file_name));
exit (INTEGERP (arg) ? XINT (arg) : EXIT_SUCCESS);
}
@@ -2199,7 +2167,7 @@ You must run Emacs in batch mode in order to dump it. */)
#ifdef USE_MMAP_FOR_BUFFERS
mmap_set_vars (0);
#endif
- unexec (SDATA (filename), !NILP (symfile) ? SDATA (symfile) : 0);
+ unexec (SSDATA (filename), !NILP (symfile) ? SSDATA (symfile) : 0);
#ifdef USE_MMAP_FOR_BUFFERS
mmap_set_vars (1);
#endif
@@ -2233,7 +2201,7 @@ synchronize_locale (int category, Lisp_Object *plocale, Lisp_Object desired_loca
{
*plocale = desired_locale;
setlocale (category, (STRINGP (desired_locale)
- ? (char *) SDATA (desired_locale)
+ ? SSDATA (desired_locale)
: ""));
}
}
@@ -2379,6 +2347,8 @@ syms_of_emacs (void)
{
Qfile_name_handler_alist = intern_c_string ("file-name-handler-alist");
staticpro (&Qfile_name_handler_alist);
+ Qrisky_local_variable = intern_c_string ("risky-local-variable");
+ staticpro (&Qrisky_local_variable);
#ifndef CANNOT_DUMP
defsubr (&Sdump_emacs);
@@ -2391,11 +2361,11 @@ syms_of_emacs (void)
defsubr (&Sdaemonp);
defsubr (&Sdaemon_initialized);
- DEFVAR_LISP ("command-line-args", &Vcommand_line_args,
+ DEFVAR_LISP ("command-line-args", Vcommand_line_args,
doc: /* Args passed by shell to Emacs, as a list of strings.
Many arguments are deleted from the list as they are processed. */);
- DEFVAR_LISP ("system-type", &Vsystem_type,
+ DEFVAR_LISP ("system-type", Vsystem_type,
doc: /* The value is a symbol indicating the type of operating system you are using.
Special values:
`gnu' compiled for a GNU Hurd system.
@@ -2410,20 +2380,20 @@ hpux, irix, usg-unix-v) indicates some sort of Unix system. */);
Vsystem_type = intern_c_string (SYSTEM_TYPE);
/* Above values are from SYSTEM_TYPE in src/s/*.h. */
- DEFVAR_LISP ("system-configuration", &Vsystem_configuration,
+ DEFVAR_LISP ("system-configuration", Vsystem_configuration,
doc: /* Value is string indicating configuration Emacs was built for.
On MS-Windows, the value reflects the OS flavor and version on which
Emacs is running. */);
Vsystem_configuration = build_string (EMACS_CONFIGURATION);
- DEFVAR_LISP ("system-configuration-options", &Vsystem_configuration_options,
+ DEFVAR_LISP ("system-configuration-options", Vsystem_configuration_options,
doc: /* String containing the configuration options Emacs was built with. */);
Vsystem_configuration_options = build_string (EMACS_CONFIG_OPTIONS);
- DEFVAR_BOOL ("noninteractive", &noninteractive1,
+ DEFVAR_BOOL ("noninteractive", noninteractive1,
doc: /* Non-nil means Emacs is running without interactive terminal. */);
- DEFVAR_LISP ("kill-emacs-hook", &Vkill_emacs_hook,
+ DEFVAR_LISP ("kill-emacs-hook", Vkill_emacs_hook,
doc: /* Hook to be run when `kill-emacs' is called.
Since `kill-emacs' may be invoked when the terminal is disconnected (or
in other similar situations), functions placed on this hook should not
@@ -2434,7 +2404,7 @@ Before Emacs 24.1, the hook was not run in batch mode, i.e., if
`noninteractive' was non-nil. */);
Vkill_emacs_hook = Qnil;
- DEFVAR_LISP ("path-separator", &Vpath_separator,
+ DEFVAR_LISP ("path-separator", Vpath_separator,
doc: /* String containing the character that separates directories in
search paths, such as PATH and other similar environment variables. */);
{
@@ -2442,60 +2412,60 @@ search paths, such as PATH and other similar environment variables. */);
Vpath_separator = make_string (&c, 1);
}
- DEFVAR_LISP ("invocation-name", &Vinvocation_name,
+ DEFVAR_LISP ("invocation-name", Vinvocation_name,
doc: /* The program name that was used to run Emacs.
Any directory names are omitted. */);
- DEFVAR_LISP ("invocation-directory", &Vinvocation_directory,
+ DEFVAR_LISP ("invocation-directory", Vinvocation_directory,
doc: /* The directory in which the Emacs executable was found, to run it.
The value is nil if that directory's name is not known. */);
- DEFVAR_LISP ("installation-directory", &Vinstallation_directory,
+ DEFVAR_LISP ("installation-directory", Vinstallation_directory,
doc: /* A directory within which to look for the `lib-src' and `etc' directories.
This is non-nil when we can't find those directories in their standard
installed locations, but we can find them near where the Emacs executable
was found. */);
Vinstallation_directory = Qnil;
- DEFVAR_LISP ("system-messages-locale", &Vsystem_messages_locale,
+ DEFVAR_LISP ("system-messages-locale", Vsystem_messages_locale,
doc: /* System locale for messages. */);
Vsystem_messages_locale = Qnil;
DEFVAR_LISP ("previous-system-messages-locale",
- &Vprevious_system_messages_locale,
+ Vprevious_system_messages_locale,
doc: /* Most recently used system locale for messages. */);
Vprevious_system_messages_locale = Qnil;
- DEFVAR_LISP ("system-time-locale", &Vsystem_time_locale,
+ DEFVAR_LISP ("system-time-locale", Vsystem_time_locale,
doc: /* System locale for time. */);
Vsystem_time_locale = Qnil;
- DEFVAR_LISP ("previous-system-time-locale", &Vprevious_system_time_locale,
+ DEFVAR_LISP ("previous-system-time-locale", Vprevious_system_time_locale,
doc: /* Most recently used system locale for time. */);
Vprevious_system_time_locale = Qnil;
- DEFVAR_LISP ("before-init-time", &Vbefore_init_time,
+ DEFVAR_LISP ("before-init-time", Vbefore_init_time,
doc: /* Value of `current-time' before Emacs begins initialization. */);
Vbefore_init_time = Qnil;
- DEFVAR_LISP ("after-init-time", &Vafter_init_time,
+ DEFVAR_LISP ("after-init-time", Vafter_init_time,
doc: /* Value of `current-time' after loading the init files.
This is nil during initialization. */);
Vafter_init_time = Qnil;
- DEFVAR_BOOL ("inhibit-x-resources", &inhibit_x_resources,
+ DEFVAR_BOOL ("inhibit-x-resources", inhibit_x_resources,
doc: /* If non-nil, X resources, Windows Registry settings, and NS defaults are not used. */);
inhibit_x_resources = 0;
- DEFVAR_LISP ("emacs-copyright", &Vemacs_copyright,
+ DEFVAR_LISP ("emacs-copyright", Vemacs_copyright,
doc: /* Short copyright string for this version of Emacs. */);
Vemacs_copyright = build_string (emacs_copyright);
- DEFVAR_LISP ("emacs-version", &Vemacs_version,
+ DEFVAR_LISP ("emacs-version", Vemacs_version,
doc: /* Version numbers of this version of Emacs. */);
Vemacs_version = build_string (emacs_version);
- DEFVAR_LISP ("dynamic-library-alist", &Vdynamic_library_alist,
+ DEFVAR_LISP ("dynamic-library-alist", Vdynamic_library_alist,
doc: /* Alist of dynamic libraries vs external files implementing them.
Each element is a list (LIBRARY FILE...), where the car is a symbol
representing a supported external library, and the rest are strings giving
@@ -2516,4 +2486,3 @@ libraries; only those already known by Emacs will be loaded. */);
/* Make sure IS_DAEMON starts up as false. */
daemon_pipe[1] = 0;
}
-
diff --git a/src/epaths.in b/src/epaths.in
index 0795d196cf..54131f0e17 100644
--- a/src/epaths.in
+++ b/src/epaths.in
@@ -1,6 +1,7 @@
/* Hey Emacs, this is -*- C -*- code! */
-/* Copyright (C) 1993, 1995, 1997, 1999, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+/*
+Copyright (C) 1993, 1995, 1997, 1999, 2001-2011
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -59,5 +60,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Where Emacs should look for the application default file. */
#define PATH_X_DEFAULTS "/usr/lib/X11/%L/%T/%N%C%S:/usr/lib/X11/%l/%T/%N%C%S:/usr/lib/X11/%T/%N%C%S:/usr/lib/X11/%L/%T/%N%S:/usr/lib/X11/%l/%T/%N%S:/usr/lib/X11/%T/%N%S"
-/* arch-tag: d30686c4-629c-4666-9499-beaa69f1641e
- (do not change this comment) */
diff --git a/src/eval.c b/src/eval.c
index 36acca01c8..e8b4ae1aba 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1,7 +1,5 @@
/* Evaluator for GNU Emacs Lisp interpreter.
- Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1985-1987, 1993-1995, 1999-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -58,7 +56,7 @@ int gcpro_level;
#endif
Lisp_Object Qautoload, Qmacro, Qexit, Qinteractive, Qcommandp, Qdefun;
-Lisp_Object Qinhibit_quit, Vinhibit_quit, Vquit_flag;
+Lisp_Object Qinhibit_quit;
Lisp_Object Qand_rest, Qand_optional;
Lisp_Object Qdebug_on_error;
Lisp_Object Qdeclare;
@@ -102,56 +100,10 @@ struct specbinding *specpdl;
struct specbinding *specpdl_ptr;
-/* Maximum size allowed for specpdl allocation */
-
-EMACS_INT max_specpdl_size;
-
/* Depth in Lisp evaluations and function calls. */
EMACS_INT lisp_eval_depth;
-/* Maximum allowed depth in Lisp evaluations and function calls. */
-
-EMACS_INT max_lisp_eval_depth;
-
-/* Nonzero means enter debugger before next function call */
-
-int debug_on_next_call;
-
-/* Non-zero means debugger may continue. This is zero when the
- debugger is called during redisplay, where it might not be safe to
- continue the interrupted redisplay. */
-
-int debugger_may_continue;
-
-/* List of conditions (non-nil atom means all) which cause a backtrace
- if an error is handled by the command loop's error handler. */
-
-Lisp_Object Vstack_trace_on_error;
-
-/* List of conditions (non-nil atom means all) which enter the debugger
- if an error is handled by the command loop's error handler. */
-
-Lisp_Object Vdebug_on_error;
-
-/* List of conditions and regexps specifying error messages which
- do not enter the debugger even if Vdebug_on_error says they should. */
-
-Lisp_Object Vdebug_ignored_errors;
-
-/* Non-nil means call the debugger even if the error will be handled. */
-
-Lisp_Object Vdebug_on_signal;
-
-/* Hook for edebug to use. */
-
-Lisp_Object Vsignal_hook_function;
-
-/* Nonzero means enter debugger if a quit signal
- is handled by the command loop's error handler. */
-
-int debug_on_quit;
-
/* The value of num_nonmacro_input_events as of the last time we
started to enter the debugger. If we decide to enter the debugger
again when this is still equal to num_nonmacro_input_events, then we
@@ -161,8 +113,6 @@ int debug_on_quit;
int when_entered_debugger;
-Lisp_Object Vdebugger;
-
/* The function from which the last `signal' was called. Set in
Fsignal. */
@@ -174,13 +124,10 @@ Lisp_Object Vsignaling_function;
int handling_signal;
-/* Function to process declarations in defmacro forms. */
-
-Lisp_Object Vmacro_declaration_function;
-
static Lisp_Object apply_lambda (Lisp_Object fun, Lisp_Object args);
static Lisp_Object funcall_lambda (Lisp_Object, int, Lisp_Object *);
static void unwind_to_catch (struct catchtag *, Lisp_Object) NO_RETURN;
+static int interactive_p (int);
void
init_eval_once (void)
@@ -616,7 +563,7 @@ way to do this), or via (not (or executing-kbd-macro noninteractive)). */)
EXCLUDE_SUBRS_P non-zero means always return 0 if the function
called is a built-in. */
-int
+static int
interactive_p (int exclude_subrs_p)
{
struct backtrace *btp;
@@ -1706,6 +1653,8 @@ internal_condition_case_n (Lisp_Object (*bfun) (int, Lisp_Object*),
static Lisp_Object find_handler_clause (Lisp_Object, Lisp_Object,
Lisp_Object, Lisp_Object);
+static int maybe_call_debugger (Lisp_Object conditions, Lisp_Object sig,
+ Lisp_Object data);
DEFUN ("signal", Fsignal, Ssignal, 2, 2, 0,
doc: /* Signal an error. Args are ERROR-SYMBOL and associated DATA.
@@ -1726,10 +1675,12 @@ See also the function `condition-case'. */)
/* When memory is full, ERROR-SYMBOL is nil,
and DATA is (REAL-ERROR-SYMBOL . REAL-DATA).
That is a special case--don't do this in other situations. */
- register struct handler *allhandlers = handlerlist;
Lisp_Object conditions;
Lisp_Object string;
- Lisp_Object real_error_symbol;
+ Lisp_Object real_error_symbol
+ = (NILP (error_symbol) ? Fcar (data) : error_symbol);
+ register Lisp_Object clause = Qnil;
+ struct handler *h;
struct backtrace *bp;
immediate_quit = handling_signal = 0;
@@ -1737,11 +1688,6 @@ See also the function `condition-case'. */)
if (gc_in_progress || waiting_for_input)
abort ();
- if (NILP (error_symbol))
- real_error_symbol = Fcar (data);
- else
- real_error_symbol = error_symbol;
-
#if 0 /* rms: I don't know why this was here,
but it is surely wrong for an error that is handled. */
#ifdef HAVE_WINDOW_SYSTEM
@@ -1780,49 +1726,49 @@ See also the function `condition-case'. */)
Vsignaling_function = *bp->function;
}
- for (; handlerlist; handlerlist = handlerlist->next)
+ for (h = handlerlist; h; h = h->next)
{
- register Lisp_Object clause;
-
- clause = find_handler_clause (handlerlist->handler, conditions,
+ clause = find_handler_clause (h->handler, conditions,
error_symbol, data);
-
- if (EQ (clause, Qlambda))
- {
- /* We can't return values to code which signaled an error, but we
- can continue code which has signaled a quit. */
- if (EQ (real_error_symbol, Qquit))
- return Qnil;
- else
- error ("Cannot return from the debugger in an error");
- }
-
if (!NILP (clause))
- {
- Lisp_Object unwind_data;
- struct handler *h = handlerlist;
-
- handlerlist = allhandlers;
-
- if (NILP (error_symbol))
- unwind_data = data;
- else
- unwind_data = Fcons (error_symbol, data);
- h->chosen_clause = clause;
- unwind_to_catch (h->tag, unwind_data);
- }
+ break;
}
+
+ if (/* Don't run the debugger for a memory-full error.
+ (There is no room in memory to do that!) */
+ !NILP (error_symbol)
+ && (!NILP (Vdebug_on_signal)
+ /* If no handler is present now, try to run the debugger. */
+ || NILP (clause)
+ /* Special handler that means "print a message and run debugger
+ if requested". */
+ || EQ (h->handler, Qerror)))
+ {
+ int debugger_called
+ = maybe_call_debugger (conditions, error_symbol, data);
+ /* We can't return values to code which signaled an error, but we
+ can continue code which has signaled a quit. */
+ if (debugger_called && EQ (real_error_symbol, Qquit))
+ return Qnil;
+ }
- handlerlist = allhandlers;
- /* If no handler is present now, try to run the debugger,
- and if that fails, throw to top level. */
- find_handler_clause (Qerror, conditions, error_symbol, data);
- if (catchlist != 0)
- Fthrow (Qtop_level, Qt);
+ if (!NILP (clause))
+ {
+ Lisp_Object unwind_data
+ = (NILP (error_symbol) ? data : Fcons (error_symbol, data));
+
+ h->chosen_clause = clause;
+ unwind_to_catch (h->tag, unwind_data);
+ }
+ else
+ {
+ if (catchlist != 0)
+ Fthrow (Qtop_level, Qt);
+ }
if (! NILP (error_symbol))
data = Fcons (error_symbol, data);
-
+
string = Ferror_message_string (data);
fatal ("%s", SDATA (string), 0);
}
@@ -1997,63 +1943,24 @@ find_handler_clause (Lisp_Object handlers, Lisp_Object conditions,
Lisp_Object sig, Lisp_Object data)
{
register Lisp_Object h;
- register Lisp_Object tem;
- int debugger_called = 0;
- int debugger_considered = 0;
/* t is used by handlers for all conditions, set up by C code. */
if (EQ (handlers, Qt))
return Qt;
- /* Don't run the debugger for a memory-full error.
- (There is no room in memory to do that!) */
- if (NILP (sig))
- debugger_considered = 1;
-
/* error is used similarly, but means print an error message
and run the debugger if that is enabled. */
- if (EQ (handlers, Qerror)
- || !NILP (Vdebug_on_signal)) /* This says call debugger even if
- there is a handler. */
- {
- if (!NILP (sig) && wants_debugger (Vstack_trace_on_error, conditions))
- {
- max_lisp_eval_depth += 15;
- max_specpdl_size++;
- if (noninteractive)
- Fbacktrace ();
- else
- internal_with_output_to_temp_buffer
- ("*Backtrace*",
- (Lisp_Object (*) (Lisp_Object)) Fbacktrace,
- Qnil);
- max_specpdl_size--;
- max_lisp_eval_depth -= 15;
- }
-
- if (!debugger_considered)
- {
- debugger_considered = 1;
- debugger_called = maybe_call_debugger (conditions, sig, data);
- }
-
- /* If there is no handler, return saying whether we ran the debugger. */
- if (EQ (handlers, Qerror))
- {
- if (debugger_called)
- return Qlambda;
- return Qt;
- }
- }
+ if (EQ (handlers, Qerror))
+ return Qt;
- for (h = handlers; CONSP (h); h = Fcdr (h))
+ for (h = handlers; CONSP (h); h = XCDR (h))
{
- Lisp_Object handler, condit;
+ Lisp_Object handler = XCAR (h);
+ Lisp_Object condit, tem;
- handler = Fcar (h);
if (!CONSP (handler))
continue;
- condit = Fcar (handler);
+ condit = XCAR (handler);
/* Handle a single condition name in handler HANDLER. */
if (SYMBOLP (condit))
{
@@ -2067,15 +1974,9 @@ find_handler_clause (Lisp_Object handlers, Lisp_Object conditions,
Lisp_Object tail;
for (tail = condit; CONSP (tail); tail = XCDR (tail))
{
- tem = Fmemq (Fcar (tail), conditions);
+ tem = Fmemq (XCAR (tail), conditions);
if (!NILP (tem))
- {
- /* This handler is going to apply.
- Does it allow the debugger to run first? */
- if (! debugger_considered && !NILP (Fmemq (Qdebug, condit)))
- maybe_call_debugger (conditions, sig, data);
- return handler;
- }
+ return handler;
}
}
}
@@ -2092,7 +1993,6 @@ verror (const char *m, va_list ap)
EMACS_INT size = 200;
int mlen;
char *buffer = buf;
- char *args[3];
int allocated = 0;
Lisp_Object string;
@@ -2413,7 +2313,7 @@ eval_sub (Lisp_Object form)
(XSUBR (fun)->max_args >= 0 && XSUBR (fun)->max_args < XINT (numargs)))
xsignal2 (Qwrong_number_of_arguments, original_fun, numargs);
- if (XSUBR (fun)->max_args == UNEVALLED)
+ else if (XSUBR (fun)->max_args == UNEVALLED)
{
backtrace.evalargs = 0;
val = (XSUBR (fun)->function.aUNEVALLED) (args_left);
@@ -2450,14 +2350,14 @@ eval_sub (Lisp_Object form)
GCPRO3 (args_left, fun, fun);
gcpro3.var = argvals;
gcpro3.nvars = 0;
-
+
maxargs = XSUBR (fun)->max_args;
for (i = 0; i < maxargs; args_left = Fcdr (args_left))
{
argvals[i] = eval_sub (Fcar (args_left));
gcpro3.nvars = ++i;
}
-
+
UNGCPRO;
backtrace.args = argvals;
@@ -2466,42 +2366,44 @@ eval_sub (Lisp_Object form)
switch (i)
{
case 0:
- val = (XSUBR (fun)->function.a0) ();
+ val = (XSUBR (fun)->function.a0 ());
break;
case 1:
- val = (XSUBR (fun)->function.a1) (argvals[0]);
+ val = (XSUBR (fun)->function.a1 (argvals[0]));
break;
case 2:
- val = (XSUBR (fun)->function.a2) (argvals[0], argvals[1]);
+ val = (XSUBR (fun)->function.a2 (argvals[0], argvals[1]));
break;
case 3:
- val = (XSUBR (fun)->function.a3) (argvals[0], argvals[1],
- argvals[2]);
+ val = (XSUBR (fun)->function.a3
+ (argvals[0], argvals[1], argvals[2]));
break;
case 4:
- val = (XSUBR (fun)->function.a4) (argvals[0], argvals[1],
- argvals[2], argvals[3]);
+ val = (XSUBR (fun)->function.a4
+ (argvals[0], argvals[1], argvals[2], argvals[3]));
break;
case 5:
- val = (XSUBR (fun)->function.a5) (argvals[0], argvals[1], argvals[2],
- argvals[3], argvals[4]);
+ val = (XSUBR (fun)->function.a5
+ (argvals[0], argvals[1], argvals[2], argvals[3],
+ argvals[4]));
break;
case 6:
- val = (XSUBR (fun)->function.a6) (argvals[0], argvals[1], argvals[2],
- argvals[3], argvals[4], argvals[5]);
+ val = (XSUBR (fun)->function.a6
+ (argvals[0], argvals[1], argvals[2], argvals[3],
+ argvals[4], argvals[5]));
break;
case 7:
- val = (XSUBR (fun)->function.a7) (argvals[0], argvals[1], argvals[2],
- argvals[3], argvals[4], argvals[5],
- argvals[6]);
-
+ val = (XSUBR (fun)->function.a7
+ (argvals[0], argvals[1], argvals[2], argvals[3],
+ argvals[4], argvals[5], argvals[6]));
break;
- case 8:
- val = (XSUBR (fun)->function.a8) (argvals[0], argvals[1], argvals[2],
- argvals[3], argvals[4], argvals[5],
- argvals[6], argvals[7]);
+ case 8:
+ val = (XSUBR (fun)->function.a8
+ (argvals[0], argvals[1], argvals[2], argvals[3],
+ argvals[4], argvals[5], argvals[6], argvals[7]));
break;
+
default:
/* Someone has created a subr that takes more arguments than
is supported by this code. We need to either rewrite the
@@ -2806,53 +2708,6 @@ run_hook_with_args (int nargs, Lisp_Object *args, enum run_hooks_condition cond)
}
}
-/* Run a hook symbol ARGS[0], but use FUNLIST instead of the actual
- present value of that symbol.
- Call each element of FUNLIST,
- passing each of them the rest of ARGS.
- The caller (or its caller, etc) must gcpro all of ARGS,
- except that it isn't necessary to gcpro ARGS[0]. */
-
-Lisp_Object
-run_hook_list_with_args (Lisp_Object funlist, int nargs, Lisp_Object *args)
-{
- Lisp_Object sym;
- Lisp_Object val;
- Lisp_Object globals;
- struct gcpro gcpro1, gcpro2, gcpro3;
-
- sym = args[0];
- globals = Qnil;
- GCPRO3 (sym, val, globals);
-
- for (val = funlist; CONSP (val); val = XCDR (val))
- {
- if (EQ (XCAR (val), Qt))
- {
- /* t indicates this hook has a local binding;
- it means to run the global binding too. */
-
- for (globals = Fdefault_value (sym);
- CONSP (globals);
- globals = XCDR (globals))
- {
- args[0] = XCAR (globals);
- /* In a global value, t should not occur. If it does, we
- must ignore it to avoid an endless loop. */
- if (!EQ (args[0], Qt))
- Ffuncall (nargs, args);
- }
- }
- else
- {
- args[0] = XCAR (val);
- Ffuncall (nargs, args);
- }
- }
- UNGCPRO;
- return Qnil;
-}
-
/* Run the hook HOOK, giving each function the two args ARG1 and ARG2. */
void
@@ -3117,7 +2972,7 @@ usage: (funcall FUNCTION &rest ARGUMENTS) */)
xsignal2 (Qwrong_number_of_arguments, original_fun, lisp_numargs);
}
- if (XSUBR (fun)->max_args == UNEVALLED)
+ else if (XSUBR (fun)->max_args == UNEVALLED)
xsignal1 (Qinvalid_function, original_fun);
else if (XSUBR (fun)->max_args == MANY)
@@ -3136,44 +2991,46 @@ usage: (funcall FUNCTION &rest ARGUMENTS) */)
switch (XSUBR (fun)->max_args)
{
case 0:
- val = (XSUBR (fun)->function.a0) ();
+ val = (XSUBR (fun)->function.a0 ());
break;
case 1:
- val = (XSUBR (fun)->function.a1) (internal_args[0]);
+ val = (XSUBR (fun)->function.a1 (internal_args[0]));
break;
case 2:
- val = (XSUBR (fun)->function.a2) (internal_args[0], internal_args[1]);
+ val = (XSUBR (fun)->function.a2
+ (internal_args[0], internal_args[1]));
break;
case 3:
- val = (XSUBR (fun)->function.a3) (internal_args[0], internal_args[1],
- internal_args[2]);
+ val = (XSUBR (fun)->function.a3
+ (internal_args[0], internal_args[1], internal_args[2]));
break;
case 4:
- val = (XSUBR (fun)->function.a4) (internal_args[0], internal_args[1],
- internal_args[2], internal_args[3]);
+ val = (XSUBR (fun)->function.a4
+ (internal_args[0], internal_args[1], internal_args[2],
+ internal_args[3]));
break;
case 5:
- val = (XSUBR (fun)->function.a5) (internal_args[0], internal_args[1],
- internal_args[2], internal_args[3],
- internal_args[4]);
+ val = (XSUBR (fun)->function.a5
+ (internal_args[0], internal_args[1], internal_args[2],
+ internal_args[3], internal_args[4]));
break;
case 6:
- val = (XSUBR (fun)->function.a6) (internal_args[0], internal_args[1],
- internal_args[2], internal_args[3],
- internal_args[4], internal_args[5]);
+ val = (XSUBR (fun)->function.a6
+ (internal_args[0], internal_args[1], internal_args[2],
+ internal_args[3], internal_args[4], internal_args[5]));
break;
case 7:
- val = (XSUBR (fun)->function.a7) (internal_args[0], internal_args[1],
- internal_args[2], internal_args[3],
- internal_args[4], internal_args[5],
- internal_args[6]);
+ val = (XSUBR (fun)->function.a7
+ (internal_args[0], internal_args[1], internal_args[2],
+ internal_args[3], internal_args[4], internal_args[5],
+ internal_args[6]));
break;
case 8:
- val = (XSUBR (fun)->function.a8) (internal_args[0], internal_args[1],
- internal_args[2], internal_args[3],
- internal_args[4], internal_args[5],
- internal_args[6], internal_args[7]);
+ val = (XSUBR (fun)->function.a8
+ (internal_args[0], internal_args[1], internal_args[2],
+ internal_args[3], internal_args[4], internal_args[5],
+ internal_args[6], internal_args[7]));
break;
default:
@@ -3841,7 +3698,7 @@ mark_backtrace (void)
void
syms_of_eval (void)
{
- DEFVAR_INT ("max-specpdl-size", &max_specpdl_size,
+ DEFVAR_INT ("max-specpdl-size", max_specpdl_size,
doc: /* *Limit on number of Lisp variable bindings and `unwind-protect's.
If Lisp code tries to increase the total number past this amount,
an error is signaled.
@@ -3849,7 +3706,7 @@ You can safely use a value considerably larger than the default value,
if that proves inconveniently small. However, if you increase it too far,
Emacs could run out of memory trying to make the stack bigger. */);
- DEFVAR_INT ("max-lisp-eval-depth", &max_lisp_eval_depth,
+ DEFVAR_INT ("max-lisp-eval-depth", max_lisp_eval_depth,
doc: /* *Limit on depth in `eval', `apply' and `funcall' before error.
This limit serves to catch infinite recursions for you before they cause
@@ -3858,7 +3715,7 @@ You can safely make it considerably larger than its default value,
if that proves inconveniently small. However, if you increase it too far,
Emacs could overflow the real C stack, and crash. */);
- DEFVAR_LISP ("quit-flag", &Vquit_flag,
+ DEFVAR_LISP ("quit-flag", Vquit_flag,
doc: /* Non-nil causes `eval' to abort, unless `inhibit-quit' is non-nil.
If the value is t, that means do an ordinary quit.
If the value equals `throw-on-input', that means quit by throwing
@@ -3867,7 +3724,7 @@ Typing C-g sets `quit-flag' to t, regardless of `inhibit-quit',
but `inhibit-quit' non-nil prevents anything from taking notice of that. */);
Vquit_flag = Qnil;
- DEFVAR_LISP ("inhibit-quit", &Vinhibit_quit,
+ DEFVAR_LISP ("inhibit-quit", Vinhibit_quit,
doc: /* Non-nil inhibits C-g quitting from happening immediately.
Note that `quit-flag' will still be set by typing C-g,
so a quit will be signaled as soon as `inhibit-quit' is nil.
@@ -3919,15 +3776,7 @@ before making `inhibit-quit' nil. */);
Qdebug = intern_c_string ("debug");
staticpro (&Qdebug);
- DEFVAR_LISP ("stack-trace-on-error", &Vstack_trace_on_error,
- doc: /* *Non-nil means errors display a backtrace buffer.
-More precisely, this happens for any error that is handled
-by the editor command loop.
-If the value is a list, an error only means to display a backtrace
-if one of its condition symbols appears in the list. */);
- Vstack_trace_on_error = Qnil;
-
- DEFVAR_LISP ("debug-on-error", &Vdebug_on_error,
+ DEFVAR_LISP ("debug-on-error", Vdebug_on_error,
doc: /* *Non-nil means enter debugger if an error is signaled.
Does not apply to errors handled by `condition-case' or those
matched by `debug-ignored-errors'.
@@ -3939,7 +3788,7 @@ The command `toggle-debug-on-error' toggles this.
See also the variable `debug-on-quit'. */);
Vdebug_on_error = Qnil;
- DEFVAR_LISP ("debug-ignored-errors", &Vdebug_ignored_errors,
+ DEFVAR_LISP ("debug-ignored-errors", Vdebug_ignored_errors,
doc: /* *List of errors for which the debugger should not be called.
Each element may be a condition-name or a regexp that matches error messages.
If any element applies to a given error, that error skips the debugger
@@ -3948,21 +3797,21 @@ This overrides the variable `debug-on-error'.
It does not apply to errors handled by `condition-case'. */);
Vdebug_ignored_errors = Qnil;
- DEFVAR_BOOL ("debug-on-quit", &debug_on_quit,
+ DEFVAR_BOOL ("debug-on-quit", debug_on_quit,
doc: /* *Non-nil means enter debugger if quit is signaled (C-g, for example).
Does not apply if quit is handled by a `condition-case'. */);
debug_on_quit = 0;
- DEFVAR_BOOL ("debug-on-next-call", &debug_on_next_call,
+ DEFVAR_BOOL ("debug-on-next-call", debug_on_next_call,
doc: /* Non-nil means enter debugger before next `eval', `apply' or `funcall'. */);
- DEFVAR_BOOL ("debugger-may-continue", &debugger_may_continue,
+ DEFVAR_BOOL ("debugger-may-continue", debugger_may_continue,
doc: /* Non-nil means debugger may continue execution.
This is nil when the debugger is called under circumstances where it
might not be safe to continue. */);
debugger_may_continue = 1;
- DEFVAR_LISP ("debugger", &Vdebugger,
+ DEFVAR_LISP ("debugger", Vdebugger,
doc: /* Function to call to invoke debugger.
If due to frame exit, args are `exit' and the value being returned;
this function's value will be returned instead of that.
@@ -3971,19 +3820,19 @@ If due to `apply' or `funcall' entry, one arg, `lambda'.
If due to `eval' entry, one arg, t. */);
Vdebugger = Qnil;
- DEFVAR_LISP ("signal-hook-function", &Vsignal_hook_function,
+ DEFVAR_LISP ("signal-hook-function", Vsignal_hook_function,
doc: /* If non-nil, this is a function for `signal' to call.
It receives the same arguments that `signal' was given.
The Edebug package uses this to regain control. */);
Vsignal_hook_function = Qnil;
- DEFVAR_LISP ("debug-on-signal", &Vdebug_on_signal,
+ DEFVAR_LISP ("debug-on-signal", Vdebug_on_signal,
doc: /* *Non-nil means call the debugger regardless of condition handlers.
Note that `debug-on-error', `debug-on-quit' and friends
still determine whether to handle the particular condition. */);
Vdebug_on_signal = Qnil;
- DEFVAR_LISP ("macro-declaration-function", &Vmacro_declaration_function,
+ DEFVAR_LISP ("macro-declaration-function", Vmacro_declaration_function,
doc: /* Function to process declarations in a macro definition.
The function will be called with two args MACRO and DECL.
MACRO is the name of the macro being defined.
@@ -3994,12 +3843,15 @@ The value the function returns is not used. */);
Qinternal_interpreter_environment
= intern_c_string ("internal-interpreter-environment");
staticpro (&Qinternal_interpreter_environment);
+#if 0 /* Don't export this variable to Elisp, so noone can mess with it
+ (Just imagine if someone makes it buffer-local). */
DEFVAR_LISP ("internal-interpreter-environment",
&Vinternal_interpreter_environment,
doc: /* If non-nil, the current lexical environment of the lisp interpreter.
When lexical binding is not being used, this variable is nil.
A value of `(t)' indicates an empty environment, otherwise it is an
alist of active lexical bindings. */);
+#endif
Vinternal_interpreter_environment = Qnil;
Vrun_hooks = intern_c_string ("run-hooks");
@@ -4056,5 +3908,3 @@ alist of active lexical bindings. */);
defsubr (&Sfunctionp);
}
-/* arch-tag: 014a07aa-33ab-4a8f-a3d2-ee8a4a9ff7fb
- (do not change this comment) */
diff --git a/src/fileio.c b/src/fileio.c
index 886e5ebc41..3c61ee57bf 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1,8 +1,6 @@
/* File IO for GNU Emacs.
-Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1996, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985-1988, 1993-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -26,10 +24,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <sys/types.h>
#include <sys/stat.h>
#include <setjmp.h>
-
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#if !defined (S_ISLNK) && defined (S_IFLNK)
# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
@@ -125,17 +120,6 @@ int auto_save_error_occurred;
auto saving and recovering a file. */
Lisp_Object Qauto_save_coding;
-/* Coding system for file names, or nil if none. */
-Lisp_Object Vfile_name_coding_system;
-
-/* Coding system for file names used only when
- Vfile_name_coding_system is nil. */
-Lisp_Object Vdefault_file_name_coding_system;
-
-/* Alist of elements (REGEXP . HANDLER) for file names
- whose I/O is done with a special handler. */
-Lisp_Object Vfile_name_handler_alist;
-
/* Property name of a file name handler,
which gives a list of operations it handles.. */
Lisp_Object Qoperations;
@@ -143,47 +127,18 @@ Lisp_Object Qoperations;
/* Lisp functions for translating file formats */
Lisp_Object Qformat_decode, Qformat_annotate_function;
-/* Function to be called to decide a coding system of a reading file. */
-Lisp_Object Vset_auto_coding_function;
-
-/* Functions to be called to process text properties in inserted file. */
-Lisp_Object Vafter_insert_file_functions;
-
/* Lisp function for setting buffer-file-coding-system and the
multibyteness of the current buffer after inserting a file. */
Lisp_Object Qafter_insert_file_set_coding;
-/* Functions to be called to create text property annotations for file. */
-Lisp_Object Vwrite_region_annotate_functions;
Lisp_Object Qwrite_region_annotate_functions;
-Lisp_Object Vwrite_region_post_annotation_function;
-
-/* During build_annotations, each time an annotation function is called,
- this holds the annotations made by the previous functions. */
-Lisp_Object Vwrite_region_annotations_so_far;
-
/* Each time an annotation function changes the buffer, the new buffer
is added here. */
Lisp_Object Vwrite_region_annotation_buffers;
-/* File name in which we write a list of all our auto save files. */
-Lisp_Object Vauto_save_list_file_name;
-
-/* Whether or not files are auto-saved into themselves. */
-Lisp_Object Vauto_save_visited_file_name;
-
-/* Whether or not to continue auto-saving after a large deletion. */
-Lisp_Object Vauto_save_include_big_deletions;
-
#ifdef HAVE_FSYNC
-/* Nonzero means skip the call to fsync in Fwrite-region. */
-int write_region_inhibit_fsync;
#endif
-/* Non-zero means call move-file-to-trash in Fdelete_file or
- Fdelete_directory_internal. */
-int delete_by_moving_to_trash;
-
Lisp_Object Qdelete_by_moving_to_trash;
/* Lisp function for moving files to trash. */
@@ -196,19 +151,8 @@ Lisp_Object Qcopy_directory;
Lisp_Object Qdelete_directory;
#ifdef WINDOWSNT
-extern Lisp_Object Vw32_get_true_file_attributes;
#endif
-/* These variables describe handlers that have "already" had a chance
- to handle the current operation.
-
- Vinhibit_file_name_handlers is a list of file name handlers.
- Vinhibit_file_name_operation is the operation being handled.
- If we try to handle that operation, we ignore those handlers. */
-
-static Lisp_Object Vinhibit_file_name_handlers;
-static Lisp_Object Vinhibit_file_name_operation;
-
Lisp_Object Qfile_error, Qfile_already_exists, Qfile_date_error;
Lisp_Object Qexcl;
Lisp_Object Qfile_name_history;
@@ -248,7 +192,7 @@ report_file_error (const char *string, Lisp_Object data)
{
int c;
- str = (char *) SDATA (errstring);
+ str = SSDATA (errstring);
c = STRING_CHAR (str);
Faset (errstring, make_number (0), make_number (DOWNCASE (c)));
}
@@ -556,7 +500,7 @@ For a Unix-syntax file name, just appends a slash. */)
return call2 (handler, Qfile_name_as_directory, file);
buf = (char *) alloca (SBYTES (file) + 10);
- file_name_as_directory (buf, SDATA (file));
+ file_name_as_directory (buf, SSDATA (file));
return make_specified_string (buf, -1, strlen (buf),
STRING_MULTIBYTE (file));
}
@@ -615,7 +559,7 @@ In Unix-syntax, this function just removes the final slash. */)
return call2 (handler, Qdirectory_file_name, directory);
buf = (char *) alloca (SBYTES (directory) + 20);
- directory_file_name (SDATA (directory), buf);
+ directory_file_name (SSDATA (directory), buf);
return make_specified_string (buf, -1, strlen (buf),
STRING_MULTIBYTE (directory));
}
@@ -740,17 +684,13 @@ make_temp_name (Lisp_Object prefix, int base64_p)
as bad as (and in many cases worse than) throwing the
error, or to ignore the error, which will likely result
in looping through 225307 stat's, which is not only
- dog-slow, but also useless since it will fallback to
- the errow below, anyway. */
+ dog-slow, but also useless since eventually nil would
+ have to be returned anyway. */
report_file_error ("Cannot create temporary name for prefix",
Fcons (prefix, Qnil));
/* not reached */
}
}
-
- error ("Cannot create temporary name for prefix `%s'",
- SDATA (prefix));
- return Qnil;
}
@@ -782,10 +722,15 @@ DEFUN ("expand-file-name", Fexpand_file_name, Sexpand_file_name, 1, 2, 0,
Second arg DEFAULT-DIRECTORY is directory to start with if NAME is relative
\(does not start with slash or tilde); if DEFAULT-DIRECTORY is nil or missing,
the current buffer's value of `default-directory' is used.
+NAME should be a string that is a valid file name for the underlying
+filesystem.
File name components that are `.' are removed, and
so are file name components followed by `..', along with the `..' itself;
note that these simplifications are done without checking the resulting
file names in the file system.
+Multiple consecutive slashes are collapsed into a single slash,
+except at the beginning of the file name when they are significant (e.g.,
+UNC file names on MS-Windows.)
An initial `~/' expands to your home directory.
An initial `~USER/' expands to USER's home directory.
See also the function `substitute-in-file-name'.
@@ -793,7 +738,7 @@ See also the function `substitute-in-file-name'.
For technical reasons, this function can return correct but
non-intuitive results for the root directory; for instance,
\(expand-file-name ".." "/") returns "/..". For this reason, use
-(directory-file-name (file-name-directory dirname)) to traverse a
+\(directory-file-name (file-name-directory dirname)) to traverse a
filesystem tree, not (expand-file-name ".." dirname). */)
(Lisp_Object name, Lisp_Object default_directory)
{
@@ -990,7 +935,7 @@ filesystem tree, not (expand-file-name ".." dirname). */)
#ifdef WINDOWSNT
if (IS_DIRECTORY_SEP (nm[1]))
{
- if (strcmp (nm, SDATA (name)) != 0)
+ if (strcmp (nm, SSDATA (name)) != 0)
name = make_specified_string (nm, -1, strlen (nm), multibyte);
}
else
@@ -1006,7 +951,7 @@ filesystem tree, not (expand-file-name ".." dirname). */)
}
return name;
#else /* not DOS_NT */
- if (strcmp (nm, SDATA (name)) == 0)
+ if (strcmp (nm, SSDATA (name)) == 0)
return name;
return make_specified_string (nm, -1, strlen (nm), multibyte);
#endif /* not DOS_NT */
@@ -1740,13 +1685,13 @@ those `/' is discarded. */)
orig = make_unibyte_string (o, orig_length);
decoded = DECODE_FILE (orig);
decoded_length = SBYTES (decoded);
- strncpy (x, SDATA (decoded), decoded_length);
+ strncpy (x, SSDATA (decoded), decoded_length);
x += decoded_length;
/* If environment variable needed decoding, return value
needs to be multibyte. */
if (decoded_length != orig_length
- || strncmp (SDATA (decoded), o, orig_length))
+ || strncmp (SSDATA (decoded), o, orig_length))
multibyte = 1;
}
}
@@ -1816,7 +1761,7 @@ barf_or_query_if_file_exists (Lisp_Object absname, const unsigned char *querystr
/* stat is a good way to tell whether the file exists,
regardless of what access permissions it has. */
- if (lstat (SDATA (encoded_filename), &statbuf) >= 0)
+ if (lstat (SSDATA (encoded_filename), &statbuf) >= 0)
{
if (! interactive)
xsignal2 (Qfile_already_exists,
@@ -1914,7 +1859,7 @@ on the system, we copy the SELinux context of FILE to NEWNAME. */)
|| INTEGERP (ok_if_already_exists))
barf_or_query_if_file_exists (newname, "copy to it",
INTEGERP (ok_if_already_exists), &out_st, 0);
- else if (stat (SDATA (encoded_newname), &out_st) < 0)
+ else if (stat (SSDATA (encoded_newname), &out_st) < 0)
out_st.st_mode = 0;
#ifdef WINDOWSNT
@@ -1947,7 +1892,7 @@ on the system, we copy the SELinux context of FILE to NEWNAME. */)
}
#else /* not WINDOWSNT */
immediate_quit = 1;
- ifd = emacs_open (SDATA (encoded_file), O_RDONLY, 0);
+ ifd = emacs_open (SSDATA (encoded_file), O_RDONLY, 0);
immediate_quit = 0;
if (ifd < 0)
@@ -1997,7 +1942,7 @@ on the system, we copy the SELinux context of FILE to NEWNAME. */)
| (NILP (ok_if_already_exists) ? O_EXCL : 0),
S_IREAD | S_IWRITE);
#else /* not MSDOS */
- ofd = emacs_open (SDATA (encoded_newname),
+ ofd = emacs_open (SSDATA (encoded_newname),
O_WRONLY | O_TRUNC | O_CREAT
| (NILP (ok_if_already_exists) ? O_EXCL : 0),
0666);
@@ -2048,7 +1993,7 @@ on the system, we copy the SELinux context of FILE to NEWNAME. */)
EMACS_TIME atime, mtime;
EMACS_SET_SECS_USECS (atime, st.st_atime, 0);
EMACS_SET_SECS_USECS (mtime, st.st_mtime, 0);
- if (set_file_times (SDATA (encoded_newname),
+ if (set_file_times (SSDATA (encoded_newname),
atime, mtime))
xsignal2 (Qfile_date_error,
build_string ("Cannot set file date"), newname);
@@ -2164,7 +2109,7 @@ With a prefix argument, TRASH is nil. */)
encoded_file = ENCODE_FILE (filename);
- if (0 > unlink (SDATA (encoded_file)))
+ if (0 > unlink (SSDATA (encoded_file)))
report_file_error ("Removing old name", list1 (filename));
return Qnil;
}
@@ -2245,7 +2190,7 @@ This is what happens in interactive use with M-x. */)
|| INTEGERP (ok_if_already_exists))
barf_or_query_if_file_exists (newname, "rename to it",
INTEGERP (ok_if_already_exists), 0, 0);
- if (0 > rename (SDATA (encoded_file), SDATA (encoded_newname)))
+ if (0 > rename (SSDATA (encoded_file), SSDATA (encoded_newname)))
{
if (errno == EXDEV)
{
@@ -2332,8 +2277,8 @@ This is what happens in interactive use with M-x. */)
barf_or_query_if_file_exists (newname, "make it a new name",
INTEGERP (ok_if_already_exists), 0, 0);
- unlink (SDATA (newname));
- if (0 > link (SDATA (encoded_file), SDATA (encoded_newname)))
+ unlink (SSDATA (newname));
+ if (0 > link (SSDATA (encoded_file), SSDATA (encoded_newname)))
report_file_error ("Adding new name", list2 (file, newname));
UNGCPRO;
@@ -2391,15 +2336,15 @@ This happens for interactive use with M-x. */)
|| INTEGERP (ok_if_already_exists))
barf_or_query_if_file_exists (linkname, "make it a link",
INTEGERP (ok_if_already_exists), 0, 0);
- if (0 > symlink (SDATA (encoded_filename),
- SDATA (encoded_linkname)))
+ if (0 > symlink (SSDATA (encoded_filename),
+ SSDATA (encoded_linkname)))
{
/* If we didn't complain already, silently delete existing file. */
if (errno == EEXIST)
{
- unlink (SDATA (encoded_linkname));
- if (0 <= symlink (SDATA (encoded_filename),
- SDATA (encoded_linkname)))
+ unlink (SSDATA (encoded_linkname));
+ if (0 <= symlink (SSDATA (encoded_filename),
+ SSDATA (encoded_linkname)))
{
UNGCPRO;
return Qnil;
@@ -2499,7 +2444,7 @@ Use `file-symlink-p' to test for such links. */)
absname = ENCODE_FILE (absname);
- return (stat (SDATA (absname), &statbuf) >= 0) ? Qt : Qnil;
+ return (stat (SSDATA (absname), &statbuf) >= 0) ? Qt : Qnil;
}
DEFUN ("file-executable-p", Ffile_executable_p, Sfile_executable_p, 1, 1, 0,
@@ -2521,7 +2466,7 @@ For a directory, this means you can access files in that directory. */)
absname = ENCODE_FILE (absname);
- return (check_executable (SDATA (absname)) ? Qt : Qnil);
+ return (check_executable (SSDATA (absname)) ? Qt : Qnil);
}
DEFUN ("file-readable-p", Ffile_readable_p, Sfile_readable_p, 1, 1, 0,
@@ -2558,13 +2503,13 @@ See also `file-exists-p' and `file-attributes'. */)
/* Opening a fifo without O_NONBLOCK can wait.
We don't want to wait. But we don't want to mess wth O_NONBLOCK
except in the case of a fifo, on a system which handles it. */
- desc = stat (SDATA (absname), &statbuf);
+ desc = stat (SSDATA (absname), &statbuf);
if (desc < 0)
return Qnil;
if (S_ISFIFO (statbuf.st_mode))
flags |= O_NONBLOCK;
#endif
- desc = emacs_open (SDATA (absname), flags, 0);
+ desc = emacs_open (SSDATA (absname), flags, 0);
if (desc < 0)
return Qnil;
emacs_close (desc);
@@ -2592,8 +2537,8 @@ DEFUN ("file-writable-p", Ffile_writable_p, Sfile_writable_p, 1, 1, 0,
return call2 (handler, Qfile_writable_p, absname);
encoded = ENCODE_FILE (absname);
- if (stat (SDATA (encoded), &statbuf) >= 0)
- return (check_writable (SDATA (encoded))
+ if (stat (SSDATA (encoded), &statbuf) >= 0)
+ return (check_writable (SSDATA (encoded))
? Qt : Qnil);
dir = Ffile_name_directory (absname);
@@ -2611,7 +2556,7 @@ DEFUN ("file-writable-p", Ffile_writable_p, Sfile_writable_p, 1, 1, 0,
return Qnil;
return (statbuf.st_mode & S_IFMT) == S_IFDIR ? Qt : Qnil;
#else
- return (check_writable (!NILP (dir) ? (char *) SDATA (dir) : "")
+ return (check_writable (!NILP (dir) ? SSDATA (dir) : "")
? Qt : Qnil);
#endif
}
@@ -2638,9 +2583,9 @@ If there is no error, returns nil. */)
encoded_filename = ENCODE_FILE (absname);
- fd = emacs_open (SDATA (encoded_filename), O_RDONLY, 0);
+ fd = emacs_open (SSDATA (encoded_filename), O_RDONLY, 0);
if (fd < 0)
- report_file_error (SDATA (string), Fcons (filename, Qnil));
+ report_file_error (SSDATA (string), Fcons (filename, Qnil));
emacs_close (fd);
return Qnil;
@@ -2684,7 +2629,7 @@ points to a nonexistent file. */)
memset (buf, 0, bufsize);
errno = 0;
- valsize = readlink (SDATA (filename), buf, bufsize);
+ valsize = readlink (SSDATA (filename), buf, bufsize);
if (valsize == -1)
{
#ifdef ERANGE
@@ -2733,7 +2678,7 @@ See `file-symlink-p' to distinguish symlinks. */)
absname = ENCODE_FILE (absname);
- if (stat (SDATA (absname), &st) < 0)
+ if (stat (SSDATA (absname), &st) < 0)
return Qnil;
return (st.st_mode & S_IFMT) == S_IFDIR ? Qt : Qnil;
}
@@ -2801,7 +2746,7 @@ See `file-symlink-p' to distinguish symlinks. */)
return (st.st_mode & S_IFMT) == S_IFREG ? Qt : Qnil;
}
#else
- if (stat (SDATA (absname), &st) < 0)
+ if (stat (SSDATA (absname), &st) < 0)
return Qnil;
return (st.st_mode & S_IFMT) == S_IFREG ? Qt : Qnil;
#endif
@@ -2958,7 +2903,7 @@ Return nil, if file does not exist or is not accessible. */)
absname = ENCODE_FILE (absname);
- if (stat (SDATA (absname), &st) < 0)
+ if (stat (SSDATA (absname), &st) < 0)
return Qnil;
return make_number (st.st_mode & 07777);
@@ -2988,7 +2933,7 @@ symbolic notation, like the `chmod' command from GNU Coreutils. */)
encoded_absname = ENCODE_FILE (absname);
- if (chmod (SDATA (encoded_absname), XINT (mode)) < 0)
+ if (chmod (SSDATA (encoded_absname), XINT (mode)) < 0)
report_file_error ("Doing chmod", Fcons (absname, Qnil));
return Qnil;
@@ -3055,7 +3000,7 @@ Use the current time if TIME is nil. TIME is in the format of
EMACS_SET_SECS (t, sec);
EMACS_SET_USECS (t, usec);
- if (set_file_times (SDATA (encoded_absname), t, t))
+ if (set_file_times (SSDATA (encoded_absname), t, t))
{
#ifdef DOS_NT
struct stat st;
@@ -3118,12 +3063,12 @@ otherwise, if FILE2 does not exist, the answer is t. */)
absname2 = ENCODE_FILE (absname2);
UNGCPRO;
- if (stat (SDATA (absname1), &st) < 0)
+ if (stat (SSDATA (absname1), &st) < 0)
return Qnil;
mtime1 = st.st_mtime;
- if (stat (SDATA (absname2), &st) < 0)
+ if (stat (SSDATA (absname2), &st) < 0)
return Qt;
return (mtime1 > st.st_mtime) ? Qt : Qnil;
@@ -3305,12 +3250,12 @@ variable `last-coding-system-used' to the coding system actually used. */)
/* Tell stat to use expensive method to get accurate info. */
Vw32_get_true_file_attributes = Qt;
- total = stat (SDATA (filename), &st);
+ total = stat (SSDATA (filename), &st);
Vw32_get_true_file_attributes = tem;
}
if (total < 0)
#else
- if (stat (SDATA (filename), &st) < 0)
+ if (stat (SSDATA (filename), &st) < 0)
#endif /* WINDOWSNT */
{
if (fd >= 0) emacs_close (fd);
@@ -3342,7 +3287,7 @@ variable `last-coding-system-used' to the coding system actually used. */)
#endif
if (fd < 0)
- if ((fd = emacs_open (SDATA (filename), O_RDONLY, 0)) < 0)
+ if ((fd = emacs_open (SSDATA (filename), O_RDONLY, 0)) < 0)
goto badopen;
/* Replacement should preserve point as it preserves markers. */
@@ -5030,8 +4975,8 @@ e_write (int desc, Lisp_Object string, int start, int end, struct coding_system
coding->produced -=
emacs_write (desc,
STRINGP (coding->dst_object)
- ? SDATA (coding->dst_object)
- : BYTE_POS_ADDR (coding->dst_pos_byte),
+ ? SSDATA (coding->dst_object)
+ : (char *) BYTE_POS_ADDR (coding->dst_pos_byte),
coding->produced);
if (coding->produced)
@@ -5076,7 +5021,7 @@ See Info node `(elisp)Modification Time' for more details. */)
filename = ENCODE_FILE (b->filename);
- if (stat (SDATA (filename), &st) < 0)
+ if (stat (SSDATA (filename), &st) < 0)
{
/* If the file doesn't exist now and didn't exist before,
we say that it isn't modified, provided the error is a tame one. */
@@ -5153,7 +5098,7 @@ An argument specifies the modification time value to use
filename = ENCODE_FILE (filename);
- if (stat (SDATA (filename), &st) >= 0)
+ if (stat (SSDATA (filename), &st) >= 0)
{
current_buffer->modtime = st.st_mtime;
current_buffer->modtime_size = st.st_size;
@@ -5210,7 +5155,7 @@ auto_save_1 (void)
/* Get visited file's mode to become the auto save file's mode. */
if (! NILP (current_buffer->filename))
{
- if (stat (SDATA (current_buffer->filename), &st) >= 0)
+ if (stat (SSDATA (current_buffer->filename), &st) >= 0)
/* But make sure we can overwrite it later! */
auto_save_mode_bits = st.st_mode | 0600;
else if ((modes = Ffile_modes (current_buffer->filename),
@@ -5227,7 +5172,7 @@ auto_save_1 (void)
static Lisp_Object
do_auto_save_unwind (Lisp_Object arg) /* used as unwind-protect function */
-
+
{
FILE *stream = (FILE *) XSAVE_VALUE (arg)->pointer;
auto_saving = 0;
@@ -5242,7 +5187,7 @@ do_auto_save_unwind (Lisp_Object arg) /* used as unwind-protect function */
static Lisp_Object
do_auto_save_unwind_1 (Lisp_Object value) /* used as unwind-protect function */
-
+
{
minibuffer_auto_raise = XINT (value);
return Qnil;
@@ -5333,7 +5278,7 @@ A non-nil CURRENT-ONLY argument means save only current buffer. */)
UNGCPRO;
}
- stream = fopen (SDATA (listfile), "w");
+ stream = fopen (SSDATA (listfile), "w");
}
record_unwind_protect (do_auto_save_unwind,
@@ -5640,13 +5585,13 @@ syms_of_fileio (void)
staticpro (&Qfind_buffer_file_type);
#endif /* DOS_NT */
- DEFVAR_LISP ("file-name-coding-system", &Vfile_name_coding_system,
+ DEFVAR_LISP ("file-name-coding-system", Vfile_name_coding_system,
doc: /* *Coding system for encoding file names.
If it is nil, `default-file-name-coding-system' (which see) is used. */);
Vfile_name_coding_system = Qnil;
DEFVAR_LISP ("default-file-name-coding-system",
- &Vdefault_file_name_coding_system,
+ Vdefault_file_name_coding_system,
doc: /* Default coding system for encoding file names.
This variable is used only when `file-name-coding-system' is nil.
@@ -5681,7 +5626,7 @@ of file names regardless of the current language environment. */);
Fput (Qfile_date_error, Qerror_message,
make_pure_c_string ("Cannot set file date"));
- DEFVAR_LISP ("file-name-handler-alist", &Vfile_name_handler_alist,
+ DEFVAR_LISP ("file-name-handler-alist", Vfile_name_handler_alist,
doc: /* *Alist of elements (REGEXP . HANDLER) for file names handled specially.
If a file name matches REGEXP, then all I/O on that file is done by calling
HANDLER.
@@ -5697,7 +5642,7 @@ for its argument. */);
Vfile_name_handler_alist = Qnil;
DEFVAR_LISP ("set-auto-coding-function",
- &Vset_auto_coding_function,
+ Vset_auto_coding_function,
doc: /* If non-nil, a function to call to decide a coding system of file.
Two arguments are passed to this function: the file name
and the length of a file contents following the point.
@@ -5709,7 +5654,7 @@ specified in the heading lines with the format:
or local variable spec of the tailing lines with `coding:' tag. */);
Vset_auto_coding_function = Qnil;
- DEFVAR_LISP ("after-insert-file-functions", &Vafter_insert_file_functions,
+ DEFVAR_LISP ("after-insert-file-functions", Vafter_insert_file_functions,
doc: /* A list of functions to be called at the end of `insert-file-contents'.
Each is passed one argument, the number of characters inserted,
with point at the start of the inserted text. Each function
@@ -5719,7 +5664,7 @@ If `insert-file-contents' is intercepted by a handler from
functions in `after-insert-file-functions' if appropriate. */);
Vafter_insert_file_functions = Qnil;
- DEFVAR_LISP ("write-region-annotate-functions", &Vwrite_region_annotate_functions,
+ DEFVAR_LISP ("write-region-annotate-functions", Vwrite_region_annotate_functions,
doc: /* A list of functions to be called at the start of `write-region'.
Each is passed two arguments, START and END as for `write-region'.
These are usually two numbers but not always; see the documentation
@@ -5748,7 +5693,7 @@ buffer current. */);
= intern_c_string ("write-region-annotate-functions");
DEFVAR_LISP ("write-region-post-annotation-function",
- &Vwrite_region_post_annotation_function,
+ Vwrite_region_post_annotation_function,
doc: /* Function to call after `write-region' completes.
The function is called with no arguments. If one or more of the
annotation functions in `write-region-annotate-functions' changed the
@@ -5759,34 +5704,34 @@ buffer. The relevant buffer is current during each function call. */);
staticpro (&Vwrite_region_annotation_buffers);
DEFVAR_LISP ("write-region-annotations-so-far",
- &Vwrite_region_annotations_so_far,
+ Vwrite_region_annotations_so_far,
doc: /* When an annotation function is called, this holds the previous annotations.
These are the annotations made by other annotation functions
that were already called. See also `write-region-annotate-functions'. */);
Vwrite_region_annotations_so_far = Qnil;
- DEFVAR_LISP ("inhibit-file-name-handlers", &Vinhibit_file_name_handlers,
+ DEFVAR_LISP ("inhibit-file-name-handlers", Vinhibit_file_name_handlers,
doc: /* A list of file name handlers that temporarily should not be used.
This applies only to the operation `inhibit-file-name-operation'. */);
Vinhibit_file_name_handlers = Qnil;
- DEFVAR_LISP ("inhibit-file-name-operation", &Vinhibit_file_name_operation,
+ DEFVAR_LISP ("inhibit-file-name-operation", Vinhibit_file_name_operation,
doc: /* The operation for which `inhibit-file-name-handlers' is applicable. */);
Vinhibit_file_name_operation = Qnil;
- DEFVAR_LISP ("auto-save-list-file-name", &Vauto_save_list_file_name,
+ 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
a non-nil value. */);
Vauto_save_list_file_name = Qnil;
- DEFVAR_LISP ("auto-save-visited-file-name", &Vauto_save_visited_file_name,
+ DEFVAR_LISP ("auto-save-visited-file-name", Vauto_save_visited_file_name,
doc: /* Non-nil says auto-save a buffer in the file it is visiting, when practical.
Normally auto-save files are written under other names. */);
Vauto_save_visited_file_name = Qnil;
- DEFVAR_LISP ("auto-save-include-big-deletions", &Vauto_save_include_big_deletions,
+ DEFVAR_LISP ("auto-save-include-big-deletions", Vauto_save_include_big_deletions,
doc: /* If non-nil, auto-save even if a large part of the text is deleted.
If nil, deleting a substantial portion of the text disables auto-save
in the buffer; this is the default behavior, because the auto-save
@@ -5794,14 +5739,14 @@ file is usually more useful if it contains the deleted text. */);
Vauto_save_include_big_deletions = Qnil;
#ifdef HAVE_FSYNC
- DEFVAR_BOOL ("write-region-inhibit-fsync", &write_region_inhibit_fsync,
+ DEFVAR_BOOL ("write-region-inhibit-fsync", write_region_inhibit_fsync,
doc: /* *Non-nil means don't call fsync in `write-region'.
This variable affects calls to `write-region' as well as save commands.
A non-nil value may result in data loss! */);
write_region_inhibit_fsync = 0;
#endif
- DEFVAR_BOOL ("delete-by-moving-to-trash", &delete_by_moving_to_trash,
+ DEFVAR_BOOL ("delete-by-moving-to-trash", delete_by_moving_to_trash,
doc: /* Specifies whether to use the system's trash can.
When non-nil, certain file deletion commands use the function
`move-file-to-trash' instead of deleting files outright.
@@ -5868,4 +5813,3 @@ This includes interactive calls to `delete-file' and
defsubr (&Sunix_sync);
#endif
}
-
diff --git a/src/filelock.c b/src/filelock.c
index ae0584c447..8fa871f56e 100644
--- a/src/filelock.c
+++ b/src/filelock.c
@@ -1,6 +1,5 @@
/* Lock files for editing.
- Copyright (C) 1985, 1986, 1987, 1993, 1994, 1996, 1998, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985-1987, 1993-1994, 1996, 1998-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -32,10 +31,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <sys/file.h>
#include <fcntl.h>
-
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#ifdef __FreeBSD__
#include <sys/sysctl.h>
@@ -49,10 +45,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "coding.h"
#include "systime.h"
-/* The directory for writing temporary files. */
-
-Lisp_Object Vtemporary_file_directory;
-
#ifdef CLASH_DETECTION
#ifdef HAVE_UTMP_H
@@ -222,9 +214,9 @@ get_boot_time (void)
if (! NILP (filename))
{
- get_boot_time_1 (SDATA (filename), 1);
+ get_boot_time_1 (SSDATA (filename), 1);
if (delete_flag)
- unlink (SDATA (filename));
+ unlink (SSDATA (filename));
}
}
@@ -323,7 +315,7 @@ fill_in_lock_file_name (register char *lockfile, register Lisp_Object fn)
struct stat st;
int count = 0;
- strcpy (lockfile, SDATA (fn));
+ strcpy (lockfile, SSDATA (fn));
/* Shift the nondirectory part of the file name (including the null)
right two characters. Here is one of the places where we'd have to
@@ -365,11 +357,11 @@ lock_file_1 (char *lfname, int force)
boot_time = get_boot_time ();
if (STRINGP (Fuser_login_name (Qnil)))
- user_name = (char *)SDATA (Fuser_login_name (Qnil));
+ user_name = SSDATA (Fuser_login_name (Qnil));
else
user_name = "";
if (STRINGP (Fsystem_name ()))
- host_name = (char *)SDATA (Fsystem_name ());
+ host_name = SSDATA (Fsystem_name ());
else
host_name = "";
lock_info_str = (char *)alloca (strlen (user_name) + strlen (host_name)
@@ -483,7 +475,7 @@ current_lock_owner (lock_info_type *owner, char *lfname)
/* On current host? */
if (STRINGP (Fsystem_name ())
- && strcmp (owner->host, SDATA (Fsystem_name ())) == 0)
+ && strcmp (owner->host, SSDATA (Fsystem_name ())) == 0)
{
if (owner->pid == getpid ())
ret = 2; /* We own it. */
@@ -735,7 +727,7 @@ init_filelock (void)
void
syms_of_filelock (void)
{
- DEFVAR_LISP ("temporary-file-directory", &Vtemporary_file_directory,
+ DEFVAR_LISP ("temporary-file-directory", Vtemporary_file_directory,
doc: /* The directory for writing temporary files. */);
Vtemporary_file_directory = Qnil;
@@ -745,6 +737,3 @@ syms_of_filelock (void)
defsubr (&Sfile_locked_p);
#endif
}
-
-/* arch-tag: e062676d-50b2-4be0-ab96-197c81b181a1
- (do not change this comment) */
diff --git a/src/filemode.c b/src/filemode.c
index 3048077ff5..d41cd56c56 100644
--- a/src/filemode.c
+++ b/src/filemode.c
@@ -1,6 +1,5 @@
/* filemode.c -- make a string describing file modes
- Copyright (C) 1985, 1990, 1993, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1990, 1993, 2001-2011 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
@@ -244,5 +243,3 @@ setst (short unsigned int bits, char *chars)
#endif
}
-/* arch-tag: 4340830c-15a5-47d2-b45f-1d43c45a91bb
- (do not change this comment) */
diff --git a/src/firstfile.c b/src/firstfile.c
index 45e4fe2242..98933b26c7 100644
--- a/src/firstfile.c
+++ b/src/firstfile.c
@@ -1,6 +1,5 @@
/* Mark beginning of data space to dump as pure, for GNU Emacs.
- Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -32,5 +31,3 @@ extern int initialized;
static int * dummy = &initialized;
#endif
-/* arch-tag: a6c0d2dd-00c3-4ba5-95a5-9c8ab82f39b2
- (do not change this comment) */
diff --git a/src/floatfns.c b/src/floatfns.c
index 29e5c119a1..c00923643d 100644
--- a/src/floatfns.c
+++ b/src/floatfns.c
@@ -1,6 +1,7 @@
/* Primitive operations on floating point for GNU Emacs Lisp interpreter.
- Copyright (C) 1988, 1993, 1994, 1999, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1988, 1993-1994, 1999, 2001-2011
+ Free Software Foundation, Inc.
Author: Wolfgang Rupprecht
(according to ack.texi)
@@ -1074,5 +1075,3 @@ syms_of_floatfns (void)
defsubr (&Struncate);
}
-/* arch-tag: be05bf9d-049e-4e31-91b9-e6153d483ae7
- (do not change this comment) */
diff --git a/src/fns.c b/src/fns.c
index 7bae3bb0fa..cf8cf3a3d8 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -1,7 +1,5 @@
/* Random utility Lisp functions.
- Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985-1987, 1993-1995, 1997-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -21,9 +19,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#include <time.h>
#include <setjmp.h>
@@ -53,14 +49,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define NULL ((POINTER_TYPE *)0)
#endif
-/* Nonzero enables use of dialog boxes for questions
- asked by mouse commands. */
-int use_dialog_box;
-
-/* Nonzero enables use of a file dialog for file name
- questions asked by mouse commands. */
-int use_file_dialog;
-
Lisp_Object Qstring_lessp, Qprovide, Qrequire;
Lisp_Object Qyes_or_no_p_history;
Lisp_Object Qcursor_in_echo_area;
@@ -872,7 +860,7 @@ string_byte_to_char (Lisp_Object string, EMACS_INT byte_index)
/* Convert STRING to a multibyte string. */
-Lisp_Object
+static Lisp_Object
string_make_multibyte (Lisp_Object string)
{
unsigned char *buf;
@@ -920,7 +908,7 @@ string_to_multibyte (Lisp_Object string)
/* If all the chars are ASCII, they won't need any more bytes once
converted. */
if (nbytes == SBYTES (string))
- return make_multibyte_string (SDATA (string), nbytes, nbytes);
+ return make_multibyte_string (SSDATA (string), nbytes, nbytes);
SAFE_ALLOCA (buf, unsigned char *, nbytes);
memcpy (buf, SDATA (string), SBYTES (string));
@@ -1183,7 +1171,7 @@ value is a new vector that contains the elements between index FROM
if (STRINGP (string))
{
- res = make_specified_string (SDATA (string) + from_byte,
+ res = make_specified_string (SSDATA (string) + from_byte,
to_char - from_char, to_byte - from_byte,
STRING_MULTIBYTE (string));
copy_text_properties (make_number (from_char), make_number (to_char),
@@ -1247,7 +1235,7 @@ With one argument, just copy STRING without its properties. */)
args_out_of_range_3 (string, make_number (from_char),
make_number (to_char));
- return make_specified_string (SDATA (string) + from_byte,
+ return make_specified_string (SSDATA (string) + from_byte,
to_char - from_char, to_byte - from_byte,
STRING_MULTIBYTE (string));
}
@@ -1278,7 +1266,7 @@ substring_both (Lisp_Object string, EMACS_INT from, EMACS_INT from_byte,
if (STRINGP (string))
{
- res = make_specified_string (SDATA (string) + from_byte,
+ res = make_specified_string (SSDATA (string) + from_byte,
to - from, to_byte - from_byte,
STRING_MULTIBYTE (string));
copy_text_properties (make_number (from), make_number (to),
@@ -2465,10 +2453,11 @@ do_yes_or_no_p (Lisp_Object prompt)
DEFUN ("yes-or-no-p", Fyes_or_no_p, Syes_or_no_p, 1, 1, 0,
doc: /* Ask user a yes-or-no question. Return t if answer is yes.
-Takes one argument, which is the string to display to ask the question.
-It should end in a space; `yes-or-no-p' adds `(yes or no) ' to it.
-The user must confirm the answer with RET,
-and can edit it until it has been confirmed.
+PROMPT is the string to display to ask the question. It should end in
+a space; `yes-or-no-p' adds \"(yes or no) \" to it.
+
+The user must confirm the answer with RET, and can edit it until it
+has been confirmed.
Under a windowing system a dialog box will be used if `last-nonmenu-event'
is nil, and `use-dialog-box' is non-nil. */)
@@ -2510,12 +2499,12 @@ is nil, and `use-dialog-box' is non-nil. */)
ans = Fdowncase (Fread_from_minibuffer (prompt, Qnil, Qnil, Qnil,
Qyes_or_no_p_history, Qnil,
Qnil));
- if (SCHARS (ans) == 3 && !strcmp (SDATA (ans), "yes"))
+ if (SCHARS (ans) == 3 && !strcmp (SSDATA (ans), "yes"))
{
UNGCPRO;
return Qt;
}
- if (SCHARS (ans) == 2 && !strcmp (SDATA (ans), "no"))
+ if (SCHARS (ans) == 2 && !strcmp (SSDATA (ans), "no"))
{
UNGCPRO;
return Qnil;
@@ -2564,7 +2553,7 @@ advisable. */)
return ret;
}
-Lisp_Object Vfeatures, Qsubfeatures;
+Lisp_Object Qsubfeatures;
DEFUN ("featurep", Ffeaturep, Sfeaturep, 1, 2, 0,
doc: /* Return t if FEATURE is present in this Emacs.
@@ -3052,7 +3041,7 @@ into shorter lines. */)
/* We need to allocate enough room for decoding the text. */
SAFE_ALLOCA (encoded, char *, allength);
- encoded_length = base64_encode_1 (SDATA (string),
+ encoded_length = base64_encode_1 (SSDATA (string),
encoded, length, NILP (no_line_break),
STRING_MULTIBYTE (string));
if (encoded_length > allength)
@@ -3247,7 +3236,7 @@ DEFUN ("base64-decode-string", Fbase64_decode_string, Sbase64_decode_string,
SAFE_ALLOCA (decoded, char *, length);
/* The decoded result should be unibyte. */
- decoded_length = base64_decode_1 (SDATA (string), decoded, length,
+ decoded_length = base64_decode_1 (SSDATA (string), decoded, length,
0, NULL);
if (decoded_length > length)
abort ();
@@ -3704,7 +3693,7 @@ make_hash_table (Lisp_Object test, Lisp_Object size, Lisp_Object rehash_size,
/* Return a copy of hash table H1. Keys and values are not copied,
only the table itself is. */
-Lisp_Object
+static Lisp_Object
copy_hash_table (struct Lisp_Hash_Table *h1)
{
Lisp_Object table;
@@ -3912,7 +3901,7 @@ hash_remove_from_table (struct Lisp_Hash_Table *h, Lisp_Object key)
/* Clear hash table H. */
-void
+static void
hash_clear (struct Lisp_Hash_Table *h)
{
if (h->count > 0)
@@ -4759,7 +4748,7 @@ guesswork fails. Normally, an error is signaled in such case. */)
object = code_convert_string (object, coding_system, Qnil, 1, 0, 0);
}
- md5_buffer (SDATA (object) + start_byte,
+ md5_buffer (SSDATA (object) + start_byte,
SBYTES (object) - (size_byte - end_byte),
digest);
@@ -4842,7 +4831,7 @@ syms_of_fns (void)
Fset (Qyes_or_no_p_history, Qnil);
- DEFVAR_LISP ("features", &Vfeatures,
+ DEFVAR_LISP ("features", Vfeatures,
doc: /* A list of symbols which are the features of the executing Emacs.
Used by `featurep' and `require', and altered by `provide'. */);
Vfeatures = Fcons (intern_c_string ("emacs"), Qnil);
@@ -4860,7 +4849,7 @@ Used by `featurep' and `require', and altered by `provide'. */);
staticpro (&Qpaper);
#endif /* HAVE_LANGINFO_CODESET */
- DEFVAR_BOOL ("use-dialog-box", &use_dialog_box,
+ DEFVAR_BOOL ("use-dialog-box", use_dialog_box,
doc: /* *Non-nil means mouse commands use dialog boxes to ask questions.
This applies to `y-or-n-p' and `yes-or-no-p' questions asked by commands
invoked by mouse clicks and mouse menu items.
@@ -4869,7 +4858,7 @@ On some platforms, file selection dialogs are also enabled if this is
non-nil. */);
use_dialog_box = 1;
- DEFVAR_BOOL ("use-file-dialog", &use_file_dialog,
+ DEFVAR_BOOL ("use-file-dialog", use_file_dialog,
doc: /* *Non-nil means mouse commands use a file dialog to ask for files.
This applies to commands from menus and tool bar buttons even when
they are initiated from the keyboard. If `use-dialog-box' is nil,
@@ -4950,6 +4939,3 @@ void
init_fns (void)
{
}
-
-/* arch-tag: 787f8219-5b74-46bd-8469-7e1cc475fa31
- (do not change this comment) */
diff --git a/src/font.c b/src/font.c
index ae933df75c..907271566d 100644
--- a/src/font.c
+++ b/src/font.c
@@ -1,7 +1,7 @@
/* font.c -- "Font" primitives.
-Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
-Copyright (C) 2006, 2007, 2008, 2009, 2010
+Copyright (C) 2006-2011 Free Software Foundation, Inc.
+Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H13PRO009
@@ -62,8 +62,6 @@ static Lisp_Object QCf;
font_driver *)->list when a specified font is not found. */
static Lisp_Object null_vector;
-static Lisp_Object Vfont_weight_table, Vfont_slant_table, Vfont_width_table;
-
/* Vector of Vfont_weight_table, Vfont_slant_table, and Vfont_width_table. */
static Lisp_Object font_style_table;
@@ -123,7 +121,8 @@ static const struct table_entry width_table[] =
{ 200, { "ultra-expanded", "ultraexpanded", "wide" }}
};
-Lisp_Object QCfoundry, QCadstyle, QCregistry;
+Lisp_Object QCfoundry;
+static Lisp_Object QCadstyle, QCregistry;
/* Symbols representing keys of font extra info. */
Lisp_Object QCspacing, QCdpi, QCscalable, QCotf, QClang, QCscript, QCavgwidth;
Lisp_Object QCantialias, QCfont_entity, QCfc_unknown_spec;
@@ -135,8 +134,6 @@ Lisp_Object Qja, Qko;
Lisp_Object QCuser_spec;
-Lisp_Object Vfont_encoding_alist;
-
/* Alist of font registry symbol and the corresponding charsets
information. The information is retrieved from
Vfont_encoding_alist on demand.
@@ -164,7 +161,7 @@ static struct font_driver_list *font_driver_list;
/* Creaters of font-related Lisp object. */
-Lisp_Object
+static Lisp_Object
font_make_spec (void)
{
Lisp_Object font_spec;
@@ -220,6 +217,7 @@ static int font_pixel_size (FRAME_PTR f, Lisp_Object);
static Lisp_Object font_open_entity (FRAME_PTR, Lisp_Object, int);
static Lisp_Object font_matching_entity (FRAME_PTR, Lisp_Object *,
Lisp_Object);
+static unsigned font_encode_char (Lisp_Object, int);
/* Number of registered font drivers. */
static int num_font_drivers;
@@ -1191,7 +1189,7 @@ font_unparse_xlfd (Lisp_Object font, int pixel_size, char *name, int nbytes)
if (SYMBOLP (val))
val = SYMBOL_NAME (val);
if (j == XLFD_REGISTRY_INDEX
- && ! strchr ((char *) SDATA (val), '-'))
+ && ! strchr (SSDATA (val), '-'))
{
/* Change "jisx0208*" and "jisx0208" to "jisx0208*-*". */
if (SDATA (val)[SBYTES (val) - 1] == '*')
@@ -1208,7 +1206,7 @@ font_unparse_xlfd (Lisp_Object font, int pixel_size, char *name, int nbytes)
}
}
else
- f[j] = (char *) SDATA (val), len += SBYTES (val) + 1;
+ f[j] = SSDATA (val), len += SBYTES (val) + 1;
}
}
@@ -1221,7 +1219,7 @@ font_unparse_xlfd (Lisp_Object font, int pixel_size, char *name, int nbytes)
else
{
val = SYMBOL_NAME (val);
- f[j] = (char *) SDATA (val), len += SBYTES (val) + 1;
+ f[j] = SSDATA (val), len += SBYTES (val) + 1;
}
}
@@ -1305,7 +1303,7 @@ font_unparse_xlfd (Lisp_Object font, int pixel_size, char *name, int nbytes)
This function tries to guess which format it is. */
-int
+static int
font_parse_fcname (char *name, Lisp_Object font)
{
char *p, *q;
@@ -1382,25 +1380,26 @@ font_parse_fcname (char *name, Lisp_Object font)
word_len = q - p;
val = font_intern_prop (p, q - p, 1);
-#define PROP_MATCH(STR,N) ((word_len == N) && memcmp (p, STR, N) == 0)
+#define PROP_MATCH(STR) (word_len == strlen (STR) \
+ && memcmp (p, STR, strlen (STR)) == 0)
- if (PROP_MATCH ("light", 5)
- || PROP_MATCH ("medium", 6)
- || PROP_MATCH ("demibold", 8)
- || PROP_MATCH ("bold", 4)
- || PROP_MATCH ("black", 5))
+ if (PROP_MATCH ("light")
+ || PROP_MATCH ("medium")
+ || PROP_MATCH ("demibold")
+ || PROP_MATCH ("bold")
+ || PROP_MATCH ("black"))
FONT_SET_STYLE (font, FONT_WEIGHT_INDEX, val);
- else if (PROP_MATCH ("roman", 5)
- || PROP_MATCH ("italic", 6)
- || PROP_MATCH ("oblique", 7))
+ else if (PROP_MATCH ("roman")
+ || PROP_MATCH ("italic")
+ || PROP_MATCH ("oblique"))
FONT_SET_STYLE (font, FONT_SLANT_INDEX, val);
- else if (PROP_MATCH ("charcell", 8))
+ else if (PROP_MATCH ("charcell"))
ASET (font, FONT_SPACING_INDEX,
make_number (FONT_SPACING_CHARCELL));
- else if (PROP_MATCH ("mono", 4))
+ else if (PROP_MATCH ("mono"))
ASET (font, FONT_SPACING_INDEX,
make_number (FONT_SPACING_MONO));
- else if (PROP_MATCH ("proportional", 12))
+ else if (PROP_MATCH ("proportional"))
ASET (font, FONT_SPACING_INDEX,
make_number (FONT_SPACING_PROPORTIONAL));
#undef PROP_MATCH
@@ -1450,109 +1449,85 @@ font_parse_fcname (char *name, Lisp_Object font)
/* Either a fontconfig-style name with no size and property
data, or a GTK-style name. */
Lisp_Object prop;
- int word_len, prop_found = 0;
+ Lisp_Object weight = Qnil, slant = Qnil;
+ Lisp_Object width = Qnil, size = Qnil;
+ char *word_start;
+ int word_len;
+ int size_found = 0;
+
+ /* Scan backwards from the end, looking for a size. */
+ for (p = name + len - 1; p >= name; p--)
+ if (!isdigit (*p))
+ break;
- for (p = name; *p; p = *q ? q + 1 : q)
+ if ((p < name + len - 1) && ((p + 1 == name) || *p == ' '))
+ /* Found a font size. */
+ size = make_float (strtod (p + 1, NULL));
+ else
+ p = name + len;
+
+ /* Now P points to the termination of the string, sans size.
+ Scan backwards, looking for font properties. */
+ for (; p > name; p = q)
{
- if (isdigit (*p))
+ for (q = p - 1; q >= name; q--)
{
- int size_found = 1;
-
- for (q = p + 1; *q && *q != ' '; q++)
- if (! isdigit (*q) && *q != '.')
- {
- size_found = 0;
- break;
- }
- if (size_found)
- {
- double point_size = strtod (p, &q);
- ASET (font, FONT_SIZE_INDEX, make_float (point_size));
- continue;
- }
+ if (q > name && *(q-1) == '\\')
+ --q; /* Skip quoting backslashes. */
+ else if (*q == ' ')
+ break;
}
- for (q = p + 1; *q && *q != ' '; q++)
- if (*q == '\\' && q[1])
- q++;
- word_len = q - p;
-
-#define PROP_MATCH(STR,N) ((word_len == N) && memcmp (p, STR, N) == 0)
-
- if (PROP_MATCH ("Ultra-Light", 11))
- {
- prop_found = 1;
- prop = font_intern_prop ("ultra-light", 11, 1);
- FONT_SET_STYLE (font, FONT_WEIGHT_INDEX, prop);
- }
- else if (PROP_MATCH ("Light", 5))
- {
- prop_found = 1;
- prop = font_intern_prop ("light", 5, 1);
- FONT_SET_STYLE (font, FONT_WEIGHT_INDEX, prop);
- }
- else if (PROP_MATCH ("Book", 4))
- {
- prop_found = 1;
- prop = font_intern_prop ("book", 4, 1);
- FONT_SET_STYLE (font, FONT_WEIGHT_INDEX, prop);
- }
- else if (PROP_MATCH ("Medium", 6))
- {
- prop_found = 1;
- prop = font_intern_prop ("medium", 6, 1);
- FONT_SET_STYLE (font, FONT_WEIGHT_INDEX, prop);
- }
- else if (PROP_MATCH ("Semi-Bold", 9))
- {
- prop_found = 1;
- prop = font_intern_prop ("semi-bold", 9, 1);
- FONT_SET_STYLE (font, FONT_WEIGHT_INDEX, prop);
- }
- else if (PROP_MATCH ("Bold", 4))
- {
- prop_found = 1;
- prop = font_intern_prop ("bold", 4, 1);
- FONT_SET_STYLE (font, FONT_WEIGHT_INDEX, prop);
- }
- else if (PROP_MATCH ("Italic", 6))
- {
- prop_found = 1;
- prop = font_intern_prop ("italic", 4, 1);
- FONT_SET_STYLE (font, FONT_SLANT_INDEX, prop);
- }
- else if (PROP_MATCH ("Oblique", 7))
- {
- prop_found = 1;
- prop = font_intern_prop ("oblique", 7, 1);
- FONT_SET_STYLE (font, FONT_SLANT_INDEX, prop);
- }
- else if (PROP_MATCH ("Semi-Condensed", 14))
- {
- prop_found = 1;
- prop = font_intern_prop ("semi-condensed", 14, 1);
- FONT_SET_STYLE (font, FONT_WIDTH_INDEX, prop);
- }
- else if (PROP_MATCH ("Condensed", 9))
+ word_start = q + 1;
+ word_len = p - word_start;
+
+#define PROP_MATCH(STR) \
+ (word_len == strlen (STR) \
+ && memcmp (word_start, STR, strlen (STR)) == 0)
+#define PROP_SAVE(VAR, STR) \
+ (VAR = NILP (VAR) ? font_intern_prop (STR, strlen (STR), 1) : VAR)
+
+ if (PROP_MATCH ("Ultra-Light"))
+ PROP_SAVE (weight, "ultra-light");
+ else if (PROP_MATCH ("Light"))
+ PROP_SAVE (weight, "light");
+ else if (PROP_MATCH ("Book"))
+ PROP_SAVE (weight, "book");
+ else if (PROP_MATCH ("Medium"))
+ PROP_SAVE (weight, "medium");
+ else if (PROP_MATCH ("Semi-Bold"))
+ PROP_SAVE (weight, "semi-bold");
+ else if (PROP_MATCH ("Bold"))
+ PROP_SAVE (weight, "bold");
+ else if (PROP_MATCH ("Italic"))
+ PROP_SAVE (slant, "italic");
+ else if (PROP_MATCH ("Oblique"))
+ PROP_SAVE (slant, "oblique");
+ else if (PROP_MATCH ("Semi-Condensed"))
+ PROP_SAVE (width, "semi-condensed");
+ else if (PROP_MATCH ("Condensed"))
+ PROP_SAVE (width, "condensed");
+ /* An unknown word must be part of the font name. */
+ else
{
- prop_found = 1;
- prop = font_intern_prop ("condensed", 9, 1);
- FONT_SET_STYLE (font, FONT_WIDTH_INDEX, prop);
+ family_end = p;
+ break;
}
- else {
- if (prop_found)
- return -1; /* Unknown property in GTK-style font name. */
- family_end = q;
- }
}
#undef PROP_MATCH
+#undef PROP_SAVE
if (family_end)
- {
- Lisp_Object family;
- family = font_intern_prop (name, family_end - name, 1);
- ASET (font, FONT_FAMILY_INDEX, family);
- }
+ ASET (font, FONT_FAMILY_INDEX,
+ font_intern_prop (name, family_end - name, 1));
+ if (!NILP (size))
+ ASET (font, FONT_SIZE_INDEX, size);
+ if (!NILP (weight))
+ FONT_SET_STYLE (font, FONT_WEIGHT_INDEX, weight);
+ if (!NILP (slant))
+ FONT_SET_STYLE (font, FONT_SLANT_INDEX, slant);
+ if (!NILP (width))
+ FONT_SET_STYLE (font, FONT_WIDTH_INDEX, width);
}
return 0;
@@ -1676,90 +1651,6 @@ font_unparse_fcname (Lisp_Object font, int pixel_size, char *name, int nbytes)
return (p - name);
}
-/* Store GTK-style font name of FONT (font-spec or font-entity) in
- NAME (NBYTES length), and return the name length. F is the frame
- on which the font is displayed; it is used to calculate the point
- size. */
-
-int
-font_unparse_gtkname (Lisp_Object font, struct frame *f, char *name, int nbytes)
-{
- char *p;
- int len = 1;
- Lisp_Object family, weight, slant, size;
- int point_size = -1;
-
- family = AREF (font, FONT_FAMILY_INDEX);
- if (! NILP (family))
- {
- if (! SYMBOLP (family))
- return -1;
- family = SYMBOL_NAME (family);
- len += SBYTES (family);
- }
-
- weight = font_style_symbolic (font, FONT_WEIGHT_INDEX, 0);
- if (EQ (weight, Qnormal))
- weight = Qnil;
- else if (! NILP (weight))
- {
- weight = SYMBOL_NAME (weight);
- len += SBYTES (weight);
- }
-
- slant = font_style_symbolic (font, FONT_SLANT_INDEX, 0);
- if (EQ (slant, Qnormal))
- slant = Qnil;
- else if (! NILP (slant))
- {
- slant = SYMBOL_NAME (slant);
- len += SBYTES (slant);
- }
-
- size = AREF (font, FONT_SIZE_INDEX);
- /* Convert pixel size to point size. */
- if (INTEGERP (size))
- {
- Lisp_Object font_dpi = AREF (font, FONT_DPI_INDEX);
- int dpi = 75;
- if (INTEGERP (font_dpi))
- dpi = XINT (font_dpi);
- else if (f)
- dpi = f->resy;
- point_size = PIXEL_TO_POINT (XINT (size), dpi);
- len += 11;
- }
- else if (FLOATP (size))
- {
- point_size = (int) XFLOAT_DATA (size);
- len += 11;
- }
-
- if (len > nbytes)
- return -1;
-
- p = name + sprintf (name, "%s", SDATA (family));
-
- if (! NILP (weight))
- {
- char *q = p;
- p += sprintf (p, " %s", SDATA (weight));
- q[1] = toupper (q[1]);
- }
-
- if (! NILP (slant))
- {
- char *q = p;
- p += sprintf (p, " %s", SDATA (slant));
- q[1] = toupper (q[1]);
- }
-
- if (point_size > 0)
- p += sprintf (p, " %d", point_size);
-
- return (p - name);
-}
-
/* Parse NAME (null terminated) and store information in FONT
(font-spec or font-entity). If NAME is successfully parsed, return
0. Otherwise return -1. */
@@ -1788,7 +1679,7 @@ font_parse_family_registry (Lisp_Object family, Lisp_Object registry, Lisp_Objec
{
CHECK_STRING (family);
len = SBYTES (family);
- p0 = (char *) SDATA (family);
+ p0 = SSDATA (family);
p1 = strchr (p0, '-');
if (p1)
{
@@ -1807,7 +1698,7 @@ font_parse_family_registry (Lisp_Object family, Lisp_Object registry, Lisp_Objec
/* Convert "XXX" and "XXX*" to "XXX*-*". */
CHECK_STRING (registry);
len = SBYTES (registry);
- p0 = (char *) SDATA (registry);
+ p0 = SSDATA (registry);
p1 = strchr (p0, '-');
if (! p1)
{
@@ -1940,7 +1831,7 @@ otf_open (file)
otf = XSAVE_VALUE (XCDR (val))->pointer;
else
{
- otf = STRINGP (file) ? OTF_open ((char *) SDATA (file)) : NULL;
+ otf = STRINGP (file) ? OTF_open (SSDATA (file)) : NULL;
val = make_save_value (otf, 0);
otf_list = Fcons (Fcons (file, val), otf_list);
}
@@ -3039,7 +2930,7 @@ font_has_char (FRAME_PTR f, Lisp_Object font, int c)
/* Return the glyph ID of FONT_OBJECT for character C. */
-unsigned
+static unsigned
font_encode_char (Lisp_Object font_object, int c)
{
struct font *font;
@@ -3085,7 +2976,7 @@ font_spec_from_name (Lisp_Object font_name)
Lisp_Object spec = Ffont_spec (0, NULL);
CHECK_STRING (font_name);
- if (font_parse_name ((char *) SDATA (font_name), spec) == -1)
+ if (font_parse_name (SSDATA (font_name), spec) == -1)
return Qnil;
font_put_extra (spec, QCname, font_name);
font_put_extra (spec, QCuser_spec, font_name);
@@ -3144,50 +3035,6 @@ font_clear_prop (Lisp_Object *attrs, enum font_property_index prop)
attrs[LFACE_FONT_INDEX] = font;
}
-void
-font_update_lface (FRAME_PTR f, Lisp_Object *attrs)
-{
- Lisp_Object spec;
-
- spec = attrs[LFACE_FONT_INDEX];
- if (! FONT_SPEC_P (spec))
- return;
-
- if (! NILP (AREF (spec, FONT_FOUNDRY_INDEX)))
- attrs[LFACE_FOUNDRY_INDEX] = SYMBOL_NAME (AREF (spec, FONT_FOUNDRY_INDEX));
- if (! NILP (AREF (spec, FONT_FAMILY_INDEX)))
- attrs[LFACE_FAMILY_INDEX] = SYMBOL_NAME (AREF (spec, FONT_FAMILY_INDEX));
- if (! NILP (AREF (spec, FONT_WEIGHT_INDEX)))
- attrs[LFACE_WEIGHT_INDEX] = FONT_WEIGHT_FOR_FACE (spec);
- if (! NILP (AREF (spec, FONT_SLANT_INDEX)))
- attrs[LFACE_SLANT_INDEX] = FONT_SLANT_FOR_FACE (spec);
- if (! NILP (AREF (spec, FONT_WIDTH_INDEX)))
- attrs[LFACE_SWIDTH_INDEX] = FONT_WIDTH_FOR_FACE (spec);
- if (! NILP (AREF (spec, FONT_SIZE_INDEX)))
- {
- int point;
-
- if (INTEGERP (AREF (spec, FONT_SIZE_INDEX)))
- {
- Lisp_Object val;
- int dpi = f->resy;
-
- val = Ffont_get (spec, QCdpi);
- if (! NILP (val))
- dpi = XINT (val);
- point = PIXEL_TO_POINT (XINT (AREF (spec, FONT_SIZE_INDEX)) * 10,
- dpi);
- attrs[LFACE_HEIGHT_INDEX] = make_number (point);
- }
- else if (FLOATP (AREF (spec, FONT_SIZE_INDEX)))
- {
- point = XFLOAT_DATA (AREF (spec, FONT_SIZE_INDEX)) * 10;
- attrs[LFACE_HEIGHT_INDEX] = make_number (point);
- }
- }
-}
-
-
/* Selecte a font from ENTITIES (list of font-entity vectors) that
supports C and matches best with ATTRS and PIXEL_SIZE. */
@@ -3287,7 +3134,7 @@ font_find_for_lface (FRAME_PTR f, Lisp_Object *attrs, Lisp_Object spec, int c)
else if (STRINGP (attrs[LFACE_FOUNDRY_INDEX]))
{
val = attrs[LFACE_FOUNDRY_INDEX];
- foundry[0] = font_intern_prop ((char *) SDATA (val), SBYTES (val), 1);
+ foundry[0] = font_intern_prop (SSDATA (val), SBYTES (val), 1);
foundry[1] = Qnil;
foundry[2] = null_vector;
}
@@ -3318,7 +3165,7 @@ font_find_for_lface (FRAME_PTR f, Lisp_Object *attrs, Lisp_Object spec, int c)
if (NILP (val) && STRINGP (attrs[LFACE_FAMILY_INDEX]))
{
val = attrs[LFACE_FAMILY_INDEX];
- val = font_intern_prop ((char *) SDATA (val), SBYTES (val), 1);
+ val = font_intern_prop (SSDATA (val), SBYTES (val), 1);
}
if (NILP (val))
{
@@ -3744,12 +3591,12 @@ font_filter_properties (Lisp_Object font,
{
Lisp_Object key = XCAR (XCAR (it));
Lisp_Object val = XCDR (XCAR (it));
- char *keystr = SDATA (SYMBOL_NAME (key));
+ char *keystr = SSDATA (SYMBOL_NAME (key));
if (strcmp (boolean_properties[i], keystr) == 0)
{
const char *str = INTEGERP (val) ? (XINT (val) ? "true" : "false")
- : SYMBOLP (val) ? (const char *) SDATA (SYMBOL_NAME (val))
+ : SYMBOLP (val) ? SSDATA (SYMBOL_NAME (val))
: "true";
if (strcmp ("false", str) == 0 || strcmp ("False", str) == 0
@@ -3769,7 +3616,7 @@ font_filter_properties (Lisp_Object font,
{
Lisp_Object key = XCAR (XCAR (it));
Lisp_Object val = XCDR (XCAR (it));
- char *keystr = SDATA (SYMBOL_NAME (key));
+ char *keystr = SSDATA (SYMBOL_NAME (key));
if (strcmp (non_boolean_properties[i], keystr) == 0)
Ffont_put (font, key, val);
}
@@ -3781,8 +3628,9 @@ font_filter_properties (Lisp_Object font,
at index POS. If C is negative, get C from the current buffer or
STRING. */
-Lisp_Object
-font_at (int c, EMACS_INT pos, struct face *face, struct window *w, Lisp_Object string)
+static Lisp_Object
+font_at (int c, EMACS_INT pos, struct face *face, struct window *w,
+ Lisp_Object string)
{
FRAME_PTR f;
int multibyte;
@@ -4018,7 +3866,7 @@ usage: (font-spec ARGS...) */)
if (EQ (key, QCname))
{
CHECK_STRING (val);
- font_parse_name ((char *) SDATA (val), spec);
+ font_parse_name (SSDATA (val), spec);
font_put_extra (spec, key, val);
}
else
@@ -4378,7 +4226,7 @@ the consecutive wildcards are folded to one. */)
{
if (NILP (fold_wildcards))
return font_name;
- strcpy (name, (char *) SDATA (font_name));
+ strcpy (name, SSDATA (font_name));
goto done;
}
pixel_size = XFONT_OBJECT (font)->pixel_size;
@@ -5041,7 +4889,7 @@ If the named font is not yet loaded, return nil. */)
if (fontset >= 0)
name = fontset_ascii (fontset);
- font_object = font_open_by_name (f, (char *) SDATA (name));
+ font_object = font_open_by_name (f, SSDATA (name));
}
else if (FONT_OBJECT_P (name))
font_object = name;
@@ -5100,8 +4948,6 @@ build_style_table (const struct table_entry *entry, int nelement)
return table;
}
-Lisp_Object Vfont_log;
-
/* The deferred font-log data of the form [ACTION ARG RESULT].
If ACTION is not nil, that is added to the log when font_add_log is
called next time. At that time, ACTION is set back to nil. */
@@ -5121,7 +4967,7 @@ font_add_log (const char *action, Lisp_Object arg, Lisp_Object result)
return;
if (STRINGP (AREF (Vfont_log_deferred, 0)))
{
- char *str = (char *) SDATA (AREF (Vfont_log_deferred, 0));
+ char *str = SSDATA (AREF (Vfont_log_deferred, 0));
ASET (Vfont_log_deferred, 0, Qnil);
font_add_log (str, AREF (Vfont_log_deferred, 1),
@@ -5307,7 +5153,7 @@ syms_of_font (void)
defsubr (&Sfont_info);
#endif
- DEFVAR_LISP ("font-encoding-alist", &Vfont_encoding_alist,
+ DEFVAR_LISP ("font-encoding-alist", Vfont_encoding_alist,
doc: /*
Alist of fontname patterns vs the corresponding encoding and repertory info.
Each element looks like (REGEXP . (ENCODING . REPERTORY)),
@@ -5334,7 +5180,7 @@ gets the repertory information by an opened font and ENCODING. */);
table used by the font display code. So we make them read-only,
to avoid this confusing situation. */
- DEFVAR_LISP_NOPRO ("font-weight-table", &Vfont_weight_table,
+ DEFVAR_LISP_NOPRO ("font-weight-table", Vfont_weight_table,
doc: /* Vector of valid font weight values.
Each element has the form:
[NUMERIC-VALUE SYMBOLIC-NAME ALIAS-NAME ...]
@@ -5342,13 +5188,13 @@ NUMERIC-VALUE is an integer, and SYMBOLIC-NAME and ALIAS-NAME are symbols. */);
Vfont_weight_table = BUILD_STYLE_TABLE (weight_table);
XSYMBOL (intern_c_string ("font-weight-table"))->constant = 1;
- DEFVAR_LISP_NOPRO ("font-slant-table", &Vfont_slant_table,
+ DEFVAR_LISP_NOPRO ("font-slant-table", Vfont_slant_table,
doc: /* Vector of font slant symbols vs the corresponding numeric values.
See `font-weight-table' for the format of the vector. */);
Vfont_slant_table = BUILD_STYLE_TABLE (slant_table);
XSYMBOL (intern_c_string ("font-slant-table"))->constant = 1;
- DEFVAR_LISP_NOPRO ("font-width-table", &Vfont_width_table,
+ DEFVAR_LISP_NOPRO ("font-width-table", Vfont_width_table,
doc: /* Alist of font width symbols vs the corresponding numeric values.
See `font-weight-table' for the format of the vector. */);
Vfont_width_table = BUILD_STYLE_TABLE (width_table);
@@ -5360,7 +5206,7 @@ See `font-weight-table' for the format of the vector. */);
ASET (font_style_table, 1, Vfont_slant_table);
ASET (font_style_table, 2, Vfont_width_table);
- DEFVAR_LISP ("font-log", &Vfont_log, doc: /*
+ DEFVAR_LISP ("font-log", Vfont_log, doc: /*
*Logging list of font related actions and results.
The value t means to suppress the logging.
The initial value is set to nil if the environment variable
@@ -5399,4 +5245,3 @@ init_font (void)
{
Vfont_log = egetenv ("EMACS_FONT_LOG") ? Qnil : Qt;
}
-
diff --git a/src/font.h b/src/font.h
index 940eb3d001..511a7de3a1 100644
--- a/src/font.h
+++ b/src/font.h
@@ -1,6 +1,6 @@
/* font.h -- Interface definition for font handling.
- Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
- Copyright (C) 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 2006-2011 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H13PRO009
@@ -742,11 +742,8 @@ EXFUN (Fmerge_font_spec, 2);
EXFUN (Ffont_get, 2);
EXFUN (Ffont_put, 3);
EXFUN (Flist_fonts, 4);
-EXFUN (Ffont_family_list, 1);
-EXFUN (Fclear_font_cache, 0);
EXFUN (Ffont_xlfd_name, 2);
-extern Lisp_Object font_make_spec (void);
extern Lisp_Object font_make_entity (void);
extern Lisp_Object font_make_object (int, Lisp_Object, int);
@@ -767,11 +764,9 @@ extern Lisp_Object font_get_name (Lisp_Object font_object);
extern Lisp_Object font_spec_from_name (Lisp_Object font_name);
extern Lisp_Object font_get_frame (Lisp_Object font_object);
extern int font_has_char (FRAME_PTR, Lisp_Object, int);
-extern unsigned font_encode_char (Lisp_Object, int);
extern void font_clear_prop (Lisp_Object *attrs,
enum font_property_index prop);
-extern void font_update_lface (FRAME_PTR f, Lisp_Object *attrs);
extern Lisp_Object font_find_for_lface (FRAME_PTR f, Lisp_Object *lface,
Lisp_Object spec, int c);
extern Lisp_Object font_open_for_lface (FRAME_PTR f, Lisp_Object entity,
@@ -792,21 +787,15 @@ extern void font_update_sort_order (int *order);
extern void font_parse_family_registry (Lisp_Object family,
Lisp_Object registry,
Lisp_Object spec);
-extern Lisp_Object font_spec_from_family_registry (Lisp_Object family,
- Lisp_Object registry);
extern int font_parse_xlfd (char *name, Lisp_Object font);
extern int font_unparse_xlfd (Lisp_Object font, int pixel_size,
char *name, int bytes);
-extern int font_parse_fcname (char *name, Lisp_Object font);
extern int font_unparse_fcname (Lisp_Object font, int pixel_size,
char *name, int bytes);
-extern int font_unparse_gtkname (Lisp_Object, struct frame *, char *, int);
extern void register_font_driver (struct font_driver *driver, FRAME_PTR f);
extern void free_font_driver_list (FRAME_PTR f);
extern Lisp_Object font_update_drivers (FRAME_PTR f, Lisp_Object list);
-extern Lisp_Object font_at (int c, EMACS_INT pos, struct face *face,
- struct window *w, Lisp_Object object);
extern Lisp_Object font_range (EMACS_INT, EMACS_INT *,
struct window *, struct face *,
Lisp_Object);
@@ -858,9 +847,8 @@ extern void syms_of_nsfont (void);
#define FONT_DEBUG
#endif
-extern Lisp_Object QCfoundry, QCadstyle, QCregistry;
+extern Lisp_Object QCfoundry;
-extern Lisp_Object Vfont_log;
extern void font_add_log (const char *, Lisp_Object, Lisp_Object);
extern void font_deferred_log (const char *, Lisp_Object, Lisp_Object);
@@ -884,5 +872,3 @@ extern void font_deferred_log (const char *, Lisp_Object, Lisp_Object);
#endif /* not EMACS_FONT_H */
-/* arch-tag: 3b7260c3-5bec-4d6b-a0db-95c1b431b1a2
- (do not change this comment) */
diff --git a/src/fontset.c b/src/fontset.c
index 86b9ceb45d..f94bc954fa 100644
--- a/src/fontset.c
+++ b/src/fontset.c
@@ -1,13 +1,13 @@
/* Fontset handler.
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010
- National Institute of Advanced Industrial Science and Technology (AIST)
- Registration Number H14PRO021
- Copyright (C) 2003, 2006
- National Institute of Advanced Industrial Science and Technology (AIST)
- Registration Number H13PRO009
+
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+ 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ National Institute of Advanced Industrial Science and Technology (AIST)
+ Registration Number H14PRO021
+Copyright (C) 2003, 2006
+ National Institute of Advanced Industrial Science and Technology (AIST)
+ Registration Number H13PRO009
This file is part of GNU Emacs.
@@ -64,8 +64,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define xassert(X) (void) 0
#endif /* not FONTSET_DEBUG */
-EXFUN (Fclear_face_cache, 1);
-
/* FONTSET
A fontset is a collection of font related information to give
@@ -193,14 +191,6 @@ static int next_fontset_id;
font for each character. */
static Lisp_Object Vdefault_fontset;
-Lisp_Object Vfont_encoding_charset_alist;
-Lisp_Object Vuse_default_ascent;
-Lisp_Object Vignore_relative_composition;
-Lisp_Object Valternate_fontname_alist;
-Lisp_Object Vfontset_alias_alist;
-Lisp_Object Vvertical_centering_font_regexp;
-Lisp_Object Votf_script_alist;
-
/* Check if any window system is used now. */
void (*check_window_system_func) (void);
@@ -216,8 +206,6 @@ static Lisp_Object make_fontset (Lisp_Object, Lisp_Object, Lisp_Object);
static Lisp_Object fontset_pattern_regexp (Lisp_Object);
static void accumulate_script_ranges (Lisp_Object, Lisp_Object,
Lisp_Object);
-Lisp_Object find_font_encoding (Lisp_Object);
-
static void set_fontset_font (Lisp_Object, Lisp_Object);
#ifdef FONTSET_DEBUG
@@ -225,8 +213,7 @@ static void set_fontset_font (Lisp_Object, Lisp_Object);
/* Return 1 if ID is a valid fontset id, else return 0. */
static int
-fontset_id_valid_p (id)
- int id;
+fontset_id_valid_p (int id)
{
return (id >= 0 && id < ASIZE (Vfontset_table) - 1);
}
@@ -854,12 +841,12 @@ free_realized_fontset (FRAME_PTR f, Lisp_Object fontset)
{
Lisp_Object tail;
- return;
- for (tail = FONTSET_OBJLIST (fontset); CONSP (tail); tail = XCDR (tail))
- {
- xassert (FONT_OBJECT_P (XCAR (tail)));
- font_close_object (f, XCAR (tail));
- }
+ if (0)
+ for (tail = FONTSET_OBJLIST (fontset); CONSP (tail); tail = XCDR (tail))
+ {
+ xassert (FONT_OBJECT_P (XCAR (tail)));
+ font_close_object (f, XCAR (tail));
+ }
}
/* Free fontset of FACE defined on frame F. Called from
@@ -1062,7 +1049,7 @@ make_fontset_for_ascii_face (FRAME_PTR f, int base_fontset_id, struct face *face
the corresponding regular expression. */
static Lisp_Object Vcached_fontset_data;
-#define CACHED_FONTSET_NAME ((char *) SDATA (XCAR (Vcached_fontset_data)))
+#define CACHED_FONTSET_NAME SSDATA (XCAR (Vcached_fontset_data))
#define CACHED_FONTSET_REGEX (XCDR (Vcached_fontset_data))
/* If fontset name PATTERN contains any wild card, return regular
@@ -1071,13 +1058,13 @@ static Lisp_Object Vcached_fontset_data;
static Lisp_Object
fontset_pattern_regexp (Lisp_Object pattern)
{
- if (!strchr ((char *) SDATA (pattern), '*')
- && !strchr ((char *) SDATA (pattern), '?'))
+ if (!strchr (SSDATA (pattern), '*')
+ && !strchr (SSDATA (pattern), '?'))
/* PATTERN does not contain any wild cards. */
return Qnil;
if (!CONSP (Vcached_fontset_data)
- || strcmp ((char *) SDATA (pattern), CACHED_FONTSET_NAME))
+ || strcmp (SSDATA (pattern), CACHED_FONTSET_NAME))
{
/* We must at first update the cached data. */
unsigned char *regex, *p0, *p1;
@@ -1128,7 +1115,7 @@ fontset_pattern_regexp (Lisp_Object pattern)
*p1++ = '$';
*p1++ = 0;
- Vcached_fontset_data = Fcons (build_string ((char *) SDATA (pattern)),
+ Vcached_fontset_data = Fcons (build_string (SSDATA (pattern)),
build_string ((char *) regex));
}
@@ -1238,7 +1225,7 @@ list_fontsets (FRAME_PTR f, Lisp_Object pattern, int size)
if (STRINGP (regexp)
? (fast_string_match (regexp, name) < 0)
- : strcmp ((char *) SDATA (pattern), (char *) SDATA (name)))
+ : strcmp (SSDATA (pattern), SSDATA (name)))
continue;
val = Fcons (Fcopy_sequence (FONTSET_NAME (fontset)), val);
@@ -1664,10 +1651,10 @@ FONT-SPEC is a vector, a cons, or a string. See the documentation of
char xlfd[256];
int len;
- if (font_parse_xlfd ((char *) SDATA (name), font_spec) < 0)
+ if (font_parse_xlfd (SSDATA (name), font_spec) < 0)
error ("Fontset name must be in XLFD format");
short_name = AREF (font_spec, FONT_REGISTRY_INDEX);
- if (strncmp ((char *) SDATA (SYMBOL_NAME (short_name)), "fontset-", 8)
+ if (strncmp (SSDATA (SYMBOL_NAME (short_name)), "fontset-", 8)
|| SBYTES (SYMBOL_NAME (short_name)) < 9)
error ("Registry field of fontset name must be \"fontset-*\"");
Vfontset_alias_alist = Fcons (Fcons (name, SYMBOL_NAME (short_name)),
@@ -2128,8 +2115,7 @@ DEFUN ("fontset-list", Ffontset_list, Sfontset_list, 0, 0, 0,
#ifdef FONTSET_DEBUG
Lisp_Object
-dump_fontset (fontset)
- Lisp_Object fontset;
+dump_fontset (Lisp_Object fontset)
{
Lisp_Object vec;
@@ -2205,7 +2191,7 @@ syms_of_fontset (void)
auto_fontset_alist = Qnil;
staticpro (&auto_fontset_alist);
- DEFVAR_LISP ("font-encoding-charset-alist", &Vfont_encoding_charset_alist,
+ DEFVAR_LISP ("font-encoding-charset-alist", Vfont_encoding_charset_alist,
doc: /*
Alist of charsets vs the charsets to determine the preferred font encoding.
Each element looks like (CHARSET . ENCODING-CHARSET),
@@ -2216,7 +2202,7 @@ When a text has a property `charset' and the value is CHARSET, a font
whose encoding corresponds to ENCODING-CHARSET is preferred. */);
Vfont_encoding_charset_alist = Qnil;
- DEFVAR_LISP ("use-default-ascent", &Vuse_default_ascent,
+ DEFVAR_LISP ("use-default-ascent", Vuse_default_ascent,
doc: /*
Char table of characters whose ascent values should be ignored.
If an entry for a character is non-nil, the ascent value of the glyph
@@ -2226,7 +2212,7 @@ This affects how a composite character which contains
such a character is displayed on screen. */);
Vuse_default_ascent = Qnil;
- DEFVAR_LISP ("ignore-relative-composition", &Vignore_relative_composition,
+ DEFVAR_LISP ("ignore-relative-composition", Vignore_relative_composition,
doc: /*
Char table of characters which are not composed relatively.
If an entry for a character is non-nil, a composition sequence
@@ -2235,26 +2221,26 @@ the glyph of that character is put without considering
an ascent and descent value of a previous character. */);
Vignore_relative_composition = Qnil;
- DEFVAR_LISP ("alternate-fontname-alist", &Valternate_fontname_alist,
+ DEFVAR_LISP ("alternate-fontname-alist", Valternate_fontname_alist,
doc: /* Alist of fontname vs list of the alternate fontnames.
When a specified font name is not found, the corresponding
alternate fontnames (if any) are tried instead. */);
Valternate_fontname_alist = Qnil;
- DEFVAR_LISP ("fontset-alias-alist", &Vfontset_alias_alist,
+ DEFVAR_LISP ("fontset-alias-alist", Vfontset_alias_alist,
doc: /* Alist of fontset names vs the aliases. */);
Vfontset_alias_alist = Fcons (Fcons (FONTSET_NAME (Vdefault_fontset),
make_pure_c_string ("fontset-default")),
Qnil);
DEFVAR_LISP ("vertical-centering-font-regexp",
- &Vvertical_centering_font_regexp,
+ Vvertical_centering_font_regexp,
doc: /* *Regexp matching font names that require vertical centering on display.
When a character is displayed with such fonts, the character is displayed
at the vertical center of lines. */);
Vvertical_centering_font_regexp = Qnil;
- DEFVAR_LISP ("otf-script-alist", &Votf_script_alist,
+ DEFVAR_LISP ("otf-script-alist", Votf_script_alist,
doc: /* Alist of OpenType script tags vs the corresponding script names. */);
Votf_script_alist = Qnil;
@@ -2269,6 +2255,3 @@ at the vertical center of lines. */);
defsubr (&Sfontset_list_all);
#endif
}
-
-/* arch-tag: ea861585-2f5f-4e5b-9849-d04a9c3a3537
- (do not change this comment) */
diff --git a/src/fontset.h b/src/fontset.h
index 661638feb3..fe2e4fe0ca 100644
--- a/src/fontset.h
+++ b/src/fontset.h
@@ -1,8 +1,7 @@
/* Header for fontset handler.
- Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010
+ 2005, 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H14PRO021
Copyright (C) 2003, 2006
@@ -33,7 +32,6 @@ extern void (*check_window_system_func) (void);
struct face;
extern void free_face_fontset (FRAME_PTR, struct face *);
-extern Lisp_Object fontset_font_pattern (FRAME_PTR, struct face *, int);
extern int face_suitable_for_char_p (struct face *, int);
extern int face_for_char (FRAME_PTR, struct face *, int,
int, Lisp_Object);
@@ -44,24 +42,13 @@ extern int fontset_from_font (Lisp_Object);
extern int fs_query_fontset (Lisp_Object, int);
EXFUN (Fquery_fontset, 2);
extern Lisp_Object list_fontsets (struct frame *, Lisp_Object, int);
-extern Lisp_Object find_font_encoding (Lisp_Object);
extern Lisp_Object Qlatin;
-extern Lisp_Object Vuse_default_ascent;
-extern Lisp_Object Vignore_relative_composition;
-extern Lisp_Object Valternate_fontname_alist;
-extern Lisp_Object Vfontset_alias_alist;
-extern Lisp_Object Vvertical_centering_font_regexp;
-extern Lisp_Object Votf_script_alist;
-
extern Lisp_Object fontset_name (int);
extern Lisp_Object fontset_ascii (int);
-extern int fontset_height (int);
struct font;
extern int face_for_font (struct frame *, Lisp_Object, struct face *);
#endif /* EMACS_FONTSET_H */
-/* arch-tag: c27cef7b-3cab-488a-8398-7a4daa96bb77
- (do not change this comment) */
diff --git a/src/frame.c b/src/frame.c
index 6cf46f1a0b..20bad4cb8c 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -1,8 +1,6 @@
/* Generic frame functions.
-Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 1993-1995, 1997, 1999-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -23,6 +21,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <stdio.h>
#include <ctype.h>
+#include <errno.h>
+#include <limits.h>
#include <setjmp.h>
#include "lisp.h"
#include "character.h"
@@ -55,24 +55,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif
-/* If we shall make pointer invisible when typing or not. */
-Lisp_Object Vmake_pointer_invisible;
-
#ifdef HAVE_WINDOW_SYSTEM
-/* The name we're using in resource queries. Most often "emacs". */
-
-Lisp_Object Vx_resource_name;
-
-/* The application class we're using in resource queries.
- Normally "Emacs". */
-
-Lisp_Object Vx_resource_class;
-
-/* Lower limit value of the frame opacity (alpha transparency). */
-
-Lisp_Object Vframe_alpha_lower_limit;
-
#endif
#ifdef HAVE_NS
@@ -122,7 +106,6 @@ Lisp_Object Qtitle, Qname;
Lisp_Object Qexplicit_name;
Lisp_Object Qunsplittable;
Lisp_Object Qmenu_bar_lines, Qtool_bar_lines, Qtool_bar_position;
-Lisp_Object Vmenu_bar_mode, Vtool_bar_mode;
Lisp_Object Qleft_fringe, Qright_fringe;
Lisp_Object Qbuffer_predicate, Qbuffer_list, Qburied_buffer_list;
Lisp_Object Qtty_color_mode;
@@ -135,14 +118,8 @@ Lisp_Object Qalpha;
Lisp_Object Qface_set_after_frame_default;
-Lisp_Object Vterminal_frame;
-Lisp_Object Vdefault_frame_alist;
-Lisp_Object Vdefault_frame_scroll_bars;
-Lisp_Object Vmouse_position_function;
-Lisp_Object Vmouse_highlight;
-static Lisp_Object Vdelete_frame_functions, Qdelete_frame_functions;
+static Lisp_Object Qdelete_frame_functions;
-int focus_follows_mouse;
static void
set_menu_bar_lines_1 (Lisp_Object window, int n)
@@ -716,7 +693,7 @@ affects all frames on the same terminal device. */)
if (!NILP (tty))
{
name = (char *) alloca (SBYTES (tty) + 1);
- strncpy (name, SDATA (tty), SBYTES (tty));
+ strncpy (name, SSDATA (tty), SBYTES (tty));
name[SBYTES (tty)] = 0;
}
@@ -727,7 +704,7 @@ affects all frames on the same terminal device. */)
if (!NILP (tty_type))
{
type = (char *) alloca (SBYTES (tty_type) + 1);
- strncpy (type, SDATA (tty_type), SBYTES (tty_type));
+ strncpy (type, SSDATA (tty_type), SBYTES (tty_type));
type[SBYTES (tty_type)] = 0;
}
@@ -2172,10 +2149,13 @@ frame_name_fnn_p (char *str, EMACS_INT len)
if (len > 1 && str[0] == 'F')
{
char *end_ptr;
+ long int n;
+ errno = 0;
+ n = strtol (str + 1, &end_ptr, 10);
- strtol (str + 1, &end_ptr, 10);
-
- if (end_ptr == str + len)
+ if (end_ptr == str + len
+ && INT_MIN <= n && n <= INT_MAX
+ && ((LONG_MIN < n && n < LONG_MAX) || errno != ERANGE))
return 1;
}
return 0;
@@ -2196,7 +2176,7 @@ set_term_frame_name (struct frame *f, Lisp_Object name)
/* Check for no change needed in this very common case
before we do any consing. */
- if (frame_name_fnn_p (SDATA (f->name),
+ if (frame_name_fnn_p (SSDATA (f->name),
SBYTES (f->name)))
return;
@@ -2214,7 +2194,7 @@ set_term_frame_name (struct frame *f, Lisp_Object name)
/* Don't allow the user to set the frame name to F<num>, so it
doesn't clash with the names we generate for terminal frames. */
- if (frame_name_fnn_p (SDATA (name), SBYTES (name)))
+ if (frame_name_fnn_p (SSDATA (name), SBYTES (name)))
error ("Frame names of the form F<num> are usurped by Emacs");
}
@@ -2341,11 +2321,11 @@ If FRAME is omitted, return information on the currently selected frame. */)
elt = Fassq (Qforeground_color, alist);
if (CONSP (elt) && STRINGP (XCDR (elt)))
{
- if (strncmp (SDATA (XCDR (elt)),
+ if (strncmp (SSDATA (XCDR (elt)),
unspecified_bg,
SCHARS (XCDR (elt))) == 0)
store_in_alist (&alist, Qforeground_color, tty_color_name (f, bg));
- else if (strncmp (SDATA (XCDR (elt)),
+ else if (strncmp (SSDATA (XCDR (elt)),
unspecified_fg,
SCHARS (XCDR (elt))) == 0)
store_in_alist (&alist, Qforeground_color, tty_color_name (f, fg));
@@ -2355,11 +2335,11 @@ If FRAME is omitted, return information on the currently selected frame. */)
elt = Fassq (Qbackground_color, alist);
if (CONSP (elt) && STRINGP (XCDR (elt)))
{
- if (strncmp (SDATA (XCDR (elt)),
+ if (strncmp (SSDATA (XCDR (elt)),
unspecified_fg,
SCHARS (XCDR (elt))) == 0)
store_in_alist (&alist, Qbackground_color, tty_color_name (f, fg));
- else if (strncmp (SDATA (XCDR (elt)),
+ else if (strncmp (SSDATA (XCDR (elt)),
unspecified_bg,
SCHARS (XCDR (elt))) == 0)
store_in_alist (&alist, Qbackground_color, tty_color_name (f, bg));
@@ -2448,7 +2428,7 @@ If FRAME is nil, describe the currently selected frame. */)
if (EQ (parameter, Qbackground_color))
{
- color_name = SDATA (value);
+ color_name = SSDATA (value);
csz = SCHARS (value);
if (strncmp (color_name, unspecified_bg, csz) == 0)
value = tty_color_name (f, FRAME_BACKGROUND_PIXEL (f));
@@ -2457,7 +2437,7 @@ If FRAME is nil, describe the currently selected frame. */)
}
else if (EQ (parameter, Qforeground_color))
{
- color_name = SDATA (value);
+ color_name = SSDATA (value);
csz = SCHARS (value);
if (strncmp (color_name, unspecified_fg, csz) == 0)
value = tty_color_name (f, FRAME_FOREGROUND_PIXEL (f));
@@ -3327,16 +3307,16 @@ x_set_font (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
fontset = fs_query_fontset (arg, 0);
if (fontset < 0)
{
- font_object = font_open_by_name (f, SDATA (arg));
+ font_object = font_open_by_name (f, SSDATA (arg));
if (NILP (font_object))
- error ("Font `%s' is not defined", SDATA (arg));
+ error ("Font `%s' is not defined", SSDATA (arg));
arg = AREF (font_object, FONT_NAME_INDEX);
}
else if (fontset > 0)
{
Lisp_Object ascii_font = fontset_ascii (fontset);
- font_object = font_open_by_name (f, SDATA (ascii_font));
+ font_object = font_open_by_name (f, SSDATA (ascii_font));
if (NILP (font_object))
error ("Font `%s' is not defined", SDATA (arg));
arg = AREF (font_object, FONT_NAME_INDEX);
@@ -3414,7 +3394,7 @@ x_set_font_backend (struct frame *f, Lisp_Object new_value, Lisp_Object old_valu
char *p0, *p1;
CHECK_STRING (new_value);
- p0 = p1 = SDATA (new_value);
+ p0 = p1 = SSDATA (new_value);
new_value = Qnil;
while (*p0)
{
@@ -3791,23 +3771,23 @@ xrdb_get_resource (XrmDatabase rdb, Lisp_Object attribute, Lisp_Object class, Li
/* Start with emacs.FRAMENAME for the name (the specific one)
and with `Emacs' for the class key (the general one). */
- strcpy (name_key, SDATA (Vx_resource_name));
- strcpy (class_key, SDATA (Vx_resource_class));
+ strcpy (name_key, SSDATA (Vx_resource_name));
+ strcpy (class_key, SSDATA (Vx_resource_class));
strcat (class_key, ".");
- strcat (class_key, SDATA (class));
+ strcat (class_key, SSDATA (class));
if (!NILP (component))
{
strcat (class_key, ".");
- strcat (class_key, SDATA (subclass));
+ strcat (class_key, SSDATA (subclass));
strcat (name_key, ".");
- strcat (name_key, SDATA (component));
+ strcat (name_key, SSDATA (component));
}
strcat (name_key, ".");
- strcat (name_key, SDATA (attribute));
+ strcat (name_key, SSDATA (attribute));
value = x_get_string_resource (rdb, name_key, class_key);
@@ -3924,25 +3904,25 @@ x_get_arg (Display_Info *dpyinfo, Lisp_Object alist, Lisp_Object param,
switch (type)
{
case RES_TYPE_NUMBER:
- return make_number (atoi (SDATA (tem)));
+ return make_number (atoi (SSDATA (tem)));
case RES_TYPE_BOOLEAN_NUMBER:
- if (!strcmp (SDATA (tem), "on")
- || !strcmp (SDATA (tem), "true"))
+ if (!strcmp (SSDATA (tem), "on")
+ || !strcmp (SSDATA (tem), "true"))
return make_number (1);
- return make_number (atoi (SDATA (tem)));
+ return make_number (atoi (SSDATA (tem)));
break;
case RES_TYPE_FLOAT:
- return make_float (atof (SDATA (tem)));
+ return make_float (atof (SSDATA (tem)));
case RES_TYPE_BOOLEAN:
tem = Fdowncase (tem);
- if (!strcmp (SDATA (tem), "on")
+ if (!strcmp (SSDATA (tem), "on")
#ifdef HAVE_NS
- || !strcmp(SDATA(tem), "yes")
+ || !strcmp (SSDATA (tem), "yes")
#endif
- || !strcmp (SDATA (tem), "true"))
+ || !strcmp (SSDATA (tem), "true"))
return Qt;
else
return Qnil;
@@ -3956,17 +3936,17 @@ x_get_arg (Display_Info *dpyinfo, Lisp_Object alist, Lisp_Object param,
{
Lisp_Object lower;
lower = Fdowncase (tem);
- if (!strcmp (SDATA (lower), "on")
+ if (!strcmp (SSDATA (lower), "on")
#ifdef HAVE_NS
- || !strcmp(SDATA(lower), "yes")
+ || !strcmp (SSDATA (lower), "yes")
#endif
- || !strcmp (SDATA (lower), "true"))
+ || !strcmp (SSDATA (lower), "true"))
return Qt;
- else if (!strcmp (SDATA (lower), "off")
+ else if (!strcmp (SSDATA (lower), "off")
#ifdef HAVE_NS
- || !strcmp(SDATA(lower), "no")
+ || !strcmp (SSDATA (lower), "no")
#endif
- || !strcmp (SDATA (lower), "false"))
+ || !strcmp (SSDATA (lower), "false"))
return Qnil;
else
return Fintern (tem, Qnil);
@@ -3982,7 +3962,7 @@ x_get_arg (Display_Info *dpyinfo, Lisp_Object alist, Lisp_Object param,
return Fcdr (tem);
}
-Lisp_Object
+static Lisp_Object
x_frame_get_arg (struct frame *f, Lisp_Object alist, Lisp_Object param,
const char *attribute, const char *class,
enum resource_types type)
@@ -4060,7 +4040,7 @@ On Nextstep, this just calls `ns-parse-geometry'. */)
CHECK_STRING (string);
- geometry = XParseGeometry ((char *) SDATA (string),
+ geometry = XParseGeometry (SSDATA (string),
&x, &y, &width, &height);
result = Qnil;
if (geometry & XValue)
@@ -4464,7 +4444,7 @@ syms_of_frame (void)
}
#ifdef HAVE_WINDOW_SYSTEM
- DEFVAR_LISP ("x-resource-name", &Vx_resource_name,
+ DEFVAR_LISP ("x-resource-name", Vx_resource_name,
doc: /* The name Emacs uses to look up X resources.
`x-get-resource' uses this as the first component of the instance name
when requesting resource values.
@@ -4476,7 +4456,7 @@ It may be useful to bind this variable locally around a call
to `x-get-resource'. See also the variable `x-resource-class'. */);
Vx_resource_name = Qnil;
- DEFVAR_LISP ("x-resource-class", &Vx_resource_class,
+ DEFVAR_LISP ("x-resource-class", Vx_resource_class,
doc: /* The class Emacs uses to look up X resources.
`x-get-resource' uses this as the first component of the instance class
when requesting resource values.
@@ -4488,7 +4468,7 @@ but binding this variable locally around a call to `x-get-resource'
is a reasonable practice. See also the variable `x-resource-name'. */);
Vx_resource_class = build_string (EMACS_CLASS);
- DEFVAR_LISP ("frame-alpha-lower-limit", &Vframe_alpha_lower_limit,
+ DEFVAR_LISP ("frame-alpha-lower-limit", Vframe_alpha_lower_limit,
doc: /* The lower limit of the frame opacity (alpha transparency).
The value should range from 0 (invisible) to 100 (completely opaque).
You can also use a floating number between 0.0 and 1.0.
@@ -4496,7 +4476,7 @@ The default is 20. */);
Vframe_alpha_lower_limit = make_number (20);
#endif
- DEFVAR_LISP ("default-frame-alist", &Vdefault_frame_alist,
+ DEFVAR_LISP ("default-frame-alist", Vdefault_frame_alist,
doc: /* Alist of default values for frame creation.
These may be set in your init file, like this:
(setq default-frame-alist '((width . 80) (height . 55) (menu-bar-lines . 1)))
@@ -4511,7 +4491,7 @@ The `menu-bar-lines' element of the list controls whether new frames
Setting this variable does not affect existing frames, only new ones. */);
Vdefault_frame_alist = Qnil;
- DEFVAR_LISP ("default-frame-scroll-bars", &Vdefault_frame_scroll_bars,
+ DEFVAR_LISP ("default-frame-scroll-bars", Vdefault_frame_scroll_bars,
doc: /* Default position of scroll bars on this window-system. */);
#ifdef HAVE_WINDOW_SYSTEM
#if defined(HAVE_NTGUI) || defined(NS_IMPL_COCOA) || (defined(USE_GTK) && defined(USE_TOOLKIT_SCROLL_BARS))
@@ -4525,10 +4505,10 @@ Setting this variable does not affect existing frames, only new ones. */);
Vdefault_frame_scroll_bars = Qnil;
#endif
- DEFVAR_LISP ("terminal-frame", &Vterminal_frame,
+ DEFVAR_LISP ("terminal-frame", Vterminal_frame,
doc: /* The initial frame-object, which represents Emacs's stdout. */);
- DEFVAR_LISP ("mouse-position-function", &Vmouse_position_function,
+ DEFVAR_LISP ("mouse-position-function", Vmouse_position_function,
doc: /* If non-nil, function to transform normal value of `mouse-position'.
`mouse-position' calls this function, passing its usual return value as
argument, and returns whatever this function returns.
@@ -4536,7 +4516,7 @@ This abnormal hook exists for the benefit of packages like `xt-mouse.el'
which need to do mouse handling at the Lisp level. */);
Vmouse_position_function = Qnil;
- DEFVAR_LISP ("mouse-highlight", &Vmouse_highlight,
+ DEFVAR_LISP ("mouse-highlight", Vmouse_highlight,
doc: /* If non-nil, clickable text is highlighted when mouse is over it.
If the value is an integer, highlighting is only shown after moving the
mouse, while keyboard input turns off the highlight even when the mouse
@@ -4544,12 +4524,12 @@ is over the clickable text. However, the mouse shape still indicates
when the mouse is over clickable text. */);
Vmouse_highlight = Qt;
- DEFVAR_LISP ("make-pointer-invisible", &Vmake_pointer_invisible,
+ DEFVAR_LISP ("make-pointer-invisible", Vmake_pointer_invisible,
doc: /* If non-nil, make pointer invisible while typing.
The pointer becomes visible again when the mouse is moved. */);
Vmake_pointer_invisible = Qt;
- DEFVAR_LISP ("delete-frame-functions", &Vdelete_frame_functions,
+ DEFVAR_LISP ("delete-frame-functions", Vdelete_frame_functions,
doc: /* Functions to be run before deleting a frame.
The functions are run with one arg, the frame to be deleted.
See `delete-frame'.
@@ -4562,7 +4542,7 @@ recursively). */);
Qdelete_frame_functions = intern_c_string ("delete-frame-functions");
staticpro (&Qdelete_frame_functions);
- DEFVAR_LISP ("menu-bar-mode", &Vmenu_bar_mode,
+ DEFVAR_LISP ("menu-bar-mode", Vmenu_bar_mode,
doc: /* Non-nil if Menu-Bar mode is enabled.
See the command `menu-bar-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
@@ -4570,7 +4550,7 @@ either customize it (see the info node `Easy Customization')
or call the function `menu-bar-mode'. */);
Vmenu_bar_mode = Qt;
- DEFVAR_LISP ("tool-bar-mode", &Vtool_bar_mode,
+ DEFVAR_LISP ("tool-bar-mode", Vtool_bar_mode,
doc: /* Non-nil if Tool-Bar mode is enabled.
See the command `tool-bar-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
@@ -4597,20 +4577,12 @@ displayed.
This variable is local to the current terminal and cannot be buffer-local. */);
- DEFVAR_BOOL ("focus-follows-mouse", &focus_follows_mouse,
+ DEFVAR_BOOL ("focus-follows-mouse", focus_follows_mouse,
doc: /* Non-nil if window system changes focus when you move the mouse.
You should set this variable to tell Emacs how your window manager
handles focus, since there is no way in general for Emacs to find out
automatically. See also `mouse-autoselect-window'. */);
-#ifdef HAVE_WINDOW_SYSTEM
-#if defined(HAVE_NTGUI) || defined(HAVE_NS)
focus_follows_mouse = 0;
-#else
- focus_follows_mouse = 1;
-#endif
-#else
- focus_follows_mouse = 0;
-#endif
staticpro (&Vframe_list);
@@ -4668,4 +4640,3 @@ automatically. See also `mouse-autoselect-window'. */);
#endif
}
-
diff --git a/src/frame.h b/src/frame.h
index 31f601737c..9687e39a9f 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -1,6 +1,5 @@
/* Define frame-object for GNU Emacs.
- Copyright (C) 1993, 1994, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993-1994, 1999-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -37,11 +36,6 @@ extern int frame_garbaged;
extern int message_buf_print;
-/* Nonzero means window system changes focus when moving the
- mouse. */
-
-extern int focus_follows_mouse;
-
/* The structure representing a frame. */
@@ -862,11 +856,6 @@ extern void frame_make_pointer_visible (void);
extern Lisp_Object delete_frame (Lisp_Object, Lisp_Object);
extern Lisp_Object Vframe_list;
-extern Lisp_Object Vdefault_frame_alist;
-
-extern Lisp_Object Vterminal_frame;
-
-extern Lisp_Object Vmouse_highlight;
/* The currently selected frame. */
@@ -1108,12 +1097,6 @@ extern void x_wm_set_icon_position (struct frame *, int, int);
extern Lisp_Object x_new_font (struct frame *, Lisp_Object, int);
-/* These are in frame.c */
-
-extern Lisp_Object Vx_resource_name;
-extern Lisp_Object Vx_resource_class;
-extern Lisp_Object Vmenu_bar_mode, Vtool_bar_mode;
-
extern Lisp_Object Qface_set_after_frame_default;
@@ -1145,7 +1128,6 @@ extern Lisp_Object x_icon_type (struct frame *);
extern int x_figure_window_size (struct frame *, Lisp_Object, int);
-extern Lisp_Object Vframe_alpha_lower_limit;
extern void x_set_alpha (struct frame *, Lisp_Object, Lisp_Object);
extern void validate_x_resource_name (void);
@@ -1163,5 +1145,3 @@ extern void set_frame_menubar (FRAME_PTR, int, int);
#endif /* not EMACS_FRAME_H */
-/* arch-tag: 0df048ee-e6bf-4f48-bd56-e3cd055dd8c4
- (do not change this comment) */
diff --git a/src/fringe.c b/src/fringe.c
index fce100b146..5c9088a924 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -1,7 +1,5 @@
/* Fringe handling (split from xdisp.c).
- Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985-1988, 1993-1995, 1997-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -32,19 +30,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifdef HAVE_WINDOW_SYSTEM
-/* Non-nil means that newline may flow into the right fringe. */
-
-Lisp_Object Voverflow_newline_into_fringe;
-
-/* List of known fringe bitmap symbols.
-
- The fringe bitmap number is stored in the `fringe' property on
- those symbols. Names for the built-in bitmaps are installed by
- loading fringe.el.
- */
-
-Lisp_Object Vfringe_bitmaps;
-
/* Fringe bitmaps are represented in three different ways:
Logical bitmaps are used internally to denote things like
@@ -1756,7 +1741,7 @@ syms_of_fringe (void)
defsubr (&Sfringe_bitmaps_at_pos);
defsubr (&Sset_fringe_bitmap_face);
- DEFVAR_LISP ("overflow-newline-into-fringe", &Voverflow_newline_into_fringe,
+ DEFVAR_LISP ("overflow-newline-into-fringe", Voverflow_newline_into_fringe,
doc: /* *Non-nil means that newline may flow into the right fringe.
This means that display lines which are exactly as wide as the window
(not counting the final newline) will only occupy one screen line, by
@@ -1765,7 +1750,7 @@ is at the final newline, the cursor is shown in the right fringe.
If nil, also continue lines which are exactly as wide as the window. */);
Voverflow_newline_into_fringe = Qt;
- DEFVAR_LISP ("fringe-bitmaps", &Vfringe_bitmaps,
+ DEFVAR_LISP ("fringe-bitmaps", Vfringe_bitmaps,
doc: /* List of fringe bitmap symbols. */);
Vfringe_bitmaps = Qnil;
}
@@ -1847,5 +1832,3 @@ w32_reset_fringes (void)
#endif /* HAVE_WINDOW_SYSTEM */
-/* arch-tag: 04596920-43eb-473d-b319-82712338162d
- (do not change this comment) */
diff --git a/src/ftfont.c b/src/ftfont.c
index d9ae9be090..a20f2013e5 100644
--- a/src/ftfont.c
+++ b/src/ftfont.c
@@ -1,6 +1,6 @@
/* ftfont.c -- FreeType font driver.
- Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
- Copyright (C) 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 2006-2011 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H13PRO009
@@ -392,7 +392,7 @@ ftfont_lookup_cache (Lisp_Object key, enum ftfont_cache_for cache_for)
if (cache_for == FTFONT_CACHE_FOR_FACE
? ! cache_data->ft_face : ! cache_data->fc_charset)
{
- char *filename = (char *) SDATA (XCAR (key));
+ char *filename = SSDATA (XCAR (key));
int index = XINT (XCDR (key));
if (cache_for == FTFONT_CACHE_FOR_FACE)
@@ -555,7 +555,7 @@ ftfont_get_cache (FRAME_PTR f)
static int
ftfont_get_charset (Lisp_Object registry)
{
- char *str = (char *) SDATA (SYMBOL_NAME (registry));
+ char *str = SSDATA (SYMBOL_NAME (registry));
char *re = alloca (SBYTES (SYMBOL_NAME (registry)) * 2 + 1);
Lisp_Object regexp;
int i, j;
@@ -749,7 +749,10 @@ ftfont_spec_pattern (Lisp_Object spec, char *otlayout, struct OpenTypeSpec **ots
key = XCAR (XCAR (extra)), val = XCDR (XCAR (extra));
if (EQ (key, QCdpi))
- dpi = XINT (val);
+ {
+ if (INTEGERP (val))
+ dpi = XINT (val);
+ }
else if (EQ (key, QClang))
{
if (! langset)
@@ -769,12 +772,15 @@ ftfont_spec_pattern (Lisp_Object spec, char *otlayout, struct OpenTypeSpec **ots
}
else if (EQ (key, QCotf))
{
- *otspec = ftfont_get_open_type_spec (val);
- if (! *otspec)
- return NULL;
- strcat (otlayout, "otlayout:");
- OTF_TAG_STR ((*otspec)->script_tag, otlayout + 9);
- script = (*otspec)->script;
+ if (CONSP (val))
+ {
+ *otspec = ftfont_get_open_type_spec (val);
+ if (! *otspec)
+ return NULL;
+ strcat (otlayout, "otlayout:");
+ OTF_TAG_STR ((*otspec)->script_tag, otlayout + 9);
+ script = (*otspec)->script;
+ }
}
else if (EQ (key, QCscript))
script = val;
@@ -1767,13 +1773,13 @@ setup_otf_gstring (int size)
position adjustment information in ADJUSTMENT. */
static int
-ftfont_drive_otf (font, spec, in, from, to, out, adjustment)
- MFLTFont *font;
- MFLTOtfSpec *spec;
- MFLTGlyphString *in;
- int from, to;
- MFLTGlyphString *out;
- MFLTGlyphAdjustment *adjustment;
+ftfont_drive_otf (MFLTFont *font,
+ MFLTOtfSpec *spec,
+ MFLTGlyphString *in,
+ int from,
+ int to,
+ MFLTGlyphString *out,
+ MFLTGlyphAdjustment *adjustment)
{
struct MFLTFontFT *flt_font_ft = (struct MFLTFontFT *) font;
FT_Face ft_face = flt_font_ft->ft_face;
@@ -2453,7 +2459,7 @@ ftfont_shape_by_flt (Lisp_Object lgstring, struct font *font,
flt_font_ft.flt_font.family = Mnil;
else
flt_font_ft.flt_font.family
- = msymbol ((char *) SDATA (Fdowncase (SYMBOL_NAME (family))));
+ = msymbol (SSDATA (Fdowncase (SYMBOL_NAME (family))));
}
flt_font_ft.flt_font.x_ppem = ft_face->size->metrics.x_ppem;
flt_font_ft.flt_font.y_ppem = ft_face->size->metrics.y_ppem;
@@ -2675,6 +2681,3 @@ syms_of_ftfont (void)
ftfont_driver.type = Qfreetype;
register_font_driver (&ftfont_driver, NULL);
}
-
-/* arch-tag: 7cfa432c-33a6-4988-83d2-a82ed8604aca
- (do not change this comment) */
diff --git a/src/ftfont.h b/src/ftfont.h
index 9053c9ce81..8c8674f344 100644
--- a/src/ftfont.h
+++ b/src/ftfont.h
@@ -1,5 +1,5 @@
/* ftfont.h -- Interface definition for Freetype font backend.
- Copyright (C) 2007, 2008, 2009, 2010
+ Copyright (C) 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H13PRO009
@@ -41,5 +41,3 @@ extern FcCharSet *ftfont_get_fc_charset (Lisp_Object);
#endif /* EMACS_FTFONT_H */
-/* arch-tag: cec13d1c-7156-4997-9ebd-e989040c3d78
- (do not change this comment) */
diff --git a/src/ftxfont.c b/src/ftxfont.c
index 0a9137617b..c6fa858af7 100644
--- a/src/ftxfont.c
+++ b/src/ftxfont.c
@@ -1,6 +1,6 @@
/* ftxfont.c -- FreeType font driver on X (without using XFT).
- Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
- Copyright (C) 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 2006-2011 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H13PRO009
@@ -385,5 +385,3 @@ syms_of_ftxfont (void)
register_font_driver (&ftxfont_driver, NULL);
}
-/* arch-tag: 59bd3469-5330-413f-b29d-1aa36492abe8
- (do not change this comment) */
diff --git a/src/getloadavg.c b/src/getloadavg.c
index 779a0ef804..d9c24717b7 100644
--- a/src/getloadavg.c
+++ b/src/getloadavg.c
@@ -355,10 +355,7 @@ extern int errno;
# define LDAV_SYMBOL "avenrun"
# endif
-# ifdef HAVE_UNISTD_H
-# include <unistd.h>
-# endif
-
+# include <unistd.h>
# include <stdio.h>
/* LOAD_AVE_TYPE should only get defined if we're going to use the
@@ -1038,5 +1035,3 @@ main (argc, argv)
}
#endif /* TEST */
-/* arch-tag: 2b37a242-6289-41f4-8cd5-0e73fd615db1
- (do not change this comment) */
diff --git a/src/getpagesize.h b/src/getpagesize.h
index 2ec51ab371..965d0bc024 100644
--- a/src/getpagesize.h
+++ b/src/getpagesize.h
@@ -1,6 +1,5 @@
/* Emulate getpagesize on systems that lack it.
- Copyright (C) 1986, 1992, 1995, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1986, 1992, 1995, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -19,9 +18,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifndef HAVE_GETPAGESIZE
-# ifdef HAVE_UNISTD_H
-# include <unistd.h>
-# endif
+# include <unistd.h>
# ifdef _SC_PAGESIZE
# define getpagesize() sysconf(_SC_PAGESIZE)
@@ -49,5 +46,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif /* no HAVE_GETPAGESIZE */
-/* arch-tag: ff6206e3-97e2-4763-923a-e84bf28eabbc
- (do not change this comment) */
diff --git a/src/globals.h b/src/globals.h
new file mode 100644
index 0000000000..f7162baafb
--- /dev/null
+++ b/src/globals.h
@@ -0,0 +1,2902 @@
+/* Declare all global lisp variables.
+
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ 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/>. */
+
+struct emacs_globals
+{
+
+ /* Count the amount of consing of various sorts of space. */
+ EMACS_INT f_cons_cells_consed;
+
+ EMACS_INT f_floats_consed;
+
+ EMACS_INT f_vector_cells_consed;
+
+ EMACS_INT f_symbols_consed;
+
+ EMACS_INT f_string_chars_consed;
+
+ EMACS_INT f_misc_objects_consed;
+
+ EMACS_INT f_intervals_consed;
+
+ EMACS_INT f_strings_consed;
+
+ /* Minimum number of bytes of consing since GC before next GC. */
+ EMACS_INT f_gc_cons_threshold;
+
+ Lisp_Object f_Vgc_cons_percentage;
+
+ /* Nonzero means display messages at beginning and end of GC. */
+ int f_garbage_collection_messages;
+
+ /* Non-nil means defun should do purecopy on the function definition. */
+ Lisp_Object f_Vpurify_flag;
+
+ /* Non-nil means we are handling a memory-full error. */
+ Lisp_Object f_Vmemory_full;
+
+ /* Total number of bytes allocated in pure storage. */
+ EMACS_INT f_pure_bytes_used;
+
+ /* Pre-computed signal argument for use when memory is exhausted. */
+ Lisp_Object f_Vmemory_signal_data;
+
+ Lisp_Object f_Vpost_gc_hook;
+
+ Lisp_Object f_Vgc_elapsed;
+
+ EMACS_INT f_gcs_done;
+
+ /* Functions to call before and after each text change. */
+ Lisp_Object f_Vbefore_change_functions;
+
+ Lisp_Object f_Vafter_change_functions;
+
+ Lisp_Object f_Vtransient_mark_mode;
+
+ /* t means ignore all read-only text properties.
+ A list means ignore such a property if its value is a member of the list.
+ Any non-nil value means ignore buffer-read-only. */
+ Lisp_Object f_Vinhibit_read_only;
+
+ /* List of functions to call that can query about killing a buffer.
+ If any of these functions returns nil, we don't kill it. */
+ Lisp_Object f_Vkill_buffer_query_functions;
+
+ Lisp_Object f_Vchange_major_mode_hook;
+
+ /* List of functions to call before changing an unmodified buffer. */
+ Lisp_Object f_Vfirst_change_hook;
+
+ /* If nonzero, all modification hooks are suppressed. */
+ int f_inhibit_modification_hooks;
+
+ Lisp_Object f_Vbyte_code_meter;
+
+ int f_byte_metering_on;
+
+ Lisp_Object f_Vcurrent_prefix_arg;
+
+ Lisp_Object f_Vcommand_history;
+
+ Lisp_Object f_Vcommand_debug_status;
+
+ /* Non-nil means treat the mark as active
+ even if mark_active is 0. */
+ Lisp_Object f_Vmark_even_if_inactive;
+
+ Lisp_Object f_Vmouse_leave_buffer_hook;
+
+ Lisp_Object f_Vexec_path;
+ Lisp_Object f_Vexec_directory;
+ Lisp_Object f_Vexec_suffixes;
+
+ Lisp_Object f_Vdata_directory;
+ Lisp_Object f_Vdoc_directory;
+
+ Lisp_Object f_Vconfigure_info_directory;
+ Lisp_Object f_Vshared_game_score_directory;
+
+ Lisp_Object f_Vshell_file_name;
+
+ Lisp_Object f_Vprocess_environment;
+ Lisp_Object f_Vinitial_environment;
+
+ /* Variables to determine word boundary. */
+ Lisp_Object f_Vword_combining_categories;
+ Lisp_Object f_Vword_separating_categories;
+
+ /* This contains all code conversion map available to CCL. */
+ Lisp_Object f_Vcode_conversion_map_vector;
+
+ /* Alist of fontname patterns vs corresponding CCL program. */
+ Lisp_Object f_Vfont_ccl_encoder_alist;
+
+ /* Vector of registered hash tables for translation. */
+ Lisp_Object f_Vtranslation_hash_table_vector;
+
+ /* Vector of translation table ever defined.
+ ID of a translation table is used to index this vector. */
+ Lisp_Object f_Vtranslation_table_vector;
+
+ /* A char-table for characters which may invoke auto-filling. */
+ Lisp_Object f_Vauto_fill_chars;
+
+ /* A char-table. An element is non-nil iff the corresponding
+ character has a printable glyph. */
+ Lisp_Object f_Vprintable_chars;
+
+ /* A char-table. An elemnent is a column-width of the corresponding
+ character. */
+ Lisp_Object f_Vchar_width_table;
+
+ /* A char-table. An element is a symbol indicating the direction
+ property of corresponding character. */
+ Lisp_Object f_Vchar_direction_table;
+
+ /* Char table of scripts. */
+ Lisp_Object f_Vchar_script_table;
+
+ /* Alist of scripts vs representative characters. */
+ Lisp_Object f_Vscript_representative_chars;
+
+ Lisp_Object f_Vunicode_category_table;
+
+ /* List of all charsets. This variable is used only from Emacs
+ Lisp. */
+ Lisp_Object f_Vcharset_list;
+
+ Lisp_Object f_Vcharset_map_path;
+
+ /* If nonzero, don't load charset maps. */
+ int f_inhibit_load_charset_map;
+
+ Lisp_Object f_Vcurrent_iso639_language;
+
+ Lisp_Object f_Vpost_self_insert_hook;
+
+ int f_coding_system_require_warning;
+
+ Lisp_Object f_Vselect_safe_coding_system_function;
+
+ /* Mnemonic string for each format of end-of-line. */
+ Lisp_Object f_eol_mnemonic_unix;
+ Lisp_Object f_eol_mnemonic_dos;
+ Lisp_Object f_eol_mnemonic_mac;
+
+ /* Mnemonic string to indicate format of end-of-line is not yet
+ decided. */
+ Lisp_Object f_eol_mnemonic_undecided;
+
+ Lisp_Object f_Vcoding_system_list;
+ Lisp_Object f_Vcoding_system_alist;
+
+ /* Coding-system for reading files and receiving data from process. */
+ Lisp_Object f_Vcoding_system_for_read;
+
+ /* Coding-system for writing files and sending data to process. */
+ Lisp_Object f_Vcoding_system_for_write;
+
+ /* Coding-system actually used in the latest I/O. */
+ Lisp_Object f_Vlast_coding_system_used;
+
+ /* Set to non-nil when an error is detected while code conversion. */
+ Lisp_Object f_Vlast_code_conversion_error;
+
+ /* A vector of length 256 which contains information about special
+ Latin codes (especially for dealing with Microsoft codes). */
+ Lisp_Object f_Vlatin_extra_code_table;
+
+ /* Flag to inhibit code conversion of end-of-line format. */
+ int f_inhibit_eol_conversion;
+
+ /* Flag to inhibit ISO2022 escape sequence detection. */
+ int f_inhibit_iso_escape_detection;
+
+ /* Flag to inhibit detection of binary files through null bytes. */
+ int f_inhibit_null_byte_detection;
+
+ /* Flag to make buffer-file-coding-system inherit from process-coding. */
+ int f_inherit_process_coding_system;
+
+ Lisp_Object f_Vfile_coding_system_alist;
+
+ Lisp_Object f_Vprocess_coding_system_alist;
+
+ Lisp_Object f_Vnetwork_coding_system_alist;
+
+ Lisp_Object f_Vlocale_coding_system;
+
+ /* Flag to tell if we look up translation table on character code
+ conversion. */
+ Lisp_Object f_Venable_character_translation;
+
+ /* Standard translation table to look up on decoding (reading). */
+ Lisp_Object f_Vstandard_translation_table_for_decode;
+
+ /* Standard translation table to look up on encoding (writing). */
+ Lisp_Object f_Vstandard_translation_table_for_encode;
+
+ /* Alist of charsets vs revision number. */
+ Lisp_Object f_Vcharset_revision_table;
+
+ /* Default coding systems used for process I/O. */
+ Lisp_Object f_Vdefault_process_coding_system;
+
+ /* Char table for translating Quail and self-inserting input. */
+ Lisp_Object f_Vtranslation_table_for_input;
+
+ /* List of symbols `coding-category-xxx' ordered by priority. This
+ variable is exposed to Emacs Lisp. */
+ Lisp_Object f_Vcoding_category_list;
+
+ /* Function to call to adjust composition. */
+ Lisp_Object f_Vcompose_chars_after_function;
+
+ Lisp_Object f_Vauto_composition_mode;
+
+ Lisp_Object f_Vauto_composition_function;
+
+ Lisp_Object f_Vcomposition_function_table;
+
+ Lisp_Object f_Vmost_positive_fixnum;
+ Lisp_Object f_Vmost_negative_fixnum;
+
+ /* Registered buses. */
+ Lisp_Object f_Vdbus_registered_buses;
+
+ /* Hash table which keeps function definitions. */
+ Lisp_Object f_Vdbus_registered_objects_table;
+
+ /* Whether to debug D-Bus. */
+ Lisp_Object f_Vdbus_debug;
+
+ Lisp_Object f_Vcompletion_ignored_extensions;
+
+ /* Non-zero means don't pause redisplay for pending input. (This is
+ for debugging and for a future implementation of EDT-like
+ scrolling. */
+ int f_redisplay_dont_pause;
+
+ /* If a number (float), check for user input every N seconds. */
+ Lisp_Object f_Vredisplay_preemption_period;
+
+ /* Lisp variable visible-bell; enables use of screen-flash instead of
+ audible bell. */
+ int f_visible_bell;
+
+ /* Invert the color of the whole frame, at a low level. */
+ int f_inverse_video;
+
+ /* Line speed of the terminal. */
+ EMACS_INT f_baud_rate;
+
+ /* Either nil or a symbol naming the window system under which Emacs
+ creates the first frame. */
+ Lisp_Object f_Vinitial_window_system;
+
+ /* Version number of X windows: 10, 11 or nil. */
+ Lisp_Object f_Vwindow_system_version;
+
+ /* Vector of glyph definitions. Indexed by glyph number, the contents
+ are a string which is how to output the glyph.
+
+ If Vglyph_table is nil, a glyph is output by using its low 8 bits
+ as a character code.
+
+ This is an obsolete feature that is no longer used. The variable
+ is retained for compatibility. */
+ Lisp_Object f_Vglyph_table;
+
+ /* Display table to use for vectors that don't specify their own. */
+ Lisp_Object f_Vstandard_display_table;
+
+ /* Nonzero means reading single-character input with prompt so put
+ cursor on mini-buffer after the prompt. Positive means at end of
+ text in echo area; negative means at beginning of line. */
+ int f_cursor_in_echo_area;
+
+ Lisp_Object f_Vdoc_file_name;
+
+ /* A list of files used to build this Emacs binary. */
+ Lisp_Object f_Vbuild_files;
+
+ /* country info */
+ EMACS_INT f_dos_country_code;
+
+ EMACS_INT f_dos_codepage;
+
+ EMACS_INT f_dos_timezone_offset;
+
+ EMACS_INT f_dos_decimal_point;
+
+ EMACS_INT f_dos_keyboard_layout;
+
+ EMACS_INT f_dos_hyper_key;
+
+ EMACS_INT f_dos_super_key;
+
+ EMACS_INT f_dos_keypad_mode;
+
+ Lisp_Object f_Vdos_version;
+
+ Lisp_Object f_Vdos_display_scancodes;
+
+ Lisp_Object f_Vdos_windows_version;
+
+ Lisp_Object f_Vbuffer_access_fontify_functions;
+
+ Lisp_Object f_Vbuffer_access_fontified_property;
+
+ /* Non-nil means don't stop at field boundary in text motion commands. */
+ Lisp_Object f_Vinhibit_field_text_motion;
+
+ /* Some static data, and a function to initialize it for each run */
+ Lisp_Object f_Vsystem_name;
+
+ Lisp_Object f_Vuser_real_login_name;
+
+ Lisp_Object f_Vuser_full_name;
+
+ Lisp_Object f_Vuser_login_name;
+
+ Lisp_Object f_Voperating_system_release;
+
+ /* Command line args from shell, as list of strings. */
+ Lisp_Object f_Vcommand_line_args;
+
+ /* The name under which Emacs was invoked, with any leading directory
+ names discarded. */
+ Lisp_Object f_Vinvocation_name;
+
+ /* The directory name from which Emacs was invoked. */
+ Lisp_Object f_Vinvocation_directory;
+
+ /* The directory name in which to find subdirs such as lisp and etc.
+ nil means get them only from PATH_LOADSEARCH. */
+ Lisp_Object f_Vinstallation_directory;
+
+ /* The values of `current-time' before and after Emacs initialization. */
+ Lisp_Object f_Vbefore_init_time;
+ Lisp_Object f_Vafter_init_time;
+
+ /* Hook run by `kill-emacs' before it does really anything. */
+ Lisp_Object f_Vkill_emacs_hook;
+
+ /* Search path separator. */
+ Lisp_Object f_Vpath_separator;
+
+ /* Variable whose value is symbol giving operating system type. */
+ Lisp_Object f_Vsystem_type;
+
+ /* Variable whose value is string giving configuration built for. */
+ Lisp_Object f_Vsystem_configuration;
+
+ /* Variable whose value is string giving configuration options,
+ for use when reporting bugs. */
+ Lisp_Object f_Vsystem_configuration_options;
+
+ /* Current and previous system locales for messages and time. */
+ Lisp_Object f_Vsystem_messages_locale;
+
+ Lisp_Object f_Vprevious_system_messages_locale;
+
+ Lisp_Object f_Vsystem_time_locale;
+
+ Lisp_Object f_Vprevious_system_time_locale;
+
+ /* Copyright and version info. The version number may be updated by
+ Lisp code. */
+ Lisp_Object f_Vemacs_copyright;
+ Lisp_Object f_Vemacs_version;
+
+ /* Alist of external libraries and files implementing them. */
+ Lisp_Object f_Vdynamic_library_alist;
+
+ /* Value of Lisp variable `noninteractive'.
+ Normally same as C variable `noninteractive'
+ but nothing terrible happens if user sets this one. */
+ int f_noninteractive1;
+
+ /* Nonzero means Emacs was run in --quick mode. */
+ int f_inhibit_x_resources;
+
+ Lisp_Object f_Vinhibit_quit;
+ Lisp_Object f_Vquit_flag;
+
+ /* Maximum size allowed for specpdl allocation */
+ EMACS_INT f_max_specpdl_size;
+
+ /* Maximum allowed depth in Lisp evaluations and function calls. */
+ EMACS_INT f_max_lisp_eval_depth;
+
+ /* Nonzero means enter debugger before next function call */
+ int f_debug_on_next_call;
+
+ /* Non-zero means debugger may continue. This is zero when the
+ debugger is called during redisplay, where it might not be safe to
+ continue the interrupted redisplay. */
+ int f_debugger_may_continue;
+
+ /* List of conditions (non-nil atom means all) which enter the debugger
+ if an error is handled by the command loop's error handler. */
+ Lisp_Object f_Vdebug_on_error;
+
+ /* List of conditions and regexps specifying error messages which
+ do not enter the debugger even if Vdebug_on_error says they should. */
+ Lisp_Object f_Vdebug_ignored_errors;
+
+ /* Non-nil means call the debugger even if the error will be handled. */
+ Lisp_Object f_Vdebug_on_signal;
+
+ /* Hook for edebug to use. */
+ Lisp_Object f_Vsignal_hook_function;
+
+ /* Nonzero means enter debugger if a quit signal
+ is handled by the command loop's error handler. */
+ int f_debug_on_quit;
+
+ Lisp_Object f_Vdebugger;
+
+ /* Function to process declarations in defmacro forms. */
+ Lisp_Object f_Vmacro_declaration_function;
+
+ /* Coding system for file names, or nil if none. */
+ Lisp_Object f_Vfile_name_coding_system;
+
+ /* Coding system for file names used only when
+ Vfile_name_coding_system is nil. */
+ Lisp_Object f_Vdefault_file_name_coding_system;
+
+ /* Alist of elements (REGEXP . HANDLER) for file names
+ whose I/O is done with a special handler. */
+ Lisp_Object f_Vfile_name_handler_alist;
+
+ /* Function to be called to decide a coding system of a reading file. */
+ Lisp_Object f_Vset_auto_coding_function;
+
+ /* Functions to be called to process text properties in inserted file. */
+ Lisp_Object f_Vafter_insert_file_functions;
+
+ /* Functions to be called to create text property annotations for file. */
+ Lisp_Object f_Vwrite_region_annotate_functions;
+
+ Lisp_Object f_Vwrite_region_post_annotation_function;
+
+ /* During build_annotations, each time an annotation function is called,
+ this holds the annotations made by the previous functions. */
+ Lisp_Object f_Vwrite_region_annotations_so_far;
+
+ /* File name in which we write a list of all our auto save files. */
+ Lisp_Object f_Vauto_save_list_file_name;
+
+ /* Whether or not files are auto-saved into themselves. */
+ Lisp_Object f_Vauto_save_visited_file_name;
+
+ /* Whether or not to continue auto-saving after a large deletion. */
+ Lisp_Object f_Vauto_save_include_big_deletions;
+
+ /* Nonzero means skip the call to fsync in Fwrite-region. */
+ int f_write_region_inhibit_fsync;
+
+ /* Non-zero means call move-file-to-trash in Fdelete_file or
+ Fdelete_directory_internal. */
+ int f_delete_by_moving_to_trash;
+
+ /* These variables describe handlers that have "already" had a chance
+ to handle the current operation.
+
+ Vinhibit_file_name_handlers is a list of file name handlers.
+ Vinhibit_file_name_operation is the operation being handled.
+ If we try to handle that operation, we ignore those handlers. */
+ Lisp_Object f_Vinhibit_file_name_handlers;
+
+ Lisp_Object f_Vinhibit_file_name_operation;
+
+ /* The directory for writing temporary files. */
+ Lisp_Object f_Vtemporary_file_directory;
+
+ /* Nonzero enables use of dialog boxes for questions
+ asked by mouse commands. */
+ int f_use_dialog_box;
+
+ /* Nonzero enables use of a file dialog for file name
+ questions asked by mouse commands. */
+ int f_use_file_dialog;
+
+ Lisp_Object f_Vfeatures;
+
+ Lisp_Object f_Vfont_weight_table;
+ Lisp_Object f_Vfont_slant_table;
+ Lisp_Object f_Vfont_width_table;
+
+ Lisp_Object f_Vfont_encoding_alist;
+
+ Lisp_Object f_Vfont_log;
+
+ Lisp_Object f_Vfont_encoding_charset_alist;
+
+ Lisp_Object f_Vuse_default_ascent;
+
+ Lisp_Object f_Vignore_relative_composition;
+
+ Lisp_Object f_Valternate_fontname_alist;
+
+ Lisp_Object f_Vfontset_alias_alist;
+
+ Lisp_Object f_Vvertical_centering_font_regexp;
+
+ Lisp_Object f_Votf_script_alist;
+
+ /* If we shall make pointer invisible when typing or not. */
+ Lisp_Object f_Vmake_pointer_invisible;
+
+ /* The name we're using in resource queries. Most often "emacs". */
+ Lisp_Object f_Vx_resource_name;
+
+ /* The application class we're using in resource queries.
+ Normally "Emacs". */
+ Lisp_Object f_Vx_resource_class;
+
+ /* Lower limit value of the frame opacity (alpha transparency). */
+ Lisp_Object f_Vframe_alpha_lower_limit;
+
+ Lisp_Object f_Vmenu_bar_mode;
+ Lisp_Object f_Vtool_bar_mode;
+
+ Lisp_Object f_Vterminal_frame;
+
+ Lisp_Object f_Vdefault_frame_alist;
+
+ Lisp_Object f_Vdefault_frame_scroll_bars;
+
+ Lisp_Object f_Vmouse_position_function;
+
+ Lisp_Object f_Vmouse_highlight;
+
+ Lisp_Object f_Vdelete_frame_functions;
+
+ int f_focus_follows_mouse;
+
+ /* Non-nil means that newline may flow into the right fringe. */
+ Lisp_Object f_Voverflow_newline_into_fringe;
+
+ /* List of known fringe bitmap symbols.
+
+ The fringe bitmap number is stored in the `fringe' property on
+ those symbols. Names for the built-in bitmaps are installed by
+ loading fringe.el.
+ */
+ Lisp_Object f_Vfringe_bitmaps;
+
+ /* Search path for bitmap files. */
+ Lisp_Object f_Vx_bitmap_file_path;
+
+ /* A list of symbols, one for each supported image type. */
+ Lisp_Object f_Vimage_types;
+
+ /* Time in seconds after which images should be removed from the cache
+ if not displayed. */
+ Lisp_Object f_Vimage_cache_eviction_delay;
+
+ Lisp_Object f_Vmax_image_size;
+
+ /* Non-zero means draw a cross on images having `:conversion
+ disabled'. */
+ int f_cross_disabled_images;
+
+ Lisp_Object f_Vimagemagick_render_type;
+
+ /* Indentation can insert tabs if this is non-zero;
+ otherwise always uses spaces. */
+ int f_indent_tabs_mode;
+
+ /* Non-nil means don't call the after-change-functions right away,
+ just record an element in combine_after_change_list. */
+ Lisp_Object f_Vcombine_after_change_calls;
+
+ /* Check all markers in the current buffer, looking for something invalid. */
+ int f_check_markers_debug_flag;
+
+ /* Non-nil if the present key sequence was obtained by shift translation. */
+ Lisp_Object f_Vthis_command_keys_shift_translated;
+
+ /* If non-nil, the function that implements the display of help.
+ It's called with one argument, the help string to display. */
+ Lisp_Object f_Vshow_help_function;
+
+ /* Nonzero means do menu prompting. */
+ int f_menu_prompting;
+
+ /* Character to see next line of menu prompt. */
+ Lisp_Object f_menu_prompt_more_char;
+
+ /* Nonzero means disregard local maps for the menu bar. */
+ int f_inhibit_local_menu_bar_menus;
+
+ /* The user's hook function for outputting an error message. */
+ Lisp_Object f_Vcommand_error_function;
+
+ /* The user's ERASE setting. */
+ Lisp_Object f_Vtty_erase_char;
+
+ /* Character to recognize as the help char. */
+ Lisp_Object f_Vhelp_char;
+
+ /* List of other event types to recognize as meaning "help". */
+ Lisp_Object f_Vhelp_event_list;
+
+ /* Form to execute when help char is typed. */
+ Lisp_Object f_Vhelp_form;
+
+ /* Command to run when the help character follows a prefix key. */
+ Lisp_Object f_Vprefix_help_command;
+
+ /* List of items that should move to the end of the menu bar. */
+ Lisp_Object f_Vmenu_bar_final_items;
+
+ /* Expression to evaluate for the tool bar separator image.
+ This is used for build_desired_tool_bar_string only. For GTK, we
+ use GTK tool bar seperators. */
+ Lisp_Object f_Vtool_bar_separator_image_expression;
+
+ /* Non-nil means show the equivalent key-binding for
+ any M-x command that has one.
+ The value can be a length of time to show the message for.
+ If the value is non-nil and not a number, we wait 2 seconds. */
+ Lisp_Object f_Vsuggest_key_bindings;
+
+ /* How long to display an echo-area message when the minibuffer is active.
+ If the value is not a number, such messages don't time out. */
+ Lisp_Object f_Vminibuffer_message_timeout;
+
+ /* If non-nil, this is a map that overrides all other local maps. */
+ Lisp_Object f_Voverriding_local_map;
+
+ /* If non-nil, Voverriding_local_map applies to the menu bar. */
+ Lisp_Object f_Voverriding_local_map_menu_flag;
+
+ /* Keymap that defines special misc events that should
+ be processed immediately at a low level. */
+ Lisp_Object f_Vspecial_event_map;
+
+ /* Total number of times command_loop has read a key sequence. */
+ EMACS_INT f_num_input_keys;
+
+ /* Last input event read as a command. */
+ Lisp_Object f_last_command_event;
+
+ /* Last input character read as a command, not counting menus
+ reached by the mouse. */
+ Lisp_Object f_last_nonmenu_event;
+
+ /* Last input event read for any purpose. */
+ Lisp_Object f_last_input_event;
+
+ /* If not Qnil, a list of objects to be read as subsequent command input. */
+ Lisp_Object f_Vunread_command_events;
+
+ /* If not Qnil, a list of objects to be read as subsequent command input
+ including input method processing. */
+ Lisp_Object f_Vunread_input_method_events;
+
+ /* If not Qnil, a list of objects to be read as subsequent command input
+ but NOT including input method processing. */
+ Lisp_Object f_Vunread_post_input_method_events;
+
+ /* If not -1, an event to be read as subsequent command input. */
+ EMACS_INT f_unread_command_char;
+
+ /* A mask of extra modifier bits to put into every keyboard char. */
+ EMACS_INT f_extra_keyboard_modifiers;
+
+ /* Char to use as prefix when a meta character is typed in.
+ This is bound on entry to minibuffer in case ESC is changed there. */
+ Lisp_Object f_meta_prefix_char;
+
+ /* Number of idle seconds before an auto-save and garbage collection. */
+ Lisp_Object f_Vauto_save_timeout;
+
+ /* Total number of times read_char has returned, outside of macros. */
+ EMACS_INT f_num_nonmacro_input_events;
+
+ /* Auto-save automatically when this many characters have been typed
+ since the last time. */
+ EMACS_INT f_auto_save_interval;
+
+ /* The command being executed by the command loop.
+ Commands may set this, and the value set will be copied into
+ current_kboard->Vlast_command instead of the actual command. */
+ Lisp_Object f_Vthis_command;
+
+ /* If the lookup of the command returns a binding, the original
+ command is stored in this-original-command. It is nil otherwise. */
+ Lisp_Object f_Vthis_original_command;
+
+ /* A user-visible version of the above, intended to allow users to
+ figure out where the last event came from, if the event doesn't
+ carry that information itself (i.e. if it was a character). */
+ Lisp_Object f_Vlast_event_frame;
+
+ /* If non-nil, active regions automatically become the window selection. */
+ Lisp_Object f_Vselect_active_regions;
+
+ /* The text in the active region prior to modifying the buffer.
+ Used by the `select-active-regions' feature. */
+ Lisp_Object f_Vsaved_region_selection;
+
+ /* Echo unfinished commands after this many seconds of pause. */
+ Lisp_Object f_Vecho_keystrokes;
+
+ /* Form to evaluate (if non-nil) when Emacs is started. */
+ Lisp_Object f_Vtop_level;
+
+ /* If non-nil, this implements the current input method. */
+ Lisp_Object f_Vinput_method_function;
+
+ /* When we call Vinput_method_function,
+ this holds the echo area message that was just erased. */
+ Lisp_Object f_Vinput_method_previous_message;
+
+ /* Non-nil means deactivate the mark at end of this command. */
+ Lisp_Object f_Vdeactivate_mark;
+
+ /* Menu bar specified in Lucid Emacs fashion. */
+ Lisp_Object f_Vlucid_menu_bar_dirty_flag;
+
+ Lisp_Object f_Vpre_command_hook;
+
+ Lisp_Object f_Vpost_command_hook;
+
+ Lisp_Object f_Vcommand_hook_internal;
+
+ /* Parent keymap of terminal-local function-key-map instances. */
+ Lisp_Object f_Vfunction_key_map;
+
+ /* Keymap of key translations that can override keymaps. */
+ Lisp_Object f_Vkey_translation_map;
+
+ /* List of deferred actions to be performed at a later time.
+ The precise format isn't relevant here; we just check whether it is nil. */
+ Lisp_Object f_Vdeferred_action_list;
+
+ /* Function to call to handle deferred actions, when there are any. */
+ Lisp_Object f_Vdeferred_action_function;
+
+ /* If this flag is non-nil, we check mouse_moved to see when the
+ mouse moves, and motion events will appear in the input stream.
+ Otherwise, mouse motion is ignored. */
+ Lisp_Object f_do_mouse_tracking;
+
+ /* List of absolute timers. Appears in order of next scheduled event. */
+ Lisp_Object f_Vtimer_list;
+
+ /* List of idle time timers. Appears in order of next scheduled event. */
+ Lisp_Object f_Vtimer_idle_list;
+
+ /* After a command is executed, if point is moved into a region that
+ has specific properties (e.g. composition, display), we adjust
+ point to the boundary of the region. But, if a command sets this
+ variable to non-nil, we suppress this point adjustment. This
+ variable is set to nil before reading a command. */
+ Lisp_Object f_Vdisable_point_adjustment;
+
+ /* If non-nil, always disable point adjustment. */
+ Lisp_Object f_Vglobal_disable_point_adjustment;
+
+ /* If non-nil, events produced by disabled menu items and tool-bar
+ buttons are not ignored. Help functions bind this to allow help on
+ those items and buttons. */
+ Lisp_Object f_Venable_disabled_menus_and_buttons;
+
+ /* Nonzero means don't try to suspend even if the operating system seems
+ to support it. */
+ int f_cannot_suspend;
+
+ /* Number of seconds between polling for input. This is a Lisp
+ variable that can be bound. */
+ EMACS_INT f_polling_period;
+
+ /* subprocesses */
+ Lisp_Object f_Vthrow_on_input;
+
+ /* The maximum time between clicks to make a double-click, or Qnil to
+ disable double-click detection, or Qt for no time limit. */
+ Lisp_Object f_Vdouble_click_time;
+
+ /* Maximum number of pixels the mouse may be moved between clicks
+ to make a double-click. */
+ EMACS_INT f_double_click_fuzz;
+
+ /* was MinibufLocalMap */
+ Lisp_Object f_Vminibuffer_local_map;
+
+ /* was MinibufLocalNSMap */
+ Lisp_Object f_Vminibuffer_local_ns_map;
+
+ /* was MinibufLocalCompletionMap */
+ Lisp_Object f_Vminibuffer_local_completion_map;
+
+ /* keymap used for minibuffers when doing completion in filenames */
+ Lisp_Object f_Vminibuffer_local_filename_completion_map;
+
+ /* keymap used for minibuffers when doing completion in filenames
+ with require-match*/
+ Lisp_Object f_Vminibuffer_local_filename_must_match_map;
+
+ /* was MinibufLocalMustMatchMap */
+ Lisp_Object f_Vminibuffer_local_must_match_map;
+
+ /* Alist of minor mode variables and keymaps. */
+ Lisp_Object f_Vminor_mode_map_alist;
+
+ /* Alist of major-mode-specific overrides for
+ minor mode variables and keymaps. */
+ Lisp_Object f_Vminor_mode_overriding_map_alist;
+
+ /* List of emulation mode keymap alists. */
+ Lisp_Object f_Vemulation_mode_map_alists;
+
+ /* A list of all commands given new bindings since a certain time
+ when nil was stored here.
+ This is used to speed up recomputation of menu key equivalents
+ when Emacs starts up. t means don't record anything here. */
+ Lisp_Object f_Vdefine_key_rebound_commands;
+
+ Lisp_Object f_Vwhere_is_preferred_modifier;
+
+ Lisp_Object f_Vvalues;
+ Lisp_Object f_Vstandard_input;
+ Lisp_Object f_Vafter_load_alist;
+
+ Lisp_Object f_Vlexical_binding;
+
+ Lisp_Object f_Veval_buffer_list;
+
+ /* non-zero if inside `load' */
+ int f_load_in_progress;
+
+ /* Directory in which the sources were found. */
+ Lisp_Object f_Vsource_directory;
+
+ /* Search path and suffixes for files to be loaded. */
+ Lisp_Object f_Vload_path;
+ Lisp_Object f_Vload_suffixes;
+ Lisp_Object f_Vload_file_rep_suffixes;
+
+ /* File name of user's init file. */
+ Lisp_Object f_Vuser_init_file;
+
+ /* This is the user-visible association list that maps features to
+ lists of defs in their load files. */
+ Lisp_Object f_Vload_history;
+
+ /* This is used to build the load history. */
+ Lisp_Object f_Vcurrent_load_list;
+
+ /* List of files that were preloaded. */
+ Lisp_Object f_Vpreloaded_file_list;
+
+ /* Name of file actually being read by `load'. */
+ Lisp_Object f_Vload_file_name;
+
+ /* Function to use for reading, in `load' and friends. */
+ Lisp_Object f_Vload_read_function;
+
+ /* Non-nil means read recursive structures using #n= and #n# syntax. */
+ Lisp_Object f_Vread_circle;
+
+ /* Nonzero means load should forcibly load all dynamic doc strings. */
+ int f_load_force_doc_strings;
+
+ /* Nonzero means read should convert strings to unibyte. */
+ int f_load_convert_to_unibyte;
+
+ /* Function to use for loading an Emacs Lisp source file (not
+ compiled) instead of readevalloop. */
+ Lisp_Object f_Vload_source_file_function;
+
+ /* List of all DEFVAR_BOOL variables. Used by the byte optimizer. */
+ Lisp_Object f_Vbyte_boolean_vars;
+
+ /* Whether or not to add a `read-positions' property to symbols
+ read. */
+ Lisp_Object f_Vread_with_symbol_positions;
+
+ /* List of (SYMBOL . POSITION) accumulated so far. */
+ Lisp_Object f_Vread_symbol_positions_list;
+
+ Lisp_Object f_Vold_style_backquotes;
+
+ /* Non-zero means load dangerous compiled Lisp files. */
+ int f_load_dangerous_libraries;
+
+ /* Non-zero means force printing messages when loading Lisp files. */
+ int f_force_load_messages;
+
+ /* A regular expression used to detect files compiled with Emacs. */
+ Lisp_Object f_Vbytecomp_version_regexp;
+
+ Lisp_Object f_Vobarray;
+
+ /* Normal hook run whenever a keyboard macro terminates. */
+ Lisp_Object f_Vkbd_macro_termination_hook;
+
+ /* Kbd macro currently being executed (a string or vector). */
+ Lisp_Object f_Vexecuting_kbd_macro;
+
+ /* Index of next character to fetch from that macro. */
+ EMACS_INT f_executing_kbd_macro_index;
+
+ /* Nonzero means enable debugging checks on byte/char correspondences. */
+ int f_byte_debug_flag;
+
+ Lisp_Object f_Vhistory_length;
+
+ /* No duplicates in history. */
+ int f_history_delete_duplicates;
+
+ /* Non-nil means add new input to history. */
+ Lisp_Object f_Vhistory_add_new_input;
+
+ /* Nonzero means let functions called when within a minibuffer
+ invoke recursive minibuffers (to read arguments, or whatever) */
+ int f_enable_recursive_minibuffers;
+
+ /* Nonzero means don't ignore text properties
+ in Fread_from_minibuffer. */
+ int f_minibuffer_allow_text_properties;
+
+ /* help-form is bound to this while in the minibuffer. */
+ Lisp_Object f_Vminibuffer_help_form;
+
+ /* Variable which is the history list to add minibuffer values to. */
+ Lisp_Object f_Vminibuffer_history_variable;
+
+ /* Current position in the history list (adjusted by M-n and M-p). */
+ Lisp_Object f_Vminibuffer_history_position;
+
+ /* Text properties that are added to minibuffer prompts.
+ These are in addition to the basic `field' property, and stickiness
+ properties. */
+ Lisp_Object f_Vminibuffer_prompt_properties;
+
+ Lisp_Object f_Vminibuffer_setup_hook;
+
+ Lisp_Object f_Vminibuffer_exit_hook;
+
+ Lisp_Object f_Vread_expression_history;
+
+ /* Function to call to read a buffer name. */
+ Lisp_Object f_Vread_buffer_function;
+
+ /* Nonzero means completion ignores case. */
+ int f_completion_ignore_case;
+
+ int f_read_buffer_completion_ignore_case;
+
+ /* List of regexps that should restrict possible completions. */
+ Lisp_Object f_Vcompletion_regexp_list;
+
+ /* Nonzero means raise the minibuffer frame when the minibuffer
+ is entered. */
+ int f_minibuffer_auto_raise;
+
+ /* Keymap for reading expressions. */
+ Lisp_Object f_Vread_expression_map;
+
+ Lisp_Object f_Vminibuffer_completion_table;
+
+ Lisp_Object f_Vminibuffer_completion_predicate;
+
+ Lisp_Object f_Vminibuffer_completion_confirm;
+
+ Lisp_Object f_Vminibuffer_completing_file_name;
+
+ Lisp_Object f_Vdos_unsupported_char_glyph;
+
+ Lisp_Object f_Vstandard_output;
+
+ Lisp_Object f_Vfloat_output_format;
+
+ /* Maximum length of list to print in full; noninteger means
+ effectively infinity */
+ Lisp_Object f_Vprint_length;
+
+ /* Maximum depth of list to print in full; noninteger means
+ effectively infinity. */
+ Lisp_Object f_Vprint_level;
+
+ /* Nonzero means print newlines in strings as \n. */
+ int f_print_escape_newlines;
+
+ /* Nonzero means to print single-byte non-ascii characters in strings as
+ octal escapes. */
+ int f_print_escape_nonascii;
+
+ /* Nonzero means to print multibyte characters in strings as hex escapes. */
+ int f_print_escape_multibyte;
+
+ /* Nonzero means print (quote foo) forms as 'foo, etc. */
+ int f_print_quoted;
+
+ /* Non-nil means print #: before uninterned symbols. */
+ Lisp_Object f_Vprint_gensym;
+
+ /* Non-nil means print recursive structures using #n= and #n# syntax. */
+ Lisp_Object f_Vprint_circle;
+
+ /* Non-nil means keep continuous number for #n= and #n# syntax
+ between several print functions. */
+ Lisp_Object f_Vprint_continuous_numbering;
+
+ Lisp_Object f_Vprint_number_table;
+
+ /* A flag to control printing of `charset' text property.
+ The default value is Qdefault. */
+ Lisp_Object f_Vprint_charset_text_property;
+
+ /* Nonzero means delete a process right away if it exits. */
+ int f_delete_exited_processes;
+
+ /* t means use pty, nil means use a pipe,
+ maybe other values to come. */
+ Lisp_Object f_Vprocess_connection_type;
+
+ /* Non-nil means to delay reading process output to improve buffering.
+ A value of t means that delay is reset after each send, any other
+ non-nil value does not reset the delay. A value of nil disables
+ adaptive read buffering completely. */
+ Lisp_Object f_Vprocess_adaptive_read_buffering;
+
+ Lisp_Object f_Vsearch_spaces_regexp;
+
+ /* If non-nil, the match data will not be changed during call to
+ searching or matching functions. This variable is for internal use
+ only. */
+ Lisp_Object f_Vinhibit_changing_match_data;
+
+ int f_words_include_escapes;
+
+ int f_parse_sexp_lookup_properties;
+
+ /* Nonzero means `scan-sexps' treat all multibyte characters as symbol. */
+ int f_multibyte_syntax_as_symbol;
+
+ /* Non-zero means an open parenthesis in column 0 is always considered
+ to be the start of a defun. Zero means an open parenthesis in
+ column 0 has no special meaning. */
+ int f_open_paren_in_column_0_is_defun_start;
+
+ int f_parse_sexp_ignore_comments;
+
+ /* Char-table of functions that find the next or previous word
+ boundary. */
+ Lisp_Object f_Vfind_word_boundary_function_table;
+
+ /* If true, use "vs", otherwise use "ve" to make the cursor visible. */
+ int f_visible_cursor;
+
+ /* Functions to call after suspending a tty. */
+ Lisp_Object f_Vsuspend_tty_functions;
+
+ /* Functions to call after resuming a tty. */
+ Lisp_Object f_Vresume_tty_functions;
+
+ /* Nonzero means no need to redraw the entire frame on resuming a
+ suspended Emacs. This is useful on terminals with multiple
+ pages, where one page is used for Emacs and another for all
+ else. */
+ int f_no_redraw_on_reenter;
+
+ /* Provided for lisp packages. */
+ int f_system_uses_terminfo;
+
+ /* Function to use to ring the bell. */
+ Lisp_Object f_Vring_bell_function;
+
+ Lisp_Object f_Vdelete_terminal_functions;
+
+ Lisp_Object f_Vinhibit_point_motion_hooks;
+
+ Lisp_Object f_Vdefault_text_properties;
+
+ Lisp_Object f_Vchar_property_alias_alist;
+
+ Lisp_Object f_Vtext_property_default_nonsticky;
+
+ /* Limits controlling how much undo information to keep. */
+ EMACS_INT f_undo_limit;
+
+ EMACS_INT f_undo_strong_limit;
+
+ Lisp_Object f_Vundo_outer_limit;
+
+ /* Function to call when undo_outer_limit is exceeded. */
+ Lisp_Object f_Vundo_outer_limit_function;
+
+ /* Nonzero means do not record point in record_point. */
+ int f_undo_inhibit_record_point;
+
+ /* Coding system for communicating with other Windows programs via the
+ clipboard. */
+ Lisp_Object f_Vselection_coding_system;
+
+ /* Coding system for the next communicating with other Windows programs. */
+ Lisp_Object f_Vnext_selection_coding_system;
+
+ /* Determine whether to make frame dimensions match the screen buffer,
+ or the current window size. The former is desirable when running
+ over telnet, while the latter is more useful when working directly at
+ the console with a large scroll-back buffer. */
+ int f_w32_use_full_screen_buffer;
+
+ /* The colormap for converting color names to RGB values */
+ Lisp_Object f_Vw32_color_map;
+
+ /* Non nil if alt key presses are passed on to Windows. */
+ Lisp_Object f_Vw32_pass_alt_to_system;
+
+ /* Non nil if alt key is translated to meta_modifier, nil if it is translated
+ to alt_modifier. */
+ Lisp_Object f_Vw32_alt_is_meta;
+
+ /* If non-zero, the windows virtual key code for an alternative quit key. */
+ int f_w32_quit_key;
+
+ /* Non nil if left window key events are passed on to Windows (this only
+ affects whether "tapping" the key opens the Start menu). */
+ Lisp_Object f_Vw32_pass_lwindow_to_system;
+
+ /* Non nil if right window key events are passed on to Windows (this
+ only affects whether "tapping" the key opens the Start menu). */
+ Lisp_Object f_Vw32_pass_rwindow_to_system;
+
+ /* Virtual key code used to generate "phantom" key presses in order
+ to stop system from acting on Windows key events. */
+ Lisp_Object f_Vw32_phantom_key_code;
+
+ /* Modifier associated with the left "Windows" key, or nil to act as a
+ normal key. */
+ Lisp_Object f_Vw32_lwindow_modifier;
+
+ /* Modifier associated with the right "Windows" key, or nil to act as a
+ normal key. */
+ Lisp_Object f_Vw32_rwindow_modifier;
+
+ /* Modifier associated with the "Apps" key, or nil to act as a normal
+ key. */
+ Lisp_Object f_Vw32_apps_modifier;
+
+ /* Value is nil if Num Lock acts as a function key. */
+ Lisp_Object f_Vw32_enable_num_lock;
+
+ /* Value is nil if Caps Lock acts as a function key. */
+ Lisp_Object f_Vw32_enable_caps_lock;
+
+ /* Modifier associated with Scroll Lock, or nil to act as a normal key. */
+ Lisp_Object f_Vw32_scroll_lock_modifier;
+
+ /* Switch to control whether we inhibit requests for synthesized bold
+ and italic versions of fonts. */
+ int f_w32_enable_synthesized_fonts;
+
+ /* Enable palette management. */
+ Lisp_Object f_Vw32_enable_palette;
+
+ /* Control how close left/right button down events must be to
+ be converted to a middle button down event. */
+ int f_w32_mouse_button_tolerance;
+
+ /* Minimum interval between mouse movement (and scroll bar drag)
+ events that are passed on to the event loop. */
+ int f_w32_mouse_move_interval;
+
+ /* Flag to indicate if XBUTTON events should be passed on to Windows. */
+ int f_w32_pass_extra_mouse_buttons_to_system;
+
+ /* Flag to indicate if media keys should be passed on to Windows. */
+ int f_w32_pass_multimedia_buttons_to_system;
+
+ /* Non nil if no window manager is in use. */
+ Lisp_Object f_Vx_no_window_manager;
+
+ /* The background and shape of the mouse pointer, and shape when not
+ over text or in the modeline. */
+ Lisp_Object f_Vx_pointer_shape;
+ Lisp_Object f_Vx_nontext_pointer_shape;
+ Lisp_Object f_Vx_mode_pointer_shape;
+
+ /* TODO: Mouse cursor customization. */
+ Lisp_Object f_Vx_hourglass_pointer_shape;
+ Lisp_Object f_Vx_window_horizontal_drag_shape;
+
+ /* The shape when over mouse-sensitive text. */
+ Lisp_Object f_Vx_sensitive_text_pointer_shape;
+
+ /* Color of chars displayed in cursor box. */
+ Lisp_Object f_Vx_cursor_fore_pixel;
+
+ /* Regexp matching a font name whose width is the same as `PIXEL_SIZE'. */
+ Lisp_Object f_Vx_pixel_size_width_font_regexp;
+
+ /* Alist of bdf fonts and the files that define them. */
+ Lisp_Object f_Vw32_bdf_filename_alist;
+
+ /* A flag to control whether fonts are matched strictly or not. */
+ int f_w32_strict_fontnames;
+
+ /* A flag to control whether we should only repaint if GetUpdateRect
+ indicates there is an update region. */
+ int f_w32_strict_painting;
+
+ /* The ANSI codepage. */
+ int f_w32_ansi_code_page;
+
+ /* Maximum size for tooltips; a cons (COLUMNS . ROWS). */
+ Lisp_Object f_Vx_max_tooltip_size;
+
+ /* Associative list linking character set strings to Windows codepages. */
+ Lisp_Object f_Vw32_charset_info_alist;
+
+ /* Control whether spawnve quotes arguments as necessary to ensure
+ correct parsing by child process. Because not all uses of spawnve
+ are careful about constructing argv arrays, we make this behavior
+ conditional (off by default). */
+ Lisp_Object f_Vw32_quote_process_args;
+
+ /* Control whether create_child causes the process' window to be
+ hidden. The default is nil. */
+ Lisp_Object f_Vw32_start_process_show_window;
+
+ /* Control whether create_child causes the process to inherit Emacs'
+ console window, or be given a new one of its own. The default is
+ nil, to allow multiple DOS programs to run on Win95. Having separate
+ consoles also allows Emacs to cleanly terminate process groups. */
+ Lisp_Object f_Vw32_start_process_share_console;
+
+ /* Control whether create_child cause the process to inherit Emacs'
+ error mode setting. The default is t, to minimize the possibility of
+ subprocesses blocking when accessing unmounted drives. */
+ Lisp_Object f_Vw32_start_process_inherit_error_mode;
+
+ /* Time to sleep before reading from a subprocess output pipe - this
+ avoids the inefficiency of frequently reading small amounts of data.
+ This is primarily necessary for handling DOS processes on Windows 95,
+ but is useful for W32 processes on both Windows 95 and NT as well. */
+ int f_w32_pipe_read_delay;
+
+ /* Control conversion of upper case file names to lower case.
+ nil means no, t means yes. */
+ Lisp_Object f_Vw32_downcase_file_names;
+
+ /* Control whether stat() attempts to generate fake but hopefully
+ "accurate" inode values, by hashing the absolute truenames of files.
+ This should detect aliasing between long and short names, but still
+ allows the possibility of hash collisions. */
+ Lisp_Object f_Vw32_generate_fake_inodes;
+
+ /* Control whether stat() attempts to determine file type and link count
+ exactly, at the expense of slower operation. Since true hard links
+ are supported on NTFS volumes, this is only relevant on NT. */
+ Lisp_Object f_Vw32_get_true_file_attributes;
+
+ /* Coding system for communicating with other programs via the
+ clipboard. */
+
+ /* Coding system for the next communication with other programs. */
+
+ /* Non-nil means Emacs uses toolkit scroll bars. */
+ Lisp_Object f_Vx_toolkit_scroll_bars;
+
+ /* Non-zero means make use of UNDERLINE_POSITION font properties. */
+ int f_x_use_underline_position_properties;
+
+ /* Non-zero means to draw the underline at the same place as the descent line. */
+ int f_x_underline_at_descent_line;
+
+ int f_w32_use_visible_system_caret;
+
+ int f_w32_num_mouse_buttons;
+
+ Lisp_Object f_Vw32_swap_mouse_buttons;
+
+ /* Control whether x_raise_frame also sets input focus. */
+ Lisp_Object f_Vw32_grab_focus_on_raise;
+
+ /* Control whether Caps Lock affects non-ascii characters. */
+ Lisp_Object f_Vw32_capslock_is_shiftlock;
+
+ /* Control whether right-alt and left-ctrl should be recognized as AltGr. */
+ Lisp_Object f_Vw32_recognize_altgr;
+
+ /* Non-nil means it is the window for C-M-v to scroll
+ when the mini-buffer is selected. */
+ Lisp_Object f_Vminibuf_scroll_window;
+
+ /* Non-nil means this is the buffer whose window C-M-v should scroll. */
+ Lisp_Object f_Vother_window_scroll_buffer;
+
+ /* Non-nil means it's function to call to display temp buffers. */
+ Lisp_Object f_Vtemp_buffer_show_function;
+
+ /* Non-zero means line and page scrolling on tall lines (with images)
+ does partial scrolling by modifying window-vscroll. */
+ int f_auto_window_vscroll_p;
+
+ /* Non-zero means to use mode-line-inactive face in all windows but the
+ selected-window and the minibuffer-scroll-window when the
+ minibuffer is active. */
+ int f_mode_line_in_non_selected_windows;
+
+ /* If a window gets smaller than either of these, it is removed. */
+ EMACS_INT f_window_min_height;
+
+ EMACS_INT f_window_min_width;
+
+ /* Number of lines of continuity in scrolling by screenfuls. */
+ EMACS_INT f_next_screen_context_lines;
+
+ Lisp_Object f_Vwindow_configuration_change_hook;
+
+ /* Non-nil means scroll commands try to put point
+ at the same screen height as previously. */
+ Lisp_Object f_Vscroll_preserve_screen_position;
+
+ /* Non-nil means that text is inserted before window's markers. */
+ Lisp_Object f_Vwindow_point_insertion_type;
+
+ /* If non-nil, then the `recenter' command with a nil argument
+ the entire frame to be redrawn; the special value `tty' causes the
+ frame to be redrawn only if it is a tty frame. */
+ Lisp_Object f_Vrecenter_redisplay;
+
+ Lisp_Object f_Vwindow_scroll_functions;
+
+ Lisp_Object f_Vwindow_text_change_functions;
+
+ Lisp_Object f_Vredisplay_end_trigger_functions;
+
+ /* Functions called to fontify regions of text. */
+ Lisp_Object f_Vfontification_functions;
+
+ /* Non-nil means automatically select any window when the mouse
+ cursor moves into it. */
+ Lisp_Object f_Vmouse_autoselect_window;
+
+ Lisp_Object f_Vwrap_prefix;
+
+ Lisp_Object f_Vline_prefix;
+
+ /* Non-zero means draw tool bar buttons raised when the mouse moves
+ over them. */
+ int f_auto_raise_tool_bar_buttons_p;
+
+ /* Non-zero means to reposition window if cursor line is only partially visible. */
+ int f_make_cursor_line_fully_visible_p;
+
+ /* Margin below tool bar in pixels. 0 or nil means no margin.
+ If value is `internal-border-width' or `border-width',
+ the corresponding frame parameter is used. */
+ Lisp_Object f_Vtool_bar_border;
+
+ /* Margin around tool bar buttons in pixels. */
+ Lisp_Object f_Vtool_bar_button_margin;
+
+ /* Thickness of shadow to draw around tool bar buttons. */
+ EMACS_INT f_tool_bar_button_relief;
+
+ /* Non-nil means automatically resize tool-bars so that all tool-bar
+ items are visible, and no blank lines remain.
+
+ If value is `grow-only', only make tool-bar bigger. */
+ Lisp_Object f_Vauto_resize_tool_bars;
+
+ /* Type of tool bar. Can be symbols image, text, both or both-hroiz. */
+ Lisp_Object f_Vtool_bar_style;
+
+ /* Maximum number of characters a label can have to be shown. */
+ EMACS_INT f_tool_bar_max_label_size;
+
+ /* Non-zero means draw block and hollow cursor as wide as the glyph
+ under it. For example, if a block cursor is over a tab, it will be
+ drawn as wide as that tab on the display. */
+ int f_x_stretch_cursor_p;
+
+ Lisp_Object f_Vinhibit_redisplay;
+
+ /* Non-zero means Lisp evaluation during redisplay is inhibited. */
+ int f_inhibit_eval_during_redisplay;
+
+ /* Symbols used in text property values. */
+ Lisp_Object f_Vdisplay_pixels_per_inch;
+
+ /* Non-nil means highlight trailing whitespace. */
+ Lisp_Object f_Vshow_trailing_whitespace;
+
+ /* Non-nil means escape non-break space and hyphens. */
+ Lisp_Object f_Vnobreak_char_display;
+
+ /* Non-nil means show the text cursor in void text areas
+ i.e. in blank areas after eol and eob. This used to be
+ the default in 21.3. */
+ Lisp_Object f_Vvoid_text_area_pointer;
+
+ /* Nonzero means truncate lines in all windows less wide than the
+ frame. */
+ Lisp_Object f_Vtruncate_partial_width_windows;
+
+ /* A flag to control how to display unibyte 8-bit character. */
+ int f_unibyte_display_via_language_environment;
+
+ /* Nonzero means we have more than one non-mini-buffer-only frame.
+ Not guaranteed to be accurate except while parsing
+ frame-title-format. */
+ int f_multiple_frames;
+
+ Lisp_Object f_Vglobal_mode_string;
+
+ /* List of variables (symbols) which hold markers for overlay arrows.
+ The symbols on this list are examined during redisplay to determine
+ where to display overlay arrows. */
+ Lisp_Object f_Voverlay_arrow_variable_list;
+
+ /* Marker for where to display an arrow on top of the buffer text. */
+ Lisp_Object f_Voverlay_arrow_position;
+
+ /* String to display for the arrow. Only used on terminal frames. */
+ Lisp_Object f_Voverlay_arrow_string;
+
+ /* Like mode-line-format, but for the title bar on a visible frame. */
+ Lisp_Object f_Vframe_title_format;
+
+ /* Like mode-line-format, but for the title bar on an iconified frame. */
+ Lisp_Object f_Vicon_title_format;
+
+ /* List of functions to call when a window's size changes. These
+ functions get one arg, a frame on which one or more windows' sizes
+ have changed. */
+ Lisp_Object f_Vwindow_size_change_functions;
+
+ Lisp_Object f_Vmenu_bar_update_hook;
+
+ /* Nonzero means highlight the region even in nonselected windows. */
+ int f_highlight_nonselected_windows;
+
+ /* If cursor motion alone moves point off frame, try scrolling this
+ many lines up or down if that will bring it back. */
+ EMACS_INT f_emacs_scroll_step;
+
+ /* Nonzero means scroll just far enough to bring point back on the
+ screen, when appropriate. */
+ EMACS_INT f_scroll_conservatively;
+
+ /* Recenter the window whenever point gets within this many lines of
+ the top or bottom of the window. This value is translated into a
+ pixel value by multiplying it with FRAME_LINE_HEIGHT, which means
+ that there is really a fixed pixel height scroll margin. */
+ EMACS_INT f_scroll_margin;
+
+ /* Zero means display the mode-line/header-line/menu-bar in the default face
+ (this slightly odd definition is for compatibility with previous versions
+ of emacs), non-zero means display them using their respective faces.
+
+ This variable is deprecated. */
+ int f_mode_line_inverse_video;
+
+ /* Maximum buffer size for which to display line numbers. */
+ Lisp_Object f_Vline_number_display_limit;
+
+ /* Line width to consider when repositioning for line number display. */
+ EMACS_INT f_line_number_display_limit_width;
+
+ /* Number of lines to keep in the message log buffer. t means
+ infinite. nil means don't log at all. */
+ Lisp_Object f_Vmessage_log_max;
+
+ int f_inhibit_menubar_update;
+
+ /* When evaluating expressions from menu bar items (enable conditions,
+ for instance), this is the frame they are being processed for. */
+ Lisp_Object f_Vmenu_updating_frame;
+
+ /* Maximum height for resizing mini-windows. Either a float
+ specifying a fraction of the available height, or an integer
+ specifying a number of lines. */
+ Lisp_Object f_Vmax_mini_window_height;
+
+ /* Non-zero means messages should be displayed with truncated
+ lines instead of being continued. */
+ int f_message_truncate_lines;
+
+ /* How to blink the default frame cursor off. */
+ Lisp_Object f_Vblink_cursor_alist;
+
+ /* Variables to turn off display optimizations from Lisp. */
+ int f_inhibit_try_window_id;
+ int f_inhibit_try_window_reusing;
+
+ int f_inhibit_try_cursor_movement;
+
+ /* Non-zero means automatically scroll windows horizontally to make
+ point visible. */
+ int f_automatic_hscrolling_p;
+
+ /* How close to the margin can point get before the window is scrolled
+ horizontally. */
+ EMACS_INT f_hscroll_margin;
+
+ /* How much to scroll horizontally when point is inside the above margin. */
+ Lisp_Object f_Vhscroll_step;
+
+ /* The variable `resize-mini-windows'. If nil, don't resize
+ mini-windows. If t, always resize them to fit the text they
+ display. If `grow-only', let mini-windows grow only until they
+ become empty. */
+ Lisp_Object f_Vresize_mini_windows;
+
+ /* Space between overline and text. */
+ EMACS_INT f_overline_margin;
+
+ /* Require underline to be at least this many screen pixels below baseline
+ This to avoid underline "merging" with the base of letters at small
+ font sizes, particularly when x_use_underline_position_properties is on. */
+ EMACS_INT f_underline_minimum_offset;
+
+ /* Non-zero means don't free realized faces. Bound while freeing
+ realized faces is dangerous because glyph matrices might still
+ reference them. */
+ int f_inhibit_free_realized_faces;
+
+ /* Non-zero means we're allowed to display a hourglass pointer. */
+ int f_display_hourglass_p;
+
+ /* Number of seconds to wait before displaying an hourglass cursor. */
+ Lisp_Object f_Vhourglass_delay;
+
+ /* Char-table to control the display of glyphless characters. */
+ Lisp_Object f_Vglyphless_char_display;
+
+ EMACS_INT f_debug_end_pos;
+
+ /* Default stipple pattern used on monochrome displays. This stipple
+ pattern is used on monochrome displays instead of shades of gray
+ for a face background color. See `set-face-stipple' for possible
+ values for this variable. */
+ Lisp_Object f_Vface_default_stipple;
+
+ Lisp_Object f_Vscalable_fonts_allowed;
+
+ /* List of regular expressions that matches names of fonts to ignore. */
+ Lisp_Object f_Vface_ignored_fonts;
+
+ /* Alist of font name patterns vs the rescaling factor. */
+ Lisp_Object f_Vface_font_rescale_alist;
+
+ /* Maximum number of fonts to consider in font_list. If not an
+ integer > 0, DEFAULT_FONT_LIST_LIMIT is used instead. */
+ Lisp_Object f_Vfont_list_limit;
+
+ /* Alist of global face definitions. Each element is of the form
+ (FACE . LFACE) where FACE is a symbol naming a face and LFACE
+ is a Lisp vector of face attributes. These faces are used
+ to initialize faces for new frames. */
+ Lisp_Object f_Vface_new_frame_defaults;
+
+ /* Alist of face remappings. Each element is of the form:
+ (FACE REPLACEMENT...) which causes display of the face FACE to use
+ REPLACEMENT... instead. REPLACEMENT... is interpreted the same way
+ the value of a `face' text property is: it may be (1) A face name,
+ (2) A list of face names, (3) A property-list of face attribute/value
+ pairs, or (4) A list of face names intermixed with lists containing
+ face attribute/value pairs.
+
+ Multiple entries in REPLACEMENT... are merged together to form the final
+ result, with faces or attributes earlier in the list taking precedence
+ over those that are later.
+
+ Face-name remapping cycles are suppressed; recursive references use
+ the underlying face instead of the remapped face. */
+ Lisp_Object f_Vface_remapping_alist;
+
+ /* An alist of defined terminal colors and their RGB values. */
+ Lisp_Object f_Vtty_defined_color_alist;
+
+ /* LessTif/Motif version info. */
+ Lisp_Object f_Vmotif_version_string;
+
+ /* GTK+ version info */
+ Lisp_Object f_Vgtk_version_string;
+
+ /* Non-zero means prompt with the old GTK file selection dialog. */
+ int f_x_gtk_use_old_file_dialog;
+
+ /* If non-zero, by default show hidden files in the GTK file chooser. */
+ int f_x_gtk_show_hidden_files;
+
+ /* If non-zero, don't show additional help text in the GTK file chooser. */
+ int f_x_gtk_file_dialog_help_text;
+
+ /* If non-zero, don't collapse to tool bar when it is detached. */
+ int f_x_gtk_whole_detached_tool_bar;
+
+ /* If non-zero, use Gtk+ tooltips. */
+ int f_x_gtk_use_system_tooltips;
+
+ /* The background and shape of the mouse pointer, and shape when not
+ over text or in the modeline. */
+
+ /* The shape when over mouse-sensitive text. */
+
+ /* If non-nil, the pointer shape to indicate that windows can be
+ dragged horizontally. */
+
+ /* Color of chars displayed in cursor box. */
+
+ /* Non nil if no window manager is in use. */
+
+ /* Regexp matching a font name whose width is the same as `PIXEL_SIZE'. */
+
+ /* Maximum size for tooltips; a cons (COLUMNS . ROWS). */
+
+ Lisp_Object f_Vx_lost_selection_functions;
+
+ Lisp_Object f_Vx_sent_selection_functions;
+
+ /* This is an alist whose CARs are selection-types (whose names are the same
+ as the names of X Atoms) and whose CDRs are the names of Lisp functions to
+ call to convert the given Emacs selection value to a string representing
+ the given selection type. This is for Lisp-level extension of the emacs
+ selection handling. */
+ Lisp_Object f_Vselection_converter_alist;
+
+ /* If the selection owner takes too long to reply to a selection request,
+ we give up on it. This is in milliseconds (0 = no timeout.) */
+ EMACS_INT f_x_selection_timeout;
+
+ int f_use_system_font;
+
+ Lisp_Object f_Vxft_settings;
+
+ /* The client session id for this session as a lisp object. */
+ Lisp_Object f_Vx_session_id;
+
+ /* The id we had the previous session. This is only available if we
+ have been started by the session manager with SMID_OPT. */
+ Lisp_Object f_Vx_session_previous_id;
+
+ /* Non-nil means Emacs uses toolkit scroll bars. */
+
+ /* Non-zero means make use of UNDERLINE_POSITION font properties. */
+
+ /* Non-zero means to draw the underline at the same place as the descent line. */
+
+ /* Non-zero means to not move point as a result of clicking on a
+ frame to focus it (when focus-follows-mouse is nil). */
+ int f_x_mouse_click_focus_ignore_position;
+
+ /* The keysyms to use for the various modifiers. */
+ Lisp_Object f_Vx_alt_keysym;
+ Lisp_Object f_Vx_hyper_keysym;
+ Lisp_Object f_Vx_meta_keysym;
+ Lisp_Object f_Vx_super_keysym;
+
+ Lisp_Object f_Vx_keysym_table;
+
+ /* Lisp communications */
+ Lisp_Object f_ns_input_file, f_ns_input_font, f_ns_input_fontsize,
+ f_ns_input_line;
+ Lisp_Object f_ns_input_color, f_ns_input_text, f_ns_working_text;
+ Lisp_Object f_ns_input_spi_name, f_ns_input_spi_arg;
+
+ /* Specifies which emacs modifier should be generated when NS receives
+ the Alternate modifier. May be Qnone or any of the modifier lisp symbols.
+ */
+ Lisp_Object f_ns_alternate_modifier;
+
+ /* Specifies which emacs modifier should be generated when NS receives
+ the right Alternate modifier. Has same values as ns_alternate_modifier
+ plus the value Qleft which means whatever value ns_alternate_modifier has.
+ */
+ Lisp_Object f_ns_right_alternate_modifier;
+
+ /* Specifies which emacs modifier should be generated when NS receives
+ the Command modifier. May be any of the modifier lisp symbols. */
+ Lisp_Object f_ns_command_modifier;
+
+ /* Specifies which emacs modifier should be generated when NS receives
+ the right Command modifier. Has same values as ns_command_modifier plus
+ the value Qleft which means whatever value ns_command_modifier has. */
+ Lisp_Object f_ns_right_command_modifier;
+
+ /* Specifies which emacs modifier should be generated when NS receives
+ the Control modifier. May be any of the modifier lisp symbols. */
+ Lisp_Object f_ns_control_modifier;
+
+ /* Specifies which emacs modifier should be generated when NS receives
+ the right Control modifier. Has same values as ns_control_modifier plus
+ the value Qleft which means whatever value ns_control_modifier has. */
+ Lisp_Object f_ns_right_control_modifier;
+
+ /* Specifies which emacs modifier should be generated when NS receives
+ the Function modifier (laptops). May be any of the modifier lisp symbols.
+ */
+ Lisp_Object f_ns_function_modifier;
+
+ /* Control via default 'GSFontAntiAlias' on OS X and GNUstep. */
+ Lisp_Object f_ns_antialias_text;
+
+ /* Confirm on exit. */
+ Lisp_Object f_ns_confirm_quit;
+
+ /* Alist of elements (REGEXP . IMAGE) for images of icons associated
+ to frames.*/
+ Lisp_Object f_Vns_icon_type_alist;
+
+ /* Toolkit version support. */
+ Lisp_Object f_Vns_version_string;
+
+ Lisp_Object f_Vns_sent_selection_hooks;
+ Lisp_Object f_Vns_lost_selection_hooks;
+
+ /* This is an association list whose elements are of the form
+ ( SELECTION-NAME SELECTION-VALUE SELECTION-TIMESTAMP FRAME)
+ SELECTION-NAME is a lisp symbol, whose name is the name of an X Atom.
+ SELECTION-VALUE is the value that emacs owns for that selection.
+ It may be any kind of Lisp object.
+ SELECTION-TIMESTAMP is the time at which emacs began owning this
+ selection, as a cons of two 16-bit numbers (making a 32 bit time.)
+ FRAME is the frame for which we made the selection.
+ If there is an entry in this alist, then it can be assumed that Emacs owns
+ that selection.
+ The only (eq) parts of this list that are visible from Lisp are the
+ selection-values. */
+ Lisp_Object f_Vselection_alist;
+
+ Lisp_Object f_Vns_reg_to_script;
+
+
+};
+
+extern struct emacs_globals globals;
+
+#define Vafter_change_functions \
+ globals.f_Vafter_change_functions
+#define Vafter_init_time \
+ globals.f_Vafter_init_time
+#define Vafter_insert_file_functions \
+ globals.f_Vafter_insert_file_functions
+#define Vafter_load_alist \
+ globals.f_Vafter_load_alist
+#define Valternate_fontname_alist \
+ globals.f_Valternate_fontname_alist
+#define Vauto_composition_function \
+ globals.f_Vauto_composition_function
+#define Vauto_composition_mode \
+ globals.f_Vauto_composition_mode
+#define Vauto_fill_chars \
+ globals.f_Vauto_fill_chars
+#define Vauto_resize_tool_bars \
+ globals.f_Vauto_resize_tool_bars
+#define Vauto_save_include_big_deletions \
+ globals.f_Vauto_save_include_big_deletions
+#define Vauto_save_list_file_name \
+ globals.f_Vauto_save_list_file_name
+#define Vauto_save_timeout \
+ globals.f_Vauto_save_timeout
+#define Vauto_save_visited_file_name \
+ globals.f_Vauto_save_visited_file_name
+#define Vbefore_change_functions \
+ globals.f_Vbefore_change_functions
+#define Vbefore_init_time \
+ globals.f_Vbefore_init_time
+#define Vblink_cursor_alist \
+ globals.f_Vblink_cursor_alist
+#define Vbuffer_access_fontified_property \
+ globals.f_Vbuffer_access_fontified_property
+#define Vbuffer_access_fontify_functions \
+ globals.f_Vbuffer_access_fontify_functions
+#define Vbuild_files \
+ globals.f_Vbuild_files
+#define Vbyte_boolean_vars \
+ globals.f_Vbyte_boolean_vars
+#define Vbyte_code_meter \
+ globals.f_Vbyte_code_meter
+#define Vbytecomp_version_regexp \
+ globals.f_Vbytecomp_version_regexp
+#define Vchange_major_mode_hook \
+ globals.f_Vchange_major_mode_hook
+#define Vchar_direction_table \
+ globals.f_Vchar_direction_table
+#define Vchar_property_alias_alist \
+ globals.f_Vchar_property_alias_alist
+#define Vchar_script_table \
+ globals.f_Vchar_script_table
+#define Vchar_width_table \
+ globals.f_Vchar_width_table
+#define Vcharset_list \
+ globals.f_Vcharset_list
+#define Vcharset_map_path \
+ globals.f_Vcharset_map_path
+#define Vcharset_revision_table \
+ globals.f_Vcharset_revision_table
+#define Vcode_conversion_map_vector \
+ globals.f_Vcode_conversion_map_vector
+#define Vcoding_category_list \
+ globals.f_Vcoding_category_list
+#define Vcoding_system_alist \
+ globals.f_Vcoding_system_alist
+#define Vcoding_system_for_read \
+ globals.f_Vcoding_system_for_read
+#define Vcoding_system_for_write \
+ globals.f_Vcoding_system_for_write
+#define Vcoding_system_list \
+ globals.f_Vcoding_system_list
+#define Vcombine_after_change_calls \
+ globals.f_Vcombine_after_change_calls
+#define Vcommand_debug_status \
+ globals.f_Vcommand_debug_status
+#define Vcommand_error_function \
+ globals.f_Vcommand_error_function
+#define Vcommand_history \
+ globals.f_Vcommand_history
+#define Vcommand_hook_internal \
+ globals.f_Vcommand_hook_internal
+#define Vcommand_line_args \
+ globals.f_Vcommand_line_args
+#define Vcompletion_ignored_extensions \
+ globals.f_Vcompletion_ignored_extensions
+#define Vcompletion_regexp_list \
+ globals.f_Vcompletion_regexp_list
+#define Vcompose_chars_after_function \
+ globals.f_Vcompose_chars_after_function
+#define Vcomposition_function_table \
+ globals.f_Vcomposition_function_table
+#define Vconfigure_info_directory \
+ globals.f_Vconfigure_info_directory
+#define Vcurrent_iso639_language \
+ globals.f_Vcurrent_iso639_language
+#define Vcurrent_load_list \
+ globals.f_Vcurrent_load_list
+#define Vcurrent_prefix_arg \
+ globals.f_Vcurrent_prefix_arg
+#define Vdata_directory \
+ globals.f_Vdata_directory
+#define Vdbus_debug \
+ globals.f_Vdbus_debug
+#define Vdbus_registered_buses \
+ globals.f_Vdbus_registered_buses
+#define Vdbus_registered_objects_table \
+ globals.f_Vdbus_registered_objects_table
+#define Vdeactivate_mark \
+ globals.f_Vdeactivate_mark
+#define Vdebug_ignored_errors \
+ globals.f_Vdebug_ignored_errors
+#define Vdebug_on_error \
+ globals.f_Vdebug_on_error
+#define Vdebug_on_signal \
+ globals.f_Vdebug_on_signal
+#define Vdebugger \
+ globals.f_Vdebugger
+#define Vdefault_file_name_coding_system \
+ globals.f_Vdefault_file_name_coding_system
+#define Vdefault_frame_alist \
+ globals.f_Vdefault_frame_alist
+#define Vdefault_frame_scroll_bars \
+ globals.f_Vdefault_frame_scroll_bars
+#define Vdefault_process_coding_system \
+ globals.f_Vdefault_process_coding_system
+#define Vdefault_text_properties \
+ globals.f_Vdefault_text_properties
+#define Vdeferred_action_function \
+ globals.f_Vdeferred_action_function
+#define Vdeferred_action_list \
+ globals.f_Vdeferred_action_list
+#define Vdefine_key_rebound_commands \
+ globals.f_Vdefine_key_rebound_commands
+#define Vdelete_frame_functions \
+ globals.f_Vdelete_frame_functions
+#define Vdelete_terminal_functions \
+ globals.f_Vdelete_terminal_functions
+#define Vdisable_point_adjustment \
+ globals.f_Vdisable_point_adjustment
+#define Vdisplay_pixels_per_inch \
+ globals.f_Vdisplay_pixels_per_inch
+#define Vdoc_directory \
+ globals.f_Vdoc_directory
+#define Vdoc_file_name \
+ globals.f_Vdoc_file_name
+#define Vdos_display_scancodes \
+ globals.f_Vdos_display_scancodes
+#define Vdos_unsupported_char_glyph \
+ globals.f_Vdos_unsupported_char_glyph
+#define Vdos_version \
+ globals.f_Vdos_version
+#define Vdos_windows_version \
+ globals.f_Vdos_windows_version
+#define Vdouble_click_time \
+ globals.f_Vdouble_click_time
+#define Vdynamic_library_alist \
+ globals.f_Vdynamic_library_alist
+#define Vecho_keystrokes \
+ globals.f_Vecho_keystrokes
+#define Vemacs_copyright \
+ globals.f_Vemacs_copyright
+#define Vemacs_version \
+ globals.f_Vemacs_version
+#define Vemulation_mode_map_alists \
+ globals.f_Vemulation_mode_map_alists
+#define Venable_character_translation \
+ globals.f_Venable_character_translation
+#define Venable_disabled_menus_and_buttons \
+ globals.f_Venable_disabled_menus_and_buttons
+#define Veval_buffer_list \
+ globals.f_Veval_buffer_list
+#define Vexec_directory \
+ globals.f_Vexec_directory
+#define Vexec_path \
+ globals.f_Vexec_path
+#define Vexec_suffixes \
+ globals.f_Vexec_suffixes
+#define Vkbd_macro_termination_hook \
+ globals.f_Vkbd_macro_termination_hook
+#define Vexecuting_kbd_macro \
+ globals.f_Vexecuting_kbd_macro
+#define Vface_default_stipple \
+ globals.f_Vface_default_stipple
+#define Vface_font_rescale_alist \
+ globals.f_Vface_font_rescale_alist
+#define Vface_ignored_fonts \
+ globals.f_Vface_ignored_fonts
+#define Vface_new_frame_defaults \
+ globals.f_Vface_new_frame_defaults
+#define Vface_remapping_alist \
+ globals.f_Vface_remapping_alist
+#define Vfeatures \
+ globals.f_Vfeatures
+#define Vfile_coding_system_alist \
+ globals.f_Vfile_coding_system_alist
+#define Vfile_name_coding_system \
+ globals.f_Vfile_name_coding_system
+#define Vfile_name_handler_alist \
+ globals.f_Vfile_name_handler_alist
+#define Vfind_word_boundary_function_table \
+ globals.f_Vfind_word_boundary_function_table
+#define Vfirst_change_hook \
+ globals.f_Vfirst_change_hook
+#define Vfloat_output_format \
+ globals.f_Vfloat_output_format
+#define Vfont_ccl_encoder_alist \
+ globals.f_Vfont_ccl_encoder_alist
+#define Vfont_encoding_alist \
+ globals.f_Vfont_encoding_alist
+#define Vfont_encoding_charset_alist \
+ globals.f_Vfont_encoding_charset_alist
+#define Vfont_list_limit \
+ globals.f_Vfont_list_limit
+#define Vfont_log \
+ globals.f_Vfont_log
+#define Vfont_slant_table \
+ globals.f_Vfont_slant_table
+#define Vfont_weight_table \
+ globals.f_Vfont_weight_table
+#define Vfont_width_table \
+ globals.f_Vfont_width_table
+#define Vfontification_functions \
+ globals.f_Vfontification_functions
+#define Vfontset_alias_alist \
+ globals.f_Vfontset_alias_alist
+#define Vframe_alpha_lower_limit \
+ globals.f_Vframe_alpha_lower_limit
+#define Vframe_title_format \
+ globals.f_Vframe_title_format
+#define Vfringe_bitmaps \
+ globals.f_Vfringe_bitmaps
+#define Vfunction_key_map \
+ globals.f_Vfunction_key_map
+#define Vgc_cons_percentage \
+ globals.f_Vgc_cons_percentage
+#define Vgc_elapsed \
+ globals.f_Vgc_elapsed
+#define Vglobal_disable_point_adjustment \
+ globals.f_Vglobal_disable_point_adjustment
+#define Vglobal_mode_string \
+ globals.f_Vglobal_mode_string
+#define Vglyph_table \
+ globals.f_Vglyph_table
+#define Vglyphless_char_display \
+ globals.f_Vglyphless_char_display
+#define Vgtk_version_string \
+ globals.f_Vgtk_version_string
+#define Vhelp_char \
+ globals.f_Vhelp_char
+#define Vhelp_event_list \
+ globals.f_Vhelp_event_list
+#define Vhelp_form \
+ globals.f_Vhelp_form
+#define Vhistory_add_new_input \
+ globals.f_Vhistory_add_new_input
+#define Vhistory_length \
+ globals.f_Vhistory_length
+#define Vhourglass_delay \
+ globals.f_Vhourglass_delay
+#define Vhscroll_step \
+ globals.f_Vhscroll_step
+#define Vicon_title_format \
+ globals.f_Vicon_title_format
+#define Vignore_relative_composition \
+ globals.f_Vignore_relative_composition
+#define Vimage_cache_eviction_delay \
+ globals.f_Vimage_cache_eviction_delay
+#define Vimage_types \
+ globals.f_Vimage_types
+#define Vimagemagick_render_type \
+ globals.f_Vimagemagick_render_type
+#define Vinhibit_changing_match_data \
+ globals.f_Vinhibit_changing_match_data
+#define Vinhibit_field_text_motion \
+ globals.f_Vinhibit_field_text_motion
+#define Vinhibit_file_name_handlers \
+ globals.f_Vinhibit_file_name_handlers
+#define Vinhibit_file_name_operation \
+ globals.f_Vinhibit_file_name_operation
+#define Vinhibit_point_motion_hooks \
+ globals.f_Vinhibit_point_motion_hooks
+#define Vinhibit_quit \
+ globals.f_Vinhibit_quit
+#define Vinhibit_read_only \
+ globals.f_Vinhibit_read_only
+#define Vinhibit_redisplay \
+ globals.f_Vinhibit_redisplay
+#define Vinitial_environment \
+ globals.f_Vinitial_environment
+#define Vinitial_window_system \
+ globals.f_Vinitial_window_system
+#define Vinput_method_function \
+ globals.f_Vinput_method_function
+#define Vinput_method_previous_message \
+ globals.f_Vinput_method_previous_message
+#define Vinstallation_directory \
+ globals.f_Vinstallation_directory
+#define Vinvocation_directory \
+ globals.f_Vinvocation_directory
+#define Vinvocation_name \
+ globals.f_Vinvocation_name
+#define Vkey_translation_map \
+ globals.f_Vkey_translation_map
+#define Vkill_buffer_query_functions \
+ globals.f_Vkill_buffer_query_functions
+#define Vkill_emacs_hook \
+ globals.f_Vkill_emacs_hook
+#define Vlast_code_conversion_error \
+ globals.f_Vlast_code_conversion_error
+#define Vlast_coding_system_used \
+ globals.f_Vlast_coding_system_used
+#define Vlast_event_frame \
+ globals.f_Vlast_event_frame
+#define Vlatin_extra_code_table \
+ globals.f_Vlatin_extra_code_table
+#define Vline_number_display_limit \
+ globals.f_Vline_number_display_limit
+#define Vline_prefix \
+ globals.f_Vline_prefix
+#define Vload_file_name \
+ globals.f_Vload_file_name
+#define Vload_file_rep_suffixes \
+ globals.f_Vload_file_rep_suffixes
+#define Vload_history \
+ globals.f_Vload_history
+#define Vload_path \
+ globals.f_Vload_path
+#define Vload_read_function \
+ globals.f_Vload_read_function
+#define Vload_source_file_function \
+ globals.f_Vload_source_file_function
+#define Vload_suffixes \
+ globals.f_Vload_suffixes
+#define Vlocale_coding_system \
+ globals.f_Vlocale_coding_system
+#define Vlucid_menu_bar_dirty_flag \
+ globals.f_Vlucid_menu_bar_dirty_flag
+#define Vmacro_declaration_function \
+ globals.f_Vmacro_declaration_function
+#define Vmake_pointer_invisible \
+ globals.f_Vmake_pointer_invisible
+#define Vmark_even_if_inactive \
+ globals.f_Vmark_even_if_inactive
+#define Vmax_image_size \
+ globals.f_Vmax_image_size
+#define Vmax_mini_window_height \
+ globals.f_Vmax_mini_window_height
+#define Vmemory_full \
+ globals.f_Vmemory_full
+#define Vmemory_signal_data \
+ globals.f_Vmemory_signal_data
+#define Vmenu_bar_final_items \
+ globals.f_Vmenu_bar_final_items
+#define Vmenu_bar_mode \
+ globals.f_Vmenu_bar_mode
+#define Vmenu_bar_update_hook \
+ globals.f_Vmenu_bar_update_hook
+#define Vmenu_updating_frame \
+ globals.f_Vmenu_updating_frame
+#define Vmessage_log_max \
+ globals.f_Vmessage_log_max
+#define Vminibuf_scroll_window \
+ globals.f_Vminibuf_scroll_window
+#define Vminibuffer_completing_file_name \
+ globals.f_Vminibuffer_completing_file_name
+#define Vminibuffer_completion_confirm \
+ globals.f_Vminibuffer_completion_confirm
+#define Vminibuffer_completion_predicate \
+ globals.f_Vminibuffer_completion_predicate
+#define Vminibuffer_completion_table \
+ globals.f_Vminibuffer_completion_table
+#define Vminibuffer_exit_hook \
+ globals.f_Vminibuffer_exit_hook
+#define Vminibuffer_help_form \
+ globals.f_Vminibuffer_help_form
+#define Vminibuffer_history_position \
+ globals.f_Vminibuffer_history_position
+#define Vminibuffer_history_variable \
+ globals.f_Vminibuffer_history_variable
+#define Vminibuffer_local_completion_map \
+ globals.f_Vminibuffer_local_completion_map
+#define Vminibuffer_local_filename_completion_map \
+ globals.f_Vminibuffer_local_filename_completion_map
+#define Vminibuffer_local_filename_must_match_map \
+ globals.f_Vminibuffer_local_filename_must_match_map
+#define Vminibuffer_local_map \
+ globals.f_Vminibuffer_local_map
+#define Vminibuffer_local_must_match_map \
+ globals.f_Vminibuffer_local_must_match_map
+#define Vminibuffer_local_ns_map \
+ globals.f_Vminibuffer_local_ns_map
+#define Vminibuffer_message_timeout \
+ globals.f_Vminibuffer_message_timeout
+#define Vminibuffer_prompt_properties \
+ globals.f_Vminibuffer_prompt_properties
+#define Vminibuffer_setup_hook \
+ globals.f_Vminibuffer_setup_hook
+#define Vminor_mode_map_alist \
+ globals.f_Vminor_mode_map_alist
+#define Vminor_mode_overriding_map_alist \
+ globals.f_Vminor_mode_overriding_map_alist
+#define Vmost_negative_fixnum \
+ globals.f_Vmost_negative_fixnum
+#define Vmost_positive_fixnum \
+ globals.f_Vmost_positive_fixnum
+#define Vmotif_version_string \
+ globals.f_Vmotif_version_string
+#define Vmouse_autoselect_window \
+ globals.f_Vmouse_autoselect_window
+#define Vmouse_highlight \
+ globals.f_Vmouse_highlight
+#define Vmouse_leave_buffer_hook \
+ globals.f_Vmouse_leave_buffer_hook
+#define Vmouse_position_function \
+ globals.f_Vmouse_position_function
+#define Vnetwork_coding_system_alist \
+ globals.f_Vnetwork_coding_system_alist
+#define Vnext_selection_coding_system \
+ globals.f_Vnext_selection_coding_system
+#define Vnobreak_char_display \
+ globals.f_Vnobreak_char_display
+#define Vobarray \
+ globals.f_Vobarray
+#define Vold_style_backquotes \
+ globals.f_Vold_style_backquotes
+#define Voperating_system_release \
+ globals.f_Voperating_system_release
+#define Votf_script_alist \
+ globals.f_Votf_script_alist
+#define Vother_window_scroll_buffer \
+ globals.f_Vother_window_scroll_buffer
+#define Voverflow_newline_into_fringe \
+ globals.f_Voverflow_newline_into_fringe
+#define Voverlay_arrow_position \
+ globals.f_Voverlay_arrow_position
+#define Voverlay_arrow_string \
+ globals.f_Voverlay_arrow_string
+#define Voverlay_arrow_variable_list \
+ globals.f_Voverlay_arrow_variable_list
+#define Voverriding_local_map \
+ globals.f_Voverriding_local_map
+#define Voverriding_local_map_menu_flag \
+ globals.f_Voverriding_local_map_menu_flag
+#define Vpath_separator \
+ globals.f_Vpath_separator
+#define Vpost_command_hook \
+ globals.f_Vpost_command_hook
+#define Vpost_gc_hook \
+ globals.f_Vpost_gc_hook
+#define Vpost_self_insert_hook \
+ globals.f_Vpost_self_insert_hook
+#define Vpre_command_hook \
+ globals.f_Vpre_command_hook
+#define Vprefix_help_command \
+ globals.f_Vprefix_help_command
+#define Vpreloaded_file_list \
+ globals.f_Vpreloaded_file_list
+#define Vprevious_system_messages_locale \
+ globals.f_Vprevious_system_messages_locale
+#define Vprevious_system_time_locale \
+ globals.f_Vprevious_system_time_locale
+#define Vprint_charset_text_property \
+ globals.f_Vprint_charset_text_property
+#define Vprint_circle \
+ globals.f_Vprint_circle
+#define Vprint_continuous_numbering \
+ globals.f_Vprint_continuous_numbering
+#define Vprint_gensym \
+ globals.f_Vprint_gensym
+#define Vprint_length \
+ globals.f_Vprint_length
+#define Vprint_level \
+ globals.f_Vprint_level
+#define Vprint_number_table \
+ globals.f_Vprint_number_table
+#define Vprintable_chars \
+ globals.f_Vprintable_chars
+#define Vprocess_adaptive_read_buffering \
+ globals.f_Vprocess_adaptive_read_buffering
+#define Vprocess_coding_system_alist \
+ globals.f_Vprocess_coding_system_alist
+#define Vprocess_connection_type \
+ globals.f_Vprocess_connection_type
+#define Vprocess_environment \
+ globals.f_Vprocess_environment
+#define Vpurify_flag \
+ globals.f_Vpurify_flag
+#define Vquit_flag \
+ globals.f_Vquit_flag
+#define Vread_buffer_function \
+ globals.f_Vread_buffer_function
+#define Vread_expression_history \
+ globals.f_Vread_expression_history
+#define Vread_circle \
+ globals.f_Vread_circle
+#define Vread_expression_map \
+ globals.f_Vread_expression_map
+#define Vread_symbol_positions_list \
+ globals.f_Vread_symbol_positions_list
+#define Vread_with_symbol_positions \
+ globals.f_Vread_with_symbol_positions
+#define Vrecenter_redisplay \
+ globals.f_Vrecenter_redisplay
+#define Vredisplay_end_trigger_functions \
+ globals.f_Vredisplay_end_trigger_functions
+#define Vredisplay_preemption_period \
+ globals.f_Vredisplay_preemption_period
+#define Vresize_mini_windows \
+ globals.f_Vresize_mini_windows
+#define Vresume_tty_functions \
+ globals.f_Vresume_tty_functions
+#define Vring_bell_function \
+ globals.f_Vring_bell_function
+#define Vsaved_region_selection \
+ globals.f_Vsaved_region_selection
+#define Vscalable_fonts_allowed \
+ globals.f_Vscalable_fonts_allowed
+#define Vscript_representative_chars \
+ globals.f_Vscript_representative_chars
+#define Vscroll_preserve_screen_position \
+ globals.f_Vscroll_preserve_screen_position
+#define Vsearch_spaces_regexp \
+ globals.f_Vsearch_spaces_regexp
+#define Vselect_active_regions \
+ globals.f_Vselect_active_regions
+#define Vselect_safe_coding_system_function \
+ globals.f_Vselect_safe_coding_system_function
+#define Vselection_coding_system \
+ globals.f_Vselection_coding_system
+#define Vselection_converter_alist \
+ globals.f_Vselection_converter_alist
+#define Vset_auto_coding_function \
+ globals.f_Vset_auto_coding_function
+#define Vshared_game_score_directory \
+ globals.f_Vshared_game_score_directory
+#define Vshell_file_name \
+ globals.f_Vshell_file_name
+#define Vshow_help_function \
+ globals.f_Vshow_help_function
+#define Vshow_trailing_whitespace \
+ globals.f_Vshow_trailing_whitespace
+#define Vsignal_hook_function \
+ globals.f_Vsignal_hook_function
+#define Vsource_directory \
+ globals.f_Vsource_directory
+#define Vspecial_event_map \
+ globals.f_Vspecial_event_map
+#define Vstandard_display_table \
+ globals.f_Vstandard_display_table
+#define Vstandard_input \
+ globals.f_Vstandard_input
+#define Vstandard_output \
+ globals.f_Vstandard_output
+#define Vstandard_translation_table_for_decode \
+ globals.f_Vstandard_translation_table_for_decode
+#define Vstandard_translation_table_for_encode \
+ globals.f_Vstandard_translation_table_for_encode
+#define Vsuggest_key_bindings \
+ globals.f_Vsuggest_key_bindings
+#define Vsuspend_tty_functions \
+ globals.f_Vsuspend_tty_functions
+#define Vsystem_configuration \
+ globals.f_Vsystem_configuration
+#define Vsystem_configuration_options \
+ globals.f_Vsystem_configuration_options
+#define Vsystem_messages_locale \
+ globals.f_Vsystem_messages_locale
+#define Vsystem_name \
+ globals.f_Vsystem_name
+#define Vsystem_time_locale \
+ globals.f_Vsystem_time_locale
+#define Vsystem_type \
+ globals.f_Vsystem_type
+#define Vtemp_buffer_show_function \
+ globals.f_Vtemp_buffer_show_function
+#define Vtemporary_file_directory \
+ globals.f_Vtemporary_file_directory
+#define Vterminal_frame \
+ globals.f_Vterminal_frame
+#define Vtext_property_default_nonsticky \
+ globals.f_Vtext_property_default_nonsticky
+#define Vthis_command \
+ globals.f_Vthis_command
+#define Vthis_command_keys_shift_translated \
+ globals.f_Vthis_command_keys_shift_translated
+#define Vthis_original_command \
+ globals.f_Vthis_original_command
+#define Vthrow_on_input \
+ globals.f_Vthrow_on_input
+#define Vtimer_idle_list \
+ globals.f_Vtimer_idle_list
+#define Vtimer_list \
+ globals.f_Vtimer_list
+#define Vtool_bar_border \
+ globals.f_Vtool_bar_border
+#define Vtool_bar_button_margin \
+ globals.f_Vtool_bar_button_margin
+#define Vtool_bar_mode \
+ globals.f_Vtool_bar_mode
+#define Vtool_bar_separator_image_expression \
+ globals.f_Vtool_bar_separator_image_expression
+#define Vtool_bar_style \
+ globals.f_Vtool_bar_style
+#define Vtop_level \
+ globals.f_Vtop_level
+#define Vtransient_mark_mode \
+ globals.f_Vtransient_mark_mode
+#define Vtranslation_hash_table_vector \
+ globals.f_Vtranslation_hash_table_vector
+#define Vtranslation_table_for_input \
+ globals.f_Vtranslation_table_for_input
+#define Vtranslation_table_vector \
+ globals.f_Vtranslation_table_vector
+#define Vtruncate_partial_width_windows \
+ globals.f_Vtruncate_partial_width_windows
+#define Vtty_defined_color_alist \
+ globals.f_Vtty_defined_color_alist
+#define Vtty_erase_char \
+ globals.f_Vtty_erase_char
+#define Vundo_outer_limit \
+ globals.f_Vundo_outer_limit
+#define Vundo_outer_limit_function \
+ globals.f_Vundo_outer_limit_function
+#define Vunicode_category_table \
+ globals.f_Vunicode_category_table
+#define Vunread_command_events \
+ globals.f_Vunread_command_events
+#define Vunread_input_method_events \
+ globals.f_Vunread_input_method_events
+#define Vunread_post_input_method_events \
+ globals.f_Vunread_post_input_method_events
+#define Vuse_default_ascent \
+ globals.f_Vuse_default_ascent
+#define Vuser_full_name \
+ globals.f_Vuser_full_name
+#define Vuser_init_file \
+ globals.f_Vuser_init_file
+#define Vuser_login_name \
+ globals.f_Vuser_login_name
+#define Vuser_real_login_name \
+ globals.f_Vuser_real_login_name
+#define Vvalues \
+ globals.f_Vvalues
+#define Vvertical_centering_font_regexp \
+ globals.f_Vvertical_centering_font_regexp
+#define Vvoid_text_area_pointer \
+ globals.f_Vvoid_text_area_pointer
+#define Vw32_alt_is_meta \
+ globals.f_Vw32_alt_is_meta
+#define Vw32_apps_modifier \
+ globals.f_Vw32_apps_modifier
+#define Vw32_bdf_filename_alist \
+ globals.f_Vw32_bdf_filename_alist
+#define Vw32_capslock_is_shiftlock \
+ globals.f_Vw32_capslock_is_shiftlock
+#define Vw32_charset_info_alist \
+ globals.f_Vw32_charset_info_alist
+#define Vw32_color_map \
+ globals.f_Vw32_color_map
+#define Vw32_downcase_file_names \
+ globals.f_Vw32_downcase_file_names
+#define Vw32_enable_caps_lock \
+ globals.f_Vw32_enable_caps_lock
+#define Vw32_enable_num_lock \
+ globals.f_Vw32_enable_num_lock
+#define Vw32_enable_palette \
+ globals.f_Vw32_enable_palette
+#define Vw32_generate_fake_inodes \
+ globals.f_Vw32_generate_fake_inodes
+#define Vw32_get_true_file_attributes \
+ globals.f_Vw32_get_true_file_attributes
+#define Vw32_grab_focus_on_raise \
+ globals.f_Vw32_grab_focus_on_raise
+#define Vw32_lwindow_modifier \
+ globals.f_Vw32_lwindow_modifier
+#define Vw32_pass_alt_to_system \
+ globals.f_Vw32_pass_alt_to_system
+#define Vw32_pass_lwindow_to_system \
+ globals.f_Vw32_pass_lwindow_to_system
+#define Vw32_pass_rwindow_to_system \
+ globals.f_Vw32_pass_rwindow_to_system
+#define Vw32_phantom_key_code \
+ globals.f_Vw32_phantom_key_code
+#define Vw32_quote_process_args \
+ globals.f_Vw32_quote_process_args
+#define Vw32_recognize_altgr \
+ globals.f_Vw32_recognize_altgr
+#define Vw32_rwindow_modifier \
+ globals.f_Vw32_rwindow_modifier
+#define Vw32_scroll_lock_modifier \
+ globals.f_Vw32_scroll_lock_modifier
+#define Vw32_start_process_inherit_error_mode \
+ globals.f_Vw32_start_process_inherit_error_mode
+#define Vw32_start_process_share_console \
+ globals.f_Vw32_start_process_share_console
+#define Vw32_start_process_show_window \
+ globals.f_Vw32_start_process_show_window
+#define Vw32_swap_mouse_buttons \
+ globals.f_Vw32_swap_mouse_buttons
+#define Vwhere_is_preferred_modifier \
+ globals.f_Vwhere_is_preferred_modifier
+#define Vwindow_configuration_change_hook \
+ globals.f_Vwindow_configuration_change_hook
+#define Vwindow_point_insertion_type \
+ globals.f_Vwindow_point_insertion_type
+#define Vwindow_scroll_functions \
+ globals.f_Vwindow_scroll_functions
+#define Vwindow_size_change_functions \
+ globals.f_Vwindow_size_change_functions
+#define Vwindow_system_version \
+ globals.f_Vwindow_system_version
+#define Vwindow_text_change_functions \
+ globals.f_Vwindow_text_change_functions
+#define Vword_combining_categories \
+ globals.f_Vword_combining_categories
+#define Vword_separating_categories \
+ globals.f_Vword_separating_categories
+#define Vwrap_prefix \
+ globals.f_Vwrap_prefix
+#define Vwrite_region_annotate_functions \
+ globals.f_Vwrite_region_annotate_functions
+#define Vwrite_region_annotations_so_far \
+ globals.f_Vwrite_region_annotations_so_far
+#define Vwrite_region_post_annotation_function \
+ globals.f_Vwrite_region_post_annotation_function
+#define Vx_alt_keysym \
+ globals.f_Vx_alt_keysym
+#define Vx_bitmap_file_path \
+ globals.f_Vx_bitmap_file_path
+#define Vx_cursor_fore_pixel \
+ globals.f_Vx_cursor_fore_pixel
+#define Vx_hourglass_pointer_shape \
+ globals.f_Vx_hourglass_pointer_shape
+#define Vx_hyper_keysym \
+ globals.f_Vx_hyper_keysym
+#define Vx_keysym_table \
+ globals.f_Vx_keysym_table
+#define Vx_lost_selection_functions \
+ globals.f_Vx_lost_selection_functions
+#define Vx_max_tooltip_size \
+ globals.f_Vx_max_tooltip_size
+#define Vx_meta_keysym \
+ globals.f_Vx_meta_keysym
+#define Vx_mode_pointer_shape \
+ globals.f_Vx_mode_pointer_shape
+#define Vx_no_window_manager \
+ globals.f_Vx_no_window_manager
+#define Vx_nontext_pointer_shape \
+ globals.f_Vx_nontext_pointer_shape
+#define Vx_pixel_size_width_font_regexp \
+ globals.f_Vx_pixel_size_width_font_regexp
+#define Vx_pointer_shape \
+ globals.f_Vx_pointer_shape
+#define Vx_resource_class \
+ globals.f_Vx_resource_class
+#define Vx_resource_name \
+ globals.f_Vx_resource_name
+#define Vx_sensitive_text_pointer_shape \
+ globals.f_Vx_sensitive_text_pointer_shape
+#define Vx_sent_selection_functions \
+ globals.f_Vx_sent_selection_functions
+#define Vx_session_id \
+ globals.f_Vx_session_id
+#define Vx_session_previous_id \
+ globals.f_Vx_session_previous_id
+#define Vx_super_keysym \
+ globals.f_Vx_super_keysym
+#define Vx_toolkit_scroll_bars \
+ globals.f_Vx_toolkit_scroll_bars
+#define Vx_window_horizontal_drag_shape \
+ globals.f_Vx_window_horizontal_drag_shape
+#define Vxft_settings \
+ globals.f_Vxft_settings
+#define auto_raise_tool_bar_buttons_p \
+ globals.f_auto_raise_tool_bar_buttons_p
+#define auto_save_interval \
+ globals.f_auto_save_interval
+#define auto_window_vscroll_p \
+ globals.f_auto_window_vscroll_p
+#define automatic_hscrolling_p \
+ globals.f_automatic_hscrolling_p
+#define baud_rate \
+ globals.f_baud_rate
+#define byte_debug_flag \
+ globals.f_byte_debug_flag
+#define byte_metering_on \
+ globals.f_byte_metering_on
+#define cannot_suspend \
+ globals.f_cannot_suspend
+#define check_markers_debug_flag \
+ globals.f_check_markers_debug_flag
+#define coding_system_require_warning \
+ globals.f_coding_system_require_warning
+#define completion_ignore_case \
+ globals.f_completion_ignore_case
+#define cons_cells_consed \
+ globals.f_cons_cells_consed
+#define cross_disabled_images \
+ globals.f_cross_disabled_images
+#define cursor_in_echo_area \
+ globals.f_cursor_in_echo_area
+#define debug_end_pos \
+ globals.f_debug_end_pos
+#define debug_on_next_call \
+ globals.f_debug_on_next_call
+#define debug_on_quit \
+ globals.f_debug_on_quit
+#define debugger_may_continue \
+ globals.f_debugger_may_continue
+#define delete_by_moving_to_trash \
+ globals.f_delete_by_moving_to_trash
+#define delete_exited_processes \
+ globals.f_delete_exited_processes
+#define display_hourglass_p \
+ globals.f_display_hourglass_p
+#define do_mouse_tracking \
+ globals.f_do_mouse_tracking
+#define dos_codepage \
+ globals.f_dos_codepage
+#define dos_country_code \
+ globals.f_dos_country_code
+#define dos_decimal_point \
+ globals.f_dos_decimal_point
+#define dos_hyper_key \
+ globals.f_dos_hyper_key
+#define dos_keyboard_layout \
+ globals.f_dos_keyboard_layout
+#define dos_keypad_mode \
+ globals.f_dos_keypad_mode
+#define dos_super_key \
+ globals.f_dos_super_key
+#define dos_timezone_offset \
+ globals.f_dos_timezone_offset
+#define double_click_fuzz \
+ globals.f_double_click_fuzz
+#define emacs_scroll_step \
+ globals.f_emacs_scroll_step
+#define enable_recursive_minibuffers \
+ globals.f_enable_recursive_minibuffers
+#define eol_mnemonic_dos \
+ globals.f_eol_mnemonic_dos
+#define eol_mnemonic_mac \
+ globals.f_eol_mnemonic_mac
+#define eol_mnemonic_undecided \
+ globals.f_eol_mnemonic_undecided
+#define eol_mnemonic_unix \
+ globals.f_eol_mnemonic_unix
+#define executing_kbd_macro_index \
+ globals.f_executing_kbd_macro_index
+#define extra_keyboard_modifiers \
+ globals.f_extra_keyboard_modifiers
+#define floats_consed \
+ globals.f_floats_consed
+#define focus_follows_mouse \
+ globals.f_focus_follows_mouse
+#define force_load_messages \
+ globals.f_force_load_messages
+#define garbage_collection_messages \
+ globals.f_garbage_collection_messages
+#define gc_cons_threshold \
+ globals.f_gc_cons_threshold
+#define gcs_done \
+ globals.f_gcs_done
+#define highlight_nonselected_windows \
+ globals.f_highlight_nonselected_windows
+#define history_delete_duplicates \
+ globals.f_history_delete_duplicates
+#define hscroll_margin \
+ globals.f_hscroll_margin
+#define indent_tabs_mode \
+ globals.f_indent_tabs_mode
+#define inherit_process_coding_system \
+ globals.f_inherit_process_coding_system
+#define inhibit_eol_conversion \
+ globals.f_inhibit_eol_conversion
+#define inhibit_eval_during_redisplay \
+ globals.f_inhibit_eval_during_redisplay
+#define inhibit_free_realized_faces \
+ globals.f_inhibit_free_realized_faces
+#define inhibit_iso_escape_detection \
+ globals.f_inhibit_iso_escape_detection
+#define inhibit_load_charset_map \
+ globals.f_inhibit_load_charset_map
+#define inhibit_local_menu_bar_menus \
+ globals.f_inhibit_local_menu_bar_menus
+#define inhibit_menubar_update \
+ globals.f_inhibit_menubar_update
+#define inhibit_modification_hooks \
+ globals.f_inhibit_modification_hooks
+#define inhibit_null_byte_detection \
+ globals.f_inhibit_null_byte_detection
+#define inhibit_try_cursor_movement \
+ globals.f_inhibit_try_cursor_movement
+#define inhibit_try_window_id \
+ globals.f_inhibit_try_window_id
+#define inhibit_try_window_reusing \
+ globals.f_inhibit_try_window_reusing
+#define inhibit_x_resources \
+ globals.f_inhibit_x_resources
+#define intervals_consed \
+ globals.f_intervals_consed
+#define inverse_video \
+ globals.f_inverse_video
+#define last_command_event \
+ globals.f_last_command_event
+#define last_input_event \
+ globals.f_last_input_event
+#define last_nonmenu_event \
+ globals.f_last_nonmenu_event
+#define line_number_display_limit_width \
+ globals.f_line_number_display_limit_width
+#define load_convert_to_unibyte \
+ globals.f_load_convert_to_unibyte
+#define load_dangerous_libraries \
+ globals.f_load_dangerous_libraries
+#define load_force_doc_strings \
+ globals.f_load_force_doc_strings
+#define load_in_progress \
+ globals.f_load_in_progress
+#define make_cursor_line_fully_visible_p \
+ globals.f_make_cursor_line_fully_visible_p
+#define max_lisp_eval_depth \
+ globals.f_max_lisp_eval_depth
+#define max_specpdl_size \
+ globals.f_max_specpdl_size
+#define menu_prompt_more_char \
+ globals.f_menu_prompt_more_char
+#define menu_prompting \
+ globals.f_menu_prompting
+#define message_truncate_lines \
+ globals.f_message_truncate_lines
+#define meta_prefix_char \
+ globals.f_meta_prefix_char
+#define minibuffer_allow_text_properties \
+ globals.f_minibuffer_allow_text_properties
+#define minibuffer_auto_raise \
+ globals.f_minibuffer_auto_raise
+#define misc_objects_consed \
+ globals.f_misc_objects_consed
+#define mode_line_in_non_selected_windows \
+ globals.f_mode_line_in_non_selected_windows
+#define mode_line_inverse_video \
+ globals.f_mode_line_inverse_video
+#define multibyte_syntax_as_symbol \
+ globals.f_multibyte_syntax_as_symbol
+#define multiple_frames \
+ globals.f_multiple_frames
+#define next_screen_context_lines \
+ globals.f_next_screen_context_lines
+#define no_redraw_on_reenter \
+ globals.f_no_redraw_on_reenter
+#define noninteractive1 \
+ globals.f_noninteractive1
+#define num_input_keys \
+ globals.f_num_input_keys
+#define num_nonmacro_input_events \
+ globals.f_num_nonmacro_input_events
+#define open_paren_in_column_0_is_defun_start \
+ globals.f_open_paren_in_column_0_is_defun_start
+#define overline_margin \
+ globals.f_overline_margin
+#define parse_sexp_ignore_comments \
+ globals.f_parse_sexp_ignore_comments
+#define parse_sexp_lookup_properties \
+ globals.f_parse_sexp_lookup_properties
+#define polling_period \
+ globals.f_polling_period
+#define print_escape_multibyte \
+ globals.f_print_escape_multibyte
+#define print_escape_newlines \
+ globals.f_print_escape_newlines
+#define print_escape_nonascii \
+ globals.f_print_escape_nonascii
+#define print_quoted \
+ globals.f_print_quoted
+#define pure_bytes_used \
+ globals.f_pure_bytes_used
+#define read_buffer_completion_ignore_case \
+ globals.f_read_buffer_completion_ignore_case
+#define redisplay_dont_pause \
+ globals.f_redisplay_dont_pause
+#define scroll_conservatively \
+ globals.f_scroll_conservatively
+#define scroll_margin \
+ globals.f_scroll_margin
+#define string_chars_consed \
+ globals.f_string_chars_consed
+#define strings_consed \
+ globals.f_strings_consed
+#define symbols_consed \
+ globals.f_symbols_consed
+#define system_uses_terminfo \
+ globals.f_system_uses_terminfo
+#define tool_bar_button_relief \
+ globals.f_tool_bar_button_relief
+#define tool_bar_max_label_size \
+ globals.f_tool_bar_max_label_size
+#define underline_minimum_offset \
+ globals.f_underline_minimum_offset
+#define undo_inhibit_record_point \
+ globals.f_undo_inhibit_record_point
+#define undo_limit \
+ globals.f_undo_limit
+#define undo_strong_limit \
+ globals.f_undo_strong_limit
+#define unibyte_display_via_language_environment \
+ globals.f_unibyte_display_via_language_environment
+#define unread_command_char \
+ globals.f_unread_command_char
+#define use_dialog_box \
+ globals.f_use_dialog_box
+#define use_file_dialog \
+ globals.f_use_file_dialog
+#define use_system_font \
+ globals.f_use_system_font
+#define vector_cells_consed \
+ globals.f_vector_cells_consed
+#define visible_bell \
+ globals.f_visible_bell
+#define visible_cursor \
+ globals.f_visible_cursor
+#define w32_ansi_code_page \
+ globals.f_w32_ansi_code_page
+#define w32_enable_synthesized_fonts \
+ globals.f_w32_enable_synthesized_fonts
+#define w32_mouse_button_tolerance \
+ globals.f_w32_mouse_button_tolerance
+#define w32_mouse_move_interval \
+ globals.f_w32_mouse_move_interval
+#define w32_num_mouse_buttons \
+ globals.f_w32_num_mouse_buttons
+#define w32_pass_extra_mouse_buttons_to_system \
+ globals.f_w32_pass_extra_mouse_buttons_to_system
+#define w32_pass_multimedia_buttons_to_system \
+ globals.f_w32_pass_multimedia_buttons_to_system
+#define w32_pipe_read_delay \
+ globals.f_w32_pipe_read_delay
+#define w32_quit_key \
+ globals.f_w32_quit_key
+#define w32_strict_fontnames \
+ globals.f_w32_strict_fontnames
+#define w32_strict_painting \
+ globals.f_w32_strict_painting
+#define w32_use_full_screen_buffer \
+ globals.f_w32_use_full_screen_buffer
+#define w32_use_visible_system_caret \
+ globals.f_w32_use_visible_system_caret
+#define window_min_height \
+ globals.f_window_min_height
+#define window_min_width \
+ globals.f_window_min_width
+#define words_include_escapes \
+ globals.f_words_include_escapes
+#define write_region_inhibit_fsync \
+ globals.f_write_region_inhibit_fsync
+#define x_gtk_file_dialog_help_text \
+ globals.f_x_gtk_file_dialog_help_text
+#define x_gtk_show_hidden_files \
+ globals.f_x_gtk_show_hidden_files
+#define x_gtk_use_old_file_dialog \
+ globals.f_x_gtk_use_old_file_dialog
+#define x_gtk_use_system_tooltips \
+ globals.f_x_gtk_use_system_tooltips
+#define x_gtk_whole_detached_tool_bar \
+ globals.f_x_gtk_whole_detached_tool_bar
+#define x_mouse_click_focus_ignore_position \
+ globals.f_x_mouse_click_focus_ignore_position
+#define x_selection_timeout \
+ globals.f_x_selection_timeout
+#define x_stretch_cursor_p \
+ globals.f_x_stretch_cursor_p
+#define x_underline_at_descent_line \
+ globals.f_x_underline_at_descent_line
+#define x_use_underline_position_properties \
+ globals.f_x_use_underline_position_properties
+#define ns_input_file \
+ globals.f_ns_input_file
+#define ns_input_font \
+ globals.f_ns_input_font
+#define ns_input_fontsize \
+ globals.f_ns_input_fontsize
+#define ns_input_line \
+ globals.f_ns_input_line
+#define ns_input_color \
+ globals.f_ns_input_color
+#define ns_input_text \
+ globals.f_ns_input_text
+#define ns_working_text \
+ globals.f_ns_working_text
+#define ns_input_spi_name \
+ globals.f_ns_input_spi_name
+#define ns_input_spi_arg \
+ globals.f_ns_input_spi_arg
+#define ns_alternate_modifier \
+ globals.f_ns_alternate_modifier
+#define ns_right_alternate_modifier \
+ globals.f_ns_right_alternate_modifier
+#define ns_command_modifier \
+ globals.f_ns_command_modifier
+#define ns_right_command_modifier \
+ globals.f_ns_right_command_modifier
+#define ns_control_modifier \
+ globals.f_ns_control_modifier
+#define ns_right_control_modifier \
+ globals.f_ns_right_control_modifier
+#define ns_function_modifier \
+ globals.f_ns_function_modifier
+#define ns_antialias_text \
+ globals.f_ns_antialias_text
+#define ns_confirm_quit \
+ globals.f_ns_confirm_quit
+#define Vns_icon_type_alist \
+ globals.f_Vns_icon_type_alist
+#define Vns_version_string \
+ globals.f_Vns_version_string
+#define Vns_sent_selection_hooks \
+ globals.f_Vns_sent_selection_hooks
+#define Vns_lost_selection_hooks \
+ globals.f_Vns_lost_selection_hooks
+#define Vselection_alist \
+ globals.f_Vselection_alist
+#define Vns_reg_to_script \
+ globals.f_Vns_reg_to_script
diff --git a/src/gmalloc.c b/src/gmalloc.c
index 8314798b17..5237432872 100644
--- a/src/gmalloc.c
+++ b/src/gmalloc.c
@@ -72,9 +72,7 @@ Fifth Floor, Boston, MA 02110-1301, USA.
#define CHAR_BIT 8
#endif
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#ifdef USE_PTHREAD
#include <pthread.h>
@@ -2173,5 +2171,3 @@ mprobe (__ptr_t ptr)
#endif /* GC_MCHECK */
-/* arch-tag: 93dce5c0-f49a-41b5-86b1-f91c4169c02e
- (do not change this comment) */
diff --git a/src/gnutls.c b/src/gnutls.c
index 1cc258a509..3a461891e2 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -1,5 +1,5 @@
/* GnuTLS glue for GNU Emacs.
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -448,7 +448,7 @@ one trustfile (usually a CA bundle). */)
(x509_cred,
SDATA (trustfile),
file_format);
-
+
if (ret < GNUTLS_E_SUCCESS)
return gnutls_make_error (ret);
}
@@ -470,7 +470,7 @@ one trustfile (usually a CA bundle). */)
(x509_cred,
SDATA (keyfile),
file_format);
-
+
if (ret < GNUTLS_E_SUCCESS)
return gnutls_make_error (ret);
}
@@ -497,7 +497,7 @@ one trustfile (usually a CA bundle). */)
if (STRINGP (priority_string))
{
- priority_string_ptr = (char*) SDATA (priority_string);
+ priority_string_ptr = SSDATA (priority_string);
GNUTLS_LOG2 (1, max_log_level, "got non-default priority string:",
priority_string_ptr);
}
@@ -506,7 +506,7 @@ one trustfile (usually a CA bundle). */)
GNUTLS_LOG2 (1, max_log_level, "using default priority string:",
priority_string_ptr);
}
-
+
GNUTLS_LOG (1, max_log_level, "setting the priority string");
ret = gnutls_priority_set_direct (state,
diff --git a/src/gnutls.h b/src/gnutls.h
index 2669317e97..43a9eefce1 100644
--- a/src/gnutls.h
+++ b/src/gnutls.h
@@ -1,5 +1,5 @@
/* GnuTLS glue for GNU Emacs.
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 6fd4b96981..6367949a64 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -1,6 +1,6 @@
/* Functions for creating and updating GTK widgets.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+
+Copyright (C) 2003-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -46,9 +46,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define FRAME_TOTAL_PIXEL_WIDTH(f) \
(FRAME_PIXEL_WIDTH (f) + FRAME_TOOLBAR_WIDTH (f))
-/* Avoid "differ in sign" warnings */
-#define SSDATA(x) ((char *) SDATA (x))
-
#ifndef HAVE_GTK_WIDGET_SET_HAS_WINDOW
#define gtk_widget_set_has_window(w, b) \
(gtk_fixed_set_has_window (GTK_FIXED (w), b))
@@ -72,6 +69,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define remove_submenu(w) gtk_menu_item_remove_submenu ((w))
#endif
+#define XG_BIN_CHILD(x) gtk_bin_get_child (GTK_BIN (x))
+
/***********************************************************************
Display handling functions
@@ -1534,7 +1533,6 @@ int
xg_uses_old_file_dialog (void)
{
#ifdef HAVE_GTK_FILE_SELECTION_NEW
- extern int x_gtk_use_old_file_dialog;
return x_gtk_use_old_file_dialog;
#else
return 0;
@@ -1575,8 +1573,6 @@ xg_toggle_visibility_cb (GtkWidget *widget, gpointer data)
static void
xg_toggle_notify_cb (GObject *gobject, GParamSpec *arg1, gpointer user_data)
{
- extern int x_gtk_show_hidden_files;
-
if (strcmp (arg1->name, "show-hidden") == 0)
{
GtkWidget *wtoggle = GTK_WIDGET (user_data);
@@ -1624,9 +1620,6 @@ xg_get_file_with_chooser (FRAME_PTR f,
GtkFileChooserAction action = (mustmatch_p ?
GTK_FILE_CHOOSER_ACTION_OPEN :
GTK_FILE_CHOOSER_ACTION_SAVE);
- extern int x_gtk_show_hidden_files;
- extern int x_gtk_file_dialog_help_text;
-
if (only_dir_p)
action = GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER;
@@ -2128,54 +2121,6 @@ make_menu_item (const char *utf8_label,
return w;
}
-/* Return non-zero if LABEL specifies a separator (GTK only has one
- separator type) */
-
-static const char* separator_names[] = {
- "space",
- "no-line",
- "single-line",
- "double-line",
- "single-dashed-line",
- "double-dashed-line",
- "shadow-etched-in",
- "shadow-etched-out",
- "shadow-etched-in-dash",
- "shadow-etched-out-dash",
- "shadow-double-etched-in",
- "shadow-double-etched-out",
- "shadow-double-etched-in-dash",
- "shadow-double-etched-out-dash",
- 0,
-};
-
-static int
-xg_separator_p (const char *label)
-{
- if (! label) return 0;
- else if (strlen (label) > 3
- && strncmp (label, "--", 2) == 0
- && label[2] != '-')
- {
- int i;
-
- label += 2;
- for (i = 0; separator_names[i]; ++i)
- if (strcmp (label, separator_names[i]) == 0)
- return 1;
- }
- else
- {
- /* Old-style separator, maybe. It's a separator if it contains
- only dashes. */
- while (*label == '-')
- ++label;
- if (*label == 0) return 1;
- }
-
- return 0;
-}
-
static int xg_detached_menus;
/* Returns non-zero if there are detached menus. */
@@ -2374,7 +2319,7 @@ create_menus (widget_value *data,
GtkWidget *w;
if (pop_up_p && !item->contents && !item->call_data
- && !xg_separator_p (item->name))
+ && !menu_separator_name_p (item->name))
{
char *utf8_label;
/* A title for a popup. We do the same as GTK does when
@@ -2387,7 +2332,7 @@ create_menus (widget_value *data,
gtk_widget_set_sensitive (w, FALSE);
if (utf8_label) g_free (utf8_label);
}
- else if (xg_separator_p (item->name))
+ else if (menu_separator_name_p (item->name))
{
group = NULL;
/* GTK only have one separator type. */
@@ -2499,7 +2444,7 @@ xg_create_widget (const char *type, const char *name, FRAME_PTR f, widget_value
static const char *
xg_get_menu_item_label (GtkMenuItem *witem)
{
- GtkLabel *wlabel = GTK_LABEL (gtk_bin_get_child (GTK_BIN (witem)));
+ GtkLabel *wlabel = GTK_LABEL (XG_BIN_CHILD (witem));
return gtk_label_get_label (wlabel);
}
@@ -2652,7 +2597,7 @@ xg_update_menubar (GtkWidget *menubar,
Rename X to B (minibuf to C-mode menu).
If the X menu hasn't been invoked, the menu under B
is up to date when leaving the minibuffer. */
- GtkLabel *wlabel = GTK_LABEL (gtk_bin_get_child (GTK_BIN (witem)));
+ GtkLabel *wlabel = GTK_LABEL (XG_BIN_CHILD (witem));
char *utf8_label = get_utf8_string (val->name);
GtkWidget *submenu = gtk_menu_item_get_submenu (witem);
@@ -2751,7 +2696,7 @@ xg_update_menu_item (widget_value *val,
const char *old_key = 0;
xg_menu_item_cb_data *cb_data;
- wchild = gtk_bin_get_child (GTK_BIN (w));
+ wchild = XG_BIN_CHILD (w);
utf8_label = get_utf8_string (val->name);
utf8_key = get_utf8_string (val->key);
@@ -2910,7 +2855,7 @@ xg_update_submenu (GtkWidget *submenu,
if (GTK_IS_SEPARATOR_MENU_ITEM (w))
{
- if (! xg_separator_p (cur->name))
+ if (! menu_separator_name_p (cur->name))
break;
}
else if (GTK_IS_CHECK_MENU_ITEM (w))
@@ -2933,7 +2878,7 @@ xg_update_submenu (GtkWidget *submenu,
GtkWidget *sub;
if (cur->button_type != BUTTON_TYPE_NONE ||
- xg_separator_p (cur->name))
+ menu_separator_name_p (cur->name))
break;
xg_update_menu_item (cur, w, select_cb, highlight_cb, cl_data);
@@ -3710,7 +3655,8 @@ xg_get_tool_bar_widgets (GtkWidget *vb, GtkWidget **wimage)
{
GList *clist = gtk_container_get_children (GTK_CONTAINER (vb));
GtkWidget *c1 = (GtkWidget *) clist->data;
- GtkWidget *c2 = (GtkWidget *) clist->next->data;
+ GtkWidget *c2 = clist->next ? (GtkWidget *) clist->next->data : NULL;
+
*wimage = GTK_IS_IMAGE (c1) ? c1 : c2;
g_list_free (clist);
return GTK_IS_LABEL (c1) ? c1 : c2;
@@ -3725,9 +3671,8 @@ xg_get_tool_bar_widgets (GtkWidget *vb, GtkWidget **wimage)
static gboolean
xg_tool_bar_menu_proxy (GtkToolItem *toolitem, gpointer user_data)
{
- GtkWidget *weventbox = gtk_bin_get_child (GTK_BIN (toolitem));
- GtkButton *wbutton = GTK_BUTTON (gtk_bin_get_child (GTK_BIN (weventbox)));
- GtkWidget *vb = gtk_bin_get_child (GTK_BIN (wbutton));
+ GtkButton *wbutton = GTK_BUTTON (XG_BIN_CHILD (XG_BIN_CHILD (toolitem)));
+ GtkWidget *vb = XG_BIN_CHILD (wbutton);
GtkWidget *c1;
GtkLabel *wlbl = GTK_LABEL (xg_get_tool_bar_widgets (vb, &c1));
GtkImage *wimage = GTK_IMAGE (c1);
@@ -3840,7 +3785,6 @@ xg_tool_bar_detach_callback (GtkHandleBox *wbox,
gpointer client_data)
{
FRAME_PTR f = (FRAME_PTR) client_data;
- extern int x_gtk_whole_detached_tool_bar;
g_object_set (G_OBJECT (w), "show-arrow", !x_gtk_whole_detached_tool_bar,
NULL);
@@ -4086,28 +4030,17 @@ xg_make_tool_item (FRAME_PTR f,
GtkWidget *wimage,
GtkWidget **wbutton,
const char *label,
- int i,
- int vert_only)
+ int i, int horiz, int text_image)
{
GtkToolItem *ti = gtk_tool_item_new ();
- Lisp_Object style = Ftool_bar_get_system_style ();
- int both_horiz = EQ (style, Qboth_horiz);
- int text_image = EQ (style, Qtext_image_horiz);
-
- GtkWidget *vb = both_horiz || text_image
- ? gtk_hbox_new (FALSE, 0) : gtk_vbox_new (FALSE, 0);
+ GtkWidget *vb = horiz ? gtk_hbox_new (FALSE, 0) : gtk_vbox_new (FALSE, 0);
GtkWidget *wb = gtk_button_new ();
GtkWidget *weventbox = gtk_event_box_new ();
- /* We are not letting Gtk+ alter display on this, we only keep it here
- so we can get it later in xg_show_toolbar_item. */
- gtk_tool_item_set_is_important (ti, !vert_only);
-
- if (wimage && ! text_image)
+ if (wimage && !text_image)
gtk_box_pack_start (GTK_BOX (vb), wimage, TRUE, TRUE, 0);
-
- gtk_box_pack_start (GTK_BOX (vb), gtk_label_new (label), TRUE, TRUE, 0);
-
+ if (label)
+ gtk_box_pack_start (GTK_BOX (vb), gtk_label_new (label), TRUE, TRUE, 0);
if (wimage && text_image)
gtk_box_pack_start (GTK_BOX (vb), wimage, TRUE, TRUE, 0);
@@ -4168,58 +4101,49 @@ xg_make_tool_item (FRAME_PTR f,
return ti;
}
-static void
-xg_show_toolbar_item (GtkToolItem *ti)
+static int
+xg_tool_item_stale_p (GtkWidget *wbutton, const char *stock_name,
+ const char *icon_name, const struct image *img,
+ const char *label, int horiz)
{
- Lisp_Object style = Ftool_bar_get_system_style ();
- int both_horiz = EQ (style, Qboth_horiz);
- int text_image = EQ (style, Qtext_image_horiz);
-
- int horiz = both_horiz || text_image;
- int vert_only = ! gtk_tool_item_get_is_important (ti);
- int show_label = ! EQ (style, Qimage) && ! (vert_only && horiz);
- int show_image = ! EQ (style, Qtext);
-
- GtkWidget *weventbox = gtk_bin_get_child (GTK_BIN (ti));
- GtkWidget *wbutton = gtk_bin_get_child (GTK_BIN (weventbox));
- GtkWidget *vb = gtk_bin_get_child (GTK_BIN (wbutton));
+ gpointer old;
GtkWidget *wimage;
+ GtkWidget *vb = XG_BIN_CHILD (wbutton);
GtkWidget *wlbl = xg_get_tool_bar_widgets (vb, &wimage);
- GtkWidget *new_box = NULL;
-
- if (GTK_IS_VBOX (vb) && horiz)
- new_box = gtk_hbox_new (FALSE, 0);
- else if (GTK_IS_HBOX (vb) && !horiz && show_label && show_image)
- new_box = gtk_vbox_new (FALSE, 0);
- if (!new_box && horiz)
- gtk_box_reorder_child (GTK_BOX (vb), wlbl, text_image ? 0 : 1);
- else if (new_box)
+ /* Check if the tool icon matches. */
+ if (stock_name)
+ {
+ old = g_object_get_data (G_OBJECT (wimage),
+ XG_TOOL_BAR_STOCK_NAME);
+ if (!old || strcmp (old, stock_name))
+ return 1;
+ }
+ else if (icon_name)
{
- g_object_ref (G_OBJECT (wimage));
- g_object_ref (G_OBJECT (wlbl));
- gtk_container_remove (GTK_CONTAINER (vb), wimage);
- gtk_container_remove (GTK_CONTAINER (vb), wlbl);
- gtk_widget_destroy (GTK_WIDGET (vb));
- if (! text_image)
- gtk_box_pack_start (GTK_BOX (new_box), wimage, TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (new_box), wlbl, TRUE, TRUE, 0);
- if (text_image)
- gtk_box_pack_start (GTK_BOX (new_box), wimage, TRUE, TRUE, 0);
- gtk_container_add (GTK_CONTAINER (wbutton), new_box);
- g_object_unref (G_OBJECT (wimage));
- g_object_unref (G_OBJECT (wlbl));
- vb = new_box;
+ old = g_object_get_data (G_OBJECT (wimage),
+ XG_TOOL_BAR_ICON_NAME);
+ if (!old || strcmp (old, icon_name))
+ return 1;
}
+ else
+ {
+ Pixmap old_img
+ = (Pixmap) g_object_get_data (G_OBJECT (wimage),
+ XG_TOOL_BAR_IMAGE_DATA);
+ if (old_img != img->pixmap)
+ return 1;
+ }
+
+ /* Check button configuration and label. */
+ if ((horiz ? GTK_IS_VBOX (vb) : GTK_IS_HBOX (vb))
+ || (label ? (wlbl == NULL) : (wlbl != NULL)))
+ return 1;
- if (show_label) gtk_widget_show (wlbl);
- else gtk_widget_hide (wlbl);
- if (show_image) gtk_widget_show (wimage);
- else gtk_widget_hide (wimage);
- gtk_widget_show (GTK_WIDGET (weventbox));
- gtk_widget_show (GTK_WIDGET (vb));
- gtk_widget_show (GTK_WIDGET (wbutton));
- gtk_widget_show (GTK_WIDGET (ti));
+ /* Ensure label is correct. */
+ if (label)
+ gtk_label_set_text (GTK_LABEL (wlbl), label);
+ return 0;
}
static int
@@ -4272,7 +4196,7 @@ xg_update_tool_bar_sizes (FRAME_PTR f)
void
update_frame_tool_bar (FRAME_PTR f)
{
- int i;
+ int i, j;
struct x_output *x = f->output_data.x;
int hmargin = 0, vmargin = 0;
GtkToolbar *wtoolbar;
@@ -4280,6 +4204,9 @@ update_frame_tool_bar (FRAME_PTR f)
GtkTextDirection dir;
int pack_tool_bar = x->handlebox_widget == NULL;
+ Lisp_Object style;
+ int text_image, horiz;
+
if (! FRAME_GTK_WIDGET (f))
return;
@@ -4315,7 +4242,11 @@ update_frame_tool_bar (FRAME_PTR f)
wtoolbar = GTK_TOOLBAR (x->toolbar_widget);
dir = gtk_widget_get_direction (GTK_WIDGET (wtoolbar));
- for (i = 0; i < f->n_tool_bar_items; ++i)
+ style = Ftool_bar_get_system_style ();
+ text_image = EQ (style, Qtext_image_horiz);
+ horiz = EQ (style, Qboth_horiz) || text_image;
+
+ for (i = j = 0; i < f->n_tool_bar_items; ++i)
{
int enabled_p = !NILP (PROP (TOOL_BAR_ITEM_ENABLED_P));
int selected_p = !NILP (PROP (TOOL_BAR_ITEM_SELECTED_P));
@@ -4330,27 +4261,48 @@ update_frame_tool_bar (FRAME_PTR f)
char *icon_name = NULL;
Lisp_Object rtl;
GtkWidget *wbutton = NULL;
- GtkWidget *weventbox;
Lisp_Object specified_file;
- const char *label = (STRINGP (PROP (TOOL_BAR_ITEM_LABEL))
- ? SSDATA (PROP (TOOL_BAR_ITEM_LABEL)) : "");
int vert_only = ! NILP (PROP (TOOL_BAR_ITEM_VERT_ONLY));
-
- ti = gtk_toolbar_get_nth_item (GTK_TOOLBAR (wtoolbar), i);
-
- if (ti)
- {
- weventbox = gtk_bin_get_child (GTK_BIN (ti));
- wbutton = gtk_bin_get_child (GTK_BIN (weventbox));
- }
-
-
- image = PROP (TOOL_BAR_ITEM_IMAGES);
+ const char *label
+ = (EQ (style, Qimage) || (vert_only && horiz)) ? NULL
+ : STRINGP (PROP (TOOL_BAR_ITEM_LABEL))
+ ? SSDATA (PROP (TOOL_BAR_ITEM_LABEL))
+ : "";
+
+ ti = gtk_toolbar_get_nth_item (GTK_TOOLBAR (wtoolbar), j);
+
+ /* If this is a separator, use a gtk separator item. */
+ if (EQ (PROP (TOOL_BAR_ITEM_TYPE), Qt))
+ {
+ if (ti == NULL || !GTK_IS_SEPARATOR_TOOL_ITEM (ti))
+ {
+ if (ti)
+ gtk_container_remove (GTK_CONTAINER (wtoolbar),
+ GTK_WIDGET (ti));
+ ti = gtk_separator_tool_item_new ();
+ gtk_toolbar_insert (GTK_TOOLBAR (wtoolbar), ti, j);
+ }
+ j++;
+ continue;
+ }
+
+ /* Otherwise, the tool-bar item is an ordinary button. */
+
+ if (ti && GTK_IS_SEPARATOR_TOOL_ITEM (ti))
+ {
+ gtk_container_remove (GTK_CONTAINER (wtoolbar), GTK_WIDGET (ti));
+ ti = NULL;
+ }
+
+ if (ti) wbutton = XG_BIN_CHILD (XG_BIN_CHILD (ti));
/* Ignore invalid image specifications. */
+ image = PROP (TOOL_BAR_ITEM_IMAGES);
if (!valid_image_p (image))
{
- if (wbutton) gtk_widget_hide (wbutton);
+ if (ti)
+ gtk_container_remove (GTK_CONTAINER (wtoolbar),
+ GTK_WIDGET (ti));
continue;
}
@@ -4386,16 +4338,13 @@ update_frame_tool_bar (FRAME_PTR f)
if (stock_name == NULL && icon_name == NULL)
{
- /* No stock image, or stock item not known. Try regular image. */
-
- /* If image is a vector, choose the image according to the
+ /* No stock image, or stock item not known. Try regular
+ image. If image is a vector, choose it according to the
button state. */
if (dir == GTK_TEXT_DIR_RTL
&& !NILP (rtl = PROP (TOOL_BAR_ITEM_RTL_IMAGE))
&& STRINGP (rtl))
- {
- image = find_rtl_image (f, image, rtl);
- }
+ image = find_rtl_image (f, image, rtl);
if (VECTORP (image))
{
@@ -4421,21 +4370,31 @@ update_frame_tool_bar (FRAME_PTR f)
if (img->load_failed_p || img->pixmap == None)
{
if (ti)
- gtk_widget_hide_all (GTK_WIDGET (ti));
- else
- {
- /* Insert an empty (non-image) button */
- ti = xg_make_tool_item (f, NULL, NULL, "", i, 0);
- gtk_toolbar_insert (GTK_TOOLBAR (wtoolbar), ti, -1);
- }
+ gtk_container_remove (GTK_CONTAINER (wtoolbar),
+ GTK_WIDGET (ti));
continue;
}
}
+ /* If there is an existing widget, check if it's stale; if so,
+ remove it and make a new tool item from scratch. */
+ if (ti && xg_tool_item_stale_p (wbutton, stock_name, icon_name,
+ img, label, horiz))
+ {
+ gtk_container_remove (GTK_CONTAINER (wtoolbar),
+ GTK_WIDGET (ti));
+ ti = NULL;
+ }
+
if (ti == NULL)
{
GtkWidget *w;
- if (stock_name)
+
+ /* Save the image so we can see if an update is needed the
+ next time we call xg_tool_item_match_p. */
+ if (EQ (style, Qtext))
+ w = NULL;
+ else if (stock_name)
{
w = gtk_image_new_from_stock (stock_name, icon_size);
g_object_set_data_full (G_OBJECT (w), XG_TOOL_BAR_STOCK_NAME,
@@ -4452,93 +4411,34 @@ update_frame_tool_bar (FRAME_PTR f)
else
{
w = xg_get_image_for_pixmap (f, img, x->widget, NULL);
- /* Save the image so we can see if an update is needed when
- this function is called again. */
g_object_set_data (G_OBJECT (w), XG_TOOL_BAR_IMAGE_DATA,
(gpointer)img->pixmap);
}
- gtk_misc_set_padding (GTK_MISC (w), hmargin, vmargin);
- ti = xg_make_tool_item (f, w, &wbutton, label, i, vert_only);
- gtk_toolbar_insert (GTK_TOOLBAR (wtoolbar), ti, -1);
- gtk_widget_set_sensitive (wbutton, enabled_p);
- }
- else
- {
- GtkWidget *vb = gtk_bin_get_child (GTK_BIN (wbutton));
- GtkWidget *wimage;
- GtkWidget *wlbl = xg_get_tool_bar_widgets (vb, &wimage);
-
- Pixmap old_img = (Pixmap)g_object_get_data (G_OBJECT (wimage),
- XG_TOOL_BAR_IMAGE_DATA);
- gpointer old_stock_name = g_object_get_data (G_OBJECT (wimage),
- XG_TOOL_BAR_STOCK_NAME);
- gpointer old_icon_name = g_object_get_data (G_OBJECT (wimage),
- XG_TOOL_BAR_ICON_NAME);
- gtk_label_set_text (GTK_LABEL (wlbl), label);
- gtk_tool_item_set_is_important (ti, !vert_only);
- if (stock_name &&
- (! old_stock_name || strcmp (old_stock_name, stock_name) != 0))
- {
- gtk_image_set_from_stock (GTK_IMAGE (wimage),
- stock_name, icon_size);
- g_object_set_data_full (G_OBJECT (wimage), XG_TOOL_BAR_STOCK_NAME,
- (gpointer) xstrdup (stock_name),
- (GDestroyNotify) xfree);
- g_object_set_data (G_OBJECT (wimage), XG_TOOL_BAR_IMAGE_DATA,
- NULL);
- g_object_set_data (G_OBJECT (wimage), XG_TOOL_BAR_ICON_NAME,
- NULL);
- }
- else if (icon_name &&
- (! old_icon_name || strcmp (old_icon_name, icon_name) != 0))
- {
- gtk_image_set_from_icon_name (GTK_IMAGE (wimage),
- icon_name, icon_size);
- g_object_set_data_full (G_OBJECT (wimage), XG_TOOL_BAR_ICON_NAME,
- (gpointer) xstrdup (icon_name),
- (GDestroyNotify) xfree);
- g_object_set_data (G_OBJECT (wimage), XG_TOOL_BAR_IMAGE_DATA,
- NULL);
- g_object_set_data (G_OBJECT (wimage), XG_TOOL_BAR_STOCK_NAME,
- NULL);
- }
- else if (img && old_img != img->pixmap)
- {
- (void) xg_get_image_for_pixmap (f, img, x->widget,
- GTK_IMAGE (wimage));
- g_object_set_data (G_OBJECT (wimage), XG_TOOL_BAR_IMAGE_DATA,
- (gpointer)img->pixmap);
-
- g_object_set_data (G_OBJECT (wimage), XG_TOOL_BAR_STOCK_NAME,
- NULL);
- g_object_set_data (G_OBJECT (wimage), XG_TOOL_BAR_ICON_NAME,
- NULL);
- }
-
- gtk_misc_set_padding (GTK_MISC (wimage), hmargin, vmargin);
-
- gtk_widget_set_sensitive (wbutton, enabled_p);
+ if (w) gtk_misc_set_padding (GTK_MISC (w), hmargin, vmargin);
+ ti = xg_make_tool_item (f, w, &wbutton, label, i, horiz, text_image);
+ gtk_toolbar_insert (GTK_TOOLBAR (wtoolbar), ti, j);
}
- xg_show_toolbar_item (ti);
#undef PROP
+
+ gtk_widget_set_sensitive (wbutton, enabled_p);
+ j++;
}
- /* Remove buttons not longer needed. We just hide them so they
- can be reused later on. */
+ /* Remove buttons not longer needed. */
do
{
- ti = gtk_toolbar_get_nth_item (GTK_TOOLBAR (wtoolbar), i++);
- if (ti) gtk_widget_hide_all (GTK_WIDGET (ti));
+ ti = gtk_toolbar_get_nth_item (GTK_TOOLBAR (wtoolbar), j);
+ if (ti)
+ gtk_container_remove (GTK_CONTAINER (wtoolbar), GTK_WIDGET (ti));
} while (ti != NULL);
if (f->n_tool_bar_items != 0)
{
if (pack_tool_bar)
xg_pack_tool_bar (f, f->tool_bar_position);
- gtk_widget_show (x->toolbar_widget);
- gtk_widget_show (x->handlebox_widget);
+ gtk_widget_show_all (GTK_WIDGET (x->handlebox_widget));
if (xg_update_tool_bar_sizes (f))
xg_height_or_width_changed (f);
}
@@ -4662,6 +4562,3 @@ xg_initialize (void)
}
#endif /* USE_GTK */
-
-/* arch-tag: fe7104da-bc1e-4aba-9bd1-f349c528f7e3
- (do not change this comment) */
diff --git a/src/gtkutil.h b/src/gtkutil.h
index 9b796e1138..3dc0a1dd15 100644
--- a/src/gtkutil.h
+++ b/src/gtkutil.h
@@ -1,6 +1,6 @@
/* Definitions and headers for GTK widgets.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+
+Copyright (C) 2003-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -185,5 +185,3 @@ extern int xg_ignore_gtk_scrollbar;
#endif /* USE_GTK */
#endif /* GTKUTIL_H */
-/* arch-tag: 0757f3dc-00c7-4cee-9e4c-282cf1d34c72
- (do not change this comment) */
diff --git a/src/image.c b/src/image.c
index e16b63ae0f..10038eecd8 100644
--- a/src/image.c
+++ b/src/image.c
@@ -1,7 +1,5 @@
/* Functions for image support on window system.
- Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1989, 1992-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -22,10 +20,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <stdio.h>
#include <math.h>
#include <ctype.h>
-
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#ifdef HAVE_PNG
#if defined HAVE_LIBPNG_PNG_H
@@ -94,6 +89,11 @@ typedef struct w32_bitmap_record Bitmap_Record;
without modifying lots of files). */
extern void x_query_colors (struct frame *f, XColor *colors, int ncolors);
extern void x_query_color (struct frame *f, XColor *color);
+
+/* Version of libpng that we were compiled with, or -1 if no PNG
+ support was compiled in. This is tested by w32-win.el to correctly
+ set up the alist used to search for PNG libraries. */
+Lisp_Object Qlibpng_version;
#endif /* HAVE_NTGUI */
#ifdef HAVE_NS
@@ -122,10 +122,6 @@ typedef struct ns_bitmap_record Bitmap_Record;
#endif /* HAVE_NS */
-/* Search path for bitmap files. */
-
-Lisp_Object Vx_bitmap_file_path;
-
/* The symbol `postscript' identifying images of this type. */
Lisp_Object Qpostscript;
@@ -352,7 +348,7 @@ x_create_bitmap_from_file (struct frame *f, Lisp_Object file)
{
if (dpyinfo->bitmaps[id].refcount
&& dpyinfo->bitmaps[id].file
- && !strcmp (dpyinfo->bitmaps[id].file, (char *) SDATA (file)))
+ && !strcmp (dpyinfo->bitmaps[id].file, SSDATA (file)))
{
++dpyinfo->bitmaps[id].refcount;
return id + 1;
@@ -365,7 +361,7 @@ x_create_bitmap_from_file (struct frame *f, Lisp_Object file)
return -1;
emacs_close (fd);
- filename = (char *) SDATA (found);
+ filename = SSDATA (found);
result = XReadBitmapFile (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
filename, &width, &height, &bitmap, &xhot, &yhot);
@@ -380,7 +376,7 @@ x_create_bitmap_from_file (struct frame *f, Lisp_Object file)
dpyinfo->bitmaps[id - 1].depth = 1;
dpyinfo->bitmaps[id - 1].height = height;
dpyinfo->bitmaps[id - 1].width = width;
- strcpy (dpyinfo->bitmaps[id - 1].file, SDATA (file));
+ strcpy (dpyinfo->bitmaps[id - 1].file, SSDATA (file));
return id;
#endif /* HAVE_X_WINDOWS */
@@ -563,10 +559,6 @@ x_create_bitmap_mask (struct frame *f, int id)
static struct image_type *image_types;
-/* A list of symbols, one for each supported image type. */
-
-Lisp_Object Vimage_types;
-
/* Cache for delayed-loading image types. */
static Lisp_Object Vimage_type_cache;
@@ -585,11 +577,6 @@ Lisp_Object QCindex, QCmatrix, QCcolor_adjustment, QCmask, QCgeometry, QCcrop, Q
Lisp_Object Qlaplace, Qemboss, Qedge_detection, Qheuristic;
-/* Time in seconds after which images should be removed from the cache
- if not displayed. */
-
-Lisp_Object Vimage_cache_eviction_delay;
-
/* Function prototypes. */
static Lisp_Object define_image_type (struct image_type *type, int loaded);
@@ -783,7 +770,7 @@ parse_image_spec (Lisp_Object spec, struct image_keyword *keywords,
/* Find key in KEYWORDS. Error if not found. */
for (i = 0; i < nkeywords; ++i)
- if (strcmp (keywords[i].name, SDATA (SYMBOL_NAME (key))) == 0)
+ if (strcmp (keywords[i].name, SSDATA (SYMBOL_NAME (key))) == 0)
break;
if (i == nkeywords)
@@ -1001,8 +988,6 @@ static void free_image (struct frame *f, struct image *img);
static int check_image_size (struct frame *f, int width, int height);
#define MAX_IMAGE_SIZE 6.0
-Lisp_Object Vmax_image_size;
-
/* Allocate and return a new image structure for image specification
SPEC. SPEC has a hash value of HASH. */
@@ -1381,7 +1366,7 @@ x_alloc_image_color (struct frame *f, struct image *img, Lisp_Object color_name,
xassert (STRINGP (color_name));
- if (x_defined_color (f, SDATA (color_name), &color, 1))
+ if (x_defined_color (f, SSDATA (color_name), &color, 1))
{
/* This isn't called frequently so we get away with simply
reallocating the color vector to the needed size, here. */
@@ -2872,7 +2857,7 @@ xbm_load (struct frame *f, struct image *img)
return 0;
}
- contents = slurp_file (SDATA (file), &size);
+ contents = slurp_file (SSDATA (file), &size);
if (contents == NULL)
{
image_error ("Error loading XBM image `%s'", img->spec, Qnil);
@@ -2949,7 +2934,7 @@ xbm_load (struct frame *f, struct image *img)
}
}
else if (STRINGP (data))
- bits = SDATA (data);
+ bits = SSDATA (data);
else
bits = XBOOL_VECTOR (data)->data;
@@ -3332,7 +3317,7 @@ xpm_image_p (Lisp_Object object)
#if defined (HAVE_XPM) && defined (HAVE_X_WINDOWS)
int
-x_create_bitmap_from_xpm_data (struct frame *f, char **bits)
+x_create_bitmap_from_xpm_data (struct frame *f, const char **bits)
{
Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
int id, rc;
@@ -3347,7 +3332,7 @@ x_create_bitmap_from_xpm_data (struct frame *f, char **bits)
attrs.valuemask |= XpmColormap;
rc = XpmCreatePixmapFromData (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
- bits, &bitmap, &mask, &attrs);
+ (char **) bits, &bitmap, &mask, &attrs);
if (rc != XpmSuccess)
{
XpmFreeAttributes (&attrs);
@@ -3456,14 +3441,14 @@ xpm_load (struct frame *f, struct image *img)
if (STRINGP (name))
{
xpm_syms[i].name = (char *) alloca (SCHARS (name) + 1);
- strcpy (xpm_syms[i].name, SDATA (name));
+ strcpy (xpm_syms[i].name, SSDATA (name));
}
else
xpm_syms[i].name = "";
if (STRINGP (color))
{
xpm_syms[i].value = (char *) alloca (SCHARS (color) + 1);
- strcpy (xpm_syms[i].value, SDATA (color));
+ strcpy (xpm_syms[i].value, SSDATA (color));
}
else
xpm_syms[i].value = "";
@@ -3506,7 +3491,7 @@ xpm_load (struct frame *f, struct image *img)
&attrs);
#else
rc = XpmReadFileToPixmap (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
- SDATA (file), &img->pixmap, &img->mask,
+ SSDATA (file), &img->pixmap, &img->mask,
&attrs);
#endif /* HAVE_NTGUI */
}
@@ -3529,7 +3514,7 @@ xpm_load (struct frame *f, struct image *img)
&attrs);
#else
rc = XpmCreatePixmapFromBuffer (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
- SDATA (buffer),
+ SSDATA (buffer),
&img->pixmap, &img->mask,
&attrs);
#endif /* HAVE_NTGUI */
@@ -4405,11 +4390,6 @@ static void x_detect_edges (struct frame *, struct image *, int[9], int);
static void XPutPixel (XImagePtr , int, int, COLORREF);
#endif /* HAVE_NTGUI */
-/* Non-zero means draw a cross on images having `:conversion
- disabled'. */
-
-int cross_disabled_images;
-
/* Edge detection matrices for different edge-detection
strategies. */
@@ -5121,7 +5101,7 @@ pbm_load (struct frame *f, struct image *img)
return 0;
}
- contents = slurp_file (SDATA (file), &size);
+ contents = slurp_file (SSDATA (file), &size);
if (contents == NULL)
{
image_error ("Error reading `%s'", file, Qnil);
@@ -5530,6 +5510,8 @@ static void
my_png_error (png_struct *png_ptr, const char *msg)
{
xassert (png_ptr != NULL);
+ /* Avoid compiler warning about deprecated direct access to
+ png_ptr's fields in libpng versions 1.4.x. */
image_error ("PNG error: %s", build_string (msg), Qnil);
longjmp (png_ptr->jmpbuf, 1);
}
@@ -5621,7 +5603,7 @@ png_load (struct frame *f, struct image *img)
}
/* Open the image file. */
- fp = fopen (SDATA (file), "rb");
+ fp = fopen (SSDATA (file), "rb");
if (!fp)
{
image_error ("Cannot open image file `%s'", file, Qnil);
@@ -5758,7 +5740,7 @@ png_load (struct frame *f, struct image *img)
/* The user specified `:background', use that. */
{
XColor color;
- if (x_defined_color (f, SDATA (specified_bg), &color, 0))
+ if (x_defined_color (f, SSDATA (specified_bg), &color, 0))
{
png_color_16 user_bg;
@@ -6339,7 +6321,7 @@ jpeg_load (struct frame *f, struct image *img)
return 0;
}
- fp = fopen (SDATA (file), "rb");
+ fp = fopen (SSDATA (file), "rb");
if (fp == NULL)
{
image_error ("Cannot open `%s'", file, Qnil);
@@ -6774,7 +6756,7 @@ tiff_load (struct frame *f, struct image *img)
/* Try to open the image file. Casting return value avoids a
GCC warning on W32. */
- tiff = (TIFF *)fn_TIFFOpen (SDATA (file), "r");
+ tiff = (TIFF *)fn_TIFFOpen (SSDATA (file), "r");
if (tiff == NULL)
{
image_error ("Cannot open `%s'", file, Qnil);
@@ -7376,13 +7358,10 @@ gif_load (struct frame *f, struct image *img)
imagemagick
***********************************************************************/
#if defined (HAVE_IMAGEMAGICK)
-Lisp_Object Vimagemagick_render_type;
/* The symbol `imagemagick' identifying images of this type. */
Lisp_Object Qimagemagick;
-Lisp_Object Vimagemagick_render_type;
-
/* Indices of image specification fields in imagemagick_format, below. */
enum imagemagick_keyword_index
@@ -7514,6 +7493,9 @@ imagemagick_load_image (/* Pointer to emacs frame structure. */
image. Interface :index is same as for GIF. First we "ping" the
image to see how many sub-images it contains. Pinging is faster
than loading the image to find out things about it. */
+
+ /* `MagickWandGenesis' initializes the imagemagick environment. */
+ MagickWandGenesis ();
image = image_spec_value (img->spec, QCindex, NULL);
ino = INTEGERP (image) ? XFASTINT (image) : 0;
ping_wand = NewMagickWand ();
@@ -7542,6 +7524,7 @@ imagemagick_load_image (/* Pointer to emacs frame structure. */
img->data.lisp_val));
DestroyMagickWand (ping_wand);
+
/* Now, after pinging, we know how many images are inside the
file. If its not a bundle, just one. */
@@ -7554,16 +7537,23 @@ imagemagick_load_image (/* Pointer to emacs frame structure. */
exception = AcquireExceptionInfo ();
im_image = ReadImage (image_info, exception);
- CatchException (exception);
+ DestroyExceptionInfo (exception);
- image_wand = NewMagickWandFromImage (im_image);
+ if (im_image != NULL)
+ {
+ image_wand = NewMagickWandFromImage (im_image);
+ DestroyImage(im_image);
+ status = MagickTrue;
+ }
+ else
+ status = MagickFalse;
}
else
{
image_wand = NewMagickWand ();
status = MagickReadImageBlob (image_wand, contents, size);
}
- image_error ("im read failed", Qnil, Qnil);
+
if (status == MagickFalse) goto imagemagick_error;
/* If width and/or height is set in the display spec assume we want
@@ -7659,11 +7649,6 @@ imagemagick_load_image (/* Pointer to emacs frame structure. */
width, height, and then transfer ownerwship to Emacs. */
height = MagickGetImageHeight (image_wand);
width = MagickGetImageWidth (image_wand);
- if (status == MagickFalse)
- {
- image_error ("Imagemagick image get size failed", Qnil, Qnil);
- goto imagemagick_error;
- }
if (! check_image_size (f, width, height))
{
@@ -7683,6 +7668,9 @@ imagemagick_load_image (/* Pointer to emacs frame structure. */
if (!x_create_x_image_and_pixmap (f, width, height, 0,
&ximg, &img->pixmap))
{
+#ifdef COLOR_TABLE_SUPPORT
+ free_color_table ();
+#endif
image_error("Imagemagick X bitmap allocation failure", Qnil, Qnil);
goto imagemagick_error;
}
@@ -7695,6 +7683,10 @@ imagemagick_load_image (/* Pointer to emacs frame structure. */
iterator = NewPixelIterator (image_wand);
if (iterator == (PixelIterator *) NULL)
{
+#ifdef COLOR_TABLE_SUPPORT
+ free_color_table ();
+#endif
+ x_destroy_x_image (ximg);
image_error ("Imagemagick pixel iterator creation failed",
Qnil, Qnil);
goto imagemagick_error;
@@ -7729,6 +7721,9 @@ imagemagick_load_image (/* Pointer to emacs frame structure. */
if (!x_create_x_image_and_pixmap (f, width, height, imagedepth,
&ximg, &img->pixmap))
{
+#ifdef COLOR_TABLE_SUPPORT
+ free_color_table ();
+#endif
image_error("Imagemagick X bitmap allocation failure", Qnil, Qnil);
goto imagemagick_error;
}
@@ -7787,10 +7782,14 @@ imagemagick_load_image (/* Pointer to emacs frame structure. */
/* Final cleanup. image_wand should be the only resource left. */
DestroyMagickWand (image_wand);
+ /* `MagickWandTerminus' terminates the imagemagick environment. */
+ MagickWandTerminus ();
return 1;
imagemagick_error:
+ DestroyMagickWand (image_wand);
+ MagickWandTerminus ();
/* TODO more cleanup. */
image_error ("Error parsing IMAGEMAGICK image `%s'", img->spec, Qnil);
return 0;
@@ -8662,8 +8661,6 @@ of `dynamic-library-alist', which see). */)
#if defined (HAVE_IMAGEMAGICK)
if (EQ (type, Qimagemagick))
{
- /* MagickWandGenesis() initializes the imagemagick library. */
- MagickWandGenesis ();
return CHECK_LIB_AVAILABLE (&imagemagick_type, init_imagemagick_functions,
libraries);
}
@@ -8689,13 +8686,13 @@ syms_of_image (void)
/* Must be defined now becase we're going to update it below, while
defining the supported image types. */
- DEFVAR_LISP ("image-types", &Vimage_types,
+ DEFVAR_LISP ("image-types", Vimage_types,
doc: /* List of potentially supported image types.
Each element of the list is a symbol for an image type, like 'jpeg or 'png.
To check whether it is really supported, use `image-type-available-p'. */);
Vimage_types = Qnil;
- DEFVAR_LISP ("max-image-size", &Vmax_image_size,
+ DEFVAR_LISP ("max-image-size", Vmax_image_size,
doc: /* Maximum size of images.
Emacs will not load an image into memory if its pixel width or
pixel height exceeds this limit.
@@ -8776,6 +8773,18 @@ non-numeric, there is no explicit limit on the size of images. */);
staticpro (&QCpt_height);
#endif /* HAVE_GHOSTSCRIPT */
+#ifdef HAVE_NTGUI
+ Qlibpng_version = intern_c_string ("libpng-version");
+ staticpro (&Qlibpng_version);
+ Fset (Qlibpng_version,
+#if HAVE_PNG
+ make_number (PNG_LIBPNG_VER)
+#else
+ make_number (-1)
+#endif
+ );
+#endif
+
#if defined (HAVE_XPM) || defined (HAVE_NS)
Qxpm = intern_c_string ("xpm");
staticpro (&Qxpm);
@@ -8842,17 +8851,17 @@ non-numeric, there is no explicit limit on the size of images. */);
defsubr (&Slookup_image);
#endif
- DEFVAR_BOOL ("cross-disabled-images", &cross_disabled_images,
+ DEFVAR_BOOL ("cross-disabled-images", cross_disabled_images,
doc: /* Non-nil means always draw a cross over disabled images.
Disabled images are those having a `:conversion disabled' property.
A cross is always drawn on black & white displays. */);
cross_disabled_images = 0;
- DEFVAR_LISP ("x-bitmap-file-path", &Vx_bitmap_file_path,
+ DEFVAR_LISP ("x-bitmap-file-path", Vx_bitmap_file_path,
doc: /* List of directories to search for window system bitmap files. */);
Vx_bitmap_file_path = decode_env_path ((char *) 0, PATH_BITMAPS);
- DEFVAR_LISP ("image-cache-eviction-delay", &Vimage_cache_eviction_delay,
+ DEFVAR_LISP ("image-cache-eviction-delay", Vimage_cache_eviction_delay,
doc: /* Maximum time after which images are removed from the cache.
When an image has not been displayed this many seconds, Emacs
automatically removes it from the image cache. If the cache contains
@@ -8862,7 +8871,7 @@ The value can also be nil, meaning the cache is never cleared.
The function `clear-image-cache' disregards this variable. */);
Vimage_cache_eviction_delay = make_number (300);
#ifdef HAVE_IMAGEMAGICK
- DEFVAR_LISP ("imagemagick-render-type", &Vimagemagick_render_type,
+ DEFVAR_LISP ("imagemagick-render-type", Vimagemagick_render_type,
doc: /* Choose between ImageMagick render methods. */);
#endif
@@ -8872,6 +8881,3 @@ void
init_image (void)
{
}
-
-/* arch-tag: 123c2a5e-14a8-4c53-ab95-af47d7db49b9
- (do not change this comment) */
diff --git a/src/indent.c b/src/indent.c
index affcc222f0..b40cb9f50b 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -1,6 +1,5 @@
/* Indentation functions.
- Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1998, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985-1988, 1993-1995, 1998, 2000-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -38,11 +37,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "dispextern.h"
#include "region-cache.h"
-/* Indentation can insert tabs if this is non-zero;
- otherwise always uses spaces. */
-
-static int indent_tabs_mode;
-
#define CR 015
/* These three values memorize the current column to avoid recalculation. */
@@ -2052,7 +2046,7 @@ whether or not it is currently displayed in some window. */)
it_overshoot_expected = 1;
else if (it.method == GET_FROM_STRING)
{
- const char *s = SDATA (it.string);
+ const char *s = SSDATA (it.string);
const char *e = s + SBYTES (it.string);
while (s < e && *s != '\n')
++s;
@@ -2159,7 +2153,7 @@ whether or not it is currently displayed in some window. */)
void
syms_of_indent (void)
{
- DEFVAR_BOOL ("indent-tabs-mode", &indent_tabs_mode,
+ DEFVAR_BOOL ("indent-tabs-mode", indent_tabs_mode,
doc: /* *Indentation can insert tabs if this is non-nil. */);
indent_tabs_mode = 1;
@@ -2170,6 +2164,3 @@ syms_of_indent (void)
defsubr (&Svertical_motion);
defsubr (&Scompute_motion);
}
-
-/* arch-tag: 9adfea44-71f7-4988-8ee3-96da15c502cc
- (do not change this comment) */
diff --git a/src/indent.h b/src/indent.h
index 394d7216b4..07ca4dd87a 100644
--- a/src/indent.h
+++ b/src/indent.h
@@ -1,6 +1,5 @@
/* Definitions for interface to indent.c
- Copyright (C) 1985, 1986, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985-1986, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -76,5 +75,3 @@ void recompute_width_table (struct buffer *buf,
struct Lisp_Char_Table *disptab);
-/* arch-tag: f9feb373-5bff-4f4f-9198-94805d00cfd7
- (do not change this comment) */
diff --git a/src/insdel.c b/src/insdel.c
index b62889082f..8923a9e12e 100644
--- a/src/insdel.c
+++ b/src/insdel.c
@@ -1,6 +1,5 @@
/* Buffer insertion/deletion and gap motion for GNU Emacs.
- Copyright (C) 1985, 1986, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985-1986, 1993-1995, 1997-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -53,10 +52,6 @@ static void adjust_point (EMACS_INT nchars, EMACS_INT nbytes);
Lisp_Object Fcombine_after_change_execute (void);
-/* Non-nil means don't call the after-change-functions right away,
- just record an element in combine_after_change_list. */
-Lisp_Object Vcombine_after_change_calls;
-
/* List of elements of the form (BEG-UNCHANGED END-UNCHANGED CHANGE-AMOUNT)
describing changes which happened while combine_after_change_calls
was nonzero. We use this to decide how to call them
@@ -74,10 +69,6 @@ Lisp_Object combine_after_change_buffer;
Lisp_Object Qinhibit_modification_hooks;
-/* Check all markers in the current buffer, looking for something invalid. */
-
-static int check_markers_debug_flag;
-
#define CHECK_MARKERS() \
if (check_markers_debug_flag) \
check_markers (); \
@@ -2374,14 +2365,14 @@ syms_of_insdel (void)
combine_after_change_list = Qnil;
combine_after_change_buffer = Qnil;
- DEFVAR_BOOL ("check-markers-debug-flag", &check_markers_debug_flag,
+ DEFVAR_BOOL ("check-markers-debug-flag", check_markers_debug_flag,
doc: /* Non-nil means enable debugging checks for invalid marker positions. */);
check_markers_debug_flag = 0;
- DEFVAR_LISP ("combine-after-change-calls", &Vcombine_after_change_calls,
+ DEFVAR_LISP ("combine-after-change-calls", Vcombine_after_change_calls,
doc: /* Used internally by the `combine-after-change-calls' macro. */);
Vcombine_after_change_calls = Qnil;
- DEFVAR_BOOL ("inhibit-modification-hooks", &inhibit_modification_hooks,
+ DEFVAR_BOOL ("inhibit-modification-hooks", inhibit_modification_hooks,
doc: /* Non-nil means don't run any of the hooks that respond to buffer changes.
This affects `before-change-functions' and `after-change-functions',
as well as hooks attached to text properties and overlays. */);
diff --git a/src/intervals.c b/src/intervals.c
index def63c43cc..ad46c17d58 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -1,6 +1,5 @@
/* Code for doing intervals.
- Copyright (C) 1993, 1994, 1995, 1997, 1998, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993-1995, 1997-1998, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -2565,5 +2564,3 @@ set_intervals_multibyte (int multi_flag)
BEG, BEG_BYTE, Z, Z_BYTE);
}
-/* arch-tag: 3d402b60-083c-4271-b4a3-ebd9a74bfe27
- (do not change this comment) */
diff --git a/src/intervals.h b/src/intervals.h
index 47eb8d4bcb..0762c9d8dc 100644
--- a/src/intervals.h
+++ b/src/intervals.h
@@ -1,6 +1,5 @@
/* Definitions and global variables for intervals.
- Copyright (C) 1993, 1994, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993-1994, 2000-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -283,6 +282,7 @@ extern INTERVAL update_interval (INTERVAL, EMACS_INT);
extern void set_intervals_multibyte (int);
extern INTERVAL validate_interval_range (Lisp_Object, Lisp_Object *,
Lisp_Object *, int);
+extern INTERVAL interval_of (int, Lisp_Object);
/* Defined in xdisp.c */
extern int invisible_p (Lisp_Object, Lisp_Object);
@@ -303,16 +303,10 @@ extern Lisp_Object Qkeymap;
extern Lisp_Object Qforeground, Qbackground, Qfont, Qunderline, Qstipple;
extern Lisp_Object Qinvisible, Qintangible, Qread_only;
-extern Lisp_Object Vinhibit_point_motion_hooks;
-extern Lisp_Object Vdefault_text_properties;
-extern Lisp_Object Vchar_property_alias_alist;
-extern Lisp_Object Vtext_property_default_nonsticky;
-
/* Sticky properties */
extern Lisp_Object Qfront_sticky, Qrear_nonsticky;
EXFUN (Fget_char_property, 3);
-EXFUN (Fget_char_property_and_overlay, 3);
EXFUN (Fget_text_property, 3);
EXFUN (Ftext_properties_at, 2);
EXFUN (Fnext_property_change, 3);
@@ -321,7 +315,6 @@ EXFUN (Fadd_text_properties, 4);
EXFUN (Fset_text_properties, 4);
EXFUN (Fremove_text_properties, 4);
EXFUN (Ftext_property_any, 5);
-EXFUN (Ftext_property_not_all, 5);
EXFUN (Fprevious_single_char_property_change, 4);
extern Lisp_Object copy_text_properties (Lisp_Object, Lisp_Object,
Lisp_Object, Lisp_Object,
@@ -347,5 +340,3 @@ extern void syms_of_textprop (void);
#include "composite.h"
-/* arch-tag: f0bc16c0-b084-498d-9de4-21cc8f077795
- (do not change this comment) */
diff --git a/src/keyboard.c b/src/keyboard.c
index df69c526f7..badc785b1c 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -1,7 +1,6 @@
/* Keyboard and mouse input; editor command loop.
- Copyright (C) 1985, 1986, 1987, 1988, 1989, 1993, 1994, 1995,
- 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1985-1989, 1993-1997, 1999-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -58,10 +57,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "syssignal.h"
#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
-
#include <fcntl.h>
/* This is to get the definitions of the XK_ symbols. */
@@ -128,9 +124,6 @@ int this_command_key_count_reset;
Lisp_Object raw_keybuf;
int raw_keybuf_count;
-/* Non-nil if the present key sequence was obtained by shift translation. */
-Lisp_Object Vthis_command_keys_shift_translated;
-
#define GROW_RAW_KEYBUF \
if (raw_keybuf_count == XVECTOR (raw_keybuf)->size) \
raw_keybuf = larger_vector (raw_keybuf, raw_keybuf_count * 2, Qnil) \
@@ -144,19 +137,6 @@ int this_single_command_key_start;
static int before_command_key_count;
static int before_command_echo_length;
-/* If non-nil, the function that implements the display of help.
- It's called with one argument, the help string to display. */
-
-Lisp_Object Vshow_help_function;
-
-/* Nonzero means do menu prompting. */
-
-static int menu_prompting;
-
-/* Character to see next line of menu prompt. */
-
-static Lisp_Object menu_prompt_more_char;
-
/* For longjmp to where kbd input is being done. */
static jmp_buf getcjmp;
@@ -185,43 +165,9 @@ struct kboard *echo_kboard;
Lisp_Object echo_message_buffer;
-/* Nonzero means disregard local maps for the menu bar. */
-static int inhibit_local_menu_bar_menus;
-
/* Nonzero means C-g should cause immediate error-signal. */
int immediate_quit;
-/* The user's hook function for outputting an error message. */
-Lisp_Object Vcommand_error_function;
-
-/* The user's ERASE setting. */
-Lisp_Object Vtty_erase_char;
-
-/* Character to recognize as the help char. */
-Lisp_Object Vhelp_char;
-
-/* List of other event types to recognize as meaning "help". */
-Lisp_Object Vhelp_event_list;
-
-/* Form to execute when help char is typed. */
-Lisp_Object Vhelp_form;
-
-/* Command to run when the help character follows a prefix key. */
-Lisp_Object Vprefix_help_command;
-
-/* List of items that should move to the end of the menu bar. */
-Lisp_Object Vmenu_bar_final_items;
-
-/* Non-nil means show the equivalent key-binding for
- any M-x command that has one.
- The value can be a length of time to show the message for.
- If the value is non-nil and not a number, we wait 2 seconds. */
-Lisp_Object Vsuggest_key_bindings;
-
-/* How long to display an echo-area message when the minibuffer is active.
- If the value is not a number, such messages don't time out. */
-Lisp_Object Vminibuffer_message_timeout;
-
/* Character that causes a quit. Normally C-g.
If we are running on an ordinary terminal, this must be an ordinary
@@ -240,46 +186,9 @@ Lisp_Object Vminibuffer_message_timeout;
ASCII character. */
int quit_char;
-/* If non-nil, this is a map that overrides all other local maps. */
-Lisp_Object Voverriding_local_map;
-
-/* If non-nil, Voverriding_local_map applies to the menu bar. */
-Lisp_Object Voverriding_local_map_menu_flag;
-
-/* Keymap that defines special misc events that should
- be processed immediately at a low level. */
-Lisp_Object Vspecial_event_map;
-
/* Current depth in recursive edits. */
int command_loop_level;
-/* Total number of times command_loop has read a key sequence. */
-EMACS_INT num_input_keys;
-
-/* Last input event read as a command. */
-Lisp_Object last_command_event;
-
-/* Last input character read as a command, not counting menus
- reached by the mouse. */
-Lisp_Object last_nonmenu_event;
-
-/* Last input event read for any purpose. */
-Lisp_Object last_input_event;
-
-/* If not Qnil, a list of objects to be read as subsequent command input. */
-Lisp_Object Vunread_command_events;
-
-/* If not Qnil, a list of objects to be read as subsequent command input
- including input method processing. */
-Lisp_Object Vunread_input_method_events;
-
-/* If not Qnil, a list of objects to be read as subsequent command input
- but NOT including input method processing. */
-Lisp_Object Vunread_post_input_method_events;
-
-/* If not -1, an event to be read as subsequent command input. */
-EMACS_INT unread_command_char;
-
/* If not Qnil, this is a switch-frame event which we decided to put
off until the end of a key sequence. This should be read as the
next command input, after any unread_command_events.
@@ -289,47 +198,19 @@ EMACS_INT unread_command_char;
events until a non-ASCII event is acceptable as input. */
Lisp_Object unread_switch_frame;
-/* A mask of extra modifier bits to put into every keyboard char. */
-EMACS_INT extra_keyboard_modifiers;
-
-/* Char to use as prefix when a meta character is typed in.
- This is bound on entry to minibuffer in case ESC is changed there. */
-
-Lisp_Object meta_prefix_char;
-
/* Last size recorded for a current buffer which is not a minibuffer. */
static EMACS_INT last_non_minibuf_size;
-/* Number of idle seconds before an auto-save and garbage collection. */
-static Lisp_Object Vauto_save_timeout;
-
/* Total number of times read_char has returned. */
int num_input_events;
-/* Total number of times read_char has returned, outside of macros. */
-EMACS_INT num_nonmacro_input_events;
-
-/* Auto-save automatically when this many characters have been typed
- since the last time. */
-
-static EMACS_INT auto_save_interval;
-
/* Value of num_nonmacro_input_events as of last auto save. */
int last_auto_save;
-/* The command being executed by the command loop.
- Commands may set this, and the value set will be copied into
- current_kboard->Vlast_command instead of the actual command. */
-Lisp_Object Vthis_command;
-
/* This is like Vthis_command, except that commands never set it. */
Lisp_Object real_this_command;
-/* If the lookup of the command returns a binding, the original
- command is stored in this-original-command. It is nil otherwise. */
-Lisp_Object Vthis_original_command;
-
/* The value of point when the last command was started. */
EMACS_INT last_point_position;
@@ -346,22 +227,10 @@ Lisp_Object last_point_position_window;
generated by the next character. */
Lisp_Object internal_last_event_frame;
-/* A user-visible version of the above, intended to allow users to
- figure out where the last event came from, if the event doesn't
- carry that information itself (i.e. if it was a character). */
-Lisp_Object Vlast_event_frame;
-
/* The timestamp of the last input event we received from the X server.
X Windows wants this for selection ownership. */
unsigned long last_event_timestamp;
-/* If non-nil, active regions automatically become the window selection. */
-Lisp_Object Vselect_active_regions;
-
-/* The text in the active region prior to modifying the buffer.
- Used by the `select-active-regions' feature. */
-Lisp_Object Vsaved_region_selection;
-
Lisp_Object Qx_set_selection, QPRIMARY, Qhandle_switch_frame;
Lisp_Object Qself_insert_command;
@@ -374,48 +243,19 @@ Lisp_Object Qtimer_event_handler;
key sequence that it reads. */
Lisp_Object read_key_sequence_cmd;
-/* Echo unfinished commands after this many seconds of pause. */
-Lisp_Object Vecho_keystrokes;
-
-/* Form to evaluate (if non-nil) when Emacs is started. */
-Lisp_Object Vtop_level;
-
-/* If non-nil, this implements the current input method. */
-Lisp_Object Vinput_method_function;
Lisp_Object Qinput_method_function;
-/* When we call Vinput_method_function,
- this holds the echo area message that was just erased. */
-Lisp_Object Vinput_method_previous_message;
-
-/* Non-nil means deactivate the mark at end of this command. */
-Lisp_Object Vdeactivate_mark;
Lisp_Object Qdeactivate_mark;
-/* Menu bar specified in Lucid Emacs fashion. */
-
-Lisp_Object Vlucid_menu_bar_dirty_flag;
Lisp_Object Qrecompute_lucid_menubar, Qactivate_menubar_hook;
Lisp_Object Qecho_area_clear_hook;
/* Hooks to run before and after each command. */
-Lisp_Object Qpre_command_hook, Vpre_command_hook;
-Lisp_Object Qpost_command_hook, Vpost_command_hook;
-Lisp_Object Qcommand_hook_internal, Vcommand_hook_internal;
-
-/* Parent keymap of terminal-local function-key-map instances. */
-Lisp_Object Vfunction_key_map;
-
-/* Keymap of key translations that can override keymaps. */
-Lisp_Object Vkey_translation_map;
-
-/* List of deferred actions to be performed at a later time.
- The precise format isn't relevant here; we just check whether it is nil. */
-Lisp_Object Vdeferred_action_list;
+Lisp_Object Qpre_command_hook;
+Lisp_Object Qpost_command_hook;
+Lisp_Object Qcommand_hook_internal;
-/* Function to call to handle deferred actions, when there are any. */
-Lisp_Object Vdeferred_action_function;
Lisp_Object Qdeferred_action_function;
Lisp_Object Qinput_method_exit_on_first_char;
@@ -451,11 +291,6 @@ static struct input_event * volatile kbd_store_ptr;
dequeuing functions? Such a flag could be screwed up by interrupts
at inopportune times. */
-/* If this flag is non-nil, we check mouse_moved to see when the
- mouse moves, and motion events will appear in the input stream.
- Otherwise, mouse motion is ignored. */
-Lisp_Object do_mouse_tracking;
-
/* Symbols to head events. */
Lisp_Object Qmouse_movement;
Lisp_Object Qscroll_bar_movement;
@@ -523,12 +358,6 @@ static int echo_length (void);
Lisp_Object Qpolling_period;
-/* List of absolute timers. Appears in order of next scheduled event. */
-Lisp_Object Vtimer_list;
-
-/* List of idle time timers. Appears in order of next scheduled event. */
-Lisp_Object Vtimer_idle_list;
-
/* Incremented whenever a timer is run. */
int timers_run;
@@ -562,18 +391,6 @@ int interrupts_deferred;
#define POLL_FOR_INPUT
#endif
-/* After a command is executed, if point is moved into a region that
- has specific properties (e.g. composition, display), we adjust
- point to the boundary of the region. But, if a command sets this
- variable to non-nil, we suppress this point adjustment. This
- variable is set to nil before reading a command. */
-
-Lisp_Object Vdisable_point_adjustment;
-
-/* If non-nil, always disable point adjustment. */
-
-Lisp_Object Vglobal_disable_point_adjustment;
-
/* The time when Emacs started being idle. */
static EMACS_TIME timer_idleness_start_time;
@@ -583,11 +400,6 @@ static EMACS_TIME timer_idleness_start_time;
static EMACS_TIME timer_last_idleness_start_time;
-/* If non-nil, events produced by disabled menu items and tool-bar
- buttons are not ignored. Help functions bind this to allow help on
- those items and buttons. */
-Lisp_Object Venable_disabled_menus_and_buttons;
-
/* Global variable declarations. */
@@ -634,10 +446,6 @@ static SIGTYPE handle_user_signal (int);
static char *find_user_signal_name (int);
static int store_user_signal_events (void);
-/* Nonzero means don't try to suspend even if the operating system seems
- to support it. */
-static int cannot_suspend;
-
/* Add C to the echo string, if echoing is going on.
C can be a character, which is printed prettily ("M-C-x" and all that
@@ -2043,11 +1851,6 @@ safe_run_hooks (Lisp_Object hook)
}
-/* Number of seconds between polling for input. This is a Lisp
- variable that can be bound. */
-
-EMACS_INT polling_period;
-
/* Nonzero means polling for input is temporarily suppressed. */
int poll_suppress_count;
@@ -3608,11 +3411,7 @@ kbd_buffer_nr_stored (void)
: ((kbd_buffer + KBD_BUFFER_SIZE) - kbd_fetch_ptr
+ (kbd_store_ptr - kbd_buffer)));
}
-#endif /* subprocesses */
-
-Lisp_Object Vthrow_on_input;
-
-/* Store an event obtained at interrupt level into kbd_buffer, fifo */
+#endif /* Store an event obtained at interrupt level into kbd_buffer, fifo */
void
kbd_buffer_store_event (register struct input_event *event)
@@ -4102,7 +3901,7 @@ kbd_buffer_get_event (KBOARD **kbp,
#endif
else if (event->kind == SAVE_SESSION_EVENT)
{
- obj = Fcons (Qsave_session, Qnil);
+ obj = Fcons (Qsave_session, Fcons (event->arg, Qnil));
kbd_fetch_ptr = event + 1;
}
/* Just discard these, by returning nil.
@@ -5229,16 +5028,6 @@ static int last_mouse_x;
static int last_mouse_y;
static unsigned long button_down_time;
-/* The maximum time between clicks to make a double-click, or Qnil to
- disable double-click detection, or Qt for no time limit. */
-
-Lisp_Object Vdouble_click_time;
-
-/* Maximum number of pixels the mouse may be moved between clicks
- to make a double-click. */
-
-EMACS_INT double_click_fuzz;
-
/* The number of clicks in this multiple-click. */
int double_click_count;
@@ -5364,8 +5153,12 @@ make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y,
int width2, height2;
/* The pixel X coordinate passed to buffer_posn_from_coords
is the X coordinate relative to the text area for
- text-area clicks, zero otherwise. */
- int x2 = (part == ON_TEXT) ? xret : 0;
+ text-area and right-margin clicks, zero otherwise. */
+ int x2
+ = (part == ON_TEXT) ? xret
+ : (part == ON_RIGHT_FRINGE || part == ON_RIGHT_MARGIN)
+ ? (XINT (x) - window_box_left (w, TEXT_AREA))
+ : 0;
int y2 = wy;
string2 = buffer_posn_from_coords (w, &x2, &y2, &p,
@@ -6232,7 +6025,7 @@ parse_modifiers_uncached (Lisp_Object symbol, int *modifier_end)
#define MULTI_LETTER_MOD(BIT, NAME, LEN) \
if (i + LEN + 1 <= SBYTES (name) \
- && ! strncmp (SDATA (name) + i, NAME, LEN)) \
+ && ! strncmp (SSDATA (name) + i, NAME, LEN)) \
{ \
this_mod_end = i + LEN; \
this_mod = BIT; \
@@ -6270,13 +6063,13 @@ parse_modifiers_uncached (Lisp_Object symbol, int *modifier_end)
if (! (modifiers & (down_modifier | drag_modifier
| double_modifier | triple_modifier))
&& i + 7 == SBYTES (name)
- && strncmp (SDATA (name) + i, "mouse-", 6) == 0
+ && strncmp (SSDATA (name) + i, "mouse-", 6) == 0
&& ('0' <= SREF (name, i + 6) && SREF (name, i + 6) <= '9'))
modifiers |= click_modifier;
if (! (modifiers & (double_modifier | triple_modifier))
&& i + 6 < SBYTES (name)
- && strncmp (SDATA (name) + i, "wheel-", 6) == 0)
+ && strncmp (SSDATA (name) + i, "wheel-", 6) == 0)
modifiers |= click_modifier;
if (modifier_end)
@@ -6394,7 +6187,7 @@ parse_modifiers (Lisp_Object symbol)
Lisp_Object unmodified;
Lisp_Object mask;
- unmodified = Fintern (make_string (SDATA (SYMBOL_NAME (symbol)) + end,
+ unmodified = Fintern (make_string (SSDATA (SYMBOL_NAME (symbol)) + end,
SBYTES (SYMBOL_NAME (symbol)) - end),
Qnil);
@@ -6462,7 +6255,7 @@ apply_modifiers (int modifiers, Lisp_Object base)
{
/* We have to create the symbol ourselves. */
new_symbol = apply_modifiers_uncached (modifiers,
- SDATA (SYMBOL_NAME (base)),
+ SSDATA (SYMBOL_NAME (base)),
SCHARS (SYMBOL_NAME (base)),
SBYTES (SYMBOL_NAME (base)));
@@ -7464,6 +7257,54 @@ static Lisp_Object menu_bar_one_keymap_changed_items;
static Lisp_Object menu_bar_items_vector;
static int menu_bar_items_index;
+
+static const char* separator_names[] = {
+ "space",
+ "no-line",
+ "single-line",
+ "double-line",
+ "single-dashed-line",
+ "double-dashed-line",
+ "shadow-etched-in",
+ "shadow-etched-out",
+ "shadow-etched-in-dash",
+ "shadow-etched-out-dash",
+ "shadow-double-etched-in",
+ "shadow-double-etched-out",
+ "shadow-double-etched-in-dash",
+ "shadow-double-etched-out-dash",
+ 0,
+};
+
+/* Return non-zero if LABEL specifies a separator. */
+
+int
+menu_separator_name_p (const char *label)
+{
+ if (!label)
+ return 0;
+ else if (strlen (label) > 3
+ && strncmp (label, "--", 2) == 0
+ && label[2] != '-')
+ {
+ int i;
+ label += 2;
+ for (i = 0; separator_names[i]; ++i)
+ if (strcmp (label, separator_names[i]) == 0)
+ return 1;
+ }
+ else
+ {
+ /* It's a separator if it contains only dashes. */
+ while (*label == '-')
+ ++label;
+ return (*label == 0);
+ }
+
+ return 0;
+}
+
+
/* Return a vector of menu items for a menu bar, appropriate
to the current buffer. Each item has three elements in the vector:
KEY STRING MAPLIST.
@@ -7920,7 +7761,7 @@ parse_menu_item (Lisp_Object item, int inmenubar)
/* The previous code preferred :key-sequence to :keys, so we
preserve this behavior. */
if (STRINGP (keyeq) && !CONSP (keyhint))
- keyeq = Fsubstitute_command_keys (keyeq);
+ keyeq = concat2 (build_string (" "), Fsubstitute_command_keys (keyeq));
else
{
Lisp_Object prefix = keyeq;
@@ -8207,10 +8048,14 @@ parse_tool_bar_item (Lisp_Object key, Lisp_Object item)
Rule out items that aren't lists, don't start with
`menu-item' or whose rest following `tool-bar-item' is not a
list. */
- if (!CONSP (item)
- || !EQ (XCAR (item), Qmenu_item)
- || (item = XCDR (item),
- !CONSP (item)))
+ if (!CONSP (item))
+ return 0;
+
+ /* As an exception, allow old-style menu separators. */
+ if (STRINGP (XCAR (item)))
+ item = Fcons (XCAR (item), Qnil);
+ else if (!EQ (XCAR (item), Qmenu_item)
+ || (item = XCDR (item), !CONSP (item)))
return 0;
/* Create tool_bar_item_properties vector if necessary. Reset it to
@@ -8240,10 +8085,27 @@ parse_tool_bar_item (Lisp_Object key, Lisp_Object item)
}
PROP (TOOL_BAR_ITEM_CAPTION) = caption;
- /* Give up if rest following the caption is not a list. */
+ /* If the rest following the caption is not a list, the menu item is
+ either a separator, or invalid. */
item = XCDR (item);
if (!CONSP (item))
- return 0;
+ {
+ if (menu_separator_name_p (SSDATA (caption)))
+ {
+ PROP (TOOL_BAR_ITEM_TYPE) = Qt;
+#if !defined (USE_GTK) && !defined (HAVE_NS)
+ /* If we use build_desired_tool_bar_string to render the
+ tool bar, the separator is rendered as an image. */
+ PROP (TOOL_BAR_ITEM_IMAGES)
+ = menu_item_eval_property (Vtool_bar_separator_image_expression);
+ PROP (TOOL_BAR_ITEM_ENABLED_P) = Qnil;
+ PROP (TOOL_BAR_ITEM_SELECTED_P) = Qnil;
+ PROP (TOOL_BAR_ITEM_CAPTION) = Qnil;
+#endif
+ return 1;
+ }
+ return 0;
+ }
/* Store the binding. */
PROP (TOOL_BAR_ITEM_BINDING) = XCAR (item);
@@ -8276,10 +8138,10 @@ parse_tool_bar_item (Lisp_Object key, Lisp_Object item)
if (NILP (menu_item_eval_property (value)))
return 0;
}
- else if (EQ (key, QChelp))
+ else if (EQ (key, QChelp))
/* `:help HELP-STRING'. */
PROP (TOOL_BAR_ITEM_HELP) = value;
- else if (EQ (key, QCvert_only))
+ else if (EQ (key, QCvert_only))
/* `:vert-only t/nil'. */
PROP (TOOL_BAR_ITEM_VERT_ONLY) = value;
else if (EQ (key, QClabel))
@@ -8324,8 +8186,8 @@ parse_tool_bar_item (Lisp_Object key, Lisp_Object item)
/* Try to make one from caption and key. */
Lisp_Object key = PROP (TOOL_BAR_ITEM_KEY);
Lisp_Object capt = PROP (TOOL_BAR_ITEM_CAPTION);
- const char *label = SYMBOLP (key) ? (char *) SDATA (SYMBOL_NAME (key)) : "";
- const char *caption = STRINGP (capt) ? (char *) SDATA (capt) : "";
+ const char *label = SYMBOLP (key) ? SSDATA (SYMBOL_NAME (key)) : "";
+ const char *caption = STRINGP (capt) ? SSDATA (capt) : "";
EMACS_INT max_lbl = 2 * tool_bar_max_label_size;
char *buf = (char *) xmalloc (max_lbl + 1);
Lisp_Object new_lbl;
@@ -8583,7 +8445,7 @@ read_char_minibuf_menu_prompt (int commandflag, int nmaps, Lisp_Object *maps)
menu = read_char_minibuf_menu_text;
/* Prompt string always starts with map's prompt, and a space. */
- strcpy (menu, SDATA (name));
+ strcpy (menu, SSDATA (name));
nlength = SBYTES (name);
menu[nlength++] = ':';
menu[nlength++] = ' ';
@@ -10706,7 +10568,7 @@ If FILE is nil, close any open dribble file. */)
if (!NILP (file))
{
file = Fexpand_file_name (file, Qnil);
- dribble = fopen (SDATA (file), "w");
+ dribble = fopen (SSDATA (file), "w");
if (dribble == 0)
report_file_error ("Opening dribble", Fcons (file, Qnil));
}
@@ -11822,19 +11684,19 @@ syms_of_keyboard (void)
defsubr (&Sposn_at_point);
defsubr (&Sposn_at_x_y);
- DEFVAR_LISP ("last-command-event", &last_command_event,
+ DEFVAR_LISP ("last-command-event", last_command_event,
doc: /* Last input event that was part of a command. */);
- DEFVAR_LISP ("last-nonmenu-event", &last_nonmenu_event,
+ DEFVAR_LISP ("last-nonmenu-event", last_nonmenu_event,
doc: /* Last input event in a command, except for mouse menu events.
Mouse menus give back keys that don't look like mouse events;
this variable holds the actual mouse event that led to the menu,
so that you can determine whether the command was run by mouse or not. */);
- DEFVAR_LISP ("last-input-event", &last_input_event,
+ DEFVAR_LISP ("last-input-event", last_input_event,
doc: /* Last input event. */);
- DEFVAR_LISP ("unread-command-events", &Vunread_command_events,
+ DEFVAR_LISP ("unread-command-events", Vunread_command_events,
doc: /* List of events to be read as the command input.
These events are processed first, before actual keyboard input.
Events read from this list are not normally added to `this-command-keys',
@@ -11842,16 +11704,16 @@ as they will already have been added once as they were read for the first time.
An element of the form (t . EVENT) forces EVENT to be added to that list. */);
Vunread_command_events = Qnil;
- DEFVAR_INT ("unread-command-char", &unread_command_char,
+ DEFVAR_INT ("unread-command-char", unread_command_char,
doc: /* If not -1, an object to be read as next command input event. */);
- DEFVAR_LISP ("unread-post-input-method-events", &Vunread_post_input_method_events,
+ DEFVAR_LISP ("unread-post-input-method-events", Vunread_post_input_method_events,
doc: /* List of events to be processed as input by input methods.
These events are processed before `unread-command-events'
and actual keyboard input, but are not given to `input-method-function'. */);
Vunread_post_input_method_events = Qnil;
- DEFVAR_LISP ("unread-input-method-events", &Vunread_input_method_events,
+ DEFVAR_LISP ("unread-input-method-events", Vunread_input_method_events,
doc: /* List of events to be processed as input by input methods.
These events are processed after `unread-command-events', but
before actual keyboard input.
@@ -11859,7 +11721,7 @@ If there's an active input method, the events are given to
`input-method-function'. */);
Vunread_input_method_events = Qnil;
- DEFVAR_LISP ("meta-prefix-char", &meta_prefix_char,
+ DEFVAR_LISP ("meta-prefix-char", meta_prefix_char,
doc: /* Meta-prefix character code.
Meta-foo as command input turns into this character followed by foo. */);
XSETINT (meta_prefix_char, 033);
@@ -11889,59 +11751,59 @@ See Info node `(elisp)Multiple Terminals'. */);
The last command executed that was not bound to an input event.
This is the command `repeat' will try to repeat. */);
- DEFVAR_LISP ("this-command", &Vthis_command,
+ DEFVAR_LISP ("this-command", Vthis_command,
doc: /* The command now being executed.
The command can set this variable; whatever is put here
will be in `last-command' during the following command. */);
Vthis_command = Qnil;
DEFVAR_LISP ("this-command-keys-shift-translated",
- &Vthis_command_keys_shift_translated,
+ Vthis_command_keys_shift_translated,
doc: /* Non-nil if the key sequence activating this command was shift-translated.
Shift-translation occurs when there is no binding for the key sequence
as entered, but a binding was found by changing an upper-case letter
to lower-case, or a shifted function key to an unshifted one. */);
Vthis_command_keys_shift_translated = Qnil;
- DEFVAR_LISP ("this-original-command", &Vthis_original_command,
+ DEFVAR_LISP ("this-original-command", Vthis_original_command,
doc: /* The command bound to the current key sequence before remapping.
It equals `this-command' if the original command was not remapped through
any of the active keymaps. Otherwise, the value of `this-command' is the
result of looking up the original command in the active keymaps. */);
Vthis_original_command = Qnil;
- DEFVAR_INT ("auto-save-interval", &auto_save_interval,
+ DEFVAR_INT ("auto-save-interval", auto_save_interval,
doc: /* *Number of input events between auto-saves.
Zero means disable autosaving due to number of characters typed. */);
auto_save_interval = 300;
- DEFVAR_LISP ("auto-save-timeout", &Vauto_save_timeout,
+ DEFVAR_LISP ("auto-save-timeout", Vauto_save_timeout,
doc: /* *Number of seconds idle time before auto-save.
Zero or nil means disable auto-saving due to idleness.
After auto-saving due to this many seconds of idle time,
Emacs also does a garbage collection if that seems to be warranted. */);
XSETFASTINT (Vauto_save_timeout, 30);
- DEFVAR_LISP ("echo-keystrokes", &Vecho_keystrokes,
+ DEFVAR_LISP ("echo-keystrokes", Vecho_keystrokes,
doc: /* *Nonzero means echo unfinished commands after this many seconds of pause.
The value may be integer or floating point. */);
Vecho_keystrokes = make_number (1);
- DEFVAR_INT ("polling-period", &polling_period,
+ DEFVAR_INT ("polling-period", polling_period,
doc: /* *Interval between polling for input during Lisp execution.
The reason for polling is to make C-g work to stop a running program.
Polling is needed only when using X windows and SIGIO does not work.
Polling is automatically disabled in all other cases. */);
polling_period = 2;
- DEFVAR_LISP ("double-click-time", &Vdouble_click_time,
+ DEFVAR_LISP ("double-click-time", Vdouble_click_time,
doc: /* *Maximum time between mouse clicks to make a double-click.
Measured in milliseconds. The value nil means disable double-click
recognition; t means double-clicks have no time limit and are detected
by position only. */);
Vdouble_click_time = make_number (500);
- DEFVAR_INT ("double-click-fuzz", &double_click_fuzz,
+ DEFVAR_INT ("double-click-fuzz", double_click_fuzz,
doc: /* *Maximum mouse movement between clicks to make a double-click.
On window-system frames, value is the number of pixels the mouse may have
moved horizontally or vertically between two clicks to make a double-click.
@@ -11952,54 +11814,54 @@ This variable is also the threshold for motion of the mouse
to count as a drag. */);
double_click_fuzz = 3;
- DEFVAR_BOOL ("inhibit-local-menu-bar-menus", &inhibit_local_menu_bar_menus,
+ DEFVAR_BOOL ("inhibit-local-menu-bar-menus", inhibit_local_menu_bar_menus,
doc: /* *Non-nil means inhibit local map menu bar menus. */);
inhibit_local_menu_bar_menus = 0;
- DEFVAR_INT ("num-input-keys", &num_input_keys,
+ DEFVAR_INT ("num-input-keys", num_input_keys,
doc: /* Number of complete key sequences read as input so far.
This includes key sequences read from keyboard macros.
The number is effectively the number of interactive command invocations. */);
num_input_keys = 0;
- DEFVAR_INT ("num-nonmacro-input-events", &num_nonmacro_input_events,
+ DEFVAR_INT ("num-nonmacro-input-events", num_nonmacro_input_events,
doc: /* Number of input events read from the keyboard so far.
This does not include events generated by keyboard macros. */);
num_nonmacro_input_events = 0;
- DEFVAR_LISP ("last-event-frame", &Vlast_event_frame,
+ DEFVAR_LISP ("last-event-frame", Vlast_event_frame,
doc: /* The frame in which the most recently read event occurred.
If the last event came from a keyboard macro, this is set to `macro'. */);
Vlast_event_frame = Qnil;
/* This variable is set up in sysdep.c. */
- DEFVAR_LISP ("tty-erase-char", &Vtty_erase_char,
+ DEFVAR_LISP ("tty-erase-char", Vtty_erase_char,
doc: /* The ERASE character as set by the user with stty. */);
- DEFVAR_LISP ("help-char", &Vhelp_char,
+ DEFVAR_LISP ("help-char", Vhelp_char,
doc: /* Character to recognize as meaning Help.
When it is read, do `(eval help-form)', and display result if it's a string.
If the value of `help-form' is nil, this char can be read normally. */);
XSETINT (Vhelp_char, Ctl ('H'));
- DEFVAR_LISP ("help-event-list", &Vhelp_event_list,
+ DEFVAR_LISP ("help-event-list", Vhelp_event_list,
doc: /* List of input events to recognize as meaning Help.
These work just like the value of `help-char' (see that). */);
Vhelp_event_list = Qnil;
- DEFVAR_LISP ("help-form", &Vhelp_form,
+ DEFVAR_LISP ("help-form", Vhelp_form,
doc: /* Form to execute when character `help-char' is read.
If the form returns a string, that string is displayed.
If `help-form' is nil, the help char is not recognized. */);
Vhelp_form = Qnil;
- DEFVAR_LISP ("prefix-help-command", &Vprefix_help_command,
+ DEFVAR_LISP ("prefix-help-command", Vprefix_help_command,
doc: /* Command to run when `help-char' character follows a prefix key.
This command is used only when there is no actual binding
for that character after that prefix key. */);
Vprefix_help_command = Qnil;
- DEFVAR_LISP ("top-level", &Vtop_level,
+ DEFVAR_LISP ("top-level", Vtop_level,
doc: /* Form to evaluate when Emacs starts up.
Useful to set before you dump a modified Emacs. */);
Vtop_level = Qnil;
@@ -12020,12 +11882,12 @@ output. See also `translation-table-for-input'.
This variable has a separate binding for each terminal.
See Info node `(elisp)Multiple Terminals'. */);
- DEFVAR_BOOL ("cannot-suspend", &cannot_suspend,
+ DEFVAR_BOOL ("cannot-suspend", cannot_suspend,
doc: /* Non-nil means to always spawn a subshell instead of suspending.
\(Even if the operating system has support for stopping a process.\) */);
cannot_suspend = 0;
- DEFVAR_BOOL ("menu-prompting", &menu_prompting,
+ DEFVAR_BOOL ("menu-prompting", menu_prompting,
doc: /* Non-nil means prompt with menus when appropriate.
This is done when reading from a keymap that has a prompt string,
for elements that have prompt strings.
@@ -12035,12 +11897,12 @@ time and the previous event was a mouse click prefix key.
Otherwise, menu prompting uses the echo area. */);
menu_prompting = 1;
- DEFVAR_LISP ("menu-prompt-more-char", &menu_prompt_more_char,
+ DEFVAR_LISP ("menu-prompt-more-char", menu_prompt_more_char,
doc: /* Character to see next line of menu prompt.
Type this character while in a menu prompt to rotate around the lines of it. */);
XSETINT (menu_prompt_more_char, ' ');
- DEFVAR_INT ("extra-keyboard-modifiers", &extra_keyboard_modifiers,
+ DEFVAR_INT ("extra-keyboard-modifiers", extra_keyboard_modifiers,
doc: /* A mask of additional modifier keys to use with every keyboard character.
Emacs applies the modifiers of the character stored here to each keyboard
character it reads. For example, after evaluating the expression
@@ -12053,7 +11915,7 @@ with no modifiers; thus, setting `extra-keyboard-modifiers' to zero
cancels any modification. */);
extra_keyboard_modifiers = 0;
- DEFVAR_LISP ("deactivate-mark", &Vdeactivate_mark,
+ DEFVAR_LISP ("deactivate-mark", Vdeactivate_mark,
doc: /* If an editing command sets this to t, deactivate the mark afterward.
The command loop sets this to nil before each command,
and tests the value when the command returns.
@@ -12062,18 +11924,18 @@ Buffer modification stores t in this variable. */);
Qdeactivate_mark = intern_c_string ("deactivate-mark");
staticpro (&Qdeactivate_mark);
- DEFVAR_LISP ("command-hook-internal", &Vcommand_hook_internal,
+ DEFVAR_LISP ("command-hook-internal", Vcommand_hook_internal,
doc: /* Temporary storage of `pre-command-hook' or `post-command-hook'. */);
Vcommand_hook_internal = Qnil;
- DEFVAR_LISP ("pre-command-hook", &Vpre_command_hook,
+ DEFVAR_LISP ("pre-command-hook", Vpre_command_hook,
doc: /* Normal hook run before each command is executed.
If an unhandled error happens in running this hook,
the hook value is set to nil, since otherwise the error
might happen repeatedly and make Emacs nonfunctional. */);
Vpre_command_hook = Qnil;
- DEFVAR_LISP ("post-command-hook", &Vpost_command_hook,
+ DEFVAR_LISP ("post-command-hook", Vpost_command_hook,
doc: /* Normal hook run after each command is executed.
If an unhandled error happens in running this hook,
the hook value is set to nil, since otherwise the error
@@ -12088,15 +11950,21 @@ might happen repeatedly and make Emacs nonfunctional. */);
staticpro (&Qecho_area_clear_hook);
Fset (Qecho_area_clear_hook, Qnil);
- DEFVAR_LISP ("lucid-menu-bar-dirty-flag", &Vlucid_menu_bar_dirty_flag,
+ DEFVAR_LISP ("lucid-menu-bar-dirty-flag", Vlucid_menu_bar_dirty_flag,
doc: /* Non-nil means menu bar, specified Lucid style, needs to be recomputed. */);
Vlucid_menu_bar_dirty_flag = Qnil;
- DEFVAR_LISP ("menu-bar-final-items", &Vmenu_bar_final_items,
+ DEFVAR_LISP ("menu-bar-final-items", Vmenu_bar_final_items,
doc: /* List of menu bar items to move to the end of the menu bar.
The elements of the list are event types that may have menu bar bindings. */);
Vmenu_bar_final_items = Qnil;
+ DEFVAR_LISP ("tool-bar-separator-image-expression", Vtool_bar_separator_image_expression,
+ doc: /* Expression evaluating to the image spec for a tool-bar separator.
+This is used internally by graphical displays that do not render
+tool-bar separators natively. Otherwise it is unused (e.g. on GTK). */);
+ Vtool_bar_separator_image_expression = Qnil;
+
DEFVAR_KBOARD ("overriding-terminal-local-map",
Voverriding_terminal_local_map,
doc: /* Per-terminal keymap that overrides all other local keymaps.
@@ -12111,23 +11979,23 @@ set up a different keymap for reading the next command.
terminal device.
See Info node `(elisp)Multiple Terminals'. */);
- DEFVAR_LISP ("overriding-local-map", &Voverriding_local_map,
+ DEFVAR_LISP ("overriding-local-map", Voverriding_local_map,
doc: /* Keymap that overrides all other local keymaps.
If this variable is non-nil, it is used as a keymap--replacing the
buffer's local map, the minor mode keymaps, and char property keymaps. */);
Voverriding_local_map = Qnil;
- DEFVAR_LISP ("overriding-local-map-menu-flag", &Voverriding_local_map_menu_flag,
+ DEFVAR_LISP ("overriding-local-map-menu-flag", Voverriding_local_map_menu_flag,
doc: /* Non-nil means `overriding-local-map' applies to the menu bar.
Otherwise, the menu bar continues to reflect the buffer's local map
and the minor mode maps regardless of `overriding-local-map'. */);
Voverriding_local_map_menu_flag = Qnil;
- DEFVAR_LISP ("special-event-map", &Vspecial_event_map,
+ DEFVAR_LISP ("special-event-map", Vspecial_event_map,
doc: /* Keymap defining bindings for special events to execute at low level. */);
Vspecial_event_map = Fcons (intern_c_string ("keymap"), Qnil);
- DEFVAR_LISP ("track-mouse", &do_mouse_tracking,
+ DEFVAR_LISP ("track-mouse", do_mouse_tracking,
doc: /* *Non-nil means generate motion events for mouse motion. */);
DEFVAR_KBOARD ("system-key-alist", Vsystem_key_alist,
@@ -12187,7 +12055,7 @@ themselves looked up in `input-decode-map'.
This variable is keyboard-local. */);
- DEFVAR_LISP ("function-key-map", &Vfunction_key_map,
+ DEFVAR_LISP ("function-key-map", Vfunction_key_map,
doc: /* The parent keymap of all `local-function-key-map' instances.
Function key definitions that apply to all terminal devices should go
here. If a mapping is defined in both the current
@@ -12195,39 +12063,39 @@ here. If a mapping is defined in both the current
definition will take precendence. */);
Vfunction_key_map = Fmake_sparse_keymap (Qnil);
- DEFVAR_LISP ("key-translation-map", &Vkey_translation_map,
+ DEFVAR_LISP ("key-translation-map", Vkey_translation_map,
doc: /* Keymap of key translations that can override keymaps.
This keymap works like `function-key-map', but comes after that,
and its non-prefix bindings override ordinary bindings.
Another difference is that it is global rather than keyboard-local. */);
Vkey_translation_map = Fmake_sparse_keymap (Qnil);
- DEFVAR_LISP ("deferred-action-list", &Vdeferred_action_list,
+ DEFVAR_LISP ("deferred-action-list", Vdeferred_action_list,
doc: /* List of deferred actions to be performed at a later time.
The precise format isn't relevant here; we just check whether it is nil. */);
Vdeferred_action_list = Qnil;
- DEFVAR_LISP ("deferred-action-function", &Vdeferred_action_function,
+ DEFVAR_LISP ("deferred-action-function", Vdeferred_action_function,
doc: /* Function to call to handle deferred actions, after each command.
This function is called with no arguments after each command
whenever `deferred-action-list' is non-nil. */);
Vdeferred_action_function = Qnil;
- DEFVAR_LISP ("suggest-key-bindings", &Vsuggest_key_bindings,
+ DEFVAR_LISP ("suggest-key-bindings", Vsuggest_key_bindings,
doc: /* *Non-nil means show the equivalent key-binding when M-x command has one.
The value can be a length of time to show the message for.
If the value is non-nil and not a number, we wait 2 seconds. */);
Vsuggest_key_bindings = Qt;
- DEFVAR_LISP ("timer-list", &Vtimer_list,
+ DEFVAR_LISP ("timer-list", Vtimer_list,
doc: /* List of active absolute time timers in order of increasing time. */);
Vtimer_list = Qnil;
- DEFVAR_LISP ("timer-idle-list", &Vtimer_idle_list,
+ DEFVAR_LISP ("timer-idle-list", Vtimer_idle_list,
doc: /* List of active idle-time timers in order of increasing time. */);
Vtimer_idle_list = Qnil;
- DEFVAR_LISP ("input-method-function", &Vinput_method_function,
+ DEFVAR_LISP ("input-method-function", Vinput_method_function,
doc: /* If non-nil, the function that implements the current input method.
It's called with one argument, a printing character that was just read.
\(That means a character with code 040...0176.)
@@ -12249,18 +12117,18 @@ for guidance on what to do. */);
Vinput_method_function = Qnil;
DEFVAR_LISP ("input-method-previous-message",
- &Vinput_method_previous_message,
+ Vinput_method_previous_message,
doc: /* When `input-method-function' is called, hold the previous echo area message.
This variable exists because `read-event' clears the echo area
before running the input method. It is nil if there was no message. */);
Vinput_method_previous_message = Qnil;
- DEFVAR_LISP ("show-help-function", &Vshow_help_function,
+ DEFVAR_LISP ("show-help-function", Vshow_help_function,
doc: /* If non-nil, the function that implements the display of help.
It's called with one argument, the help string to display. */);
Vshow_help_function = Qnil;
- DEFVAR_LISP ("disable-point-adjustment", &Vdisable_point_adjustment,
+ DEFVAR_LISP ("disable-point-adjustment", Vdisable_point_adjustment,
doc: /* If non-nil, suppress point adjustment after executing a command.
After a command is executed, if point is moved into a region that has
@@ -12273,7 +12141,7 @@ just after executing the command. */);
Vdisable_point_adjustment = Qnil;
DEFVAR_LISP ("global-disable-point-adjustment",
- &Vglobal_disable_point_adjustment,
+ Vglobal_disable_point_adjustment,
doc: /* *If non-nil, always suppress point adjustment.
The default value is nil, in which case, point adjustment are
@@ -12281,18 +12149,18 @@ suppressed only after special commands that set
`disable-point-adjustment' (which see) to non-nil. */);
Vglobal_disable_point_adjustment = Qnil;
- DEFVAR_LISP ("minibuffer-message-timeout", &Vminibuffer_message_timeout,
+ DEFVAR_LISP ("minibuffer-message-timeout", Vminibuffer_message_timeout,
doc: /* *How long to display an echo-area message when the minibuffer is active.
If the value is not a number, such messages don't time out. */);
Vminibuffer_message_timeout = make_number (2);
- DEFVAR_LISP ("throw-on-input", &Vthrow_on_input,
+ DEFVAR_LISP ("throw-on-input", Vthrow_on_input,
doc: /* If non-nil, any keyboard input throws to this symbol.
The value of that variable is passed to `quit-flag' and later causes a
peculiar kind of quitting. */);
Vthrow_on_input = Qnil;
- DEFVAR_LISP ("command-error-function", &Vcommand_error_function,
+ DEFVAR_LISP ("command-error-function", Vcommand_error_function,
doc: /* If non-nil, function to output error messages.
The arguments are the error data, a list of the form
(SIGNALED-CONDITIONS . SIGNAL-DATA)
@@ -12302,7 +12170,7 @@ and the Lisp function within which the error was signaled. */);
Vcommand_error_function = Qnil;
DEFVAR_LISP ("enable-disabled-menus-and-buttons",
- &Venable_disabled_menus_and_buttons,
+ Venable_disabled_menus_and_buttons,
doc: /* If non-nil, don't ignore events produced by disabled menu items and tool-bar.
Help functions bind this to allow help on disabled menu items
@@ -12310,8 +12178,8 @@ and tool-bar buttons. */);
Venable_disabled_menus_and_buttons = Qnil;
DEFVAR_LISP ("select-active-regions",
- &Vselect_active_regions,
- doc: /* If non-nil, an active region automatically becomes the window selection.
+ Vselect_active_regions,
+ doc: /* If non-nil, an active region automatically sets the primary selection.
If the value is `only', only temporarily active regions (usually made
by mouse-dragging or shift-selection) set the window selection.
@@ -12319,7 +12187,7 @@ This takes effect only when Transient Mark mode is enabled. */);
Vselect_active_regions = Qt;
DEFVAR_LISP ("saved-region-selection",
- &Vsaved_region_selection,
+ Vsaved_region_selection,
doc: /* Contents of active region prior to buffer modification.
If `select-active-regions' is non-nil, Emacs sets this to the
text in the region before modifying the buffer. The next
@@ -12439,4 +12307,3 @@ mark_kboards (void)
}
}
}
-
diff --git a/src/keyboard.h b/src/keyboard.h
index 7f36691a5a..166b3c0e9d 100644
--- a/src/keyboard.h
+++ b/src/keyboard.h
@@ -1,6 +1,5 @@
/* Declarations useful when processing input.
- Copyright (C) 1985, 1986, 1987, 1993, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985-1987, 1993, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -191,9 +190,6 @@ extern int single_kboard;
/* Total number of times read_char has returned. */
extern int num_input_events;
-/* Total number of times read_char has returned, outside of macros. */
-extern EMACS_INT num_nonmacro_input_events;
-
/* Nonzero means polling for input is temporarily suppressed. */
extern int poll_suppress_count;
@@ -211,9 +207,6 @@ extern int this_command_key_count;
generated by the next character. */
extern Lisp_Object internal_last_event_frame;
-/* Menu items. */
-
-extern Lisp_Object Vlucid_menu_bar_dirty_flag;
extern Lisp_Object Qrecompute_lucid_menubar, Qactivate_menubar_hook;
/* This holds a Lisp vector that holds the properties of a single
@@ -404,8 +397,6 @@ typedef struct _widget_value
#define POSN_INBUFFER_P(posn) (NILP (POSN_STRING (posn)))
#define POSN_BUFFER_POSN(posn) (Fnth (make_number (5), (posn)))
-extern Lisp_Object do_mouse_tracking;
-
/* Some of the event heads. */
extern Lisp_Object Qswitch_frame;
@@ -438,8 +429,6 @@ extern EMACS_TIME *input_available_clear_time;
extern int ignore_mouse_drag_p;
-extern Lisp_Object Vdouble_click_time;
-
/* The primary selection. */
extern Lisp_Object QPRIMARY;
@@ -453,28 +442,13 @@ extern Lisp_Object read_char (int, int, Lisp_Object *, Lisp_Object,
extern int parse_solitary_modifier (Lisp_Object symbol);
-/* Parent keymap of terminal-local function-key-map instances. */
-extern Lisp_Object Vfunction_key_map;
-
-/* Keymap of key translations that can override keymaps. */
-extern Lisp_Object Vkey_translation_map;
-
/* This is like Vthis_command, except that commands never set it. */
extern Lisp_Object real_this_command;
-/* If the lookup of the command returns a binding, the original
- command is stored in this-original-command. It is nil otherwise. */
-extern Lisp_Object Vthis_original_command;
-
/* Non-nil disable property on a command means
do not execute it; call disabled-command-function's value instead. */
extern Lisp_Object QCbutton, QCtoggle, QCradio, QClabel;
-/* A mask of extra modifier bits to put into every keyboard char. */
-extern EMACS_INT extra_keyboard_modifiers;
-
-/* If non-nil, this implements the current input method. */
-extern Lisp_Object Vinput_method_function;
extern Lisp_Object Qinput_method_function;
/* An event header symbol HEAD may have a property named
@@ -492,6 +466,7 @@ extern int quit_char;
extern int timers_run;
+extern int menu_separator_name_p (const char *);
extern int parse_menu_item (Lisp_Object, int);
extern void echo_now (void);
diff --git a/src/keymap.c b/src/keymap.c
index cc25d350d4..1e6b76a464 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -1,7 +1,5 @@
/* Manipulation of keymaps
- Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995,
- 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985-1988, 1993-1995, 1998-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -51,49 +49,16 @@ Lisp_Object meta_map; /* The keymap used for globally bound
Lisp_Object control_x_map; /* The keymap used for globally bound
C-x-prefixed default commands */
-/* was MinibufLocalMap */
-Lisp_Object Vminibuffer_local_map;
/* The keymap used by the minibuf for local
bindings when spaces are allowed in the
minibuf */
-/* was MinibufLocalNSMap */
-Lisp_Object Vminibuffer_local_ns_map;
/* The keymap used by the minibuf for local
bindings when spaces are not encouraged
in the minibuf */
/* keymap used for minibuffers when doing completion */
-/* was MinibufLocalCompletionMap */
-Lisp_Object Vminibuffer_local_completion_map;
-
-/* keymap used for minibuffers when doing completion in filenames */
-Lisp_Object Vminibuffer_local_filename_completion_map;
-
-/* keymap used for minibuffers when doing completion in filenames
- with require-match*/
-Lisp_Object Vminibuffer_local_filename_must_match_map;
-
/* keymap used for minibuffers when doing completion and require a match */
-/* was MinibufLocalMustMatchMap */
-Lisp_Object Vminibuffer_local_must_match_map;
-
-/* Alist of minor mode variables and keymaps. */
-Lisp_Object Vminor_mode_map_alist;
-
-/* Alist of major-mode-specific overrides for
- minor mode variables and keymaps. */
-Lisp_Object Vminor_mode_overriding_map_alist;
-
-/* List of emulation mode keymap alists. */
-Lisp_Object Vemulation_mode_map_alists;
-
-/* A list of all commands given new bindings since a certain time
- when nil was stored here.
- This is used to speed up recomputation of menu key equivalents
- when Emacs starts up. t means don't record anything here. */
-Lisp_Object Vdefine_key_rebound_commands;
-
Lisp_Object Qkeymapp, Qkeymap, Qnon_ascii, Qmenu_item, Qremap;
Lisp_Object QCadvertised_binding;
@@ -122,6 +87,7 @@ static void describe_vector (Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object, Lisp_Object, int *,
int, int, int);
static void silly_event_symbol_error (Lisp_Object);
+static Lisp_Object get_keyelt (Lisp_Object, int);
/* Keymap object support - constructors and predicates. */
@@ -758,7 +724,7 @@ usage: (map-keymap FUNCTION KEYMAP) */)
This can GC because menu_item_eval_property calls Feval. */
-Lisp_Object
+static Lisp_Object
get_keyelt (Lisp_Object object, int autoload)
{
while (1)
@@ -2709,8 +2675,6 @@ where_is_internal (Lisp_Object definition, Lisp_Object keymaps,
return data.sequences;
}
-static Lisp_Object Vwhere_is_preferred_modifier;
-
/* This function can GC if Flookup_key autoloads any keymaps. */
DEFUN ("where-is-internal", Fwhere_is_internal, Swhere_is_internal, 1, 5, 0,
@@ -3856,48 +3820,48 @@ syms_of_keymap (void)
Qnil)))));
staticpro (&exclude_keys);
- DEFVAR_LISP ("define-key-rebound-commands", &Vdefine_key_rebound_commands,
+ DEFVAR_LISP ("define-key-rebound-commands", Vdefine_key_rebound_commands,
doc: /* List of commands given new key bindings recently.
This is used for internal purposes during Emacs startup;
don't alter it yourself. */);
Vdefine_key_rebound_commands = Qt;
- DEFVAR_LISP ("minibuffer-local-map", &Vminibuffer_local_map,
+ DEFVAR_LISP ("minibuffer-local-map", Vminibuffer_local_map,
doc: /* Default keymap to use when reading from the minibuffer. */);
Vminibuffer_local_map = Fmake_sparse_keymap (Qnil);
- DEFVAR_LISP ("minibuffer-local-ns-map", &Vminibuffer_local_ns_map,
+ DEFVAR_LISP ("minibuffer-local-ns-map", Vminibuffer_local_ns_map,
doc: /* Local keymap for the minibuffer when spaces are not allowed. */);
Vminibuffer_local_ns_map = Fmake_sparse_keymap (Qnil);
Fset_keymap_parent (Vminibuffer_local_ns_map, Vminibuffer_local_map);
- DEFVAR_LISP ("minibuffer-local-completion-map", &Vminibuffer_local_completion_map,
+ DEFVAR_LISP ("minibuffer-local-completion-map", Vminibuffer_local_completion_map,
doc: /* Local keymap for minibuffer input with completion. */);
Vminibuffer_local_completion_map = Fmake_sparse_keymap (Qnil);
Fset_keymap_parent (Vminibuffer_local_completion_map, Vminibuffer_local_map);
DEFVAR_LISP ("minibuffer-local-filename-completion-map",
- &Vminibuffer_local_filename_completion_map,
+ Vminibuffer_local_filename_completion_map,
doc: /* Local keymap for minibuffer input with completion for filenames. */);
Vminibuffer_local_filename_completion_map = Fmake_sparse_keymap (Qnil);
Fset_keymap_parent (Vminibuffer_local_filename_completion_map,
Vminibuffer_local_completion_map);
- DEFVAR_LISP ("minibuffer-local-must-match-map", &Vminibuffer_local_must_match_map,
+ DEFVAR_LISP ("minibuffer-local-must-match-map", Vminibuffer_local_must_match_map,
doc: /* Local keymap for minibuffer input with completion, for exact match. */);
Vminibuffer_local_must_match_map = Fmake_sparse_keymap (Qnil);
Fset_keymap_parent (Vminibuffer_local_must_match_map,
Vminibuffer_local_completion_map);
DEFVAR_LISP ("minibuffer-local-filename-must-match-map",
- &Vminibuffer_local_filename_must_match_map,
+ Vminibuffer_local_filename_must_match_map,
doc: /* Local keymap for minibuffer input with completion for filenames with exact match. */);
Vminibuffer_local_filename_must_match_map = Fmake_sparse_keymap (Qnil);
Fset_keymap_parent (Vminibuffer_local_filename_must_match_map,
Vminibuffer_local_must_match_map);
- DEFVAR_LISP ("minor-mode-map-alist", &Vminor_mode_map_alist,
+ DEFVAR_LISP ("minor-mode-map-alist", Vminor_mode_map_alist,
doc: /* Alist of keymaps to use for minor modes.
Each element looks like (VARIABLE . KEYMAP); KEYMAP is used to read
key sequences and look up bindings if VARIABLE's value is non-nil.
@@ -3905,14 +3869,14 @@ If two active keymaps bind the same key, the keymap appearing earlier
in the list takes precedence. */);
Vminor_mode_map_alist = Qnil;
- DEFVAR_LISP ("minor-mode-overriding-map-alist", &Vminor_mode_overriding_map_alist,
+ DEFVAR_LISP ("minor-mode-overriding-map-alist", Vminor_mode_overriding_map_alist,
doc: /* Alist of keymaps to use for minor modes, in current major mode.
This variable is an alist just like `minor-mode-map-alist', and it is
used the same way (and before `minor-mode-map-alist'); however,
it is provided for major modes to bind locally. */);
Vminor_mode_overriding_map_alist = Qnil;
- DEFVAR_LISP ("emulation-mode-map-alists", &Vemulation_mode_map_alists,
+ DEFVAR_LISP ("emulation-mode-map-alists", Vemulation_mode_map_alists,
doc: /* List of keymap alists to use for emulations modes.
It is intended for modes or packages using multiple minor-mode keymaps.
Each element is a keymap alist just like `minor-mode-map-alist', or a
@@ -3921,7 +3885,7 @@ the same way. The "active" keymaps in each alist are used before
`minor-mode-map-alist' and `minor-mode-overriding-map-alist'. */);
Vemulation_mode_map_alists = Qnil;
- DEFVAR_LISP ("where-is-preferred-modifier", &Vwhere_is_preferred_modifier,
+ DEFVAR_LISP ("where-is-preferred-modifier", Vwhere_is_preferred_modifier,
doc: /* Preferred modifier to use for `where-is'.
When a single binding is requested, `where-is' will return one that
uses this modifier if possible. If nil, or if no such binding exists,
@@ -4012,5 +3976,3 @@ keys_of_keymap (void)
initial_define_key (global_map, Ctl ('X'), "Control-X-prefix");
}
-/* arch-tag: 6dd15c26-7cf1-41c4-b904-f42f7ddda463
- (do not change this comment) */
diff --git a/src/keymap.h b/src/keymap.h
index c68d763204..38c6e98678 100644
--- a/src/keymap.h
+++ b/src/keymap.h
@@ -1,6 +1,5 @@
/* Functions to manipulate keymaps.
- Copyright (C) 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -24,9 +23,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
extern Lisp_Object Qkeymap, Qmenu_bar;
extern Lisp_Object Qremap;
extern Lisp_Object Qmenu_item;
-extern Lisp_Object meta_prefix_char;
-extern Lisp_Object Voverriding_local_map;
-extern Lisp_Object Voverriding_local_map_menu_flag;
extern Lisp_Object current_global_map;
EXFUN (Fmake_sparse_keymap, 1);
EXFUN (Fkeymap_prompt, 1);
@@ -39,7 +35,6 @@ EXFUN (Fsingle_key_description, 2);
EXFUN (Fwhere_is_internal, 5);
EXFUN (Fcurrent_active_maps, 2);
extern Lisp_Object access_keymap (Lisp_Object, Lisp_Object, int, int, int);
-extern Lisp_Object get_keyelt (Lisp_Object, int);
extern Lisp_Object get_keymap (Lisp_Object, int, int);
EXFUN (Fset_keymap_parent, 2);
extern void describe_map_tree (Lisp_Object, int, Lisp_Object, Lisp_Object,
@@ -59,5 +54,3 @@ extern void map_keymap_canonical (Lisp_Object map,
#endif
-/* arch-tag: 7400d5a1-ef0b-43d0-b366-f4d678bf3ba2
- (do not change this comment) */
diff --git a/src/lastfile.c b/src/lastfile.c
index f2d46b15dd..d348e4ebb0 100644
--- a/src/lastfile.c
+++ b/src/lastfile.c
@@ -1,6 +1,5 @@
/* Mark end of data space to dump as pure, for GNU Emacs.
- Copyright (C) 1985, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -49,5 +48,3 @@ char my_endbss[1];
static char _my_endbss[1];
char * my_endbss_static = _my_endbss;
-/* arch-tag: 67e81ab4-e14f-44b2-8875-c0c12252223e
- (do not change this comment) */
diff --git a/src/lisp.h b/src/lisp.h
index db78996be5..67efda398a 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -1,6 +1,5 @@
/* Fundamental definitions for GNU Emacs Lisp interpreter.
- Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985-1987, 1993-1995, 1997-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -122,16 +121,18 @@ extern void die (const char *, const char *, int) NO_RETURN;
TYPEBITS-aligned. */
#ifndef NO_DECL_ALIGN
# ifndef DECL_ALIGN
-/* What compiler directive should we use for non-gcc compilers? -stef */
-# if defined (__GNUC__)
+# if HAVE_ATTRIBUTE_ALIGNED
# define DECL_ALIGN(type, var) \
type __attribute__ ((__aligned__ (1 << GCTYPEBITS))) var
+# else
+ /* What directives do other compilers use? */
# endif
# endif
#endif
/* Let's USE_LSB_TAG on systems where we know malloc returns mult-of-8. */
-#if defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ || defined DARWIN_OS
+#if (defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ \
+ || defined DARWIN_OS || defined __sun)
/* We also need to be able to specify mult-of-8 alignment on static vars. */
# if defined DECL_ALIGN
# define USE_LSB_TAG
@@ -327,13 +328,14 @@ typedef EMACS_INT Lisp_Object;
#define LISP_MAKE_RVALUE(o) (0+(o))
#endif /* USE_LISP_UNION_TYPE */
-/* In the size word of a vector, this bit means the vector has been marked. */
+/* In the size word of a vector, this bit means the vector has been marked.
+ (Shift -1 left, not 1, to avoid provoking overflow diagnostics.) */
-#define ARRAY_MARK_FLAG ((EMACS_UINT) 1 << (BITS_PER_EMACS_INT - 1))
+#define ARRAY_MARK_FLAG ((EMACS_INT) -1 << (BITS_PER_EMACS_INT - 1))
/* In the size word of a struct Lisp_Vector, this bit means it's really
some other vector-like object. */
-#define PSEUDOVECTOR_FLAG ((ARRAY_MARK_FLAG >> 1))
+#define PSEUDOVECTOR_FLAG ((EMACS_INT) 1 << (BITS_PER_EMACS_INT - 2))
/* In a pseudovector, the size field actually contains a word with one
PSEUDOVECTOR_FLAG bit set, and exactly one of the following bits to
@@ -437,10 +439,17 @@ enum pvec_type
((((EMACS_INT) (N)) & VALMASK) | ((EMACS_INT) Lisp_Int) << VALBITS)
#endif
-#define XSET(var, type, ptr) \
- ((var) = ((EMACS_INT)(type) << VALBITS) + ((EMACS_INT) (ptr) & VALMASK))
+#define XSET(var, type, ptr) \
+ ((var) = ((EMACS_INT) ((EMACS_UINT) (type) << VALBITS) \
+ + ((EMACS_INT) (ptr) & VALMASK)))
+#ifdef DATA_SEG_BITS
+/* DATA_SEG_BITS forces extra bits to be or'd in with any pointers
+ which were stored in a Lisp_Object */
+#define XPNTR(a) ((EMACS_UINT) (((a) & VALMASK) | DATA_SEG_BITS))
+#else
#define XPNTR(a) ((EMACS_UINT) ((a) & VALMASK))
+#endif
#endif /* not USE_LSB_TAG */
@@ -478,6 +487,14 @@ enum pvec_type
# define XSET(var, vartype, ptr) \
(((var).s.val = ((EMACS_INT) (ptr))), ((var).s.type = ((char) (vartype))))
+#ifdef DATA_SEG_BITS
+/* DATA_SEG_BITS forces extra bits to be or'd in with any pointers
+ which were stored in a Lisp_Object */
+#define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
+#else
+#define XPNTR(a) ((EMACS_INT) XUINT (a))
+#endif
+
#endif /* !USE_LSB_TAG */
#if __GNUC__ >= 2 && defined (__OPTIMIZE__)
@@ -499,23 +516,6 @@ extern Lisp_Object make_number (EMACS_INT);
#define EQ(x, y) (XHASH (x) == XHASH (y))
-#ifndef XPNTR
-#ifdef DATA_SEG_BITS
-/* This case is used for the rt-pc.
- In the diffs I was given, it checked for ptr = 0
- and did not adjust it in that case.
- But I don't think that zero should ever be found
- in a Lisp object whose data type says it points to something. */
-#define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
-#else
-/* Some versions of gcc seem to consider the bitfield width when
- issuing the "cast to pointer from integer of different size"
- warning, so the cast is here to widen the value back to its natural
- size. */
-#define XPNTR(a) ((EMACS_INT) XUINT (a))
-#endif
-#endif /* no XPNTR */
-
/* Largest and smallest representable fixnum values. These are the C
values. */
@@ -634,6 +634,9 @@ extern Lisp_Object make_number (EMACS_INT);
#define SCHARS(string) (XSTRING (string)->size + 0)
#define SBYTES(string) (STRING_BYTES (XSTRING (string)) + 0)
+/* Avoid "differ in sign" warnings. */
+#define SSDATA(x) ((char *) SDATA (x))
+
#define STRING_SET_CHARS(string, newsize) \
(XSTRING (string)->size = (newsize))
@@ -1865,27 +1868,47 @@ extern void defvar_int (struct Lisp_Intfwd *, const char *, EMACS_INT *);
extern void defvar_kboard (struct Lisp_Kboard_Objfwd *, const char *, int);
/* Macros we use to define forwarded Lisp variables.
- These are used in the syms_of_FILENAME functions. */
+ These are used in the syms_of_FILENAME functions.
+
+ An ordinary (not in buffer_defaults, per-buffer, or per-keyboard)
+ lisp variable is actually a field in `struct emacs_globals'. The
+ field's name begins with "f_", which is a convention enforced by
+ these macros. Each such global has a corresponding #define in
+ globals.h; the plain name should be used in the code.
+
+ E.g., the global "cons_cells_consed" is declared as "int
+ f_cons_cells_consed" in globals.h, but there is a define:
+
+ #define cons_cells_consed globals.f_cons_cells_consed
+
+ All C code uses the `cons_cells_consed' name. This is all done
+ this way to support indirection for multi-threaded Emacs. */
#define DEFVAR_LISP(lname, vname, doc) \
do { \
static struct Lisp_Objfwd o_fwd; \
- defvar_lisp (&o_fwd, lname, vname); \
+ defvar_lisp (&o_fwd, lname, &globals.f_ ## vname); \
} while (0)
#define DEFVAR_LISP_NOPRO(lname, vname, doc) \
do { \
static struct Lisp_Objfwd o_fwd; \
- defvar_lisp_nopro (&o_fwd, lname, vname); \
+ defvar_lisp_nopro (&o_fwd, lname, &globals.f_ ## vname); \
} while (0)
#define DEFVAR_BOOL(lname, vname, doc) \
do { \
static struct Lisp_Boolfwd b_fwd; \
- defvar_bool (&b_fwd, lname, vname); \
+ defvar_bool (&b_fwd, lname, &globals.f_ ## vname); \
} while (0)
#define DEFVAR_INT(lname, vname, doc) \
do { \
static struct Lisp_Intfwd i_fwd; \
- defvar_int (&i_fwd, lname, vname); \
+ defvar_int (&i_fwd, lname, &globals.f_ ## vname); \
+ } while (0)
+
+#define DEFVAR_BUFFER_DEFAULTS(lname, vname, doc) \
+ do { \
+ static struct Lisp_Objfwd o_fwd; \
+ defvar_lisp_nopro (&o_fwd, lname, &buffer_defaults.vname); \
} while (0)
#define DEFVAR_KBOARD(lname, vname, doc) \
@@ -1932,8 +1955,6 @@ extern struct specbinding *specpdl;
extern struct specbinding *specpdl_ptr;
extern EMACS_INT specpdl_size;
-extern EMACS_INT max_specpdl_size;
-
#define SPECPDL_INDEX() ((int) (specpdl_ptr - specpdl))
/* Everything needed to describe an active condition case. */
@@ -2097,10 +2118,6 @@ extern Lisp_Object Vascii_canon_table, Vascii_eqv_table;
extern int consing_since_gc;
-/* Thresholds for doing another gc. */
-
-extern EMACS_INT gc_cons_threshold;
-
extern EMACS_INT gc_relative_threshold;
extern EMACS_INT memory_full_cons_threshold;
@@ -2343,29 +2360,7 @@ EXFUN (Fbyteorder, 0);
/* Defined in frame.c */
extern Lisp_Object Qframep;
-EXFUN (Feq, 2);
-EXFUN (Fnull, 1);
-EXFUN (Flistp, 1);
-EXFUN (Fconsp, 1);
-EXFUN (Fatom, 1);
-EXFUN (Fnlistp, 1);
-EXFUN (Fintegerp, 1);
-EXFUN (Fnatnump, 1);
-EXFUN (Fsymbolp, 1);
-EXFUN (Fvectorp, 1);
-EXFUN (Fstringp, 1);
-EXFUN (Fmultibyte_string_p, 1);
-EXFUN (Farrayp, 1);
-EXFUN (Fsequencep, 1);
-EXFUN (Fbufferp, 1);
-EXFUN (Fmarkerp, 1);
-EXFUN (Fsubrp, 1);
-EXFUN (Fchar_or_string_p, 1);
-EXFUN (Finteger_or_marker_p, 1);
-EXFUN (Ffloatp, 1);
-EXFUN (Finteger_or_floatp, 1);
-EXFUN (Finteger_or_float_or_marker_p, 1);
-
+/* Defined in data.c */
EXFUN (Fcar, 1);
EXFUN (Fcar_safe, 1);
EXFUN (Fcdr, 1);
@@ -2374,15 +2369,11 @@ EXFUN (Fsetcar, 2);
EXFUN (Fsetcdr, 2);
EXFUN (Fboundp, 1);
EXFUN (Ffboundp, 1);
-EXFUN (Fmakunbound, 1);
-EXFUN (Ffmakunbound, 1);
EXFUN (Fsymbol_function, 1);
-EXFUN (Fsymbol_plist, 1);
EXFUN (Fsymbol_name, 1);
extern Lisp_Object indirect_function (Lisp_Object);
EXFUN (Findirect_function, 2);
EXFUN (Ffset, 2);
-EXFUN (Fsetplist, 2);
EXFUN (Fsymbol_value, 1);
extern Lisp_Object find_symbol_value (Lisp_Object);
EXFUN (Fset, 2);
@@ -2391,19 +2382,16 @@ EXFUN (Fset_default, 2);
EXFUN (Fdefault_boundp, 1);
EXFUN (Fmake_local_variable, 1);
EXFUN (Flocal_variable_p, 2);
-EXFUN (Flocal_variable_if_set_p, 2);
EXFUN (Faref, 2);
EXFUN (Faset, 3);
EXFUN (Fstring_to_number, 2);
EXFUN (Fnumber_to_string, 1);
-EXFUN (Feqlsign, 2);
EXFUN (Fgtr, 2);
EXFUN (Flss, 2);
EXFUN (Fgeq, 2);
EXFUN (Fleq, 2);
-EXFUN (Fneq, 2);
EXFUN (Fzerop, 1);
EXFUN (Fplus, MANY);
EXFUN (Fminus, MANY);
@@ -2412,12 +2400,6 @@ EXFUN (Fquo, MANY);
EXFUN (Frem, 2);
EXFUN (Fmax, MANY);
EXFUN (Fmin, MANY);
-EXFUN (Flogand, MANY);
-EXFUN (Flogior, MANY);
-EXFUN (Flogxor, MANY);
-EXFUN (Flognot, 1);
-EXFUN (Flsh, 2);
-EXFUN (Fash, 2);
EXFUN (Fadd1, 1);
EXFUN (Fsub1, 1);
@@ -2444,6 +2426,7 @@ extern void syms_of_cmds (void);
extern void keys_of_cmds (void);
/* Defined in coding.c */
+extern Lisp_Object Qcharset;
EXFUN (Fcoding_system_p, 1);
EXFUN (Fcoding_system_base, 1);
EXFUN (Fcoding_system_eol_type, 1);
@@ -2451,8 +2434,6 @@ EXFUN (Fcheck_coding_system, 1);
EXFUN (Fread_coding_system, 2);
EXFUN (Fread_non_nil_coding_system, 1);
EXFUN (Ffind_operation_coding_system, MANY);
-EXFUN (Fupdate_coding_systems_internal, 0);
-EXFUN (Fencode_coding_string, 4);
EXFUN (Fdecode_coding_string, 4);
extern Lisp_Object detect_coding_system (const unsigned char *, EMACS_INT,
EMACS_INT, int, int, Lisp_Object);
@@ -2461,19 +2442,17 @@ extern void init_coding_once (void);
extern void syms_of_coding (void);
/* Defined in character.c */
-extern void init_character_once (void);
-extern void syms_of_character (void);
EXFUN (Funibyte_char_to_multibyte, 1);
-
-/* Defined in charset.c */
-EXFUN (Fchar_bytes, 1);
EXFUN (Fchar_width, 1);
EXFUN (Fstring, MANY);
extern EMACS_INT chars_in_text (const unsigned char *, EMACS_INT);
extern EMACS_INT multibyte_chars_in_text (const unsigned char *, EMACS_INT);
extern int multibyte_char_to_unibyte (int, Lisp_Object);
extern int multibyte_char_to_unibyte_safe (int);
-extern Lisp_Object Qcharset;
+extern void init_character_once (void);
+extern void syms_of_character (void);
+
+/* Defined in charset.c */
extern void init_charset (void);
extern void init_charset_once (void);
extern void syms_of_charset (void);
@@ -2488,55 +2467,33 @@ EXFUN (Fforward_word, 1);
EXFUN (Fskip_chars_forward, 2);
EXFUN (Fskip_chars_backward, 2);
EXFUN (Fsyntax_table_p, 1);
-EXFUN (Fsyntax_table, 0);
-EXFUN (Fset_syntax_table, 1);
extern void init_syntax_once (void);
extern void syms_of_syntax (void);
/* Defined in fns.c */
extern Lisp_Object QCrehash_size, QCrehash_threshold;
-extern int use_dialog_box;
-extern int use_file_dialog;
extern int next_almost_prime (int);
extern Lisp_Object larger_vector (Lisp_Object, int, Lisp_Object);
extern void sweep_weak_hash_tables (void);
extern Lisp_Object Qcursor_in_echo_area;
extern Lisp_Object Qstring_lessp;
-extern Lisp_Object Vfeatures;
extern Lisp_Object QCsize, QCtest, QCweakness, Qequal, Qeq, Qeql;
unsigned sxhash (Lisp_Object, int);
Lisp_Object make_hash_table (Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object);
-Lisp_Object copy_hash_table (struct Lisp_Hash_Table *);
int hash_lookup (struct Lisp_Hash_Table *, Lisp_Object, unsigned *);
int hash_put (struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object,
unsigned);
-void hash_clear (struct Lisp_Hash_Table *);
void init_weak_hash_tables (void);
extern void init_fns (void);
-EXFUN (Fsxhash, 1);
EXFUN (Fmake_hash_table, MANY);
-EXFUN (Fmakehash, 1);
-EXFUN (Fcopy_hash_table, 1);
-EXFUN (Fhash_table_count, 1);
-EXFUN (Fhash_table_rehash_size, 1);
-EXFUN (Fhash_table_rehash_threshold, 1);
-EXFUN (Fhash_table_size, 1);
-EXFUN (Fhash_table_test, 1);
-EXFUN (Fhash_table_weak, 1);
-EXFUN (Fhash_table_p, 1);
-EXFUN (Fclrhash, 1);
EXFUN (Fgethash, 3);
EXFUN (Fputhash, 3);
EXFUN (Fremhash, 2);
-EXFUN (Fmaphash, 2);
-EXFUN (Fdefine_hash_table_test, 3);
EXFUN (Fidentity, 1);
-EXFUN (Frandom, 1);
EXFUN (Flength, 1);
-EXFUN (Fsafe_length, 1);
EXFUN (Fappend, MANY);
EXFUN (Fconcat, MANY);
EXFUN (Fvconcat, MANY);
@@ -2546,7 +2503,6 @@ EXFUN (Fstring_make_unibyte, 1);
EXFUN (Fstring_as_multibyte, 1);
EXFUN (Fstring_as_unibyte, 1);
EXFUN (Fstring_to_multibyte, 1);
-EXFUN (Fstring_to_unibyte, 1);
EXFUN (Fsubstring, 3);
extern Lisp_Object substring_both (Lisp_Object, EMACS_INT, EMACS_INT,
EMACS_INT, EMACS_INT);
@@ -2566,12 +2522,10 @@ EXFUN (Fnreverse, 1);
EXFUN (Fget, 2);
EXFUN (Fput, 3);
EXFUN (Fequal, 2);
-EXFUN (Ffillarray, 2);
EXFUN (Fnconc, MANY);
EXFUN (Fmapcar, 2);
EXFUN (Fmapconcat, 3);
extern Lisp_Object do_yes_or_no_p (Lisp_Object);
-EXFUN (Frequire, 3);
EXFUN (Fprovide, 2);
extern Lisp_Object concat2 (Lisp_Object, Lisp_Object);
extern Lisp_Object concat3 (Lisp_Object, Lisp_Object, Lisp_Object);
@@ -2581,7 +2535,6 @@ extern Lisp_Object assoc_no_quit (Lisp_Object, Lisp_Object);
extern void clear_string_char_byte_cache (void);
extern EMACS_INT string_char_to_byte (Lisp_Object, EMACS_INT);
extern EMACS_INT string_byte_to_char (Lisp_Object, EMACS_INT);
-extern Lisp_Object string_make_multibyte (Lisp_Object);
extern Lisp_Object string_to_multibyte (Lisp_Object);
extern Lisp_Object string_make_unibyte (Lisp_Object);
EXFUN (Fcopy_alist, 1);
@@ -2612,6 +2565,7 @@ extern Lisp_Object QCascent, QCmargin, QCrelief, Qcount, Qextension_data;
extern Lisp_Object QCconversion, QCcolor_symbols, QCheuristic_mask;
extern Lisp_Object QCindex, QCmatrix, QCcolor_adjustment, QCmask;
EXFUN (Finit_image_library, 2);
+extern int x_bitmap_mask (struct frame *, int);
extern void syms_of_image (void);
extern void init_image (void);
@@ -2669,11 +2623,8 @@ extern void syms_of_insdel (void);
/* Defined in dispnew.c */
extern Lisp_Object selected_frame;
-extern Lisp_Object Vwindow_system_version;
-extern EMACS_INT baud_rate;
EXFUN (Fding, 1);
EXFUN (Fredraw_frame, 1);
-EXFUN (Fredraw_display, 0);
EXFUN (Fsleep_for, 2);
EXFUN (Fredisplay, 1);
extern Lisp_Object sit_for (Lisp_Object, int, int);
@@ -2686,24 +2637,21 @@ extern Lisp_Object Qinhibit_redisplay, Qdisplay;
extern Lisp_Object Qinhibit_eval_during_redisplay;
extern Lisp_Object Qmessage_truncate_lines;
extern Lisp_Object Qmenu_bar_update_hook;
-extern Lisp_Object Qwindow_scroll_functions, Vwindow_scroll_functions;
+extern Lisp_Object Qwindow_scroll_functions;
extern Lisp_Object Qoverriding_local_map, Qoverriding_terminal_local_map;
extern Lisp_Object Qimage, Qtext, Qboth, Qboth_horiz, Qtext_image_horiz;
extern Lisp_Object Qspace, Qcenter, QCalign_to;
extern Lisp_Object Qbar, Qhbar, Qbox, Qhollow;
extern Lisp_Object Qleft_margin, Qright_margin;
extern Lisp_Object Qglyphless_char;
-extern Lisp_Object Vmessage_log_max;
extern Lisp_Object QCdata, QCfile;
extern Lisp_Object QCmap;
extern Lisp_Object Qrisky_local_variable;
-extern Lisp_Object Vinhibit_redisplay;
extern struct frame *last_glyphless_glyph_frame;
extern unsigned last_glyphless_glyph_face_id;
extern int last_glyphless_glyph_merged_face_id;
extern int message_enable_multibyte;
extern int noninteractive_need_newline;
-extern EMACS_INT scroll_margin;
extern Lisp_Object echo_area_buffer[2];
extern void add_to_log (const char *, Lisp_Object, Lisp_Object);
extern void check_message_stack (void);
@@ -2760,15 +2708,14 @@ extern int survives_gc_p (Lisp_Object);
extern void mark_object (Lisp_Object);
extern void refill_memory_reserve (void);
extern const char *pending_malloc_warning;
-extern Lisp_Object Vpurify_flag;
-extern Lisp_Object Vmemory_full;
extern Lisp_Object *stack_base;
EXFUN (Fcons, 2);
-EXFUN (list1, 1);
-EXFUN (list2, 2);
-EXFUN (list3, 3);
-EXFUN (list4, 4);
-EXFUN (list5, 5);
+extern Lisp_Object list1 (Lisp_Object);
+extern Lisp_Object list2 (Lisp_Object, Lisp_Object);
+extern Lisp_Object list3 (Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object list4 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object list5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object,
+ Lisp_Object);
EXFUN (Flist, MANY);
EXFUN (Fmake_list, 2);
extern Lisp_Object allocate_misc (void);
@@ -2826,17 +2773,12 @@ extern int valid_lisp_object_p (Lisp_Object);
/* Defined in chartab.c */
EXFUN (Fmake_char_table, 2);
-EXFUN (Fchar_table_parent, 1);
EXFUN (Fset_char_table_parent, 2);
EXFUN (Fchar_table_extra_slot, 2);
EXFUN (Fset_char_table_extra_slot, 3);
-EXFUN (Fchar_table_range, 2);
EXFUN (Fset_char_table_range, 3);
-EXFUN (Fset_char_table_default, 3);
EXFUN (Foptimize_char_table, 2);
-EXFUN (Fmap_char_table, 2);
extern Lisp_Object copy_char_table (Lisp_Object);
-extern Lisp_Object sub_char_table_ref (Lisp_Object, int);
extern Lisp_Object char_table_ref (Lisp_Object, int);
extern Lisp_Object char_table_ref_and_range (Lisp_Object, int,
int *, int *);
@@ -2855,7 +2797,6 @@ extern void syms_of_chartab (void);
/* Defined in print.c */
extern Lisp_Object Vprin1_to_string_buffer;
-extern Lisp_Object Vprint_level, Vprint_length;
extern void debug_print (Lisp_Object) EXTERNALLY_VISIBLE;
extern void safe_debug_print (Lisp_Object) EXTERNALLY_VISIBLE;
EXFUN (Fprin1, 2);
@@ -2864,39 +2805,34 @@ EXFUN (Fprinc, 2);
EXFUN (Fterpri, 1);
EXFUN (Fprint, 2);
EXFUN (Ferror_message_string, 1);
-extern Lisp_Object Vstandard_output, Qstandard_output;
+extern Lisp_Object Qstandard_output;
extern Lisp_Object Qexternal_debugging_output;
extern void temp_output_buffer_setup (const char *);
-extern int print_level, print_escape_newlines;
+extern int print_level;
extern Lisp_Object Qprint_escape_newlines;
extern void write_string (const char *, int);
-extern void write_string_1 (const char *, int, Lisp_Object);
extern void print_error_message (Lisp_Object, Lisp_Object, const char *,
Lisp_Object);
extern Lisp_Object internal_with_output_to_temp_buffer
(const char *, Lisp_Object (*) (Lisp_Object), Lisp_Object);
+#define FLOAT_TO_STRING_BUFSIZE 350
extern void float_to_string (unsigned char *, double);
extern void syms_of_print (void);
/* Defined in doprnt.c */
extern EMACS_INT doprnt (char *, int, const char *, const char *, va_list);
-/* Defined in lread.c */
-extern Lisp_Object Vafter_load_alist;
extern Lisp_Object Qvariable_documentation, Qstandard_input;
extern Lisp_Object Qbackquote, Qcomma, Qcomma_at, Qcomma_dot, Qfunction;
-extern Lisp_Object Vobarray, initial_obarray, Vstandard_input;
-extern int load_in_progress;
+extern Lisp_Object initial_obarray;
EXFUN (Fread, 1);
EXFUN (Fread_from_string, 3);
EXFUN (Fintern, 2);
EXFUN (Fintern_soft, 2);
EXFUN (Fload, 5);
EXFUN (Fget_load_suffixes, 0);
-EXFUN (Fget_file_char, 0);
EXFUN (Fread_char, 3);
EXFUN (Fread_event, 3);
-extern Lisp_Object read_filtered_event (int, int, int, int, Lisp_Object);
EXFUN (Feval_region, 4);
extern Lisp_Object check_obarray (Lisp_Object);
extern Lisp_Object intern (const char *);
@@ -2907,8 +2843,6 @@ extern Lisp_Object oblookup (Lisp_Object, const char *, EMACS_INT, EMACS_INT);
do { \
if (initialized) Vcurrent_load_list = Fcons (x, Vcurrent_load_list); \
} while (0)
-extern Lisp_Object Vcurrent_load_list;
-extern Lisp_Object Vload_history, Vload_suffixes, Vload_file_rep_suffixes;
extern int openp (Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object *, Lisp_Object);
extern int isfloat_string (const char *, int);
@@ -2922,14 +2856,10 @@ extern void syms_of_lread (void);
/* Defined in eval.c */
extern Lisp_Object Qautoload, Qexit, Qinteractive, Qcommandp, Qdefun, Qmacro;
-extern Lisp_Object Vinhibit_quit, Qinhibit_quit, Vquit_flag;
+extern Lisp_Object Qinhibit_quit;
extern Lisp_Object Vautoload_queue;
-extern Lisp_Object Vdebug_on_error;
extern Lisp_Object Vsignaling_function;
extern int handling_signal;
-extern int debug_on_next_call;
-extern int interactive_p (int);
-
/* To run a normal hook, use the appropriate function from the list below.
The calling convention:
@@ -2940,28 +2870,11 @@ extern int interactive_p (int);
extern Lisp_Object Vrun_hooks;
EXFUN (Frun_hooks, MANY);
EXFUN (Frun_hook_with_args, MANY);
-EXFUN (Frun_hook_with_args_until_success, MANY);
EXFUN (Frun_hook_with_args_until_failure, MANY);
-extern Lisp_Object run_hook_list_with_args (Lisp_Object, int, Lisp_Object *);
extern void run_hook_with_args_2 (Lisp_Object, Lisp_Object, Lisp_Object);
-EXFUN (Fand, UNEVALLED);
-EXFUN (For, UNEVALLED);
-EXFUN (Fif, UNEVALLED);
EXFUN (Fprogn, UNEVALLED);
-EXFUN (Fprog1, UNEVALLED);
-EXFUN (Fprog2, UNEVALLED);
-EXFUN (Fsetq, UNEVALLED);
-EXFUN (Fquote, UNEVALLED);
-EXFUN (Fuser_variable_p, 1);
EXFUN (Finteractive_p, 0);
-EXFUN (Fdefun, UNEVALLED);
-EXFUN (Flet, UNEVALLED);
-EXFUN (FletX, UNEVALLED);
-EXFUN (Fwhile, UNEVALLED);
-EXFUN (Fcatch, UNEVALLED);
EXFUN (Fthrow, 2) NO_RETURN;
-EXFUN (Funwind_protect, UNEVALLED);
-EXFUN (Fcondition_case, UNEVALLED);
EXFUN (Fsignal, 2);
extern void xsignal (Lisp_Object, Lisp_Object) NO_RETURN;
extern void xsignal0 (Lisp_Object) NO_RETURN;
@@ -2969,7 +2882,6 @@ extern void xsignal1 (Lisp_Object, Lisp_Object) NO_RETURN;
extern void xsignal2 (Lisp_Object, Lisp_Object, Lisp_Object) NO_RETURN;
extern void xsignal3 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object) NO_RETURN;
extern void signal_error (const char *, Lisp_Object) NO_RETURN;
-EXFUN (Fautoload, 5);
EXFUN (Fcommandp, 2);
EXFUN (Feval, 2);
extern Lisp_Object eval_sub (Lisp_Object form);
@@ -3007,31 +2919,18 @@ extern Lisp_Object safe_call2 (Lisp_Object, Lisp_Object, Lisp_Object);
extern void init_eval (void);
extern void syms_of_eval (void);
-/* Defined in editfns.c */
-extern Lisp_Object last_nonmenu_event;
extern Lisp_Object Qfield;
-extern Lisp_Object Vinhibit_field_text_motion;
-extern Lisp_Object Vsystem_name;
-extern Lisp_Object Vuser_login_name;
-EXFUN (Fpropertize, MANY);
EXFUN (Fcurrent_message, 0);
EXFUN (Fgoto_char, 1);
-EXFUN (Fpoint_min_marker, 0);
EXFUN (Fpoint_max_marker, 0);
-EXFUN (Fpoint_min, 0);
-EXFUN (Fpoint_max, 0);
EXFUN (Fpoint, 0);
EXFUN (Fpoint_marker, 0);
-EXFUN (Fmark_marker, 0);
EXFUN (Fline_beginning_position, 1);
EXFUN (Fline_end_position, 1);
EXFUN (Ffollowing_char, 0);
EXFUN (Fprevious_char, 0);
EXFUN (Fchar_after, 1);
EXFUN (Finsert, MANY);
-EXFUN (Finsert_and_inherit, MANY);
-EXFUN (Finsert_before_markers, MANY);
-EXFUN (Finsert_buffer_substring, 3);
EXFUN (Finsert_char, 3);
extern void insert1 (Lisp_Object);
EXFUN (Feolp, 0);
@@ -3061,11 +2960,7 @@ extern Lisp_Object make_buffer_string_both (EMACS_INT, EMACS_INT, EMACS_INT,
extern void init_editfns (void);
extern void syms_of_editfns (void);
EXFUN (Fconstrain_to_field, 5);
-EXFUN (Ffield_string, 1);
-EXFUN (Fdelete_field, 1);
-EXFUN (Ffield_beginning, 3);
EXFUN (Ffield_end, 3);
-EXFUN (Ffield_string_no_properties, 1);
extern void set_time_zone_rule (const char *);
/* Defined in buffer.c */
@@ -3074,20 +2969,18 @@ extern void nsberror (Lisp_Object) NO_RETURN;
EXFUN (Fset_buffer_multibyte, 1);
EXFUN (Foverlay_start, 1);
EXFUN (Foverlay_end, 1);
-EXFUN (Foverlay_buffer, 1);
extern void adjust_overlays_for_insert (EMACS_INT, EMACS_INT);
extern void adjust_overlays_for_delete (EMACS_INT, EMACS_INT);
extern void fix_start_end_in_overlays (EMACS_INT, EMACS_INT);
extern void report_overlay_modification (Lisp_Object, Lisp_Object, int,
Lisp_Object, Lisp_Object, Lisp_Object);
extern int overlay_touches_p (EMACS_INT);
-extern Lisp_Object Vbuffer_alist, Vinhibit_read_only;
-EXFUN (Fbuffer_list, 1);
+extern Lisp_Object Vbuffer_alist;
EXFUN (Fget_buffer, 1);
EXFUN (Fget_buffer_create, 1);
EXFUN (Fgenerate_new_buffer_name, 2);
EXFUN (Fset_buffer, 1);
-EXFUN (set_buffer_if_live, 1);
+extern Lisp_Object set_buffer_if_live (Lisp_Object);
EXFUN (Fbarf_if_buffer_read_only, 0);
EXFUN (Fcurrent_buffer, 0);
EXFUN (Fswitch_to_buffer, 2);
@@ -3097,7 +2990,6 @@ EXFUN (Fbuffer_modified_p, 1);
EXFUN (Fset_buffer_modified_p, 1);
EXFUN (Fkill_buffer, 1);
EXFUN (Fkill_all_local_variables, 0);
-EXFUN (Fbuffer_disable_undo, 1);
EXFUN (Fbuffer_enable_undo, 1);
EXFUN (Ferase_buffer, 0);
extern Lisp_Object Qoverlayp;
@@ -3136,10 +3028,8 @@ extern Lisp_Object Qfile_error;
extern Lisp_Object Qfile_exists_p;
extern Lisp_Object Qfile_directory_p;
extern Lisp_Object Qinsert_file_contents;
-extern Lisp_Object Vauto_save_list_file_name;
EXFUN (Ffind_file_name_handler, 2);
EXFUN (Ffile_name_as_directory, 1);
-EXFUN (Fmake_temp_name, 1);
EXFUN (Fexpand_file_name, 2);
EXFUN (Ffile_name_nondirectory, 1);
EXFUN (Fsubstitute_in_file_name, 1);
@@ -3179,7 +3069,6 @@ EXFUN (Fset_match_data, 2);
EXFUN (Fmatch_beginning, 1);
EXFUN (Fmatch_end, 1);
extern void record_unwind_save_match_data (void);
-EXFUN (Flooking_at, 1);
extern int fast_string_match (Lisp_Object, Lisp_Object);
extern int fast_c_string_match_ignore_case (Lisp_Object, const char *);
extern int fast_string_match_ignore_case (Lisp_Object, Lisp_Object);
@@ -3198,13 +3087,8 @@ extern void clear_regexp_cache (void);
/* Defined in minibuf.c */
extern Lisp_Object Qcompletion_ignore_case;
-extern Lisp_Object Vcompletion_regexp_list;
-extern Lisp_Object Vhistory_length;
extern Lisp_Object Vminibuffer_list;
extern Lisp_Object last_minibuf_string;
-extern int completion_ignore_case;
-extern int history_delete_duplicates;
-extern int minibuffer_auto_raise;
extern void choose_minibuf_frame (void);
EXFUN (Fcompleting_read, 8);
EXFUN (Fread_from_minibuffer, 7);
@@ -3213,21 +3097,16 @@ EXFUN (Fread_buffer, 3);
EXFUN (Fread_minibuffer, 2);
EXFUN (Feval_minibuffer, 2);
EXFUN (Fread_string, 5);
-EXFUN (Fread_no_blanks_input, 3);
EXFUN (Fassoc_string, 3);
extern Lisp_Object get_minibuffer (int);
-extern void temp_echo_area_glyphs (Lisp_Object);
extern void init_minibuf_once (void);
extern void syms_of_minibuf (void);
/* Defined in callint.c */
-extern Lisp_Object Qminus, Qplus, Vcurrent_prefix_arg;
+extern Lisp_Object Qminus, Qplus;
extern Lisp_Object Qwhen;
-extern Lisp_Object Vcommand_history;
-extern Lisp_Object Vmark_even_if_inactive;
extern Lisp_Object Qcall_interactively, Qmouse_leave_buffer_hook;
-EXFUN (Fcall_interactively, 3);
EXFUN (Fprefix_numeric_value, 1);
extern void syms_of_callint (void);
@@ -3236,7 +3115,6 @@ extern void syms_of_callint (void);
extern Lisp_Object Qidentity;
EXFUN (Fdowncase, 1);
EXFUN (Fupcase, 1);
-EXFUN (Fcapitalize, 1);
EXFUN (Fupcase_region, 2);
EXFUN (Fupcase_initials, 1);
EXFUN (Fupcase_initials_region, 2);
@@ -3260,18 +3138,11 @@ extern Lisp_Object Qdisabled, QCfilter;
extern Lisp_Object Qabove_handle, Qhandle, Qbelow_handle;
extern Lisp_Object Qup, Qdown, Qbottom, Qend_scroll;
extern Lisp_Object Qtop, Qratio;
-extern Lisp_Object Vsaved_region_selection;
-extern Lisp_Object Vselect_active_regions;
-extern Lisp_Object Vtty_erase_char, Vhelp_form, Vtop_level;
-extern Lisp_Object Vthrow_on_input;
extern int input_pending;
EXFUN (Fdiscard_input, 0);
EXFUN (Frecursive_edit, 0);
EXFUN (Ftop_level, 0) NO_RETURN;
-EXFUN (Fexit_recursive_edit, 0) NO_RETURN;
-EXFUN (Fabort_recursive_edit, 0) NO_RETURN;
EXFUN (Fcommand_execute, 4);
-EXFUN (Finput_pending_p, 0);
extern Lisp_Object menu_bar_items (Lisp_Object);
extern Lisp_Object tool_bar_items (Lisp_Object, int *);
extern Lisp_Object Qvertical_scroll_bar;
@@ -3279,9 +3150,6 @@ extern void discard_mouse_events (void);
EXFUN (Fevent_convert_list, 1);
EXFUN (Fread_key_sequence, 5);
EXFUN (Fset_input_interrupt_mode, 1);
-EXFUN (Fset_output_flow_control, 2);
-EXFUN (Fset_input_meta_mode, 2);
-EXFUN (Fset_quit_char, 1);
EXFUN (Fset_input_mode, 4);
extern Lisp_Object pending_funcalls;
extern int detect_input_pending (void);
@@ -3301,7 +3169,6 @@ extern char *push_key_description (unsigned int, char *, int);
/* Defined in indent.c */
EXFUN (Fvertical_motion, 2);
EXFUN (Findent_to, 2);
-EXFUN (Fcurrent_column, 0);
EXFUN (Fmove_to_column, 2);
extern double current_column (void);
extern void invalidate_current_column (void);
@@ -3310,8 +3177,6 @@ extern void syms_of_indent (void);
/* Defined in frame.c */
#ifdef HAVE_WINDOW_SYSTEM
-extern Lisp_Object Vx_resource_name;
-extern Lisp_Object Vx_resource_class;
#endif /* HAVE_WINDOW_SYSTEM */
extern Lisp_Object Qonly;
extern Lisp_Object Qvisible;
@@ -3320,36 +3185,21 @@ extern void store_in_alist (Lisp_Object *, Lisp_Object, Lisp_Object);
extern Lisp_Object do_switch_frame (Lisp_Object, int, int, Lisp_Object);
extern Lisp_Object get_frame_param (struct frame *, Lisp_Object);
extern Lisp_Object frame_buffer_predicate (Lisp_Object);
-EXFUN (Fframep, 1);
EXFUN (Fselect_frame, 2);
EXFUN (Fselected_frame, 0);
EXFUN (Fwindow_frame, 1);
EXFUN (Fframe_root_window, 1);
EXFUN (Fframe_first_window, 1);
-EXFUN (Fframe_selected_window, 1);
-EXFUN (Fframe_list, 0);
-EXFUN (Fnext_frame, 2);
-EXFUN (Fdelete_frame, 2);
-EXFUN (Fset_mouse_position, 3);
EXFUN (Fmake_frame_visible, 1);
-EXFUN (Fmake_frame_invisible, 2);
EXFUN (Ficonify_frame, 1);
-EXFUN (Fframe_visible_p, 1);
-EXFUN (Fvisible_frame_list, 0);
EXFUN (Fframe_parameter, 2);
-EXFUN (Fframe_parameters, 1);
EXFUN (Fmodify_frame_parameters, 2);
-EXFUN (Fset_frame_height, 3);
-EXFUN (Fset_frame_width, 3);
-EXFUN (Fset_frame_size, 3);
-EXFUN (Fset_frame_position, 3);
EXFUN (Fraise_frame, 1);
EXFUN (Fredirect_frame_focus, 2);
EXFUN (Fset_frame_selected_window, 3);
extern Lisp_Object frame_buffer_list (Lisp_Object);
extern void frames_discard_buffer (Lisp_Object);
extern void set_frame_buffer_list (Lisp_Object, Lisp_Object);
-extern void frames_bury_buffer (Lisp_Object);
extern void syms_of_frame (void);
/* Defined in emacs.c */
@@ -3359,12 +3209,8 @@ extern int initial_argc;
extern int display_arg;
#endif
extern Lisp_Object decode_env_path (const char *, const char *);
-extern Lisp_Object Vinvocation_name, Vinvocation_directory;
-extern Lisp_Object Vbefore_init_time, Vafter_init_time;
-extern Lisp_Object Vinstallation_directory;
extern Lisp_Object empty_unibyte_string, empty_multibyte_string;
extern Lisp_Object Qfile_name_handler_alist;
-extern Lisp_Object Vdynamic_library_alist;
extern void (*fatal_error_signal_hook) (void);
EXFUN (Fkill_emacs, 1) NO_RETURN;
#if HAVE_SETLOCALE
@@ -3381,8 +3227,8 @@ void shut_down_emacs (int, int, Lisp_Object);
/* Nonzero means don't do interactive redisplay and don't change tty modes. */
extern int noninteractive;
-/* Nonzero means don't load X resources or Windows Registry settings. */
-extern int inhibit_x_resources;
+/* Nonzero means remove site-lisp directories from load-path. */
+extern int no_site_lisp;
/* Pipe used to send exit notification to the daemon parent at
startup. */
@@ -3398,10 +3244,8 @@ extern int running_asynch_code;
extern Lisp_Object QCtype, Qlocal;
EXFUN (Fget_process, 1);
EXFUN (Fget_buffer_process, 1);
-EXFUN (Fprocessp, 1);
EXFUN (Fprocess_status, 1);
EXFUN (Fkill_process, 2);
-EXFUN (Fprocess_send_eof, 1);
EXFUN (Fwaiting_for_user_input_p, 0);
extern Lisp_Object Qprocessp;
extern void kill_buffer_processes (Lisp_Object);
@@ -3418,11 +3262,6 @@ extern void init_process (void);
extern void syms_of_process (void);
extern void setup_process_coding_systems (Lisp_Object);
-/* Defined in callproc.c */
-extern Lisp_Object Vexec_path, Vexec_suffixes,
- Vexec_directory, Vdata_directory;
-extern Lisp_Object Vdoc_directory;
-extern Lisp_Object Vshell_file_name;
EXFUN (Fcall_process, MANY);
extern int child_setup (int, int, int, char **, int, Lisp_Object);
extern void init_callproc_1 (void);
@@ -3432,9 +3271,7 @@ extern void syms_of_callproc (void);
/* Defined in doc.c */
extern Lisp_Object Qfunction_documentation;
-extern Lisp_Object Vdoc_file_name;
EXFUN (Fsubstitute_command_keys, 1);
-EXFUN (Fdocumentation, 2);
EXFUN (Fdocumentation_property, 3);
extern Lisp_Object read_doc_string (Lisp_Object);
extern Lisp_Object get_doc_string (Lisp_Object, int, int);
@@ -3472,8 +3309,6 @@ extern void record_property_change (EMACS_INT, EMACS_INT,
Lisp_Object, Lisp_Object,
Lisp_Object);
extern void syms_of_undo (void);
-extern Lisp_Object Vundo_outer_limit;
-
/* Defined in textprop.c */
extern Lisp_Object Qfont, Qmouse_face;
extern Lisp_Object Qinsert_in_front_hooks, Qinsert_behind_hooks;
@@ -3488,10 +3323,6 @@ EXFUN (Fput_text_property, 5);
EXFUN (Fprevious_char_property_change, 2);
EXFUN (Fnext_char_property_change, 2);
extern void report_interval_modification (Lisp_Object, Lisp_Object);
-extern Lisp_Object next_single_char_property_change (Lisp_Object,
- Lisp_Object,
- Lisp_Object,
- Lisp_Object);
/* Defined in menu.c */
extern void syms_of_menu (void);
@@ -3543,10 +3374,7 @@ extern void *memmove (void *, void *, size_t);
extern int memcmp (void *, void *, size_t);
#endif
-/* Defined in filelock.c */
-extern Lisp_Object Vtemporary_file_directory;
EXFUN (Funlock_buffer, 0);
-EXFUN (Ffile_locked_p, 1);
extern void unlock_all_files (void);
extern void lock_file (Lisp_Object);
extern void unlock_file (Lisp_Object);
@@ -3590,14 +3418,10 @@ extern void init_font (void);
#ifdef HAVE_WINDOW_SYSTEM
/* Defined in fontset.c */
extern void syms_of_fontset (void);
-EXFUN (Fset_fontset_font, 5);
-EXFUN (Fnew_fontset, 2);
/* Defined in xfns.c, w32fns.c, or macfns.c */
extern Lisp_Object Qfont_param;
-extern Lisp_Object Vx_no_window_manager;
EXFUN (Fxw_display_color_p, 1);
-EXFUN (Fx_file_dialog, 5);
EXFUN (Fx_focus_frame, 1);
#endif
@@ -3610,10 +3434,7 @@ extern Lisp_Object Qnormal;
extern Lisp_Object QCfamily, QCweight, QCslant;
extern Lisp_Object QCheight, QCname, QCwidth, QCforeground, QCbackground;
extern Lisp_Object Vface_alternative_font_family_alist;
-extern Lisp_Object Vface_font_rescale_alist;
-extern Lisp_Object Vface_ignored_fonts;
extern Lisp_Object Vface_alternative_font_registry_alist;
-extern Lisp_Object Vscalable_fonts_allowed;
EXFUN (Fclear_face_cache, 1);
EXFUN (Fx_load_color_file, 1);
extern void syms_of_xfaces (void);
@@ -3838,7 +3659,6 @@ extern Lisp_Object safe_alloca_unwind (Lisp_Object);
} while (0)
-#endif /* EMACS_LISP_H */
+#include "globals.h"
-/* arch-tag: 9b2ed020-70eb-47ac-94ee-e1c2a5107d5e
- (do not change this comment) */
+#endif /* EMACS_LISP_H */
diff --git a/src/lread.c b/src/lread.c
index 550b5f076f..c4ae831352 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1,8 +1,6 @@
/* Lisp parsing and input streams.
-Copyright (C) 1985, 1986, 1987, 1988, 1989, 1993, 1994, 1995, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985-1989, 1993-1995, 1997-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -45,10 +43,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "msdos.h"
#endif
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
-
#include <math.h>
#ifdef HAVE_SETLOCALE
@@ -73,11 +68,11 @@ Lisp_Object Qrehash_size;
Lisp_Object Qrehash_threshold;
Lisp_Object Qread_char, Qget_file_char, Qstandard_input, Qcurrent_load_list;
-Lisp_Object Qvariable_documentation, Vvalues, Vstandard_input, Vafter_load_alist;
+Lisp_Object Qvariable_documentation;
Lisp_Object Qascii_character, Qload, Qload_file_name;
Lisp_Object Qbackquote, Qcomma, Qcomma_at, Qcomma_dot, Qfunction;
Lisp_Object Qinhibit_file_name_operation;
-Lisp_Object Qeval_buffer_list, Veval_buffer_list;
+Lisp_Object Qeval_buffer_list;
Lisp_Object Qlexical_binding;
Lisp_Object Qfile_truename, Qdo_after_load_evaluation; /* ACM 2006/5/16 */
@@ -89,69 +84,19 @@ static Lisp_Object Qload_force_doc_strings;
extern Lisp_Object Qinternal_interpreter_environment;
-/* non-zero if inside `load' */
-int load_in_progress;
static Lisp_Object Qload_in_progress;
-/* Directory in which the sources were found. */
-Lisp_Object Vsource_directory;
-
-/* Search path and suffixes for files to be loaded. */
-Lisp_Object Vload_path, Vload_suffixes, Vload_file_rep_suffixes;
-
-/* File name of user's init file. */
-Lisp_Object Vuser_init_file;
-
-/* This is the user-visible association list that maps features to
- lists of defs in their load files. */
-Lisp_Object Vload_history;
-
-/* This is used to build the load history. */
-Lisp_Object Vcurrent_load_list;
-
-/* List of files that were preloaded. */
-Lisp_Object Vpreloaded_file_list;
-
-/* Name of file actually being read by `load'. */
-Lisp_Object Vload_file_name;
-
-/* Function to use for reading, in `load' and friends. */
-Lisp_Object Vload_read_function;
-
-/* Non-nil means read recursive structures using #n= and #n# syntax. */
-Lisp_Object Vread_circle;
-
/* The association list of objects read with the #n=object form.
Each member of the list has the form (n . object), and is used to
look up the object for the corresponding #n# construct.
It must be set to nil before all top-level calls to read0. */
Lisp_Object read_objects;
-/* Nonzero means load should forcibly load all dynamic doc strings. */
-static int load_force_doc_strings;
-
-/* Nonzero means read should convert strings to unibyte. */
-static int load_convert_to_unibyte;
-
/* Nonzero means READCHAR should read bytes one by one (not character)
when READCHARFUN is Qget_file_char or Qget_emacs_mule_file_char.
This is set to 1 by read1 temporarily while handling #@NUMBER. */
static int load_each_byte;
-/* Function to use for loading an Emacs Lisp source file (not
- compiled) instead of readevalloop. */
-Lisp_Object Vload_source_file_function;
-
-/* List of all DEFVAR_BOOL variables. Used by the byte optimizer. */
-Lisp_Object Vbyte_boolean_vars;
-
-/* Whether or not to add a `read-positions' property to symbols
- read. */
-Lisp_Object Vread_with_symbol_positions;
-
-/* List of (SYMBOL . POSITION) accumulated so far. */
-Lisp_Object Vread_symbol_positions_list;
-
/* If non-nil `readevalloop' evaluates code in a lexical environment. */
Lisp_Object Vlexical_binding;
@@ -198,25 +143,13 @@ static file_offset prev_saved_doc_string_position;
Fread initializes this to zero, so we need not specbind it
or worry about what happens to it when there is an error. */
static int new_backquote_flag;
-static Lisp_Object Vold_style_backquotes, Qold_style_backquotes;
+static Lisp_Object Qold_style_backquotes;
/* A list of file names for files being loaded in Fload. Used to
check for recursive loads. */
static Lisp_Object Vloads_in_progress;
-/* Non-zero means load dangerous compiled Lisp files. */
-
-int load_dangerous_libraries;
-
-/* Non-zero means force printing messages when loading Lisp files. */
-
-int force_load_messages;
-
-/* A regular expression used to detect files compiled with Emacs. */
-
-static Lisp_Object Vbytecomp_version_regexp;
-
static int read_emacs_mule_char (int, int (*) (int, Lisp_Object),
Lisp_Object);
@@ -655,7 +588,7 @@ static void substitute_in_interval (INTERVAL, Lisp_Object);
If SECONDS is a number, we wait that many seconds for input, and
return Qnil if no input arrives within that time. */
-Lisp_Object
+static Lisp_Object
read_filtered_event (int no_switch_frame, int ascii_required,
int error_nonascii, int input_method, Lisp_Object seconds)
{
@@ -1146,10 +1079,10 @@ Return t if the file exists and loads successfully. */)
{
/* Don't insist on adding a suffix if FILE already ends with one. */
if (size > 3
- && !strcmp (SDATA (file) + size - 3, ".el"))
+ && !strcmp (SSDATA (file) + size - 3, ".el"))
must_suffix = Qnil;
else if (size > 4
- && !strcmp (SDATA (file) + size - 4, ".elc"))
+ && !strcmp (SSDATA (file) + size - 4, ".elc"))
must_suffix = Qnil;
/* Don't insist on adding a suffix
if the argument includes a directory name. */
@@ -1269,9 +1202,9 @@ Return t if the file exists and loads successfully. */)
#ifdef DOS_NT
fmode = "rb";
#endif /* DOS_NT */
- stat ((char *)SDATA (efound), &s1);
+ stat (SSDATA (efound), &s1);
SSET (efound, SBYTES (efound) - 1, 0);
- result = stat ((char *)SDATA (efound), &s2);
+ result = stat (SSDATA (efound), &s2);
SSET (efound, SBYTES (efound) - 1, 'c');
if (result >= 0 && (unsigned) s1.st_mtime < (unsigned) s2.st_mtime)
@@ -1312,7 +1245,7 @@ Return t if the file exists and loads successfully. */)
#ifdef WINDOWSNT
emacs_close (fd);
efound = ENCODE_FILE (found);
- stream = fopen ((char *) SDATA (efound), fmode);
+ stream = fopen (SSDATA (efound), fmode);
#else /* not WINDOWSNT */
stream = fdopen (fd, fmode);
#endif /* not WINDOWSNT */
@@ -1543,19 +1476,19 @@ openp (Lisp_Object path, Lisp_Object str, Lisp_Object suffixes, Lisp_Object *sto
&& SREF (filename, 0) == '/'
&& SREF (filename, 1) == ':')
{
- strncpy (fn, SDATA (filename) + 2,
+ strncpy (fn, SSDATA (filename) + 2,
SBYTES (filename) - 2);
fn[SBYTES (filename) - 2] = 0;
}
else
{
- strncpy (fn, SDATA (filename),
+ strncpy (fn, SSDATA (filename),
SBYTES (filename));
fn[SBYTES (filename)] = 0;
}
if (lsuffix != 0) /* Bug happens on CCI if lsuffix is 0. */
- strncat (fn, SDATA (XCAR (tail)), lsuffix);
+ strncat (fn, SSDATA (XCAR (tail)), lsuffix);
/* Check that the file exists and is not a directory. */
/* We used to only check for handlers on non-absolute file names:
@@ -1590,7 +1523,7 @@ openp (Lisp_Object path, Lisp_Object str, Lisp_Object suffixes, Lisp_Object *sto
const char *pfn;
encoded_fn = ENCODE_FILE (string);
- pfn = SDATA (encoded_fn);
+ pfn = SSDATA (encoded_fn);
exists = (stat (pfn, &st) >= 0
&& (st.st_mode & S_IFMT) != S_IFDIR);
if (exists)
@@ -3021,10 +2954,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
{
char *end = read_buffer + read_buffer_size;
- while (c > 040
- && c != 0x8a0 /* NBSP */
- && (c >= 0200
- || !(strchr ("\"';()[]#`,", c))))
+ do
{
if (end - p < MAX_MULTIBYTE_LENGTH)
{
@@ -3048,7 +2978,10 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
else
*p++ = c;
c = READCHAR;
- }
+ } while (c > 040
+ && c != 0x8a0 /* NBSP */
+ && (c >= 0200
+ || !(strchr ("\"';()[]#`,", c))));
if (p == end)
{
@@ -3657,7 +3590,6 @@ read_list (int flag, register Lisp_Object readcharfun)
}
}
-Lisp_Object Vobarray;
Lisp_Object initial_obarray;
/* oblookup stores the bucket number here, for the sake of Funintern. */
@@ -3749,7 +3681,7 @@ it defaults to the value of `obarray'. */)
CHECK_STRING (string);
- tem = oblookup (obarray, SDATA (string),
+ tem = oblookup (obarray, SSDATA (string),
SCHARS (string),
SBYTES (string));
if (!INTEGERP (tem))
@@ -3802,7 +3734,7 @@ it defaults to the value of `obarray'. */)
else
string = SYMBOL_NAME (name);
- tem = oblookup (obarray, SDATA (string), SCHARS (string), SBYTES (string));
+ tem = oblookup (obarray, SSDATA (string), SCHARS (string), SBYTES (string));
if (INTEGERP (tem) || (SYMBOLP (name) && !EQ (name, tem)))
return Qnil;
else
@@ -3831,7 +3763,7 @@ OBARRAY defaults to the value of the variable `obarray'. */)
string = name;
}
- tem = oblookup (obarray, SDATA (string),
+ tem = oblookup (obarray, SSDATA (string),
SCHARS (string),
SBYTES (string));
if (INTEGERP (tem))
@@ -4245,7 +4177,7 @@ init_lread (void)
Vload_path = Fcons (tem, Vload_path);
}
}
- if (!NILP (sitelisp))
+ if (!NILP (sitelisp) && !no_site_lisp)
Vload_path = nconc2 (Fnreverse (sitelisp), Vload_path);
}
}
@@ -4282,7 +4214,7 @@ init_lread (void)
if (STRINGP (dirfile))
{
dirfile = Fdirectory_file_name (dirfile);
- if (access (SDATA (dirfile), 0) < 0)
+ if (access (SSDATA (dirfile), 0) < 0)
dir_warning ("Warning: Lisp directory `%s' does not exist.\n",
XCAR (path_tail));
}
@@ -4344,22 +4276,22 @@ syms_of_lread (void)
defsubr (&Smapatoms);
defsubr (&Slocate_file_internal);
- DEFVAR_LISP ("obarray", &Vobarray,
+ DEFVAR_LISP ("obarray", Vobarray,
doc: /* Symbol table for use by `intern' and `read'.
It is a vector whose length ought to be prime for best results.
The vector's contents don't make sense if examined from Lisp programs;
to find all the symbols in an obarray, use `mapatoms'. */);
- DEFVAR_LISP ("values", &Vvalues,
+ DEFVAR_LISP ("values", Vvalues,
doc: /* List of values of all expressions which were read, evaluated and printed.
Order is reverse chronological. */);
- DEFVAR_LISP ("standard-input", &Vstandard_input,
+ DEFVAR_LISP ("standard-input", Vstandard_input,
doc: /* Stream for read to get input from.
See documentation of `read' for possible values. */);
Vstandard_input = Qt;
- DEFVAR_LISP ("read-with-symbol-positions", &Vread_with_symbol_positions,
+ DEFVAR_LISP ("read-with-symbol-positions", Vread_with_symbol_positions,
doc: /* If non-nil, add position of read symbols to `read-symbol-positions-list'.
If this variable is a buffer, then only forms read from that buffer
@@ -4373,7 +4305,7 @@ The positions are relative to the last call to `read' or
the toplevel; bind it instead. */);
Vread_with_symbol_positions = Qnil;
- DEFVAR_LISP ("read-symbol-positions-list", &Vread_symbol_positions_list,
+ DEFVAR_LISP ("read-symbol-positions-list", Vread_symbol_positions_list,
doc: /* A list mapping read symbols to their positions.
This variable is modified during calls to `read' or
`read-from-string', but only when `read-with-symbol-positions' is
@@ -4388,24 +4320,24 @@ read multiple times. The list is in the same order as the symbols
were read in. */);
Vread_symbol_positions_list = Qnil;
- DEFVAR_LISP ("read-circle", &Vread_circle,
+ DEFVAR_LISP ("read-circle", Vread_circle,
doc: /* Non-nil means read recursive structures using #N= and #N# syntax. */);
Vread_circle = Qt;
- DEFVAR_LISP ("load-path", &Vload_path,
+ DEFVAR_LISP ("load-path", Vload_path,
doc: /* *List of directories to search for files to load.
Each element is a string (directory name) or nil (try default directory).
Initialized based on EMACSLOADPATH environment variable, if any,
otherwise to default specified by file `epaths.h' when Emacs was built. */);
- DEFVAR_LISP ("load-suffixes", &Vload_suffixes,
+ DEFVAR_LISP ("load-suffixes", Vload_suffixes,
doc: /* List of suffixes for (compiled or source) Emacs Lisp files.
This list should not include the empty string.
`load' and related functions try to append these suffixes, in order,
to the specified file name if a Lisp suffix is allowed or required. */);
Vload_suffixes = Fcons (make_pure_c_string (".elc"),
Fcons (make_pure_c_string (".el"), Qnil));
- DEFVAR_LISP ("load-file-rep-suffixes", &Vload_file_rep_suffixes,
+ DEFVAR_LISP ("load-file-rep-suffixes", Vload_file_rep_suffixes,
doc: /* List of suffixes that indicate representations of \
the same file.
This list should normally start with the empty string.
@@ -4420,12 +4352,12 @@ the loading functions recognize as compression suffixes, you should
customize `jka-compr-load-suffixes' rather than the present variable. */);
Vload_file_rep_suffixes = Fcons (empty_unibyte_string, Qnil);
- DEFVAR_BOOL ("load-in-progress", &load_in_progress,
+ DEFVAR_BOOL ("load-in-progress", load_in_progress,
doc: /* Non-nil if inside of `load'. */);
Qload_in_progress = intern_c_string ("load-in-progress");
staticpro (&Qload_in_progress);
- DEFVAR_LISP ("after-load-alist", &Vafter_load_alist,
+ DEFVAR_LISP ("after-load-alist", Vafter_load_alist,
doc: /* An alist of expressions to be evalled when particular files are loaded.
Each element looks like (REGEXP-OR-FEATURE FORMS...).
@@ -4440,7 +4372,7 @@ An error in FORMS does not undo the load, but does prevent execution of
the rest of the FORMS. */);
Vafter_load_alist = Qnil;
- DEFVAR_LISP ("load-history", &Vload_history,
+ DEFVAR_LISP ("load-history", Vload_history,
doc: /* Alist mapping loaded file names to symbols and features.
Each alist element should be a list (FILE-NAME ENTRIES...), where
FILE-NAME is the name of a file that has been loaded into Emacs.
@@ -4460,11 +4392,11 @@ During preloading, the file name recorded is relative to the main Lisp
directory. These file names are converted to absolute at startup. */);
Vload_history = Qnil;
- DEFVAR_LISP ("load-file-name", &Vload_file_name,
+ DEFVAR_LISP ("load-file-name", Vload_file_name,
doc: /* Full name of file being loaded by `load'. */);
Vload_file_name = Qnil;
- DEFVAR_LISP ("user-init-file", &Vuser_init_file,
+ DEFVAR_LISP ("user-init-file", Vuser_init_file,
doc: /* File name, including directory, of user's initialization file.
If the file loaded had extension `.elc', and the corresponding source file
exists, this variable contains the name of source file, suitable for use
@@ -4473,16 +4405,16 @@ While Emacs loads and evaluates the init file, value is the real name
of the file, regardless of whether or not it has the `.elc' extension. */);
Vuser_init_file = Qnil;
- DEFVAR_LISP ("current-load-list", &Vcurrent_load_list,
+ DEFVAR_LISP ("current-load-list", Vcurrent_load_list,
doc: /* Used for internal purposes by `load'. */);
Vcurrent_load_list = Qnil;
- DEFVAR_LISP ("load-read-function", &Vload_read_function,
+ DEFVAR_LISP ("load-read-function", Vload_read_function,
doc: /* Function used by `load' and `eval-region' for reading expressions.
The default is nil, which means use the function `read'. */);
Vload_read_function = Qnil;
- DEFVAR_LISP ("load-source-file-function", &Vload_source_file_function,
+ DEFVAR_LISP ("load-source-file-function", Vload_source_file_function,
doc: /* Function called in `load' for loading an Emacs Lisp source file.
This function is for doing code conversion before reading the source file.
If nil, loading is done without any code conversion.
@@ -4491,45 +4423,45 @@ Arguments are FULLNAME, FILE, NOERROR, NOMESSAGE, where
See `load' for the meaning of the remaining arguments. */);
Vload_source_file_function = Qnil;
- DEFVAR_BOOL ("load-force-doc-strings", &load_force_doc_strings,
+ DEFVAR_BOOL ("load-force-doc-strings", load_force_doc_strings,
doc: /* Non-nil means `load' should force-load all dynamic doc strings.
This is useful when the file being loaded is a temporary copy. */);
load_force_doc_strings = 0;
- DEFVAR_BOOL ("load-convert-to-unibyte", &load_convert_to_unibyte,
+ DEFVAR_BOOL ("load-convert-to-unibyte", load_convert_to_unibyte,
doc: /* Non-nil means `read' converts strings to unibyte whenever possible.
This is normally bound by `load' and `eval-buffer' to control `read',
and is not meant for users to change. */);
load_convert_to_unibyte = 0;
- DEFVAR_LISP ("source-directory", &Vsource_directory,
+ DEFVAR_LISP ("source-directory", Vsource_directory,
doc: /* Directory in which Emacs sources were found when Emacs was built.
You cannot count on them to still be there! */);
Vsource_directory
= Fexpand_file_name (build_string ("../"),
Fcar (decode_env_path (0, PATH_DUMPLOADSEARCH)));
- DEFVAR_LISP ("preloaded-file-list", &Vpreloaded_file_list,
+ DEFVAR_LISP ("preloaded-file-list", Vpreloaded_file_list,
doc: /* List of files that were preloaded (when dumping Emacs). */);
Vpreloaded_file_list = Qnil;
- DEFVAR_LISP ("byte-boolean-vars", &Vbyte_boolean_vars,
+ DEFVAR_LISP ("byte-boolean-vars", Vbyte_boolean_vars,
doc: /* List of all DEFVAR_BOOL variables, used by the byte code optimizer. */);
Vbyte_boolean_vars = Qnil;
- DEFVAR_BOOL ("load-dangerous-libraries", &load_dangerous_libraries,
+ DEFVAR_BOOL ("load-dangerous-libraries", load_dangerous_libraries,
doc: /* Non-nil means load dangerous compiled Lisp files.
Some versions of XEmacs use different byte codes than Emacs. These
incompatible byte codes can make Emacs crash when it tries to execute
them. */);
load_dangerous_libraries = 0;
- DEFVAR_BOOL ("force-load-messages", &force_load_messages,
+ DEFVAR_BOOL ("force-load-messages", force_load_messages,
doc: /* Non-nil means force printing messages when loading Lisp files.
This overrides the value of the NOMESSAGE argument to `load'. */);
force_load_messages = 0;
- DEFVAR_LISP ("bytecomp-version-regexp", &Vbytecomp_version_regexp,
+ DEFVAR_LISP ("bytecomp-version-regexp", Vbytecomp_version_regexp,
doc: /* Regular expression matching safe to load compiled Lisp files.
When Emacs loads a compiled Lisp file, it reads the first 512 bytes
from the file, and matches them against this regular expression.
@@ -4540,18 +4472,18 @@ to load. See also `load-dangerous-libraries'. */);
Qlexical_binding = intern ("lexical-binding");
staticpro (&Qlexical_binding);
- DEFVAR_LISP ("lexical-binding", &Vlexical_binding,
+ DEFVAR_LISP ("lexical-binding", Vlexical_binding,
doc: /* If non-nil, use lexical binding when evaluating code.
This only applies to code evaluated by `eval-buffer' and `eval-region'.
This variable is automatically set from the file variables of an interpreted
lisp file read using `load'. */);
Fmake_variable_buffer_local (Qlexical_binding);
- DEFVAR_LISP ("eval-buffer-list", &Veval_buffer_list,
+ DEFVAR_LISP ("eval-buffer-list", Veval_buffer_list,
doc: /* List of buffers being read from by calls to `eval-buffer' and `eval-region'. */);
Veval_buffer_list = Qnil;
- DEFVAR_LISP ("old-style-backquotes", &Vold_style_backquotes,
+ DEFVAR_LISP ("old-style-backquotes", Vold_style_backquotes,
doc: /* Set to non-nil when `read' encounters an old-style backquote. */);
Vold_style_backquotes = Qnil;
Qold_style_backquotes = intern_c_string ("old-style-backquotes");
@@ -4638,4 +4570,3 @@ This variable is automatically set from the file variables of an interpreted
Qrehash_threshold = intern_c_string ("rehash-threshold");
staticpro (&Qrehash_threshold);
}
-
diff --git a/src/m/alpha.h b/src/m/alpha.h
index 0e7d182fee..9ae089bfc5 100644
--- a/src/m/alpha.h
+++ b/src/m/alpha.h
@@ -1,7 +1,6 @@
/* Machine description file for the alpha chip.
-Copyright (C) 1994, 1997, 1999, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1994, 1997, 1999, 2001-2011 Free Software Foundation, Inc.
Author: Rainer Schoepf
(according to authors.el)
@@ -59,5 +58,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
this avoids the assembler bug. */
#define DBL_MIN_REPLACEMENT 2.2250738585072019e-308
-/* arch-tag: 978cb578-1e25-4a60-819b-adae0972aa78
- (do not change this comment) */
diff --git a/src/m/amdx86-64.h b/src/m/amdx86-64.h
index 867d65f660..2ae5d07390 100644
--- a/src/m/amdx86-64.h
+++ b/src/m/amdx86-64.h
@@ -1,7 +1,6 @@
/* machine description file for AMD x86-64.
-Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2002-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -40,5 +39,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define XPNTR to avoid or'ing with DATA_SEG_BITS */
#undef DATA_SEG_BITS
-/* arch-tag: 8a5e001d-e12e-4692-a3a6-0b15ba271c6e
- (do not change this comment) */
diff --git a/src/m/ia64.h b/src/m/ia64.h
index e9cf07b678..48ba3005cd 100644
--- a/src/m/ia64.h
+++ b/src/m/ia64.h
@@ -1,9 +1,8 @@
/* machine description file for the IA-64 architecture.
-Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2000-2011 Free Software Foundation, Inc.
-Contributed by David Mosberger <[email protected]>
+ Contributed by David Mosberger <[email protected]>
This file is part of GNU Emacs.
@@ -47,5 +46,3 @@ extern void r_alloc_free ();
#endif /* not _MALLOC_INTERNAL */
#endif /* REL_ALLOC */
-/* arch-tag: 9b8e9fb2-2e49-4c22-b68f-11a488e77c66
- (do not change this comment) */
diff --git a/src/m/ibmrs6000.h b/src/m/ibmrs6000.h
index 785719e908..ca2188bc06 100644
--- a/src/m/ibmrs6000.h
+++ b/src/m/ibmrs6000.h
@@ -1,7 +1,6 @@
/* R2 AIX machine/system dependent defines
-Copyright (C) 1988, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1988, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -45,5 +44,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define BROKEN_SIGPTY
#define BROKEN_SIGPOLL
-/* arch-tag: 028318ee-a7ae-4a08-804d-cc1e6588d003
- (do not change this comment) */
diff --git a/src/m/ibms390.h b/src/m/ibms390.h
index 1a19f7233a..f2aef1ba51 100644
--- a/src/m/ibms390.h
+++ b/src/m/ibms390.h
@@ -1,7 +1,6 @@
/* Machine description file for IBM S390 in 32-bit mode
-Copyright (C) 1985, 1986, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985-1986, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -33,5 +32,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
numerically. */
#define VIRT_ADDR_VARIES
-/* arch-tag: d8a0ffa4-a8f0-4736-90d3-7fd7b21b8314
- (do not change this comment) */
diff --git a/src/m/ibms390x.h b/src/m/ibms390x.h
index 2ef14a2294..d4ef5c291e 100644
--- a/src/m/ibms390x.h
+++ b/src/m/ibms390x.h
@@ -1,7 +1,6 @@
/* Machine description file for IBM S390 in 64-bit mode
-Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 2002-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -33,5 +32,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define XPNTR to avoid or'ing with DATA_SEG_BITS */
#define XPNTR(a) XUINT (a)
-/* arch-tag: 4b87653c-6add-4663-8691-7d9dc17b5519
- (do not change this comment) */
diff --git a/src/m/intel386.h b/src/m/intel386.h
index 15601fae76..16f0645715 100644
--- a/src/m/intel386.h
+++ b/src/m/intel386.h
@@ -1,7 +1,6 @@
/* Machine description file for intel 386.
-Copyright (C) 1987, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1987, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -30,5 +29,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define ULIMIT_BREAK_VALUE (32*1024*1024)
#endif
-/* arch-tag: 746338f0-cb7b-4f49-a98c-cb50817cf2ec
- (do not change this comment) */
diff --git a/src/m/iris4d.h b/src/m/iris4d.h
index 9e80324ee9..881f71f846 100644
--- a/src/m/iris4d.h
+++ b/src/m/iris4d.h
@@ -1,7 +1,6 @@
/* machine description file for Iris-4D machines. Use with s/irix*.h.
-Copyright (C) 1987, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1987, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -25,5 +24,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define DATA_START 0x10000000
#define DATA_SEG_BITS 0x10000000
-/* arch-tag: fff5e139-9ae0-465d-afec-837c41ea0aa6
- (do not change this comment) */
diff --git a/src/m/m68k.h b/src/m/m68k.h
index df930d511f..16e0b9f0be 100644
--- a/src/m/m68k.h
+++ b/src/m/m68k.h
@@ -1,7 +1,6 @@
/* Machine description file for generic Motorola 68k.
-Copyright (C) 1985, 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985, 1995, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -31,5 +30,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif
-/* arch-tag: 4eadd161-b4e8-4b82-82a1-e4ce7f42969d
- (do not change this comment) */
diff --git a/src/m/macppc.h b/src/m/macppc.h
index 01735790b2..5d78e39bdb 100644
--- a/src/m/macppc.h
+++ b/src/m/macppc.h
@@ -1,7 +1,6 @@
/* machine description file For the powerpc Macintosh.
-Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -30,5 +29,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif
#endif
-/* arch-tag: 41913e4e-e7d1-4023-aadb-210cc31712ed
- (do not change this comment) */
diff --git a/src/m/sparc.h b/src/m/sparc.h
index fc5ea95c0e..50e56f0f3d 100644
--- a/src/m/sparc.h
+++ b/src/m/sparc.h
@@ -1,7 +1,6 @@
/* machine description file for Sun 4 SPARC.
-Copyright (C) 1987, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1987, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -36,5 +35,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif /* __arch64__ */
-/* arch-tag: 0a6f7882-33fd-4811-9832-7466c51e50f7
- (do not change this comment) */
diff --git a/src/m/template.h b/src/m/template.h
index 0d8e78622a..f06f62b6cd 100644
--- a/src/m/template.h
+++ b/src/m/template.h
@@ -1,7 +1,6 @@
/* machine description file template.
-Copyright (C) 1985, 1986, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985-1986, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -48,5 +47,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
you should also check `etc/MACHINES' to make sure its descriptions
of known problems in that configuration should be updated. */
-/* arch-tag: d7dae0a9-4f99-4939-bef9-5738e1f33955
- (do not change this comment) */
diff --git a/src/m/vax.h b/src/m/vax.h
index 16e790a276..2fecf17ca8 100644
--- a/src/m/vax.h
+++ b/src/m/vax.h
@@ -1,7 +1,6 @@
/* machine description file for vax.
-Copyright (C) 1985, 1986, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985-1986, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -32,5 +31,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define HAVE_FTIME
-/* arch-tag: 508bdf7a-01a0-4ce0-8eba-0704d0df55a0
- (do not change this comment) */
diff --git a/src/macros.c b/src/macros.c
index c281c89aa3..34ac08c328 100644
--- a/src/macros.c
+++ b/src/macros.c
@@ -1,6 +1,6 @@
/* Keyboard macros.
- Copyright (C) 1985, 1986, 1993, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1985-1986, 1993, 2000-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -29,14 +29,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
Lisp_Object Qexecute_kbd_macro, Qkbd_macro_termination_hook;
-/* Kbd macro currently being executed (a string or vector). */
-
-Lisp_Object Vexecuting_kbd_macro;
-
-/* Index of next character to fetch from that macro. */
-
-EMACS_INT executing_kbd_macro_index;
-
/* Number of successful iterations so far
for innermost keyboard macro.
This is not bound at each level,
@@ -369,6 +361,11 @@ syms_of_macros (void)
{
Qexecute_kbd_macro = intern_c_string ("execute-kbd-macro");
staticpro (&Qexecute_kbd_macro);
+
+ DEFVAR_LISP ("kbd-macro-termination-hook", Vkbd_macro_termination_hook,
+ doc: /* Normal hook run whenever a keyboard macro terminates.
+This is run whether the macro ends normally or prematurely due to an error. */);
+ Vkbd_macro_termination_hook = Qnil;
Qkbd_macro_termination_hook = intern_c_string ("kbd-macro-termination-hook");
staticpro (&Qkbd_macro_termination_hook);
@@ -384,16 +381,14 @@ syms_of_macros (void)
The value is the symbol `append' while appending to the definition of
an existing macro. */);
- DEFVAR_LISP ("executing-kbd-macro", &Vexecuting_kbd_macro,
+ DEFVAR_LISP ("executing-kbd-macro", Vexecuting_kbd_macro,
doc: /* Currently executing keyboard macro (string or vector).
This is nil when not executing a keyboard macro. */);
- DEFVAR_INT ("executing-kbd-macro-index", &executing_kbd_macro_index,
+ DEFVAR_INT ("executing-kbd-macro-index", executing_kbd_macro_index,
doc: /* Index in currently executing keyboard macro; undefined if none executing. */);
DEFVAR_KBOARD ("last-kbd-macro", Vlast_kbd_macro,
doc: /* Last kbd macro defined, as a string or vector; nil if none defined. */);
}
-/* arch-tag: d293fcc9-2266-4163-9198-7fa0de12ec9e
- (do not change this comment) */
diff --git a/src/macros.h b/src/macros.h
index 761b5fdf51..32a97e457e 100644
--- a/src/macros.h
+++ b/src/macros.h
@@ -1,6 +1,5 @@
/* Definitions for keyboard macro interpretation in GNU Emacs.
- Copyright (C) 1985, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -18,14 +17,6 @@ You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
-/* Kbd macro currently being executed (a string or vector). */
-
-extern Lisp_Object Vexecuting_kbd_macro;
-
-/* Index of next character to fetch from that macro. */
-
-extern EMACS_INT executing_kbd_macro_index;
-
/* Number of successful iterations so far
for innermost keyboard macro.
This is not bound at each level,
@@ -52,5 +43,3 @@ extern void finalize_kbd_macro_chars (void);
extern void store_kbd_macro_char (Lisp_Object);
-/* arch-tag: 8edb7088-682f-4d1f-a4d9-0fbb7284234e
- (do not change this comment) */
diff --git a/src/makefile.w32-in b/src/makefile.w32-in
index 21bdeb8443..ad21419ca7 100644
--- a/src/makefile.w32-in
+++ b/src/makefile.w32-in
@@ -1,6 +1,5 @@
# -*- Makefile -*- for GNU Emacs on the Microsoft W32 API.
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-# 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2000-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -29,7 +28,7 @@ EMACSLOADPATH=$(CURDIR)/../lisp
# HAVE_CONFIG_H is required by some generic gnu sources stuck into
# the emacs source tree.
#
-LOCAL_FLAGS = -Demacs=1 -DHAVE_CONFIG_H -I../nt/inc -DHAVE_NTGUI=1 $(EMACS_EXTRA_C_FLAGS)
+LOCAL_FLAGS = -Demacs=1 -DHAVE_CONFIG_H -I../lib -I../nt/inc -DHAVE_NTGUI=1 $(EMACS_EXTRA_C_FLAGS)
SRC = .
EMACS = $(BLD)/emacs.exe
@@ -41,6 +40,7 @@ TLIB2 = $(BLD)/temacs2.$(A)
TOBJ = $(BLD)/firstfile.$(O)
TRES = $(BLD)/emacs.res
TLASTLIB = $(BLD)/lastfile.$(A)
+GNULIB = ../lib/$(BLD)/libgnu.$(A)
DOC = $(OBJDIR)/etc/DOC-X
@@ -141,6 +141,7 @@ LIBS = $(TLIB0) \
$(TLIB1) \
$(TLIB2) \
$(TLASTLIB) \
+ $(GNULIB) \
$(WINMM) \
$(ADVAPI32) \
$(GDI32) \
@@ -165,7 +166,7 @@ all: $(ALL)
emacs: stamp_BLD $(EMACS)
$(EMACS): $(DOC) $(TEMACS)
"$(THISDIR)/$(BLD)/temacs.exe" -batch -l loadup dump
- -"$(THISDIR)/$(BLD)/emacs.exe" -q -batch -f list-load-path-shadows
+ -"$(THISDIR)/$(BLD)/emacs.exe" -batch -f list-load-path-shadows
#
# The undumped executable
@@ -175,7 +176,7 @@ $(EMACS): $(DOC) $(TEMACS)
#
temacs: stamp_BLD $(TEMACS)
$(TEMACS): $(TLIB0) $(TLIB1) $(TLIB2) $(TLASTLIB) $(TOBJ) $(TRES) \
- ../nt/$(BLD)/addsection.exe
+ ../nt/$(BLD)/addsection.exe $(GNULIB)
$(LINK) $(LINK_OUT)$(TEMACS_TMP) $(FULL_LINK_FLAGS) $(TOBJ) $(TRES) $(LIBS)
"../nt/$(BLD)/addsection" "$(TEMACS_TMP)" "$(TEMACS)" EMHEAP 21
@@ -193,6 +194,9 @@ make-buildobj-CMD:
echo $(OBJ2) \>> buildobj.h
echo ^">> buildobj.h
+# "
+# The above line is here to countermand the single quote
+# on the last "echo" command above, wrt font-lock.
make-buildobj-SH:
echo '#define BUILDOBJ $(DQUOTE)\' > buildobj.h
echo $(OBJ0) '\' >> buildobj.h
diff --git a/src/marker.c b/src/marker.c
index 3f8b78e81a..1e0e1404fd 100644
--- a/src/marker.c
+++ b/src/marker.c
@@ -1,6 +1,5 @@
/* Markers: examining, setting and deleting.
- Copyright (C) 1985, 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1997-1998, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -34,10 +33,6 @@ static int cached_modiff;
static void byte_char_debug_check (struct buffer *, EMACS_INT, EMACS_INT);
-/* Nonzero means enable debugging checks on byte/char correspondences. */
-
-static int byte_debug_flag;
-
void
clear_charpos_cache (struct buffer *b)
{
@@ -897,10 +892,8 @@ syms_of_marker (void)
defsubr (&Sset_marker_insertion_type);
defsubr (&Sbuffer_has_markers_at);
- DEFVAR_BOOL ("byte-debug-flag", &byte_debug_flag,
+ DEFVAR_BOOL ("byte-debug-flag", byte_debug_flag,
doc: /* Non-nil enables debugging checks in byte/char position conversions. */);
byte_debug_flag = 0;
}
-/* arch-tag: 50aa418f-cdd0-4838-b64b-94aa4b2a3b74
- (do not change this comment) */
diff --git a/src/md5.c b/src/md5.c
index 6e7f651189..9d9d7d8f14 100644
--- a/src/md5.c
+++ b/src/md5.c
@@ -428,5 +428,3 @@ md5_process_block (const void *buffer, size_t len, struct md5_ctx *ctx)
ctx->D = D;
}
-/* arch-tag: 60084f04-b434-42cb-9d2b-e91df01f4325
- (do not change this comment) */
diff --git a/src/md5.h b/src/md5.h
index cf9566b864..8ab7305037 100644
--- a/src/md5.h
+++ b/src/md5.h
@@ -146,5 +146,3 @@ extern void *md5_buffer (const char *buffer, size_t len,
#endif /* md5.h */
-/* arch-tag: 7cd389f3-6c40-4950-999d-0b2ebd1d20d7
- (do not change this comment) */
diff --git a/src/mem-limits.h b/src/mem-limits.h
index 9ec1558527..09be61be52 100644
--- a/src/mem-limits.h
+++ b/src/mem-limits.h
@@ -1,6 +1,5 @@
/* Includes for memory limit warnings.
- Copyright (C) 1990, 1993, 1994, 1995, 1996, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1990, 1993-1996, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -46,5 +45,3 @@ extern char *start_of_data (void);
#define EXCEEDS_LISP_PTR(ptr) ((EMACS_UINT) (ptr) >> VALBITS)
#endif
-/* arch-tag: fe39244e-e54f-4208-b7aa-02556f7841c5
- (do not change this comment) */
diff --git a/src/menu.c b/src/menu.c
index 05a296e45f..851f1ac804 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -1,6 +1,7 @@
/* Platform-independent code for terminal communications.
- Copyright (C) 1986, 1988, 1993, 1994, 1996, 1999, 2000, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1986, 1988, 1993-1994, 1996, 1999-2011
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -695,7 +696,7 @@ digest_single_submenu (int start, int end, int top_level_items)
#endif
pane_string = (NILP (pane_name)
- ? "" : (char *) SDATA (pane_name));
+ ? "" : SSDATA (pane_name));
/* If there is just one top-level pane, put all its items directly
under the top-level menu. */
if (menu_items_n_panes == 1)
@@ -847,7 +848,7 @@ update_submenu_strings (widget_value *first_wv)
{
if (STRINGP (wv->lname))
{
- wv->name = (char *) SDATA (wv->lname);
+ wv->name = SSDATA (wv->lname);
/* Ignore the @ that means "separate pane".
This is a kludge, but this isn't worth more time. */
@@ -860,7 +861,7 @@ update_submenu_strings (widget_value *first_wv)
}
if (STRINGP (wv->lkey))
- wv->key = (char *) SDATA (wv->lkey);
+ wv->key = SSDATA (wv->lkey);
if (wv->contents)
update_submenu_strings (wv->contents);
@@ -1353,6 +1354,3 @@ syms_of_menu (void)
defsubr (&Sx_popup_menu);
}
-
-/* arch-tag: 78bbc7cf-8025-4156-aa8a-6c7fd99bf51d
- (do not change this comment) */
diff --git a/src/menu.h b/src/menu.h
index 5e62327da9..c3978dae8e 100644
--- a/src/menu.h
+++ b/src/menu.h
@@ -1,5 +1,5 @@
/* Functions to manipulate menus.
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2008-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -19,8 +19,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifndef MENU_H
#define MENU_H
-extern Lisp_Object Vmenu_updating_frame;
-
extern void x_set_menu_bar_lines (struct frame *f,
Lisp_Object value,
Lisp_Object oldval);
@@ -53,5 +51,3 @@ extern Lisp_Object xmenu_show (FRAME_PTR, int, int, int, int,
Lisp_Object, const char **, EMACS_UINT);
#endif /* MENU_H */
-/* arch-tag: c32b2778-724d-4e85-81d7-45f98530a988
- (do not change this comment) */
diff --git a/src/minibuf.c b/src/minibuf.c
index 9dd32a8bab..a19a650d00 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -1,7 +1,6 @@
/* Minibuffer input and completion.
- Copyright (C) 1985, 1986, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1985-1986, 1993-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -54,83 +53,25 @@ int minibuf_level;
/* The maximum length of a minibuffer history. */
-Lisp_Object Qhistory_length, Vhistory_length;
-
-/* No duplicates in history. */
-
-int history_delete_duplicates;
-
-/* Non-nil means add new input to history. */
-
-Lisp_Object Vhistory_add_new_input;
+Lisp_Object Qhistory_length;
/* Fread_minibuffer leaves the input here as a string. */
Lisp_Object last_minibuf_string;
-/* Nonzero means let functions called when within a minibuffer
- invoke recursive minibuffers (to read arguments, or whatever) */
-
-int enable_recursive_minibuffers;
-
-/* Nonzero means don't ignore text properties
- in Fread_from_minibuffer. */
-
-int minibuffer_allow_text_properties;
-
-/* help-form is bound to this while in the minibuffer. */
-
-Lisp_Object Vminibuffer_help_form;
-
-/* Variable which is the history list to add minibuffer values to. */
-
-Lisp_Object Vminibuffer_history_variable;
-
-/* Current position in the history list (adjusted by M-n and M-p). */
-
-Lisp_Object Vminibuffer_history_position;
-
-/* Text properties that are added to minibuffer prompts.
- These are in addition to the basic `field' property, and stickiness
- properties. */
-
-Lisp_Object Vminibuffer_prompt_properties;
-
Lisp_Object Qminibuffer_history, Qbuffer_name_history;
Lisp_Object Qread_file_name_internal;
/* Normal hooks for entry to and exit from minibuffer. */
-Lisp_Object Qminibuffer_setup_hook, Vminibuffer_setup_hook;
-Lisp_Object Qminibuffer_exit_hook, Vminibuffer_exit_hook;
-
-/* Function to call to read a buffer name. */
-Lisp_Object Vread_buffer_function;
+Lisp_Object Qminibuffer_setup_hook;
+Lisp_Object Qminibuffer_exit_hook;
-/* Nonzero means completion ignores case. */
-
-int completion_ignore_case;
Lisp_Object Qcompletion_ignore_case;
-int read_buffer_completion_ignore_case;
-
-/* List of regexps that should restrict possible completions. */
-
-Lisp_Object Vcompletion_regexp_list;
-
-/* Nonzero means raise the minibuffer frame when the minibuffer
- is entered. */
-
-int minibuffer_auto_raise;
-
-/* Keymap for reading expressions. */
-Lisp_Object Vread_expression_map;
-
-Lisp_Object Vminibuffer_completion_table, Qminibuffer_completion_table;
-Lisp_Object Vminibuffer_completion_predicate, Qminibuffer_completion_predicate;
-Lisp_Object Vminibuffer_completion_confirm, Qminibuffer_completion_confirm;
-Lisp_Object Vminibuffer_completing_file_name;
-
+Lisp_Object Qminibuffer_completion_table;
+Lisp_Object Qminibuffer_completion_predicate;
+Lisp_Object Qminibuffer_completion_confirm;
Lisp_Object Quser_variable_p;
Lisp_Object Qminibuffer_default;
@@ -1822,7 +1763,7 @@ the values STRING, PREDICATE and `lambda'. */)
{
/* Bypass intern-soft as that loses for nil. */
tem = oblookup (collection,
- SDATA (string),
+ SSDATA (string),
SCHARS (string),
SBYTES (string));
if (!SYMBOLP (tem))
@@ -1833,7 +1774,7 @@ the values STRING, PREDICATE and `lambda'. */)
string = Fstring_make_multibyte (string);
tem = oblookup (collection,
- SDATA (string),
+ SSDATA (string),
SCHARS (string),
SBYTES (string));
}
@@ -2075,48 +2016,53 @@ syms_of_minibuf (void)
Qcase_fold_search = intern_c_string ("case-fold-search");
staticpro (&Qcase_fold_search);
+ DEFVAR_LISP ("read-expression-history", Vread_expression_history,
+ doc: /* A history list for arguments that are Lisp expressions to evaluate.
+For example, `eval-expression' uses this. */);
+ Vread_expression_history = Qnil;
+
Qread_expression_history = intern_c_string ("read-expression-history");
staticpro (&Qread_expression_history);
- DEFVAR_LISP ("read-buffer-function", &Vread_buffer_function,
+ DEFVAR_LISP ("read-buffer-function", Vread_buffer_function,
doc: /* If this is non-nil, `read-buffer' does its work by calling this function.
The function is called with the arguments passed to `read-buffer'. */);
Vread_buffer_function = Qnil;
DEFVAR_BOOL ("read-buffer-completion-ignore-case",
- &read_buffer_completion_ignore_case,
+ read_buffer_completion_ignore_case,
doc: /* *Non-nil means completion ignores case when reading a buffer name. */);
read_buffer_completion_ignore_case = 0;
- DEFVAR_LISP ("minibuffer-setup-hook", &Vminibuffer_setup_hook,
+ DEFVAR_LISP ("minibuffer-setup-hook", Vminibuffer_setup_hook,
doc: /* Normal hook run just after entry to minibuffer. */);
Vminibuffer_setup_hook = Qnil;
- DEFVAR_LISP ("minibuffer-exit-hook", &Vminibuffer_exit_hook,
+ DEFVAR_LISP ("minibuffer-exit-hook", Vminibuffer_exit_hook,
doc: /* Normal hook run just after exit from minibuffer. */);
Vminibuffer_exit_hook = Qnil;
- DEFVAR_LISP ("history-length", &Vhistory_length,
+ DEFVAR_LISP ("history-length", Vhistory_length,
doc: /* *Maximum length for history lists before truncation takes place.
A number means that length; t means infinite. Truncation takes place
just after a new element is inserted. Setting the `history-length'
property of a history variable overrides this default. */);
XSETFASTINT (Vhistory_length, 30);
- DEFVAR_BOOL ("history-delete-duplicates", &history_delete_duplicates,
+ DEFVAR_BOOL ("history-delete-duplicates", history_delete_duplicates,
doc: /* *Non-nil means to delete duplicates in history.
If set to t when adding a new history element, all previous identical
elements are deleted from the history list. */);
history_delete_duplicates = 0;
- DEFVAR_LISP ("history-add-new-input", &Vhistory_add_new_input,
+ DEFVAR_LISP ("history-add-new-input", Vhistory_add_new_input,
doc: /* *Non-nil means to add new elements in history.
If set to nil, minibuffer reading functions don't add new elements to the
history list, so it is possible to do this afterwards by calling
`add-to-history' explicitly. */);
Vhistory_add_new_input = Qt;
- DEFVAR_BOOL ("completion-ignore-case", &completion_ignore_case,
+ DEFVAR_BOOL ("completion-ignore-case", completion_ignore_case,
doc: /* Non-nil means don't consider case significant in completion.
For file-name completion, `read-file-name-completion-ignore-case'
controls the behavior, rather than this variable.
@@ -2124,12 +2070,12 @@ For buffer name completion, `read-buffer-completion-ignore-case'
controls the behavior, rather than this variable. */);
completion_ignore_case = 0;
- DEFVAR_BOOL ("enable-recursive-minibuffers", &enable_recursive_minibuffers,
+ DEFVAR_BOOL ("enable-recursive-minibuffers", enable_recursive_minibuffers,
doc: /* *Non-nil means to allow minibuffer commands while in the minibuffer.
This variable makes a difference whenever the minibuffer window is active. */);
enable_recursive_minibuffers = 0;
- DEFVAR_LISP ("minibuffer-completion-table", &Vminibuffer_completion_table,
+ DEFVAR_LISP ("minibuffer-completion-table", Vminibuffer_completion_table,
doc: /* Alist or obarray used for completion in the minibuffer.
This becomes the ALIST argument to `try-completion' and `all-completions'.
The value can also be a list of strings or a hash table.
@@ -2144,11 +2090,11 @@ CODE can be nil, t or `lambda':
lambda -- return t if STRING is a valid completion as it stands. */);
Vminibuffer_completion_table = Qnil;
- DEFVAR_LISP ("minibuffer-completion-predicate", &Vminibuffer_completion_predicate,
+ DEFVAR_LISP ("minibuffer-completion-predicate", Vminibuffer_completion_predicate,
doc: /* Within call to `completing-read', this holds the PREDICATE argument. */);
Vminibuffer_completion_predicate = Qnil;
- DEFVAR_LISP ("minibuffer-completion-confirm", &Vminibuffer_completion_confirm,
+ DEFVAR_LISP ("minibuffer-completion-confirm", Vminibuffer_completion_confirm,
doc: /* Whether to demand confirmation of completion before exiting minibuffer.
If nil, confirmation is not required.
If the value is `confirm', the user may exit with an input that is not
@@ -2160,15 +2106,15 @@ If the value is `confirm-after-completion', the user may exit with an
Vminibuffer_completion_confirm = Qnil;
DEFVAR_LISP ("minibuffer-completing-file-name",
- &Vminibuffer_completing_file_name,
+ Vminibuffer_completing_file_name,
doc: /* Non-nil means completing file names. */);
Vminibuffer_completing_file_name = Qnil;
- DEFVAR_LISP ("minibuffer-help-form", &Vminibuffer_help_form,
+ DEFVAR_LISP ("minibuffer-help-form", Vminibuffer_help_form,
doc: /* Value that `help-form' takes on inside the minibuffer. */);
Vminibuffer_help_form = Qnil;
- DEFVAR_LISP ("minibuffer-history-variable", &Vminibuffer_history_variable,
+ DEFVAR_LISP ("minibuffer-history-variable", Vminibuffer_history_variable,
doc: /* History list symbol to add minibuffer values to.
Each string of minibuffer input, as it appears on exit from the minibuffer,
is added with
@@ -2176,16 +2122,16 @@ is added with
(cons STRING (symbol-value minibuffer-history-variable))) */);
XSETFASTINT (Vminibuffer_history_variable, 0);
- DEFVAR_LISP ("minibuffer-history-position", &Vminibuffer_history_position,
+ DEFVAR_LISP ("minibuffer-history-position", Vminibuffer_history_position,
doc: /* Current position of redoing in the history list. */);
Vminibuffer_history_position = Qnil;
- DEFVAR_BOOL ("minibuffer-auto-raise", &minibuffer_auto_raise,
+ DEFVAR_BOOL ("minibuffer-auto-raise", minibuffer_auto_raise,
doc: /* *Non-nil means entering the minibuffer raises the minibuffer's frame.
Some uses of the echo area also raise that frame (since they use it too). */);
minibuffer_auto_raise = 0;
- DEFVAR_LISP ("completion-regexp-list", &Vcompletion_regexp_list,
+ DEFVAR_LISP ("completion-regexp-list", Vcompletion_regexp_list,
doc: /* List of regexps that should restrict possible completions.
The basic completion functions only consider a completion acceptable
if it matches all regular expressions in this list, with
@@ -2195,14 +2141,14 @@ functions. */);
Vcompletion_regexp_list = Qnil;
DEFVAR_BOOL ("minibuffer-allow-text-properties",
- &minibuffer_allow_text_properties,
+ minibuffer_allow_text_properties,
doc: /* Non-nil means `read-from-minibuffer' should not discard text properties.
This also affects `read-string', but it does not affect `read-minibuffer',
`read-no-blanks-input', or any of the functions that do minibuffer input
with completion; they always discard text properties. */);
minibuffer_allow_text_properties = 0;
- DEFVAR_LISP ("minibuffer-prompt-properties", &Vminibuffer_prompt_properties,
+ DEFVAR_LISP ("minibuffer-prompt-properties", Vminibuffer_prompt_properties,
doc: /* Text properties that are added to minibuffer prompts.
These are in addition to the basic `field' property, and stickiness
properties. */);
@@ -2211,7 +2157,7 @@ properties. */);
Vminibuffer_prompt_properties
= Fcons (intern_c_string ("read-only"), Fcons (Qt, Qnil));
- DEFVAR_LISP ("read-expression-map", &Vread_expression_map,
+ DEFVAR_LISP ("read-expression-map", Vread_expression_map,
doc: /* Minibuffer keymap used for reading Lisp expressions. */);
Vread_expression_map = Qnil;
@@ -2240,4 +2186,3 @@ properties. */);
defsubr (&Sassoc_string);
defsubr (&Scompleting_read);
}
-
diff --git a/src/mktime.c b/src/mktime.c
deleted file mode 100644
index ede151981f..0000000000
--- a/src/mktime.c
+++ /dev/null
@@ -1,544 +0,0 @@
-/* Convert a `struct tm' to a time_t value.
- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
- Contributed by Paul Eggert ([email protected]).
-
- NOTE: The canonical source of this file is maintained with the GNU C Library.
- Bugs can be reported to [email protected].
-
- 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 2, 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, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-/* Define this to have a standalone program to test this implementation of
- mktime. */
-/* #define DEBUG 1 */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifdef _LIBC
-# define HAVE_LIMITS_H 1
-# define STDC_HEADERS 1
-#endif
-
-/* Assume that leap seconds are possible, unless told otherwise.
- If the host has a `zic' command with a `-L leapsecondfilename' option,
- then it supports leap seconds; otherwise it probably doesn't. */
-#ifndef LEAP_SECONDS_POSSIBLE
-# define LEAP_SECONDS_POSSIBLE 1
-#endif
-
-#include <sys/types.h> /* Some systems define `time_t' here. */
-#include <time.h>
-
-#if HAVE_LIMITS_H
-# include <limits.h>
-#endif
-
-#if DEBUG
-# include <stdio.h>
-# if STDC_HEADERS
-# include <stdlib.h>
-# endif
-/* Make it work even if the system's libc has its own mktime routine. */
-# define mktime my_mktime
-#endif /* DEBUG */
-
-#ifndef CHAR_BIT
-# define CHAR_BIT 8
-#endif
-
-/* The extra casts work around common compiler bugs. */
-#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
-/* The outer cast is needed to work around a bug in Cray C 5.0.3.0.
- It is necessary at least when t == time_t. */
-#define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \
- ? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) : (t) 0))
-#define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t)))
-
-#ifndef INT_MIN
-# define INT_MIN TYPE_MINIMUM (int)
-#endif
-#ifndef INT_MAX
-# define INT_MAX TYPE_MAXIMUM (int)
-#endif
-
-#ifndef TIME_T_MIN
-# define TIME_T_MIN TYPE_MINIMUM (time_t)
-#endif
-#ifndef TIME_T_MAX
-# define TIME_T_MAX TYPE_MAXIMUM (time_t)
-#endif
-
-#define TM_YEAR_BASE 1900
-#define EPOCH_YEAR 1970
-
-#ifndef __isleap
-/* Nonzero if YEAR is a leap year (every 4 years,
- except every 100th isn't, and every 400th is). */
-# define __isleap(year) \
- ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
-#endif
-
-/* How many days come before each month (0-12). */
-const unsigned short int __mon_yday[2][13] =
- {
- /* Normal years. */
- { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 },
- /* Leap years. */
- { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 }
- };
-
-
-#ifdef _LIBC
-# define my_mktime_localtime_r __localtime_r
-#else
-/* If we're a mktime substitute in a GNU program, then prefer
- localtime to localtime_r, since many localtime_r implementations
- are buggy. */
-static struct tm *
-my_mktime_localtime_r (const time_t *t, struct tm *tp)
-{
- struct tm *l = localtime (t);
- if (! l)
- return 0;
- *tp = *l;
- return tp;
-}
-#endif /* ! _LIBC */
-
-
-/* Yield the difference between (YEAR-YDAY HOUR:MIN:SEC) and (*TP),
- measured in seconds, ignoring leap seconds.
- YEAR uses the same numbering as TM->tm_year.
- All values are in range, except possibly YEAR.
- If TP is null, return a nonzero value.
- If overflow occurs, yield the low order bits of the correct answer. */
-static time_t
-ydhms_tm_diff (int year, int yday, int hour, int min, int sec, const struct tm *tp)
-{
- if (!tp)
- return 1;
- else
- {
- /* Compute intervening leap days correctly even if year is negative.
- Take care to avoid int overflow. time_t overflow is OK, since
- only the low order bits of the correct time_t answer are needed.
- Don't convert to time_t until after all divisions are done, since
- time_t might be unsigned. */
- int a4 = (year >> 2) + (TM_YEAR_BASE >> 2) - ! (year & 3);
- int b4 = (tp->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (tp->tm_year & 3);
- int a100 = a4 / 25 - (a4 % 25 < 0);
- int b100 = b4 / 25 - (b4 % 25 < 0);
- int a400 = a100 >> 2;
- int b400 = b100 >> 2;
- int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
- time_t years = year - (time_t) tp->tm_year;
- time_t days = (365 * years + intervening_leap_days
- + (yday - tp->tm_yday));
- return (60 * (60 * (24 * days + (hour - tp->tm_hour))
- + (min - tp->tm_min))
- + (sec - tp->tm_sec));
- }
-}
-
-/* Use CONVERT to convert *T to a broken down time in *TP.
- If *T is out of range for conversion, adjust it so that
- it is the nearest in-range value and then convert that. */
-static struct tm *
-ranged_convert (struct tm *(*convert) (const time_t *, struct tm *),
- time_t *t, struct tm *tp)
-{
- struct tm *r;
-
- if (! (r = (*convert) (t, tp)) && *t)
- {
- time_t bad = *t;
- time_t ok = 0;
- struct tm tm;
-
- /* BAD is a known unconvertible time_t, and OK is a known good one.
- Use binary search to narrow the range between BAD and OK until
- they differ by 1. */
- while (bad != ok + (bad < 0 ? -1 : 1))
- {
- time_t mid = *t = (bad < 0
- ? bad + ((ok - bad) >> 1)
- : ok + ((bad - ok) >> 1));
- if ((r = (*convert) (t, tp)))
- {
- tm = *r;
- ok = mid;
- }
- else
- bad = mid;
- }
-
- if (!r && ok)
- {
- /* The last conversion attempt failed;
- revert to the most recent successful attempt. */
- *t = ok;
- *tp = tm;
- r = tp;
- }
- }
-
- return r;
-}
-
-
-/* Convert *TP to a time_t value, inverting
- the monotonic and mostly-unit-linear conversion function CONVERT.
- Use *OFFSET to keep track of a guess at the offset of the result,
- compared to what the result would be for UTC without leap seconds.
- If *OFFSET's guess is correct, only one CONVERT call is needed. */
-time_t
-__mktime_internal (struct tm *tp, struct tm *(*convert) (const time_t *, struct tm *),
- time_t *offset)
-{
- time_t t, dt, t0, t1, t2;
- struct tm tm;
-
- /* The maximum number of probes (calls to CONVERT) should be enough
- to handle any combinations of time zone rule changes, solar time,
- leap seconds, and oscillations around a spring-forward gap.
- POSIX.1 prohibits leap seconds, but some hosts have them anyway. */
- int remaining_probes = 6;
-
- /* Time requested. Copy it in case CONVERT modifies *TP; this can
- occur if TP is localtime's returned value and CONVERT is localtime. */
- int sec = tp->tm_sec;
- int min = tp->tm_min;
- int hour = tp->tm_hour;
- int mday = tp->tm_mday;
- int mon = tp->tm_mon;
- int year_requested = tp->tm_year;
- int isdst = tp->tm_isdst;
-
- /* 1 if the previous probe was DST. */
- int dst2;
-
- /* Ensure that mon is in range, and set year accordingly. */
- int mon_remainder = mon % 12;
- int negative_mon_remainder = mon_remainder < 0;
- int mon_years = mon / 12 - negative_mon_remainder;
- int year = year_requested + mon_years;
-
- /* The other values need not be in range:
- the remaining code handles minor overflows correctly,
- assuming int and time_t arithmetic wraps around.
- Major overflows are caught at the end. */
-
- /* Calculate day of year from year, month, and day of month.
- The result need not be in range. */
- int yday = ((__mon_yday[__isleap (year + TM_YEAR_BASE)]
- [mon_remainder + 12 * negative_mon_remainder])
- + mday - 1);
-
- int sec_requested = sec;
-
- /* Only years after 1970 are defined.
- If year is 69, it might still be representable due to
- timezone differences. */
- if (year < 69)
- return -1;
-
-#if LEAP_SECONDS_POSSIBLE
- /* Handle out-of-range seconds specially,
- since ydhms_tm_diff assumes every minute has 60 seconds. */
- if (sec < 0)
- sec = 0;
- if (59 < sec)
- sec = 59;
-#endif
-
- /* Invert CONVERT by probing. First assume the same offset as last time.
- Then repeatedly use the error to improve the guess. */
-
- tm.tm_year = EPOCH_YEAR - TM_YEAR_BASE;
- tm.tm_yday = tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
- t0 = ydhms_tm_diff (year, yday, hour, min, sec, &tm);
-
- for (t = t1 = t2 = t0 + *offset, dst2 = 0;
- (dt = ydhms_tm_diff (year, yday, hour, min, sec,
- ranged_convert (convert, &t, &tm)));
- t1 = t2, t2 = t, t += dt, dst2 = tm.tm_isdst != 0)
- if (t == t1 && t != t2
- && (tm.tm_isdst < 0
- || (isdst < 0
- ? dst2 <= (tm.tm_isdst != 0)
- : (isdst != 0) != (tm.tm_isdst != 0))))
- /* We can't possibly find a match, as we are oscillating
- between two values. The requested time probably falls
- within a spring-forward gap of size DT. Follow the common
- practice in this case, which is to return a time that is DT
- away from the requested time, preferring a time whose
- tm_isdst differs from the requested value. (If no tm_isdst
- was requested and only one of the two values has a nonzero
- tm_isdst, prefer that value.) In practice, this is more
- useful than returning -1. */
- break;
- else if (--remaining_probes == 0)
- return -1;
-
- /* If we have a match, check whether tm.tm_isdst has the requested
- value, if any. */
- if (dt == 0 && isdst != tm.tm_isdst && 0 <= isdst && 0 <= tm.tm_isdst)
- {
- /* tm.tm_isdst has the wrong value. Look for a neighboring
- time with the right value, and use its UTC offset.
- Heuristic: probe the previous three calendar quarters (approximately),
- looking for the desired isdst. This isn't perfect,
- but it's good enough in practice. */
- int quarter = 7889238; /* seconds per average 1/4 Gregorian year */
- int i;
-
- /* If we're too close to the time_t limit, look in future quarters. */
- if (t < TIME_T_MIN + 3 * quarter)
- quarter = -quarter;
-
- for (i = 1; i <= 3; i++)
- {
- time_t ot = t - i * quarter;
- struct tm otm;
- ranged_convert (convert, &ot, &otm);
- if (otm.tm_isdst == isdst)
- {
- /* We found the desired tm_isdst.
- Extrapolate back to the desired time. */
- t = ot + ydhms_tm_diff (year, yday, hour, min, sec, &otm);
- ranged_convert (convert, &t, &tm);
- break;
- }
- }
- }
-
- *offset = t - t0;
-
-#if LEAP_SECONDS_POSSIBLE
- if (sec_requested != tm.tm_sec)
- {
- /* Adjust time to reflect the tm_sec requested, not the normalized value.
- Also, repair any damage from a false match due to a leap second. */
- t += sec_requested - sec + (sec == 0 && tm.tm_sec == 60);
- if (! (*convert) (&t, &tm))
- return -1;
- }
-#endif
-
- if (TIME_T_MAX / INT_MAX / 366 / 24 / 60 / 60 < 3)
- {
- /* time_t isn't large enough to rule out overflows in ydhms_tm_diff,
- so check for major overflows. A gross check suffices,
- since if t has overflowed, it is off by a multiple of
- TIME_T_MAX - TIME_T_MIN + 1. So ignore any component of
- the difference that is bounded by a small value. */
-
- double dyear = (double) year_requested + mon_years - tm.tm_year;
- double dday = 366 * dyear + mday;
- double dsec = 60 * (60 * (24 * dday + hour) + min) + sec_requested;
-
- /* On Irix4.0.5 cc, dividing TIME_T_MIN by 3 does not produce
- correct results, ie., it erroneously gives a positive value
- of 715827882. Setting a variable first then doing math on it
- seems to work. ([email protected]) */
-
- const time_t time_t_max = TIME_T_MAX;
- const time_t time_t_min = TIME_T_MIN;
-
- if (time_t_max / 3 - time_t_min / 3 < (dsec < 0 ? - dsec : dsec))
- return -1;
- }
-
- if (year == 69)
- {
- /* If year was 69, need to check whether the time was representable
- or not. */
- if (t < 0 || t > 2 * 24 * 60 * 60)
- return -1;
- }
-
- *tp = tm;
- return t;
-}
-
-
-static time_t localtime_offset;
-
-/* Convert *TP to a time_t value. */
-time_t
-mktime (tp)
- struct tm *tp;
-{
-#ifdef _LIBC
- /* POSIX.1 8.1.1 requires that whenever mktime() is called, the
- time zone names contained in the external variable `tzname' shall
- be set as if the tzset() function had been called. */
- __tzset ();
-#endif
-
- return __mktime_internal (tp, my_mktime_localtime_r, &localtime_offset);
-}
-
-#ifdef weak_alias
-weak_alias (mktime, timelocal)
-#endif
-
-#if DEBUG
-
-static int
-not_equal_tm (a, b)
- struct tm *a;
- struct tm *b;
-{
- return ((a->tm_sec ^ b->tm_sec)
- | (a->tm_min ^ b->tm_min)
- | (a->tm_hour ^ b->tm_hour)
- | (a->tm_mday ^ b->tm_mday)
- | (a->tm_mon ^ b->tm_mon)
- | (a->tm_year ^ b->tm_year)
- | (a->tm_mday ^ b->tm_mday)
- | (a->tm_yday ^ b->tm_yday)
- | (a->tm_isdst ^ b->tm_isdst));
-}
-
-static void
-print_tm (tp)
- struct tm *tp;
-{
- if (tp)
- printf ("%04d-%02d-%02d %02d:%02d:%02d yday %03d wday %d isdst %d",
- tp->tm_year + TM_YEAR_BASE, tp->tm_mon + 1, tp->tm_mday,
- tp->tm_hour, tp->tm_min, tp->tm_sec,
- tp->tm_yday, tp->tm_wday, tp->tm_isdst);
- else
- printf ("0");
-}
-
-static int
-check_result (tk, tmk, tl, lt)
- time_t tk;
- struct tm tmk;
- time_t tl;
- struct tm *lt;
-{
- if (tk != tl || !lt || not_equal_tm (&tmk, lt))
- {
- printf ("mktime (");
- print_tm (&tmk);
- printf (")\nyields (");
- print_tm (lt);
- printf (") == %ld, should be %ld\n", (long) tl, (long) tk);
- return 1;
- }
-
- return 0;
-}
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- int status = 0;
- struct tm tm, tmk, tml;
- struct tm *lt;
- time_t tk, tl;
- char trailer;
-
- if ((argc == 3 || argc == 4)
- && (sscanf (argv[1], "%d-%d-%d%c",
- &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &trailer)
- == 3)
- && (sscanf (argv[2], "%d:%d:%d%c",
- &tm.tm_hour, &tm.tm_min, &tm.tm_sec, &trailer)
- == 3))
- {
- tm.tm_year -= TM_YEAR_BASE;
- tm.tm_mon--;
- tm.tm_isdst = argc == 3 ? -1 : atoi (argv[3]);
- tmk = tm;
- tl = mktime (&tmk);
- lt = localtime (&tl);
- if (lt)
- {
- tml = *lt;
- lt = &tml;
- }
- printf ("mktime returns %ld == ", (long) tl);
- print_tm (&tmk);
- printf ("\n");
- status = check_result (tl, tmk, tl, lt);
- }
- else if (argc == 4 || (argc == 5 && strcmp (argv[4], "-") == 0))
- {
- time_t from = atol (argv[1]);
- time_t by = atol (argv[2]);
- time_t to = atol (argv[3]);
-
- if (argc == 4)
- for (tl = from; tl <= to; tl += by)
- {
- lt = localtime (&tl);
- if (lt)
- {
- tmk = tml = *lt;
- tk = mktime (&tmk);
- status |= check_result (tk, tmk, tl, tml);
- }
- else
- {
- printf ("localtime (%ld) yields 0\n", (long) tl);
- status = 1;
- }
- }
- else
- for (tl = from; tl <= to; tl += by)
- {
- /* Null benchmark. */
- lt = localtime (&tl);
- if (lt)
- {
- tmk = tml = *lt;
- tk = tl;
- status |= check_result (tk, tmk, tl, tml);
- }
- else
- {
- printf ("localtime (%ld) yields 0\n", (long) tl);
- status = 1;
- }
- }
- }
- else
- printf ("Usage:\
-\t%s YYYY-MM-DD HH:MM:SS [ISDST] # Test given time.\n\
-\t%s FROM BY TO # Test values FROM, FROM+BY, ..., TO.\n\
-\t%s FROM BY TO - # Do not test those values (for benchmark).\n",
- argv[0], argv[0], argv[0]);
-
- return status;
-}
-
-#endif /* DEBUG */
-
-/*
-Local Variables:
-compile-command: "gcc -DDEBUG -DHAVE_LIMITS_H -DSTDC_HEADERS -Wall -W -O -g mktime.c -o mktime"
-End:
-*/
-
diff --git a/src/msdos.c b/src/msdos.c
index 0f9a2ff29e..eb73f54838 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -1,7 +1,6 @@
/* MS-DOS specific C utilities. -*- coding: raw-text -*-
- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+
+Copyright (C) 1993-1997, 1999-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -404,9 +403,6 @@ static unsigned long screen_old_address = 0;
/* Segment and offset of the virtual screen. If 0, DOS/V is NOT loaded. */
static unsigned short screen_virtual_segment = 0;
static unsigned short screen_virtual_offset = 0;
-/* A flag to control how to display unibyte 8-bit characters. */
-extern int unibyte_display_via_language_environment;
-
extern Lisp_Object Qcursor_type;
extern Lisp_Object Qbar, Qhbar;
@@ -846,7 +842,6 @@ IT_set_face (int face)
accomodate the screen attribute byte. */
#define MAX_SCREEN_BUF 160*2
-Lisp_Object Vdos_unsupported_char_glyph;
extern unsigned char *encode_terminal_code (struct glyph *, int,
struct coding_system *);
static void
@@ -4226,7 +4221,7 @@ syms_of_msdos (void)
Qreverse = intern_c_string ("reverse");
staticpro (&Qreverse);
- DEFVAR_LISP ("dos-unsupported-char-glyph", &Vdos_unsupported_char_glyph,
+ DEFVAR_LISP ("dos-unsupported-char-glyph", Vdos_unsupported_char_glyph,
doc: /* *Glyph to display instead of chars not supported by current codepage.
This variable is used only by MS-DOS terminals. */);
Vdos_unsupported_char_glyph = make_number ('\177');
@@ -4242,5 +4237,3 @@ This variable is used only by MS-DOS terminals. */);
#endif /* MSDOS */
-/* arch-tag: db404e92-52a5-475f-9eb2-1cb78dd05f30
- (do not change this comment) */
diff --git a/src/msdos.h b/src/msdos.h
index d07c28d410..6b076c1722 100644
--- a/src/msdos.h
+++ b/src/msdos.h
@@ -1,6 +1,5 @@
/* MS-DOS specific C utilities, interface.
- Copyright (C) 1993, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -113,5 +112,3 @@ void XMenuDestroy (Display *, XMenu *);
#endif /* not EMACS_MSDOS_H */
-/* arch-tag: ad21eeed-8fdb-4357-8007-36368a6bdbf3
- (do not change this comment) */
diff --git a/src/ndir.h b/src/ndir.h
index 92d198334b..cd7cdbe55f 100644
--- a/src/ndir.h
+++ b/src/ndir.h
@@ -39,5 +39,3 @@ extern void closedir (DIR *);
#define rewinddir( dirp ) seekdir( dirp, 0L )
-/* arch-tag: aea50570-ffb7-43fd-b423-7743b10fbe6e
- (do not change this comment) */
diff --git a/src/ns.mk b/src/ns.mk
index d674466a40..c364dae708 100644
--- a/src/ns.mk
+++ b/src/ns.mk
@@ -1,6 +1,6 @@
### autodeps.mk --- src/Makefile fragment for GNU Emacs
-## Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+## Copyright (C) 2008-2011 Free Software Foundation, Inc.
## This file is part of GNU Emacs.
diff --git a/src/nsfns.m b/src/nsfns.m
index 0b105ab6ff..f1bf8b6572 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -1,6 +1,6 @@
/* Functions for the NeXT/Open/GNUstep and MacOSX window system.
-Copyright (C) 1989, 1992, 1993, 1994, 2005, 2006, 2008, 2009, 2010
+Copyright (C) 1989, 1992-1994, 2005-2006, 2008-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -82,11 +82,7 @@ extern Lisp_Object Qunderline, Qundefined;
extern Lisp_Object Qheight, Qminibuffer, Qname, Qonly, Qwidth;
extern Lisp_Object Qunsplittable, Qmenu_bar_lines, Qbuffer_predicate, Qtitle;
extern Lisp_Object Qnone;
-extern Lisp_Object Vframe_title_format;
-/* The below are defined in frame.c. */
-
-extern Lisp_Object Vmenu_bar_mode, Vtool_bar_mode;
Lisp_Object Qbuffered;
Lisp_Object Qfontsize;
@@ -94,13 +90,6 @@ Lisp_Object Qfontsize;
/* hack for OS X file panels */
char panelOK = 0;
-/* Alist of elements (REGEXP . IMAGE) for images of icons associated
- to frames.*/
-static Lisp_Object Vns_icon_type_alist;
-
-/* Toolkit version support. */
-static Lisp_Object Vns_version_string;
-
EmacsTooltip *ns_tooltip;
/* Need forward declaration here to preserve organizational integrity of file */
@@ -473,55 +462,37 @@ x_set_icon_name (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
[NSString stringWithUTF8String: SDATA (arg)]];
}
-
static void
-ns_set_name_iconic (struct frame *f, Lisp_Object name, int explicit)
+ns_set_name_internal (FRAME_PTR f, Lisp_Object name)
{
+ struct gcpro gcpro1;
+ Lisp_Object encoded_name, encoded_icon_name;
+ NSString *str;
NSView *view = FRAME_NS_VIEW (f);
- NSTRACE (ns_set_name_iconic);
- if (ns_in_resize)
- return;
-
- /* Make sure that requests from lisp code override requests from
- Emacs redisplay code. */
- if (explicit)
- {
- /* If we're switching from explicit to implicit, we had better
- update the mode lines and thereby update the title. */
- if (f->explicit_name && NILP (name))
- update_mode_lines = 1;
+ GCPRO1 (name);
+ encoded_name = ENCODE_UTF_8 (name);
+ UNGCPRO;
- f->explicit_name = ! NILP (name);
- }
- else if (f->explicit_name)
- name = f->name;
+ str = [NSString stringWithUTF8String: SDATA (encoded_name)];
- /* title overrides explicit name */
- if (! NILP (f->title))
- name = f->title;
-
- /* icon_name overrides title and explicit name */
- if (! NILP (f->icon_name))
- name = f->icon_name;
+ /* Don't change the name if it's already NAME. */
+ if (! [[[view window] title] isEqualToString: str])
+ [[view window] setTitle: str];
- if (NILP (name))
- name = build_string([ns_app_name UTF8String]);
+ if (!STRINGP (f->icon_name))
+ encoded_icon_name = encoded_name;
else
- CHECK_STRING (name);
+ encoded_icon_name = ENCODE_UTF_8 (f->icon_name);
+
+ str = [NSString stringWithUTF8String: SDATA (encoded_icon_name)];
- /* Don't change the name if it's already NAME. */
if ([[view window] miniwindowTitle] &&
- ([[[view window] miniwindowTitle]
- isEqualToString: [NSString stringWithUTF8String:
- SDATA (name)]]))
- return;
+ ! [[[view window] miniwindowTitle] isEqualToString: str])
+ [[view window] setMiniwindowTitle: str];
- [[view window] setMiniwindowTitle:
- [NSString stringWithUTF8String: SDATA (name)]];
}
-
static void
ns_set_name (struct frame *f, Lisp_Object name, int explicit)
{
@@ -547,6 +518,12 @@ ns_set_name (struct frame *f, Lisp_Object name, int explicit)
if (NILP (name))
name = build_string([ns_app_name UTF8String]);
+ else
+ CHECK_STRING (name);
+
+ /* Don't change the name if it's already NAME. */
+ if (! NILP (Fstring_equal (name, f->name)))
+ return;
f->name = name;
@@ -554,17 +531,7 @@ ns_set_name (struct frame *f, Lisp_Object name, int explicit)
if (! NILP (f->title))
name = f->title;
- CHECK_STRING (name);
-
- view = FRAME_NS_VIEW (f);
-
- /* Don't change the name if it's already NAME. */
- if ([[[view window] title]
- isEqualToString: [NSString stringWithUTF8String:
- SDATA (name)]])
- return;
- [[view window] setTitle: [NSString stringWithUTF8String:
- SDATA (name)]];
+ ns_set_name_internal (f, name);
}
@@ -575,7 +542,6 @@ static void
x_explicitly_set_name (FRAME_PTR f, Lisp_Object arg, Lisp_Object oldval)
{
NSTRACE (x_explicitly_set_name);
- ns_set_name_iconic (f, arg, 1);
ns_set_name (f, arg, 1);
}
@@ -587,9 +553,10 @@ void
x_implicitly_set_name (FRAME_PTR f, Lisp_Object arg, Lisp_Object oldval)
{
NSTRACE (x_implicitly_set_name);
- if (FRAME_ICONIFIED_P (f))
- ns_set_name_iconic (f, arg, 0);
- else if (FRAME_NS_P (f) && EQ (Vframe_title_format, Qt))
+
+ /* Deal with NS specific format t. */
+ if (FRAME_NS_P (f) && ((FRAME_ICONIFIED_P (f) && EQ (Vicon_title_format, Qt))
+ || EQ (Vframe_title_format, Qt)))
ns_set_name_as_filename (f);
else
ns_set_name (f, arg, 0);
@@ -597,15 +564,8 @@ x_implicitly_set_name (FRAME_PTR f, Lisp_Object arg, Lisp_Object oldval)
/* Change the title of frame F to NAME.
- If NAME is nil, use the frame name as the title.
-
- If EXPLICIT is non-zero, that indicates that lisp code is setting the
- name; if NAME is a string, set F's name to NAME and set
- F->explicit_name; if NAME is Qnil, then clear F->explicit_name.
+ If NAME is nil, use the frame name as the title. */
- If EXPLICIT is zero, that indicates that Emacs redisplay code is
- suggesting a new name, which lisp code should override; if
- F->explicit_name is set, ignore the new name; otherwise, set it. */
static void
x_set_title (struct frame *f, Lisp_Object name, Lisp_Object old_name)
{
@@ -617,6 +577,13 @@ x_set_title (struct frame *f, Lisp_Object name, Lisp_Object old_name)
update_mode_lines = 1;
f->title = name;
+
+ if (NILP (name))
+ name = f->name;
+ else
+ CHECK_STRING (name);
+
+ ns_set_name_internal (f, name);
}
@@ -624,10 +591,13 @@ void
ns_set_name_as_filename (struct frame *f)
{
NSView *view;
- Lisp_Object name;
+ Lisp_Object name, filename;
Lisp_Object buf = XWINDOW (f->selected_window)->buffer;
const char *title;
NSAutoreleasePool *pool;
+ struct gcpro gcpro1;
+ Lisp_Object encoded_name, encoded_filename;
+ NSString *str;
NSTRACE (ns_set_name_as_filename);
if (f->explicit_name || ! NILP (f->title) || ns_in_resize)
@@ -635,56 +605,66 @@ ns_set_name_as_filename (struct frame *f)
BLOCK_INPUT;
pool = [[NSAutoreleasePool alloc] init];
- name = XBUFFER (buf)->filename;
- if (NILP (name) || FRAME_ICONIFIED_P (f)) name =XBUFFER (buf)->name;
-
- if (FRAME_ICONIFIED_P (f) && !NILP (f->icon_name))
- name = f->icon_name;
+ filename = XBUFFER (buf)->filename;
+ name = XBUFFER (buf)->name;
if (NILP (name))
- name = build_string ([ns_app_name UTF8String]);
- else
- CHECK_STRING (name);
+ {
+ if (! NILP (filename))
+ name = Ffile_name_nondirectory (filename);
+ else
+ name = build_string ([ns_app_name UTF8String]);
+ }
+
+ GCPRO1 (name);
+ encoded_name = ENCODE_UTF_8 (name);
+ UNGCPRO;
view = FRAME_NS_VIEW (f);
title = FRAME_ICONIFIED_P (f) ? [[[view window] miniwindowTitle] UTF8String]
: [[[view window] title] UTF8String];
- if (title && (! strcmp (title, SDATA (name))))
+ if (title && (! strcmp (title, SDATA (encoded_name))))
{
[pool release];
UNBLOCK_INPUT;
return;
}
- if (! FRAME_ICONIFIED_P (f))
+ str = [NSString stringWithUTF8String: SDATA (encoded_name)];
+ if (str == nil) str = @"Bad coding";
+
+ if (FRAME_ICONIFIED_P (f))
+ [[view window] setMiniwindowTitle: str];
+ else
{
-#ifdef NS_IMPL_COCOA
- /* work around a bug observed on 10.3 where
- setTitleWithRepresentedFilename does not clear out previous state
- if given filename does not exist */
- NSString *str = [NSString stringWithUTF8String: SDATA (name)];
- if (![[NSFileManager defaultManager] fileExistsAtPath: str])
+ NSString *fstr;
+
+ if (! NILP (filename))
{
- [[view window] setTitleWithRepresentedFilename: @""];
- [[view window] setTitle: str];
+ GCPRO1 (filename);
+ encoded_filename = ENCODE_UTF_8 (filename);
+ UNGCPRO;
+
+ fstr = [NSString stringWithUTF8String: SDATA (encoded_filename)];
+ if (fstr == nil) fstr = @"";
+#ifdef NS_IMPL_COCOA
+ /* work around a bug observed on 10.3 and later where
+ setTitleWithRepresentedFilename does not clear out previous state
+ if given filename does not exist */
+ if (! [[NSFileManager defaultManager] fileExistsAtPath: fstr])
+ [[view window] setRepresentedFilename: @""];
+#endif
}
else
- {
- [[view window] setTitleWithRepresentedFilename: str];
- }
-#else
- [[view window] setTitleWithRepresentedFilename:
- [NSString stringWithUTF8String: SDATA (name)]];
-#endif
+ fstr = @"";
+
+ [[view window] setRepresentedFilename: fstr];
+ [[view window] setTitle: str];
f->name = name;
}
- else
- {
- [[view window] setMiniwindowTitle:
- [NSString stringWithUTF8String: SDATA (name)]];
- }
+
[pool release];
UNBLOCK_INPUT;
}
@@ -2602,7 +2582,7 @@ syms_of_nsfns (void)
Qfontsize = intern_c_string ("fontsize");
staticpro (&Qfontsize);
- DEFVAR_LISP ("ns-icon-type-alist", &Vns_icon_type_alist,
+ DEFVAR_LISP ("ns-icon-type-alist", Vns_icon_type_alist,
doc: /* Alist of elements (REGEXP . IMAGE) for images of icons associated to frames.
If the title of a frame matches REGEXP, then IMAGE.tiff is
selected as the image of the icon representing the frame when it's
@@ -2623,7 +2603,7 @@ When you miniaturize a Group, Summary or Article frame, Gnus.tiff will
be used as the image of the icon representing the frame. */);
Vns_icon_type_alist = Fcons (Qt, Qnil);
- DEFVAR_LISP ("ns-version-string", &Vns_version_string,
+ DEFVAR_LISP ("ns-version-string", Vns_version_string,
doc: /* Toolkit version for NS Windowing. */);
Vns_version_string = ns_appkit_version_str ();
diff --git a/src/nsfont.m b/src/nsfont.m
index b389875886..68cd19da70 100644
--- a/src/nsfont.m
+++ b/src/nsfont.m
@@ -1,6 +1,6 @@
/* Font back-end driver for the NeXT/Open/GNUstep and MacOSX window system.
See font.h
- Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2006-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -48,10 +48,8 @@ Author: Adrian Robert ([email protected])
extern Lisp_Object Qns;
extern Lisp_Object Qnormal, Qbold, Qitalic, Qcondensed, Qexpanded;
-static Lisp_Object Vns_reg_to_script;
static Lisp_Object Qapple, Qroman, Qmedium;
extern Lisp_Object Qappend;
-extern Lisp_Object ns_antialias_text;
extern float ns_antialias_threshold;
extern int ns_tmp_flags;
extern struct nsfont_info *ns_tmp_font;
@@ -811,6 +809,14 @@ nsfont_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size)
const char *fontName = [[nsfont fontName] UTF8String];
int len = strlen (fontName);
+ /* The values specified by fonts are not always exact. For
+ * example, a 6x8 font could specify that the descender is
+ * -2.00000405... (represented by 0xc000000220000000). Without
+ * adjustment, the code below would round the descender to -3,
+ * resulting in a font that would be one pixel higher than
+ * intended. */
+ CGFloat adjusted_descender = [sfont descender] + 0.0001;
+
#ifdef NS_IMPL_GNUSTEP
font_info->nsfont = sfont;
#else
@@ -832,7 +838,7 @@ nsfont_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size)
brect = [sfont boundingRectForFont];
full_height = brect.size.height;
- min_height = [sfont ascender] - [sfont descender];
+ min_height = [sfont ascender] - adjusted_descender;
hd = full_height - min_height;
/* standard height, similar to Carbon. Emacs.app: was 0.5 by default. */
@@ -847,10 +853,10 @@ nsfont_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size)
/* max bounds */
font_info->max_bounds.ascent =
lrint (hshrink * [sfont ascender] + expand * hd/2);
- /* [sfont descender] is usually negative. Use floor to avoid
+ /* Descender is usually negative. Use floor to avoid
clipping descenders. */
font_info->max_bounds.descent =
- -lrint (floor(hshrink* [sfont descender] - expand*hd/2));
+ -lrint (floor(hshrink* adjusted_descender - expand*hd/2));
font_info->height =
font_info->max_bounds.ascent + font_info->max_bounds.descent;
font_info->max_bounds.width = lrint (font_info->width);
@@ -886,7 +892,7 @@ nsfont_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size)
/* set up metrics portion of font struct */
font->ascent = lrint([sfont ascender]);
- font->descent = -lrint(floor([sfont descender]));
+ font->descent = -lrint(floor(adjusted_descender));
font->min_width = ns_char_width(sfont, '|');
font->space_width = lrint (ns_char_width (sfont, ' '));
font->average_width = lrint (font_info->width);
@@ -1517,8 +1523,7 @@ syms_of_nsfont (void)
DEFSYM (Qapple, "apple");
DEFSYM (Qroman, "roman");
DEFSYM (Qmedium, "medium");
- DEFVAR_LISP ("ns-reg-to-script", &Vns_reg_to_script,
+ DEFVAR_LISP ("ns-reg-to-script", Vns_reg_to_script,
doc: /* Internal use: maps font registry to unicode script. */);
}
-// arch-tag: d6c3c6f0-62de-4978-8b1e-b7966fe02cae
diff --git a/src/nsgui.h b/src/nsgui.h
index c8fe06a82e..a695563094 100644
--- a/src/nsgui.h
+++ b/src/nsgui.h
@@ -1,5 +1,5 @@
/* Definitions and headers for communication on the NeXT/Open/GNUstep API.
- Copyright (C) 1995, 2005, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1995, 2005, 2008-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -198,5 +198,3 @@ typedef struct _NSRect { NSPoint origin; NSSize size; } NSRect;
#endif /* __NSGUI_H__ */
-/* arch-tag: b2af3275-62c3-45b4-9335-4c9635c67e55
- (do not change this comment) */
diff --git a/src/nsimage.m b/src/nsimage.m
index 81198be086..c38cefdc5d 100644
--- a/src/nsimage.m
+++ b/src/nsimage.m
@@ -1,5 +1,5 @@
/* Image support for the NeXT/Open/GNUstep and MacOSX window system.
- Copyright (C) 1989, 1992, 1993, 1994, 2005, 2006, 2008, 2009, 2010
+ Copyright (C) 1989, 1992-1994, 2005-2006, 2008-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -499,4 +499,3 @@ static EmacsImage *ImageList = nil;
@end
-// arch-tag: 6b310280-6892-4e5e-8f34-41c4d384874f
diff --git a/src/nsmenu.m b/src/nsmenu.m
index 973f2c15e2..e8d4a25690 100644
--- a/src/nsmenu.m
+++ b/src/nsmenu.m
@@ -1,5 +1,5 @@
/* NeXT/Open/GNUstep and MacOSX Cocoa menu and toolbar module.
- Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2007-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -65,8 +65,7 @@ extern Lisp_Object Qundefined, Qmenu_enable, Qmenu_bar_update_hook;
extern Lisp_Object QCtoggle, QCradio;
Lisp_Object Qdebug_on_next_call;
-extern Lisp_Object Voverriding_local_map, Voverriding_local_map_menu_flag,
- Qoverriding_local_map, Qoverriding_terminal_local_map;
+extern Lisp_Object Qoverriding_local_map, Qoverriding_terminal_local_map;
extern long context_menu_value;
EmacsMenu *mainMenu, *svcsMenu, *dockMenu;
@@ -356,7 +355,7 @@ ns_update_menubar (struct frame *f, int deep_p, EmacsMenu *submenu)
/* if (submenu && strcmp (submenuTitle, SDATA (string)))
continue; */
- wv->name = (char *) SDATA (string);
+ wv->name = SSDATA (string);
update_submenu_strings (wv->contents);
wv = wv->next;
}
@@ -445,7 +444,7 @@ ns_update_menubar (struct frame *f, int deep_p, EmacsMenu *submenu)
strncpy (previous_strings[i/4], SDATA (string), 10);
wv = xmalloc_widget_value ();
- wv->name = (char *) SDATA (string);
+ wv->name = SSDATA (string);
wv->value = 0;
wv->enabled = 1;
wv->button_type = BUTTON_TYPE_NONE;
@@ -507,21 +506,6 @@ set_frame_menubar (struct frame *f, int first_time, int deep_p)
}
-/* Utility (from macmenu.c): is this item a separator? */
-static int
-name_is_separator ( const char *name)
-{
- const char *start = name;
-
- /* Check if name string consists of only dashes ('-'). */
- while (*name == '-') name++;
- /* Separators can also be of the form "--:TripleSuperMegaEtched"
- or "--deep-shadow". We don't implement them yet, se we just treat
- them like normal separators. */
- return (*name == '\0' || start + 2 == name);
-}
-
-
/* ==========================================================================
Menu: class implementation
@@ -624,7 +608,7 @@ name_is_separator ( const char *name)
NSMenuItem *item;
widget_value *wv = (widget_value *)wvptr;
- if (name_is_separator (wv->name))
+ if (menu_separator_name_p (wv->name))
{
item = [NSMenuItem separatorItem];
[self addItem: item];
@@ -849,7 +833,7 @@ ns_menu_show (FRAME_PTR f, int x, int y, int for_click, int keymaps,
}
#endif
pane_string = (NILP (pane_name)
- ? "" : (char *) SDATA (pane_name));
+ ? "" : SSDATA (pane_name));
/* If there is just one top-level pane, put all its items directly
under the top-level menu. */
if (menu_items_n_panes == 1)
@@ -914,9 +898,9 @@ ns_menu_show (FRAME_PTR f, int x, int y, int for_click, int keymaps,
prev_wv->next = wv;
else
save_wv->contents = wv;
- wv->name = (char *) SDATA (item_name);
+ wv->name = SSDATA (item_name);
if (!NILP (descrip))
- wv->key = (char *) SDATA (descrip);
+ wv->key = SSDATA (descrip);
wv->value = 0;
/* If this item has a null value,
make the call_data null so that it won't display a box
@@ -965,7 +949,7 @@ ns_menu_show (FRAME_PTR f, int x, int y, int for_click, int keymaps,
title = ENCODE_MENU_STRING (title);
#endif
- wv_title->name = (char *) SDATA (title);
+ wv_title->name = SSDATA (title);
wv_title->enabled = NO;
wv_title->button_type = BUTTON_TYPE_NONE;
wv_title->help = Qnil;
@@ -1052,7 +1036,7 @@ update_frame_tool_bar (FRAME_PTR f)
helpObj = TOOLPROP (TOOL_BAR_ITEM_HELP);
if (NILP (helpObj))
helpObj = TOOLPROP (TOOL_BAR_ITEM_CAPTION);
- helpText = NILP (helpObj) ? "" : (char *)SDATA (helpObj);
+ helpText = NILP (helpObj) ? "" : SSDATA (helpObj);
/* Ignore invalid image specifications. */
if (!valid_image_p (image))
@@ -1812,4 +1796,3 @@ syms_of_nsmenu (void)
staticpro (&Qdebug_on_next_call);
}
-// arch-tag: 75773656-52e5-4c44-a398-47bd87b32619
diff --git a/src/nsselect.m b/src/nsselect.m
index 786ca36069..299a24e4a8 100644
--- a/src/nsselect.m
+++ b/src/nsselect.m
@@ -1,5 +1,5 @@
/* NeXT/Open/GNUstep / MacOSX Cocoa selection processing for emacs.
- Copyright (C) 1993, 1994, 2005, 2006, 2008, 2009, 2010
+ Copyright (C) 1993-1994, 2005-2006, 2008-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -39,11 +39,6 @@ GNUstep port and post-20 update by Adrian Robert ([email protected])
Lisp_Object QCLIPBOARD, QSECONDARY, QTEXT, QFILE_NAME;
-static Lisp_Object Vns_sent_selection_hooks;
-static Lisp_Object Vns_lost_selection_hooks;
-static Lisp_Object Vselection_alist;
-static Lisp_Object Vselection_converter_alist;
-
static Lisp_Object Qforeign_selection;
/* NSGeneralPboard is pretty much analogous to X11 CLIPBOARD */
@@ -158,8 +153,10 @@ ns_string_to_pasteboard_internal (id pb, Lisp_Object str, NSString *gtype)
CHECK_STRING (str);
utfStr = SDATA (str);
- nsStr = [NSString stringWithUTF8String: utfStr];
-
+ nsStr = [[NSString alloc] initWithBytesNoCopy: utfStr
+ length: SBYTES (str)
+ encoding: NSUTF8StringEncoding
+ freeWhenDone: NO];
if (gtype == nil)
{
[pb declareTypes: ns_send_types owner: nil];
@@ -171,6 +168,7 @@ ns_string_to_pasteboard_internal (id pb, Lisp_Object str, NSString *gtype)
{
[pb setString: nsStr forType: gtype];
}
+ [nsStr release];
}
}
@@ -308,6 +306,7 @@ ns_string_from_pasteboard (id pb)
{
NSString *type, *str;
const char *utfStr;
+ int length;
type = [pb availableTypeFromArray: ns_return_types];
if (type == nil)
@@ -349,17 +348,23 @@ ns_string_from_pasteboard (id pb)
options: NSLiteralSearch range: NSMakeRange (0, [mstr length])];
utfStr = [mstr UTF8String];
- if (!utfStr)
- utfStr = [mstr cString];
+ length = [mstr lengthOfBytesUsingEncoding: NSUTF8StringEncoding];
+
+ if (!utfStr)
+ {
+ utfStr = [mstr cString];
+ length = strlen (utfStr);
+ }
}
NS_HANDLER
{
message1 ("ns_string_from_pasteboard: UTF8String failed\n");
utfStr = [str lossyCString];
+ length = strlen (utfStr);
}
NS_ENDHANDLER
- return build_string (utfStr);
+ return make_string (utfStr, length);
}
@@ -568,7 +573,7 @@ syms_of_nsselect (void)
Vselection_alist = Qnil;
staticpro (&Vselection_alist);
- DEFVAR_LISP ("ns-sent-selection-hooks", &Vns_sent_selection_hooks,
+ DEFVAR_LISP ("ns-sent-selection-hooks", Vns_sent_selection_hooks,
"A list of functions to be called when Emacs answers a selection request.\n\
The functions are called with four arguments:\n\
- the selection name (typically `PRIMARY', `SECONDARY', or `CLIPBOARD');\n\
@@ -582,7 +587,7 @@ This hook doesn't let you change the behavior of Emacs's selection replies,\n\
it merely informs you that they have happened.");
Vns_sent_selection_hooks = Qnil;
- DEFVAR_LISP ("selection-converter-alist", &Vselection_converter_alist,
+ DEFVAR_LISP ("selection-converter-alist", Vselection_converter_alist,
"An alist associating X Windows selection-types with functions.\n\
These functions are called to convert the selection, with three args:\n\
the name of the selection (typically `PRIMARY', `SECONDARY', or `CLIPBOARD');\n\
@@ -597,7 +602,7 @@ means that a side-effect was executed,\n\
and there is no meaningful selection value.");
Vselection_converter_alist = Qnil;
- DEFVAR_LISP ("ns-lost-selection-hooks", &Vns_lost_selection_hooks,
+ DEFVAR_LISP ("ns-lost-selection-hooks", Vns_lost_selection_hooks,
"A list of functions to be called when Emacs loses an X selection.\n\
\(This happens when some other X client makes its own selection\n\
or when a Lisp program explicitly clears the selection.)\n\
@@ -609,4 +614,3 @@ The functions are called with one argument, the selection type\n\
staticpro (&Qforeign_selection);
}
-// arch-tag: 39d1dde7-06a6-49ff-95a7-0e7af12d2218
diff --git a/src/nsterm.h b/src/nsterm.h
index 7ee960bd7a..09ec8c19b1 100644
--- a/src/nsterm.h
+++ b/src/nsterm.h
@@ -1,5 +1,5 @@
/* Definitions and headers for communication with NeXT/Open/GNUstep API.
- Copyright (C) 1989, 1993, 2005, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1989, 1993, 2005, 2008-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -66,6 +66,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
int rows, cols;
int scrollbarsNeedingUpdate;
EmacsToolbar *toolbar;
+ NSRect ns_userRect;
}
/* AppKit-side interface */
@@ -565,6 +566,12 @@ struct ns_output
/* This is the Emacs structure for the NS display this frame is on. */
struct ns_display_info *display_info;
+
+ /* Non-zero if we want to constrain the frame to the screen. */
+ int dont_constrain;
+
+ /* Non-zero if we are zooming (maximizing) the frame. */
+ int zooming;
};
/* this dummy decl needed to support TTYs */
@@ -812,5 +819,3 @@ extern char gnustep_base_version[]; /* version tracking */
#endif /* HAVE_NS */
-/* arch-tag: 0a28b142-4ac1-4a81-a243-abcd82d9c4e5
- (do not change this comment) */
diff --git a/src/nsterm.m b/src/nsterm.m
index 78d690c020..e83b14748d 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -1,5 +1,5 @@
/* NeXT/Open/GNUstep / MacOSX communication module.
- Copyright (C) 1989, 1993, 1994, 2005, 2006, 2008, 2009, 2010
+ Copyright (C) 1989, 1993-1994, 2005-2006, 2008-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -135,49 +135,10 @@ static unsigned convert_ns_to_X_keysym[] =
};
-/* Lisp communications */
-Lisp_Object ns_input_file, ns_input_font, ns_input_fontsize, ns_input_line;
-Lisp_Object ns_input_color, ns_input_text, ns_working_text;
-Lisp_Object ns_input_spi_name, ns_input_spi_arg;
-Lisp_Object Vx_toolkit_scroll_bars;
static Lisp_Object Qmodifier_value;
Lisp_Object Qalt, Qcontrol, Qhyper, Qmeta, Qsuper, Qnone;
extern Lisp_Object Qcursor_color, Qcursor_type, Qns, Qleft;
-/* Specifies which emacs modifier should be generated when NS receives
- the Alternate modifier. May be Qnone or any of the modifier lisp symbols. */
-Lisp_Object ns_alternate_modifier;
-
-/* Specifies which emacs modifier should be generated when NS receives
- the right Alternate modifier. Has same values as ns_alternate_modifier plus
- the value Qleft which means whatever value ns_alternate_modifier has. */
-Lisp_Object ns_right_alternate_modifier;
-
-/* Specifies which emacs modifier should be generated when NS receives
- the Command modifier. May be any of the modifier lisp symbols. */
-Lisp_Object ns_command_modifier;
-
-/* Specifies which emacs modifier should be generated when NS receives
- the right Command modifier. Has same values as ns_command_modifier plus
- the value Qleft which means whatever value ns_command_modifier has. */
-Lisp_Object ns_right_command_modifier;
-
-/* Specifies which emacs modifier should be generated when NS receives
- the Control modifier. May be any of the modifier lisp symbols. */
-Lisp_Object ns_control_modifier;
-
-/* Specifies which emacs modifier should be generated when NS receives
- the right Control modifier. Has same values as ns_control_modifier plus
- the value Qleft which means whatever value ns_control_modifier has. */
-Lisp_Object ns_right_control_modifier;
-
-/* Specifies which emacs modifier should be generated when NS receives
- the Function modifier (laptops). May be any of the modifier lisp symbols. */
-Lisp_Object ns_function_modifier;
-
-/* Control via default 'GSFontAntiAlias' on OS X and GNUstep. */
-Lisp_Object ns_antialias_text;
-
/* On OS X picks up the default NSGlobalDomain AppleAntiAliasingThreshold,
the maximum font size to NOT antialias. On GNUstep there is currently
no way to control this behavior. */
@@ -186,9 +147,6 @@ float ns_antialias_threshold;
/* Used to pick up AppleHighlightColor on OS X */
NSString *ns_selection_color;
-/* Confirm on exit. */
-Lisp_Object ns_confirm_quit;
-
NSArray *ns_send_types =0, *ns_return_types =0, *ns_drag_types =0;
NSString *ns_app_name = @"Emacs"; /* default changed later */
@@ -303,8 +261,6 @@ static void ns_condemn_scroll_bars (struct frame *f);
static void ns_judge_scroll_bars (struct frame *f);
void x_set_frame_alpha (struct frame *f);
-/* unused variables needed for compatibility reasons */
-int x_use_underline_position_properties, x_underline_at_descent_line;
/* FIXME: figure out what to do with underline_minimum_offset. */
@@ -1097,8 +1053,10 @@ x_set_offset (struct frame *f, int xoff, int yoff, int change_grav)
External: Position the window
-------------------------------------------------------------------------- */
{
- NSScreen *screen;
NSView *view = FRAME_NS_VIEW (f);
+ NSArray *screens = [NSScreen screens];
+ NSScreen *fscreen = [screens objectAtIndex: 0];
+ NSScreen *screen = [[view window] screen];
NSTRACE (x_set_offset);
@@ -1106,16 +1064,34 @@ x_set_offset (struct frame *f, int xoff, int yoff, int change_grav)
f->left_pos = xoff;
f->top_pos = yoff;
+
+ if (view != nil && screen && fscreen)
+ {
+ f->left_pos = f->size_hint_flags & XNegative
+ ? [screen visibleFrame].size.width + f->left_pos - FRAME_PIXEL_WIDTH (f)
+ : f->left_pos;
+ /* We use visibleFrame here to take menu bar into account.
+ Ideally we should also adjust left/top with visibleFrame.origin. */
+
+ f->top_pos = f->size_hint_flags & YNegative
+ ? ([screen visibleFrame].size.height + f->top_pos
+ - FRAME_PIXEL_HEIGHT (f) - FRAME_NS_TITLEBAR_HEIGHT (f)
+ - FRAME_TOOLBAR_HEIGHT (f))
+ : f->top_pos;
#ifdef NS_IMPL_GNUSTEP
- if (xoff < 100)
- f->left_pos = 100; /* don't overlap menu */
+ if (f->left_pos < 100)
+ f->left_pos = 100; /* don't overlap menu */
#endif
+ /* Constrain the setFrameTopLeftPoint so we don't move behind the
+ menu bar. */
+ f->output_data.ns->dont_constrain = 0;
+ [[view window] setFrameTopLeftPoint:
+ NSMakePoint (SCREENMAXBOUND (f->left_pos),
+ SCREENMAXBOUND ([fscreen frame].size.height
+ - NS_TOP_POS (f)))];
+ f->size_hint_flags &= ~(XNegative|YNegative);
+ }
- if (view != nil && (screen = [[view window] screen]))
- [[view window] setFrameTopLeftPoint:
- NSMakePoint (SCREENMAXBOUND (f->left_pos),
- SCREENMAXBOUND ([screen frame].size.height
- - NS_TOP_POS (f)))];
UNBLOCK_INPUT;
}
@@ -1125,13 +1101,12 @@ x_set_window_size (struct frame *f, int change_grav, int cols, int rows)
/* --------------------------------------------------------------------------
Adjust window pixel size based on given character grid size
Impl is a bit more complex than other terms, need to do some
- internal clipping and also pay attention to screen constraints.
+ internal clipping.
-------------------------------------------------------------------------- */
{
EmacsView *view = FRAME_NS_VIEW (f);
EmacsToolbar *toolbar = [view toolbar];
NSWindow *window = [view window];
- NSScreen *screen = [window screen];
NSRect wr = [window frame];
int tb = FRAME_EXTERNAL_TOOL_BAR (f);
int pixelwidth, pixelheight;
@@ -1182,31 +1157,13 @@ x_set_window_size (struct frame *f, int change_grav, int cols, int rows)
wr.size.height = pixelheight + FRAME_NS_TITLEBAR_HEIGHT (f)
+ FRAME_TOOLBAR_HEIGHT (f);
- /* constrain to screen if we can */
- if (screen)
- {
- NSSize sz = [screen visibleFrame].size;
- NSSize ez = { wr.size.width - sz.width, wr.size.height - sz.height };
- if (ez.width > 0)
- {
- int cr = ez.width / FRAME_COLUMN_WIDTH (f) + 1;
- cols -= cr;
- oldCols = cols;
- wr.size.width -= cr * FRAME_COLUMN_WIDTH (f);
- pixelwidth -= cr * FRAME_COLUMN_WIDTH (f);
- }
- if (ez.height > 0)
- {
- int rr = ez.height / FRAME_LINE_HEIGHT (f) + 1;
- rows -= rr;
- oldRows = rows;
- wr.size.height -= rr * FRAME_LINE_HEIGHT (f);
- pixelheight -= rr * FRAME_LINE_HEIGHT (f);
- }
- wr.origin.x = f->left_pos;
- wr.origin.y = [screen frame].size.height - NS_TOP_POS (f)
- - wr.size.height;
- }
+ /* Do not try to constrain to this screen. We may have multiple
+ screens, and want Emacs to span those. Constraining to screen
+ prevents that, and that is not nice to the user. */
+ if (f->output_data.ns->zooming)
+ f->output_data.ns->zooming = 0;
+ else
+ wr.origin.y += FRAME_PIXEL_HEIGHT (f) - pixelheight;
[view setRows: rows andColumns: cols];
[window setFrame: wr display: YES];
@@ -2286,6 +2243,8 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row,
struct glyph *phys_cursor_glyph;
int overspill;
struct glyph *cursor_glyph;
+ struct face *face;
+ NSColor *hollow_color = FRAME_BACKGROUND_COLOR (f);
/* If cursor is out of bounds, don't draw garbage. This can happen
in mini-buffer windows when switching between echo area glyphs
@@ -2295,7 +2254,7 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row,
//fprintf(stderr, "drawcursor (%d,%d) activep = %d\tonp = %d\tc_type = %d\twidth = %d\n",x,y, active_p,on_p,cursor_type,cursor_width);
if (!on_p)
- return;
+ return;
w->phys_cursor_type = cursor_type;
w->phys_cursor_on_p = on_p;
@@ -2334,7 +2293,17 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row,
/* TODO: only needed in rare cases with last-resort font in HELLO..
should we do this more efficiently? */
ns_clip_to_row (w, glyph_row, -1, NO); /* do ns_focus(f, &r, 1); if remove */
- [FRAME_CURSOR_COLOR (f) set];
+
+
+ face = FACE_FROM_ID (f, phys_cursor_glyph->face_id);
+ if (face && NS_FACE_BACKGROUND (face)
+ == ns_index_color (FRAME_CURSOR_COLOR (f), f))
+ {
+ [ns_lookup_indexed_color (NS_FACE_FOREGROUND (face), f) set];
+ hollow_color = FRAME_CURSOR_COLOR (f);
+ }
+ else
+ [FRAME_CURSOR_COLOR (f) set];
#ifdef NS_IMPL_COCOA
/* TODO: This makes drawing of cursor plus that of phys_cursor_glyph
@@ -2354,7 +2323,7 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row,
break;
case HOLLOW_BOX_CURSOR:
NSRectFill (r);
- [FRAME_BACKGROUND_COLOR (f) set];
+ [hollow_color set];
NSRectFill (NSInsetRect (r, 1, 1));
[FRAME_CURSOR_COLOR (f) set];
break;
@@ -3953,7 +3922,6 @@ ns_term_init (Lisp_Object display_name)
}
-extern Lisp_Object Vauto_save_list_file_name;
void
ns_term_shutdown (int sig)
{
@@ -4406,6 +4374,7 @@ ns_term_shutdown (int sig)
int flags;
static NSMutableArray *nsEvArray;
static BOOL firstTime = YES;
+ int left_is_none;
NSTRACE (keyDown);
@@ -4529,10 +4498,14 @@ ns_term_shutdown (int sig)
emacs_event->modifiers |=
parse_solitary_modifier (ns_function_modifier);
+ left_is_none = NILP (ns_alternate_modifier)
+ || EQ (ns_alternate_modifier, Qnone);
+
if ((flags & NSRightAlternateKeyMask) == NSRightAlternateKeyMask)
{
if ((NILP (ns_right_alternate_modifier)
- || EQ (ns_right_alternate_modifier, Qnone))
+ || EQ (ns_right_alternate_modifier, Qnone)
+ || (EQ (ns_right_alternate_modifier, Qleft) && left_is_none))
&& !fnKeysym)
{ /* accept pre-interp alt comb */
if ([[theEvent characters] length] > 0)
@@ -4550,9 +4523,7 @@ ns_term_shutdown (int sig)
if ((flags & NSLeftAlternateKeyMask) == NSLeftAlternateKeyMask) /* default = meta */
{
- if ((NILP (ns_alternate_modifier)
- || EQ (ns_alternate_modifier, Qnone))
- && !fnKeysym)
+ if (left_is_none && !fnKeysym)
{ /* accept pre-interp alt comb */
if ([[theEvent characters] length] > 0)
code = [[theEvent characters] characterAtIndex: 0];
@@ -5002,7 +4973,6 @@ ns_term_shutdown (int sig)
#endif
if (cols < MINWIDTH)
cols = MINWIDTH;
- frameSize.width = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (emacsframe, cols);
rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (emacsframe, frameSize.height
#ifdef NS_IMPL_GNUSTEP
@@ -5014,9 +4984,6 @@ ns_term_shutdown (int sig)
#endif
if (rows < MINHEIGHT)
rows = MINHEIGHT;
- frameSize.height = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (emacsframe, rows)
- + FRAME_NS_TITLEBAR_HEIGHT (emacsframe)
- + FRAME_TOOLBAR_HEIGHT (emacsframe);
#ifdef NS_IMPL_COCOA
{
/* this sets window title to have size in it; the wm does this under GS */
@@ -5084,7 +5051,7 @@ ns_term_shutdown (int sig)
a "windowDidResize" which calls x_set_window_size). */
#ifndef NS_IMPL_GNUSTEP
if (cols > 0 && rows > 0)
- x_set_window_size (emacsframe, 0, cols, rows);
+ x_set_window_size (emacsframe, 0, cols, rows);
#endif
ns_send_appdefined (-1);
@@ -5177,6 +5144,7 @@ ns_term_shutdown (int sig)
/*fprintf (stderr,"init with %d, %d\n",f->text_cols, f->text_lines); */
+ ns_userRect = NSMakeRect (0, 0, 0, 0);
r = NSMakeRect (0, 0, FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, f->text_cols),
FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, f->text_lines));
[self initWithFrame: r];
@@ -5263,7 +5231,8 @@ ns_term_shutdown (int sig)
{
NSWindow *win = [self window];
NSRect r = [win frame];
- NSScreen *screen = [win screen];
+ NSArray *screens = [NSScreen screens];
+ NSScreen *screen = [screens objectAtIndex: 0];
NSTRACE (windowDidMove);
@@ -5283,10 +5252,7 @@ ns_term_shutdown (int sig)
location so set_window_size moves the frame. */
- (BOOL)windowShouldZoom: (NSWindow *)sender toFrame: (NSRect)newFrame
{
- NSTRACE (windowShouldZoom);
- emacsframe->left_pos = (int)newFrame.origin.x;
- emacsframe->top_pos = [[sender screen] frame].size.height
- - (newFrame.origin.y+newFrame.size.height);
+ emacsframe->output_data.ns->zooming = 1;
return YES;
}
@@ -5298,7 +5264,6 @@ ns_term_shutdown (int sig)
defaultFrame:(NSRect)defaultFrame
{
NSRect result = [sender frame];
- static NSRect ns_userRect = { 0, 0, 0, 0 };
NSTRACE (windowWillUseStandardFrame);
@@ -5316,7 +5281,11 @@ ns_term_shutdown (int sig)
> FRAME_COLUMN_WIDTH (emacsframe))
result = defaultFrame; /* second click */
else
- result = ns_userRect.size.height ? ns_userRect : result; /* restore */
+ {
+ /* restore */
+ result = ns_userRect.size.height ? ns_userRect : result;
+ ns_userRect = NSMakeRect (0, 0, 0, 0);
+ }
}
[self windowWillResize: sender toSize: result.size];
@@ -5701,6 +5670,21 @@ ns_term_shutdown (int sig)
@implementation EmacsWindow
+/* If we have multiple monitors, one above the other, we don't want to
+ restrict the height to just one monitor. So we override this. */
+- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen
+{
+ /* When making the frame visible for the first time, we want to
+ constrain. Other times not. */
+ struct frame *f = ((EmacsView *)[self delegate])->emacsframe;
+ if (f->output_data.ns->dont_constrain)
+ return frameRect;
+
+ f->output_data.ns->dont_constrain = 1;
+ return [super constrainFrameRect:frameRect toScreen:screen];
+}
+
+
/* called only on resize clicks by special case in EmacsApp-sendEvent */
- (void)mouseDown: (NSEvent *)theEvent
{
@@ -5746,12 +5730,9 @@ ns_term_shutdown (int sig)
return;
vettedSize = [[self delegate] windowWillResize: self toSize: size];
- if (vettedSize.width != size.width || vettedSize.height != size.height)
- {
- [[NSNotificationCenter defaultCenter]
+ [[NSNotificationCenter defaultCenter]
postNotificationName: NSWindowDidResizeNotification
object: self];
- }
}
else
[super mouseDragged: theEvent];
@@ -6268,50 +6249,50 @@ syms_of_nsterm (void)
Fput (Qsuper, Qmodifier_value, make_number (super_modifier));
Fput (Qcontrol, Qmodifier_value, make_number (ctrl_modifier));
- DEFVAR_LISP ("ns-input-file", &ns_input_file,
+ DEFVAR_LISP ("ns-input-file", ns_input_file,
"The file specified in the last NS event.");
ns_input_file =Qnil;
- DEFVAR_LISP ("ns-input-text", &ns_input_text,
+ DEFVAR_LISP ("ns-input-text", ns_input_text,
"The data received in the last NS text drag event.");
ns_input_text =Qnil;
- DEFVAR_LISP ("ns-working-text", &ns_working_text,
+ DEFVAR_LISP ("ns-working-text", ns_working_text,
"String for visualizing working composition sequence.");
ns_working_text =Qnil;
- DEFVAR_LISP ("ns-input-font", &ns_input_font,
+ DEFVAR_LISP ("ns-input-font", ns_input_font,
"The font specified in the last NS event.");
ns_input_font =Qnil;
- DEFVAR_LISP ("ns-input-fontsize", &ns_input_fontsize,
+ DEFVAR_LISP ("ns-input-fontsize", ns_input_fontsize,
"The fontsize specified in the last NS event.");
ns_input_fontsize =Qnil;
- DEFVAR_LISP ("ns-input-line", &ns_input_line,
+ DEFVAR_LISP ("ns-input-line", ns_input_line,
"The line specified in the last NS event.");
ns_input_line =Qnil;
- DEFVAR_LISP ("ns-input-color", &ns_input_color,
+ DEFVAR_LISP ("ns-input-color", ns_input_color,
"The color specified in the last NS event.");
ns_input_color =Qnil;
- DEFVAR_LISP ("ns-input-spi-name", &ns_input_spi_name,
+ DEFVAR_LISP ("ns-input-spi-name", ns_input_spi_name,
"The service name specified in the last NS event.");
ns_input_spi_name =Qnil;
- DEFVAR_LISP ("ns-input-spi-arg", &ns_input_spi_arg,
+ DEFVAR_LISP ("ns-input-spi-arg", ns_input_spi_arg,
"The service argument specified in the last NS event.");
ns_input_spi_arg =Qnil;
- DEFVAR_LISP ("ns-alternate-modifier", &ns_alternate_modifier,
+ DEFVAR_LISP ("ns-alternate-modifier", ns_alternate_modifier,
"This variable describes the behavior of the alternate or option key.\n\
Set to control, meta, alt, super, or hyper means it is taken to be that key.\n\
Set to none means that the alternate / option key is not interpreted by Emacs\n\
at all, allowing it to be used at a lower level for accented character entry.");
ns_alternate_modifier = Qmeta;
- DEFVAR_LISP ("ns-right-alternate-modifier", &ns_right_alternate_modifier,
+ DEFVAR_LISP ("ns-right-alternate-modifier", ns_right_alternate_modifier,
"This variable describes the behavior of the right alternate or option key.\n\
Set to control, meta, alt, super, or hyper means it is taken to be that key.\n\
Set to left means be the same key as `ns-alternate-modifier'.\n\
@@ -6319,12 +6300,12 @@ Set to none means that the alternate / option key is not interpreted by Emacs\n\
at all, allowing it to be used at a lower level for accented character entry.");
ns_right_alternate_modifier = Qleft;
- DEFVAR_LISP ("ns-command-modifier", &ns_command_modifier,
+ DEFVAR_LISP ("ns-command-modifier", ns_command_modifier,
"This variable describes the behavior of the command key.\n\
Set to control, meta, alt, super, or hyper means it is taken to be that key.");
ns_command_modifier = Qsuper;
- DEFVAR_LISP ("ns-right-command-modifier", &ns_right_command_modifier,
+ DEFVAR_LISP ("ns-right-command-modifier", ns_right_command_modifier,
"This variable describes the behavior of the right command key.\n\
Set to control, meta, alt, super, or hyper means it is taken to be that key.\n\
Set to left means be the same key as `ns-command-modifier'.\n\
@@ -6332,12 +6313,12 @@ Set to none means that the command / option key is not interpreted by Emacs\n\
at all, allowing it to be used at a lower level for accented character entry.");
ns_right_command_modifier = Qleft;
- DEFVAR_LISP ("ns-control-modifier", &ns_control_modifier,
+ DEFVAR_LISP ("ns-control-modifier", ns_control_modifier,
"This variable describes the behavior of the control key.\n\
Set to control, meta, alt, super, or hyper means it is taken to be that key.");
ns_control_modifier = Qcontrol;
- DEFVAR_LISP ("ns-right-control-modifier", &ns_right_control_modifier,
+ DEFVAR_LISP ("ns-right-control-modifier", ns_right_control_modifier,
"This variable describes the behavior of the right control key.\n\
Set to control, meta, alt, super, or hyper means it is taken to be that key.\n\
Set to left means be the same key as `ns-control-modifier'.\n\
@@ -6345,18 +6326,18 @@ Set to none means that the control / option key is not interpreted by Emacs\n\
at all, allowing it to be used at a lower level for accented character entry.");
ns_right_control_modifier = Qleft;
- DEFVAR_LISP ("ns-function-modifier", &ns_function_modifier,
+ DEFVAR_LISP ("ns-function-modifier", ns_function_modifier,
"This variable describes the behavior of the function key (on laptops).\n\
Set to control, meta, alt, super, or hyper means it is taken to be that key.\n\
Set to none means that the function key is not interpreted by Emacs at all,\n\
allowing it to be used at a lower level for accented character entry.");
ns_function_modifier = Qnone;
- DEFVAR_LISP ("ns-antialias-text", &ns_antialias_text,
+ DEFVAR_LISP ("ns-antialias-text", ns_antialias_text,
"Non-nil (the default) means to render text antialiased. Only has an effect on OS X Panther and above.");
ns_antialias_text = Qt;
- DEFVAR_LISP ("ns-confirm-quit", &ns_confirm_quit,
+ DEFVAR_LISP ("ns-confirm-quit", ns_confirm_quit,
"Whether to confirm application quit using dialog.");
ns_confirm_quit = Qnil;
@@ -6367,7 +6348,7 @@ allowing it to be used at a lower level for accented character entry.");
last_mouse_motion_frame = Qnil;
/* TODO: move to common code */
- DEFVAR_LISP ("x-toolkit-scroll-bars", &Vx_toolkit_scroll_bars,
+ DEFVAR_LISP ("x-toolkit-scroll-bars", Vx_toolkit_scroll_bars,
doc: /* If not nil, Emacs uses toolkit scroll bars. */);
#ifdef USE_TOOLKIT_SCROLL_BARS
Vx_toolkit_scroll_bars = Qt;
@@ -6378,7 +6359,7 @@ allowing it to be used at a lower level for accented character entry.");
/* these are unsupported but we need the declarations to avoid whining
messages from cus-start.el */
DEFVAR_BOOL ("x-use-underline-position-properties",
- &x_use_underline_position_properties,
+ x_use_underline_position_properties,
doc: /* NOT SUPPORTED UNDER NS.
*Non-nil means make use of UNDERLINE_POSITION font properties.
A value of nil means ignore them. If you encounter fonts with bogus
@@ -6389,7 +6370,7 @@ NOTE: Not supported on Mac yet. */);
x_use_underline_position_properties = 0;
DEFVAR_BOOL ("x-underline-at-descent-line",
- &x_underline_at_descent_line,
+ x_underline_at_descent_line,
doc: /* NOT SUPPORTED UNDER NS.
*Non-nil means to draw the underline at the same place as the descent line.
A value of nil means to draw the underline according to the value of the
@@ -6402,4 +6383,3 @@ baseline level. The default value is nil. */);
}
-// arch-tag: 6eaa8f7d-a69b-4e1c-b43d-ab31defbe0d2
diff --git a/src/pre-crt0.c b/src/pre-crt0.c
index 8abc954541..ea5736eba2 100644
--- a/src/pre-crt0.c
+++ b/src/pre-crt0.c
@@ -8,5 +8,3 @@
int data_start = 0;
-/* arch-tag: 2e260272-0790-495f-9362-55abd56b5c5a
- (do not change this comment) */
diff --git a/src/print.c b/src/print.c
index 41aa7fc438..170ccc7fa8 100644
--- a/src/print.c
+++ b/src/print.c
@@ -1,7 +1,7 @@
/* Lisp object printing and output streams.
- Copyright (C) 1985, 1986, 1988, 1993, 1994, 1995, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1985-1986, 1988, 1993-1995, 1997-2011
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -37,49 +37,25 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "termhooks.h" /* For struct terminal. */
#include "font.h"
-Lisp_Object Vstandard_output, Qstandard_output;
+Lisp_Object Qstandard_output;
Lisp_Object Qtemp_buffer_setup_hook;
/* These are used to print like we read. */
-Lisp_Object Vfloat_output_format, Qfloat_output_format;
+Lisp_Object Qfloat_output_format;
#include <math.h>
#if STDC_HEADERS
#include <float.h>
#endif
+#include <ftoastr.h>
/* Default to values appropriate for IEEE floating point. */
-#ifndef FLT_RADIX
-#define FLT_RADIX 2
-#endif
-#ifndef DBL_MANT_DIG
-#define DBL_MANT_DIG 53
-#endif
#ifndef DBL_DIG
#define DBL_DIG 15
#endif
-#ifndef DBL_MIN
-#define DBL_MIN 2.2250738585072014e-308
-#endif
-
-#ifdef DBL_MIN_REPLACEMENT
-#undef DBL_MIN
-#define DBL_MIN DBL_MIN_REPLACEMENT
-#endif
-
-/* Define DOUBLE_DIGITS_BOUND, an upper bound on the number of decimal digits
- needed to express a float without losing information.
- The general-case formula is valid for the usual case, IEEE floating point,
- but many compilers can't optimize the formula to an integer constant,
- so make a special case for it. */
-#if FLT_RADIX == 2 && DBL_MANT_DIG == 53
-#define DOUBLE_DIGITS_BOUND 17 /* IEEE floating point */
-#else
-#define DOUBLE_DIGITS_BOUND ((int) ceil (log10 (pow (FLT_RADIX, DBL_MANT_DIG))))
-#endif
/* Avoid actual stack overflow in print. */
int print_depth;
@@ -102,64 +78,18 @@ EMACS_INT print_buffer_pos;
/* Bytes stored in print_buffer. */
EMACS_INT print_buffer_pos_byte;
-/* Maximum length of list to print in full; noninteger means
- effectively infinity */
-
-Lisp_Object Vprint_length;
-
-/* Maximum depth of list to print in full; noninteger means
- effectively infinity. */
-
-Lisp_Object Vprint_level;
-
-/* Nonzero means print newlines in strings as \n. */
-
-int print_escape_newlines;
-
-/* Nonzero means to print single-byte non-ascii characters in strings as
- octal escapes. */
-
-int print_escape_nonascii;
-
-/* Nonzero means to print multibyte characters in strings as hex escapes. */
-
-int print_escape_multibyte;
-
Lisp_Object Qprint_escape_newlines;
Lisp_Object Qprint_escape_multibyte, Qprint_escape_nonascii;
-/* Nonzero means print (quote foo) forms as 'foo, etc. */
-
-int print_quoted;
-
-/* Non-nil means print #: before uninterned symbols. */
-
-Lisp_Object Vprint_gensym;
-
-/* Non-nil means print recursive structures using #n= and #n# syntax. */
-
-Lisp_Object Vprint_circle;
-
-/* Non-nil means keep continuous number for #n= and #n# syntax
- between several print functions. */
-
-Lisp_Object Vprint_continuous_numbering;
-
-/* Vprint_number_table is a vector like [OBJ1 STAT1 OBJ2 STAT2 ...],
- where OBJn are objects going to be printed, and STATn are their status,
- which may be different meanings during process. See the comments of
- the functions print and print_preprocess for details.
- print_number_index keeps the last position the next object should be added,
- twice of which is the actual vector position in Vprint_number_table. */
+/* Vprint_number_table is a table, that keeps objects that are going to
+ be printed, to allow use of #n= and #n# to express sharing.
+ For any given object, the table can give the following values:
+ t the object will be printed only once.
+ -N the object will be printed several times and will take number N.
+ N the object has been printed so we can refer to it as #N#.
+ print_number_index holds the largest N already used.
+ N has to be striclty larger than 0 since we need to distinguish -N. */
int print_number_index;
-Lisp_Object Vprint_number_table;
-
-/* PRINT_NUMBER_OBJECT returns the I'th object in Vprint_number_table TABLE.
- PRINT_NUMBER_STATUS returns the status of the I'th object in TABLE.
- See the comment of the variable Vprint_number_table. */
-#define PRINT_NUMBER_OBJECT(table,i) XVECTOR ((table))->contents[(i) * 2]
-#define PRINT_NUMBER_STATUS(table,i) XVECTOR ((table))->contents[(i) * 2 + 1]
-
void print_interval (INTERVAL interval, Lisp_Object printcharfun);
/* GDB resets this to zero on W32 to disable OutputDebugString calls. */
@@ -481,7 +411,7 @@ print_string (Lisp_Object string, Lisp_Object printcharfun)
}
else
/* No need to copy, since output to print_buffer can't GC. */
- strout (SDATA (string),
+ strout (SSDATA (string),
chars, SBYTES (string),
printcharfun, STRING_MULTIBYTE (string));
}
@@ -544,11 +474,11 @@ write_string (const char *data, int size)
PRINTFINISH;
}
-/* Used from outside of print.c to print a block of SIZE
- single-byte chars at DATA on a specified stream PRINTCHARFUN.
+/* Used to print a block of SIZE single-byte chars at DATA on a
+ specified stream PRINTCHARFUN.
Do not use this on the contents of a Lisp string. */
-void
+static void
write_string_1 (const char *data, int size, Lisp_Object printcharfun)
{
PRINTDECLARE;
@@ -654,7 +584,7 @@ usage: (with-output-to-temp-buffer BUFNAME BODY...) */)
GCPRO1(args);
name = eval_sub (Fcar (args));
CHECK_STRING (name);
- temp_output_buffer_setup (SDATA (name));
+ temp_output_buffer_setup (SSDATA (name));
buf = Vstandard_output;
UNGCPRO;
@@ -1082,6 +1012,7 @@ print_error_message (Lisp_Object data, Lisp_Object stream, const char *context,
* case of -1e307 in 20d float_output_format. What is one to do (short of
* re-writing _doprnt to be more sane)?
* -wsr
+ * Given the above, the buffer must be least FLOAT_TO_STRING_BUFSIZE bytes.
*/
void
@@ -1128,20 +1059,8 @@ float_to_string (unsigned char *buf, double data)
lose:
{
/* Generate the fewest number of digits that represent the
- floating point value without losing information.
- The following method is simple but a bit slow.
- For ideas about speeding things up, please see:
-
- Guy L Steele Jr & Jon L White, How to print floating-point numbers
- accurately. SIGPLAN notices 25, 6 (June 1990), 112-126.
-
- Robert G Burger & R Kent Dybvig, Printing floating point numbers
- quickly and accurately, SIGPLAN notices 31, 5 (May 1996), 108-116. */
-
- width = fabs (data) < DBL_MIN ? 1 : DBL_DIG;
- do
- sprintf (buf, "%.*g", width, data);
- while (width++ < DOUBLE_DIGITS_BOUND && atof (buf) != data);
+ floating point value without losing information. */
+ dtoastr (buf, FLOAT_TO_STRING_BUFSIZE, 0, 0, data);
}
else /* oink oink */
{
@@ -1178,7 +1097,7 @@ float_to_string (unsigned char *buf, double data)
if (cp[1] != 0)
goto lose;
- sprintf (buf, SDATA (Vfloat_output_format), data);
+ sprintf (buf, SSDATA (Vfloat_output_format), data);
}
/* Make sure there is a decimal point with digit after, or an
@@ -1226,33 +1145,24 @@ print (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag)
/* Construct Vprint_number_table for print-gensym and print-circle. */
if (!NILP (Vprint_gensym) || !NILP (Vprint_circle))
{
- int i, start, index;
- start = index = print_number_index;
/* Construct Vprint_number_table.
This increments print_number_index for the objects added. */
print_depth = 0;
print_preprocess (obj);
- /* Remove unnecessary objects, which appear only once in OBJ;
- that is, whose status is Qnil. Compactify the necessary objects. */
- for (i = start; i < print_number_index; i++)
- if (!NILP (PRINT_NUMBER_STATUS (Vprint_number_table, i)))
- {
- PRINT_NUMBER_OBJECT (Vprint_number_table, index)
- = PRINT_NUMBER_OBJECT (Vprint_number_table, i);
- index++;
- }
-
- /* Clear out objects outside the active part of the table. */
- for (i = index; i < print_number_index; i++)
- PRINT_NUMBER_OBJECT (Vprint_number_table, i) = Qnil;
-
- /* Reset the status field for the next print step. Now this
- field means whether the object has already been printed. */
- for (i = start; i < print_number_index; i++)
- PRINT_NUMBER_STATUS (Vprint_number_table, i) = Qnil;
+ if (HASH_TABLE_P (Vprint_number_table))
+ { /* Remove unnecessary objects, which appear only once in OBJ;
+ that is, whose status is Qt.
+ Maybe a better way to do that is to copy elements to
+ a new hash table. */
+ struct Lisp_Hash_Table *h = XHASH_TABLE (Vprint_number_table);
+ int i;
- print_number_index = index;
+ for (i = 0; i < HASH_TABLE_SIZE (h); ++i)
+ if (!NILP (HASH_HASH (h, i))
+ && EQ (HASH_VALUE (h, i), Qt))
+ Fremhash (HASH_KEY (h, i), Vprint_number_table);
+ }
}
print_depth = 0;
@@ -1300,48 +1210,40 @@ print_preprocess (Lisp_Object obj)
&& SYMBOLP (obj)
&& !SYMBOL_INTERNED_P (obj)))
{
+ if (!HASH_TABLE_P (Vprint_number_table))
+ {
+ Lisp_Object args[2];
+ args[0] = QCtest;
+ args[1] = Qeq;
+ Vprint_number_table = Fmake_hash_table (2, args);
+ }
+
/* In case print-circle is nil and print-gensym is t,
add OBJ to Vprint_number_table only when OBJ is a symbol. */
if (! NILP (Vprint_circle) || SYMBOLP (obj))
{
- for (i = 0; i < print_number_index; i++)
- if (EQ (PRINT_NUMBER_OBJECT (Vprint_number_table, i), obj))
- {
- /* OBJ appears more than once. Let's remember that. */
- PRINT_NUMBER_STATUS (Vprint_number_table, i) = Qt;
- print_depth--;
- return;
- }
-
- /* OBJ is not yet recorded. Let's add to the table. */
- if (print_number_index == 0)
- {
- /* Initialize the table. */
- Vprint_number_table = Fmake_vector (make_number (40), Qnil);
- }
- else if (XVECTOR (Vprint_number_table)->size == print_number_index * 2)
- {
- /* Reallocate the table. */
- int i = print_number_index * 4;
- Lisp_Object old_table = Vprint_number_table;
- Vprint_number_table = Fmake_vector (make_number (i), Qnil);
- for (i = 0; i < print_number_index; i++)
+ Lisp_Object num = Fgethash (obj, Vprint_number_table, Qnil);
+ if (!NILP (num)
+ /* If Vprint_continuous_numbering is non-nil and OBJ is a gensym,
+ always print the gensym with a number. This is a special for
+ the lisp function byte-compile-output-docform. */
+ || (!NILP (Vprint_continuous_numbering)
+ && SYMBOLP (obj)
+ && !SYMBOL_INTERNED_P (obj)))
+ { /* OBJ appears more than once. Let's remember that. */
+ if (!INTEGERP (num))
{
- PRINT_NUMBER_OBJECT (Vprint_number_table, i)
- = PRINT_NUMBER_OBJECT (old_table, i);
- PRINT_NUMBER_STATUS (Vprint_number_table, i)
- = PRINT_NUMBER_STATUS (old_table, i);
+ print_number_index++;
+ /* Negative number indicates it hasn't been printed yet. */
+ Fputhash (obj, make_number (- print_number_index),
+ Vprint_number_table);
}
+ print_depth--;
+ return;
}
- PRINT_NUMBER_OBJECT (Vprint_number_table, print_number_index) = obj;
- /* If Vprint_continuous_numbering is non-nil and OBJ is a gensym,
- always print the gensym with a number. This is a special for
- the lisp function byte-compile-output-docform. */
- if (!NILP (Vprint_continuous_numbering)
- && SYMBOLP (obj)
- && !SYMBOL_INTERNED_P (obj))
- PRINT_NUMBER_STATUS (Vprint_number_table, print_number_index) = Qt;
- print_number_index++;
+ else
+ /* OBJ is not yet recorded. Let's add to the table. */
+ Fputhash (obj, Qt, Vprint_number_table);
}
switch (XTYPE (obj))
@@ -1372,8 +1274,8 @@ print_preprocess (Lisp_Object obj)
print_preprocess (XVECTOR (obj)->contents[i]);
if (HASH_TABLE_P (obj))
{ /* For hash tables, the key_and_value slot is past
- `size' because it needs to be marked specially in case
- the table is weak. */
+ `size' because it needs to be marked specially in case
+ the table is weak. */
struct Lisp_Hash_Table *h = XHASH_TABLE (obj);
print_preprocess (h->key_and_value);
}
@@ -1392,10 +1294,6 @@ print_preprocess_string (INTERVAL interval, Lisp_Object arg)
print_preprocess (interval->plist);
}
-/* A flag to control printing of `charset' text property.
- The default value is Qdefault. */
-Lisp_Object Vprint_charset_text_property;
-
static void print_check_string_charset_prop (INTERVAL interval, Lisp_Object string);
#define PRINT_STRING_NON_CHARSET_FOUND 1
@@ -1510,28 +1408,26 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
else
{
/* With the print-circle feature. */
- int i;
- for (i = 0; i < print_number_index; i++)
- if (EQ (PRINT_NUMBER_OBJECT (Vprint_number_table, i), obj))
- {
- if (NILP (PRINT_NUMBER_STATUS (Vprint_number_table, i)))
- {
- /* Add a prefix #n= if OBJ has not yet been printed;
- that is, its status field is nil. */
- sprintf (buf, "#%d=", i + 1);
- strout (buf, -1, -1, printcharfun, 0);
- /* OBJ is going to be printed. Set the status to t. */
- PRINT_NUMBER_STATUS (Vprint_number_table, i) = Qt;
- break;
- }
- else
- {
- /* Just print #n# if OBJ has already been printed. */
- sprintf (buf, "#%d#", i + 1);
- strout (buf, -1, -1, printcharfun, 0);
- return;
- }
- }
+ Lisp_Object num = Fgethash (obj, Vprint_number_table, Qnil);
+ if (INTEGERP (num))
+ {
+ int n = XINT (num);
+ if (n < 0)
+ { /* Add a prefix #n= if OBJ has not yet been printed;
+ that is, its status field is nil. */
+ sprintf (buf, "#%d=", -n);
+ strout (buf, -1, -1, printcharfun, 0);
+ /* OBJ is going to be printed. Remember that fact. */
+ Fputhash (obj, make_number (- n), Vprint_number_table);
+ }
+ else
+ {
+ /* Just print #n# if OBJ has already been printed. */
+ sprintf (buf, "#%d#", n);
+ strout (buf, -1, -1, printcharfun, 0);
+ return;
+ }
+ }
}
}
@@ -1551,7 +1447,7 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
case Lisp_Float:
{
- char pigbuf[350]; /* see comments in float_to_string */
+ char pigbuf[FLOAT_TO_STRING_BUFSIZE];
float_to_string (pigbuf, XFLOAT_DATA (obj));
strout (pigbuf, -1, -1, printcharfun, 0);
@@ -1615,7 +1511,7 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
PRINTCHAR ('f');
}
else if (multibyte
- && (CHAR_BYTE8_P (c)
+ && (CHAR_BYTE8_P (c)
|| (! ASCII_CHAR_P (c) && print_escape_multibyte)))
{
/* When multibyte is disabled,
@@ -1834,23 +1730,13 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
/* With the print-circle feature. */
if (i != 0)
{
- int i;
- for (i = 0; i < print_number_index; i++)
- if (EQ (PRINT_NUMBER_OBJECT (Vprint_number_table, i),
- obj))
- {
- if (NILP (PRINT_NUMBER_STATUS (Vprint_number_table, i)))
- {
- strout (" . ", 3, 3, printcharfun, 0);
- print_object (obj, printcharfun, escapeflag);
- }
- else
- {
- sprintf (buf, " . #%d#", i + 1);
- strout (buf, -1, -1, printcharfun, 0);
- }
- goto end_of_list;
- }
+ Lisp_Object num = Fgethash (obj, Vprint_number_table, Qnil);
+ if (INTEGERP (num))
+ {
+ strout (" . ", 3, 3, printcharfun, 0);
+ print_object (obj, printcharfun, escapeflag);
+ goto end_of_list;
+ }
}
}
@@ -2047,7 +1933,7 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
if (NATNUMP (Vprint_length)
&& XFASTINT (Vprint_length) < size)
size = XFASTINT (Vprint_length);
-
+
PRINTCHAR ('(');
for (i = 0; i < size; i++)
if (!NILP (HASH_HASH (h, i)))
@@ -2275,7 +2161,7 @@ syms_of_print (void)
Qtemp_buffer_setup_hook = intern_c_string ("temp-buffer-setup-hook");
staticpro (&Qtemp_buffer_setup_hook);
- DEFVAR_LISP ("standard-output", &Vstandard_output,
+ DEFVAR_LISP ("standard-output", Vstandard_output,
doc: /* Output stream `print' uses by default for outputting a character.
This may be any function of one argument.
It may also be a buffer (output is inserted before point)
@@ -2285,7 +2171,7 @@ or the symbol t (output appears in the echo area). */);
Qstandard_output = intern_c_string ("standard-output");
staticpro (&Qstandard_output);
- DEFVAR_LISP ("float-output-format", &Vfloat_output_format,
+ DEFVAR_LISP ("float-output-format", Vfloat_output_format,
doc: /* The format descriptor string used to print floats.
This is a %-spec like those accepted by `printf' in C,
but with some restrictions. It must start with the two characters `%.'.
@@ -2305,22 +2191,22 @@ that represents the number without losing information. */);
Qfloat_output_format = intern_c_string ("float-output-format");
staticpro (&Qfloat_output_format);
- DEFVAR_LISP ("print-length", &Vprint_length,
+ DEFVAR_LISP ("print-length", Vprint_length,
doc: /* Maximum length of list to print before abbreviating.
A value of nil means no limit. See also `eval-expression-print-length'. */);
Vprint_length = Qnil;
- DEFVAR_LISP ("print-level", &Vprint_level,
+ DEFVAR_LISP ("print-level", Vprint_level,
doc: /* Maximum depth of list nesting to print before abbreviating.
A value of nil means no limit. See also `eval-expression-print-level'. */);
Vprint_level = Qnil;
- DEFVAR_BOOL ("print-escape-newlines", &print_escape_newlines,
+ DEFVAR_BOOL ("print-escape-newlines", print_escape_newlines,
doc: /* Non-nil means print newlines in strings as `\\n'.
Also print formfeeds as `\\f'. */);
print_escape_newlines = 0;
- DEFVAR_BOOL ("print-escape-nonascii", &print_escape_nonascii,
+ DEFVAR_BOOL ("print-escape-nonascii", print_escape_nonascii,
doc: /* Non-nil means print unibyte non-ASCII chars in strings as \\OOO.
\(OOO is the octal representation of the character code.)
Only single-byte characters are affected, and only in `prin1'.
@@ -2328,18 +2214,18 @@ When the output goes in a multibyte buffer, this feature is
enabled regardless of the value of the variable. */);
print_escape_nonascii = 0;
- DEFVAR_BOOL ("print-escape-multibyte", &print_escape_multibyte,
+ DEFVAR_BOOL ("print-escape-multibyte", print_escape_multibyte,
doc: /* Non-nil means print multibyte characters in strings as \\xXXXX.
\(XXXX is the hex representation of the character code.)
This affects only `prin1'. */);
print_escape_multibyte = 0;
- DEFVAR_BOOL ("print-quoted", &print_quoted,
+ DEFVAR_BOOL ("print-quoted", print_quoted,
doc: /* Non-nil means print quoted forms with reader syntax.
I.e., (quote foo) prints as 'foo, (function foo) as #'foo. */);
print_quoted = 0;
- DEFVAR_LISP ("print-gensym", &Vprint_gensym,
+ DEFVAR_LISP ("print-gensym", Vprint_gensym,
doc: /* Non-nil means print uninterned symbols so they will read as uninterned.
I.e., the value of (make-symbol \"foobar\") prints as #:foobar.
When the uninterned symbol appears within a recursive data structure,
@@ -2348,7 +2234,7 @@ constructs as needed, so that multiple references to the same symbol are
shared once again when the text is read back. */);
Vprint_gensym = Qnil;
- DEFVAR_LISP ("print-circle", &Vprint_circle,
+ DEFVAR_LISP ("print-circle", Vprint_circle,
doc: /* *Non-nil means print recursive structures using #N= and #N# syntax.
If nil, printing proceeds recursively and may lead to
`max-lisp-eval-depth' being exceeded or an error may occur:
@@ -2360,14 +2246,14 @@ representation) and `#N#' in place of each subsequent occurrence,
where N is a positive decimal integer. */);
Vprint_circle = Qnil;
- DEFVAR_LISP ("print-continuous-numbering", &Vprint_continuous_numbering,
+ DEFVAR_LISP ("print-continuous-numbering", Vprint_continuous_numbering,
doc: /* *Non-nil means number continuously across print calls.
This affects the numbers printed for #N= labels and #M# references.
See also `print-circle', `print-gensym', and `print-number-table'.
This variable should not be set with `setq'; bind it with a `let' instead. */);
Vprint_continuous_numbering = Qnil;
- DEFVAR_LISP ("print-number-table", &Vprint_number_table,
+ DEFVAR_LISP ("print-number-table", Vprint_number_table,
doc: /* A vector used internally to produce `#N=' labels and `#N#' references.
The Lisp printer uses this vector to detect Lisp objects referenced more
than once.
@@ -2380,7 +2266,7 @@ the printing done so far has not found any shared structure or objects
that need to be recorded in the table. */);
Vprint_number_table = Qnil;
- DEFVAR_LISP ("print-charset-text-property", &Vprint_charset_text_property,
+ DEFVAR_LISP ("print-charset-text-property", Vprint_charset_text_property,
doc: /* A flag to control printing of `charset' text property on printing a string.
The value must be nil, t, or `default'.
@@ -2425,6 +2311,3 @@ priorities. */);
defsubr (&Swith_output_to_temp_buffer);
}
-
-/* arch-tag: bc797170-94ae-41de-86e3-75e20f8f7a39
- (do not change this comment) */
diff --git a/src/process.c b/src/process.c
index 6ffcc5b809..ca29145bfd 100644
--- a/src/process.c
+++ b/src/process.c
@@ -1,7 +1,7 @@
/* Asynchronous subprocess control for GNU Emacs.
- Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995,
- 1996, 1998, 1999, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1985-1988, 1993-1996, 1998-1999, 2001-2011
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -32,9 +32,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <inttypes.h>
#endif
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#include <fcntl.h>
/* Only MS-DOS does not define `subprocesses'. */
@@ -123,9 +121,6 @@ Lisp_Object QCname, QCtype;
static int kbd_is_on_hold;
-/* Nonzero means delete a process right away if it exits. */
-static int delete_exited_processes;
-
/* Nonzero means don't run process sentinels. This is used
when exiting. */
int inhibit_sentinels;
@@ -177,10 +172,6 @@ extern void serial_configure (struct Lisp_Process *p, Lisp_Object contact);
extern int h_errno;
#endif
-/* t means use pty, nil means use a pipe,
- maybe other values to come. */
-static Lisp_Object Vprocess_connection_type;
-
/* These next two vars are non-static since sysdep.c uses them in the
emulation of `select'. */
/* Number of events of change of status of a process. */
@@ -249,11 +240,6 @@ static int process_output_delay_count;
static int process_output_skip;
-/* Non-nil means to delay reading process output to improve buffering.
- A value of t means that delay is reset after each send, any other
- non-nil value does not reset the delay. A value of nil disables
- adaptive read buffering completely. */
-static Lisp_Object Vprocess_adaptive_read_buffering;
#else
#define process_output_delay_count 0
#endif
@@ -425,7 +411,7 @@ delete_write_fd (int fd)
max_input_desc = fd;
break;
}
-
+
}
}
@@ -512,7 +498,7 @@ status_message (struct Lisp_Process *p)
if (! NILP (Vlocale_coding_system))
string = (code_convert_string_norecord
(string, Vlocale_coding_system, 0));
- c1 = STRING_CHAR ((char *) SDATA (string));
+ c1 = STRING_CHAR (SDATA (string));
c2 = DOWNCASE (c1);
if (c1 != c2)
Faset (string, make_number (0), make_number (c2));
@@ -1434,7 +1420,7 @@ list_processes_1 (Lisp_Object query_only)
port = Fformat_network_address (Fplist_get (p->childp, QClocal), Qnil);
sprintf (tembuf, "(network %s server on %s)\n",
(DATAGRAM_CHAN_P (p->infd) ? "datagram" : "stream"),
- (STRINGP (port) ? (char *)SDATA (port) : "?"));
+ (STRINGP (port) ? SSDATA (port) : "?"));
insert_string (tembuf);
}
else if (NETCONN1_P (p))
@@ -1452,7 +1438,7 @@ list_processes_1 (Lisp_Object query_only)
host = Fformat_network_address (Fplist_get (p->childp, QCremote), Qnil);
sprintf (tembuf, "(network %s connection to %s)\n",
(DATAGRAM_CHAN_P (p->infd) ? "datagram" : "stream"),
- (STRINGP (host) ? (char *)SDATA (host) : "?"));
+ (STRINGP (host) ? SSDATA (host) : "?"));
insert_string (tembuf);
}
else if (SERIALCONN1_P (p))
@@ -1461,7 +1447,7 @@ list_processes_1 (Lisp_Object query_only)
Lisp_Object speed = Fplist_get (p->childp, QCspeed);
insert_string ("(serial port ");
if (STRINGP (port))
- insert_string (SDATA (port));
+ insert_string (SSDATA (port));
else
insert_string ("?");
if (INTEGERP (speed))
@@ -2531,7 +2517,7 @@ set_socket_option (int s, Lisp_Object opt, Lisp_Object val)
CHECK_SYMBOL (opt);
- name = (char *) SDATA (SYMBOL_NAME (opt));
+ name = SSDATA (SYMBOL_NAME (opt));
for (sopt = socket_options; sopt->name; sopt++)
if (strcmp (name, sopt->name) == 0)
break;
@@ -2570,7 +2556,7 @@ set_socket_option (int s, Lisp_Object opt, Lisp_Object val)
memset (devname, 0, sizeof devname);
if (STRINGP (val))
{
- char *arg = (char *) SDATA (val);
+ char *arg = SSDATA (val);
int len = min (strlen (arg), IFNAMSIZ);
memcpy (devname, arg, len);
}
@@ -2855,7 +2841,7 @@ usage: (make-serial-process &rest ARGS) */)
record_unwind_protect (make_serial_process_unwind, proc);
p = XPROCESS (proc);
- fd = serial_open ((char*) SDATA (port));
+ fd = serial_open (SSDATA (port));
p->infd = fd;
p->outfd = fd;
if (fd > max_process_desc)
@@ -3276,7 +3262,7 @@ usage: (make-network-process &rest ARGS) */)
CHECK_STRING (service);
memset (&address_un, 0, sizeof address_un);
address_un.sun_family = AF_LOCAL;
- strncpy (address_un.sun_path, SDATA (service), sizeof address_un.sun_path);
+ strncpy (address_un.sun_path, SSDATA (service), sizeof address_un.sun_path);
ai.ai_addr = (struct sockaddr *) &address_un;
ai.ai_addrlen = sizeof address_un;
goto open_socket;
@@ -3312,7 +3298,7 @@ usage: (make-network-process &rest ARGS) */)
else
{
CHECK_STRING (service);
- portstring = SDATA (service);
+ portstring = SSDATA (service);
}
immediate_quit = 1;
@@ -3327,12 +3313,12 @@ usage: (make-network-process &rest ARGS) */)
res_init ();
#endif
- ret = getaddrinfo (SDATA (host), portstring, &hints, &res);
+ ret = getaddrinfo (SSDATA (host), portstring, &hints, &res);
if (ret)
#ifdef HAVE_GAI_STRERROR
- error ("%s/%s %s", SDATA (host), portstring, gai_strerror (ret));
+ error ("%s/%s %s", SSDATA (host), portstring, gai_strerror (ret));
#else
- error ("%s/%s getaddrinfo error %d", SDATA (host), portstring, ret);
+ error ("%s/%s getaddrinfo error %d", SSDATA (host), portstring, ret);
#endif
immediate_quit = 0;
@@ -3351,7 +3337,7 @@ usage: (make-network-process &rest ARGS) */)
{
struct servent *svc_info;
CHECK_STRING (service);
- svc_info = getservbyname (SDATA (service),
+ svc_info = getservbyname (SSDATA (service),
(socktype == SOCK_DGRAM ? "udp" : "tcp"));
if (svc_info == 0)
error ("Unknown service: %s", SDATA (service));
@@ -3391,7 +3377,7 @@ usage: (make-network-process &rest ARGS) */)
/* Attempt to interpret host as numeric inet address */
{
unsigned long numeric_addr;
- numeric_addr = inet_addr ((char *) SDATA (host));
+ numeric_addr = inet_addr (SSDATA (host));
if (numeric_addr == -1)
error ("Unknown host \"%s\"", SDATA (host));
@@ -5659,7 +5645,7 @@ send_process (volatile Lisp_Object proc, const unsigned char *volatile buf,
#ifdef HAVE_GNUTLS
if (XPROCESS (proc)->gnutls_p)
rv = emacs_gnutls_write (outfd,
- XPROCESS (proc),
+ XPROCESS (proc),
(char *) buf, this);
else
#endif
@@ -5821,7 +5807,7 @@ emacs_get_tty_pgrp (struct Lisp_Process *p)
int fd;
/* Some OS:es (Solaris 8/9) does not allow TIOCGPGRP from the
master side. Try the slave side. */
- fd = emacs_open (SDATA (p->tty_name), O_RDONLY, 0);
+ fd = emacs_open (SSDATA (p->tty_name), O_RDONLY, 0);
if (fd != -1)
{
@@ -7644,14 +7630,14 @@ syms_of_process (void)
Qargs = intern_c_string ("args");
staticpro (&Qargs);
- DEFVAR_BOOL ("delete-exited-processes", &delete_exited_processes,
+ DEFVAR_BOOL ("delete-exited-processes", delete_exited_processes,
doc: /* *Non-nil means delete processes immediately when they exit.
A value of nil means don't delete them until `list-processes' is run. */);
delete_exited_processes = 1;
#ifdef subprocesses
- DEFVAR_LISP ("process-connection-type", &Vprocess_connection_type,
+ DEFVAR_LISP ("process-connection-type", Vprocess_connection_type,
doc: /* Control type of device used to communicate with subprocesses.
Values are nil to use a pipe, or t or `pty' to use a pty.
The value has no effect if the system has no ptys or if all ptys are busy:
@@ -7660,7 +7646,7 @@ The value takes effect when `start-process' is called. */);
Vprocess_connection_type = Qt;
#ifdef ADAPTIVE_READ_BUFFERING
- DEFVAR_LISP ("process-adaptive-read-buffering", &Vprocess_adaptive_read_buffering,
+ DEFVAR_LISP ("process-adaptive-read-buffering", Vprocess_adaptive_read_buffering,
doc: /* If non-nil, improve receive buffering by delaying after short reads.
On some systems, when Emacs reads the output from a subprocess, the output data
is read in very small blocks, potentially resulting in very poor performance.
@@ -7741,4 +7727,3 @@ The variable takes effect when `start-process' is called. */);
defsubr (&Slist_system_processes);
defsubr (&Sprocess_attributes);
}
-
diff --git a/src/process.h b/src/process.h
index 0350e95310..6bf1084afc 100644
--- a/src/process.h
+++ b/src/process.h
@@ -1,6 +1,5 @@
/* Definitions for asynchronous process control in GNU Emacs.
- Copyright (C) 1985, 1994, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1994, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -20,9 +19,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
-#ifdef HAVE_UNISTD_H
+
#include <unistd.h>
-#endif
#ifdef HAVE_GNUTLS
#include "gnutls.h"
@@ -201,5 +199,3 @@ extern void delete_read_fd (int fd);
extern void add_write_fd (int fd, fd_callback func, void *data);
extern void delete_write_fd (int fd);
-/* arch-tag: dffedfc4-d7bc-4b58-a26f-c16155449c72
- (do not change this comment) */
diff --git a/src/puresize.h b/src/puresize.h
index 3c7f92228a..8024aa95d3 100644
--- a/src/puresize.h
+++ b/src/puresize.h
@@ -1,6 +1,5 @@
/* How much read-only Lisp storage a dumped Emacs needs.
- Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -96,5 +95,3 @@ extern char my_edata[];
#endif /* VIRT_ADDRESS_VARIES */
-/* arch-tag: fd9b0a91-a70e-4729-a75a-6bb4ca1ce14f
- (do not change this comment) */
diff --git a/src/ralloc.c b/src/ralloc.c
index 5f2b52fcc4..ee8493b89a 100644
--- a/src/ralloc.c
+++ b/src/ralloc.c
@@ -1,6 +1,5 @@
/* Block-relocating memory allocator.
- Copyright (C) 1993, 1995, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1995, 2000-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -30,9 +29,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "lisp.h" /* Needed for VALBITS. */
#include "blockinput.h"
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
typedef POINTER_TYPE *POINTER;
typedef size_t SIZE;
@@ -1263,5 +1260,3 @@ r_alloc_init (void)
use_relocatable_buffers = 1;
}
-/* arch-tag: 6a524a15-faff-44c8-95d4-a5da6f55110f
- (do not change this comment) */
diff --git a/src/regex.c b/src/regex.c
index 31f188efa9..cb6edc2e35 100644
--- a/src/regex.c
+++ b/src/regex.c
@@ -2,9 +2,7 @@
0.12. (Implements POSIX draft P1003.2/D11.2, except for some of the
internationalization features.)
- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 1993-2011 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
@@ -196,9 +194,7 @@
even if config.h says that we can. */
# undef REL_ALLOC
-# ifdef HAVE_UNISTD_H
-# include <unistd.h>
-# endif
+# include <unistd.h>
/* When used in Emacs's lib-src, we need xmalloc and xrealloc. */
@@ -3999,7 +3995,6 @@ analyse_first (const re_char *p, const re_char *pend, char *fastmap, const int m
{
case succeed:
return 1;
- continue;
case duplicate:
/* If the first character has to match a backreference, that means
@@ -6735,4 +6730,3 @@ regfree (regex_t *preg)
WEAK_ALIAS (__regfree, regfree)
#endif /* not emacs */
-
diff --git a/src/regex.h b/src/regex.h
index ca6758aeec..990606da4c 100644
--- a/src/regex.h
+++ b/src/regex.h
@@ -1,8 +1,7 @@
/* Definitions for data structures and routines for the regular
expression library, version 0.12.
- Copyright (C) 1985, 1989, 1990, 1991, 1992, 1993, 1995, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985, 1989-1993, 1995, 2000-2011
Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -626,5 +625,3 @@ extern void re_set_whitespace_regexp (const char *regexp);
#endif /* regex.h */
-/* arch-tag: bda6e3ec-3c02-4237-a55a-01ad2e120083
- (do not change this comment) */
diff --git a/src/region-cache.c b/src/region-cache.c
index 9037b5df4b..1f9b62da9f 100644
--- a/src/region-cache.c
+++ b/src/region-cache.c
@@ -1,6 +1,7 @@
/* Caching facts about regions of the buffer, for optimization.
- Copyright (C) 1985, 1986, 1987, 1988, 1989, 1993, 1995, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1985-1989, 1993, 1995, 2001-2011
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -808,5 +809,3 @@ pp_cache (struct region_cache *c)
}
}
-/* arch-tag: 98c29f3f-2ca2-4e3a-92f0-f2249200a17d
- (do not change this comment) */
diff --git a/src/region-cache.h b/src/region-cache.h
index e99eac90c8..0da159285e 100644
--- a/src/region-cache.h
+++ b/src/region-cache.h
@@ -1,6 +1,7 @@
/* Header file: Caching facts about regions of the buffer, for optimization.
- Copyright (C) 1985, 1986, 1993, 1995, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1985-1986, 1993, 1995, 2001-2011
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -110,5 +111,3 @@ extern int region_cache_backward (struct buffer *BUF,
EMACS_INT POS,
EMACS_INT *NEXT);
-/* arch-tag: 70f79125-ef22-4f58-9aec-a48ca2791435
- (do not change this comment) */
diff --git a/src/s/aix4-2.h b/src/s/aix4-2.h
index 2970202864..c62aee249c 100644
--- a/src/s/aix4-2.h
+++ b/src/s/aix4-2.h
@@ -1,6 +1,5 @@
/*
-Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -88,5 +87,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
to avoid a crash just use the Emacs implementation for that function. */
#define BROKEN_GET_CURRENT_DIR_NAME 1
-/* arch-tag: 38fe75ea-6aef-42bd-8449-bc34d921a562
- (do not change this comment) */
diff --git a/src/s/bsd-common.h b/src/s/bsd-common.h
index b17ca7a012..7d472c83ed 100644
--- a/src/s/bsd-common.h
+++ b/src/s/bsd-common.h
@@ -1,7 +1,6 @@
/* Definitions file for GNU Emacs running on bsd 4.3
-Copyright (C) 1985, 1986, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985-1986, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -82,5 +81,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Send signals to subprocesses by "typing" special chars at them. */
#define SIGNALS_VIA_CHARACTERS
-/* arch-tag: 0c367245-bde3-492e-9029-3ff6898beb95
- (do not change this comment) */
diff --git a/src/s/cygwin.h b/src/s/cygwin.h
index 157ef72f55..ceebe23f1e 100644
--- a/src/s/cygwin.h
+++ b/src/s/cygwin.h
@@ -1,7 +1,6 @@
/* System description header file for Cygwin.
-Copyright (C) 1985, 1986, 1992, 1999, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985-1986, 1992, 1999, 2002-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -104,5 +103,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Send signals to subprocesses by "typing" special chars at them. */
#define SIGNALS_VIA_CHARACTERS
-/* arch-tag: 5ae7ba00-83b0-4ab3-806a-3e845779191b
- (do not change this comment) */
diff --git a/src/s/darwin.h b/src/s/darwin.h
index 73e1960227..4fc2f4d103 100644
--- a/src/s/darwin.h
+++ b/src/s/darwin.h
@@ -1,7 +1,6 @@
/* System description header file for Darwin (Mac OS X).
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -150,5 +149,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the stack. */
#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
-/* arch-tag: 481d443d-4f89-43ea-b5fb-49706d95fa41
- (do not change this comment) */
diff --git a/src/s/freebsd.h b/src/s/freebsd.h
index cfed343d6c..222ebc91c4 100644
--- a/src/s/freebsd.h
+++ b/src/s/freebsd.h
@@ -1,8 +1,6 @@
/* System description header for FreeBSD systems.
-Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 1994-2011 Free Software Foundation, Inc.
Author: Shawn M. Carey
(according to authors.el)
@@ -65,6 +63,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the stack. */
#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
-
-/* arch-tag: 426529ca-b7c4-448f-b10a-d4dcdc9c78eb
- (do not change this comment) */
diff --git a/src/s/gnu-kfreebsd.h b/src/s/gnu-kfreebsd.h
index a1e8c02474..a85571915d 100644
--- a/src/s/gnu-kfreebsd.h
+++ b/src/s/gnu-kfreebsd.h
@@ -7,5 +7,3 @@
#define NO_TERMIO /* use only <termios.h> */
-/* arch-tag: 8d098200-2586-469e-99ab-6d092c035e03
- (do not change this comment) */
diff --git a/src/s/gnu-linux.h b/src/s/gnu-linux.h
index 9327423b42..84fe5b92da 100644
--- a/src/s/gnu-linux.h
+++ b/src/s/gnu-linux.h
@@ -1,7 +1,7 @@
/* This file is the configuration file for Linux-based GNU systems
-Copyright (C) 1985, 1986, 1992, 1994, 1996, 1999, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985-1986, 1992, 1994, 1996, 1999, 2001-2011
+ Free Software Foundation, Inc.
This file was put together by Michael K. Johnson and Rik Faith.
@@ -159,6 +159,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
} while (0)
#endif
#endif
-
-/* arch-tag: 6244ea2a-abd0-44ec-abec-ff3dcc9afea9
- (do not change this comment) */
diff --git a/src/s/gnu.h b/src/s/gnu.h
index 95b8017ddc..8f6035b36a 100644
--- a/src/s/gnu.h
+++ b/src/s/gnu.h
@@ -1,7 +1,6 @@
/* Definitions file for GNU Emacs running on the GNU Hurd.
-Copyright (C) 1994, 1995, 1996, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1994-1996, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -45,5 +44,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif /* !_IO_STDIO_H */
#endif /* emacs */
-/* arch-tag: 577983d9-87a6-4922-b8f8-ff2b563714a4
- (do not change this comment) */
diff --git a/src/s/hpux10-20.h b/src/s/hpux10-20.h
index 0932e6f711..d745f8d09c 100644
--- a/src/s/hpux10-20.h
+++ b/src/s/hpux10-20.h
@@ -1,7 +1,6 @@
/* System description file for hpux version 10.20.
-Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -135,5 +134,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* No underscore please. */
#define LDAV_SYMBOL "avenrun"
-/* arch-tag: 8d8dcbf1-ca9b-48a1-94be-b750de18a5c6
- (do not change this comment) */
diff --git a/src/s/hpux11.h b/src/s/hpux11.h
index 48f6084104..40bcc98797 100644
--- a/src/s/hpux11.h
+++ b/src/s/hpux11.h
@@ -7,5 +7,3 @@
then close and reopen it in the child. */
#define USG_SUBTTY_WORKS
-/* arch-tag: f5a3d780-82cd-4a9a-832e-a4031aab788b
- (do not change this comment) */
diff --git a/src/s/irix6-5.h b/src/s/irix6-5.h
index 10481f609c..92465ded2e 100644
--- a/src/s/irix6-5.h
+++ b/src/s/irix6-5.h
@@ -1,7 +1,6 @@
/* Definitions file for GNU Emacs running on Silicon Graphics Irix system 6.5.
-Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1999-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -97,8 +96,4 @@ char *_getpty();
#define GC_SETJMP_WORKS 1
#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
-/* arch-tag: ad0660e0-acf8-46ae-b866-4f3df5b1101b
- (do not change this comment) */
-/* arch-tag: d7ad9ec2-54ad-4b2f-adf2-0070c5c63e83
- (do not change this comment) */
diff --git a/src/s/ms-w32.h b/src/s/ms-w32.h
index 826a02bc60..d247cf866f 100644
--- a/src/s/ms-w32.h
+++ b/src/s/ms-w32.h
@@ -1,7 +1,6 @@
/* System description file for Windows NT.
-Copyright (C) 1993, 1994, 1995, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1993-1995, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -151,7 +150,6 @@ struct sigaction {
#undef HAVE_SETSID
#undef HAVE_FPATHCONF
#define HAVE_SELECT 1
-#define HAVE_MKTIME 1
#undef HAVE_EUIDACCESS
#define HAVE_GETPAGESIZE 1
#define HAVE_TZSET 1
@@ -389,5 +387,3 @@ extern void _DebPrint (const char *fmt, ...);
/* ============================================================ */
-/* arch-tag: 5d4a3a1c-40dc-4dea-9c7c-38fed9ae0eae
- (do not change this comment) */
diff --git a/src/s/msdos.h b/src/s/msdos.h
index 8dd8e3cf49..88afaa8345 100644
--- a/src/s/msdos.h
+++ b/src/s/msdos.h
@@ -1,7 +1,6 @@
/* System description file for MS-DOS
-Copyright (C) 1993, 1996, 1997, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1993, 1996-1997, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -125,5 +124,3 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
#define GC_SETJMP_WORKS 1
#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
-/* arch-tag: d184f860-815d-4ff4-8187-d05c0f3c37d0
- (do not change this comment) */
diff --git a/src/s/netbsd.h b/src/s/netbsd.h
index 6f5b24bcfa..8a639b93c8 100644
--- a/src/s/netbsd.h
+++ b/src/s/netbsd.h
@@ -1,7 +1,6 @@
/* s/ file for netbsd system.
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -45,5 +44,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method. */
#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
-/* arch-tag: e80f364a-04e9-4faf-93cb-f36a0fe95c81
- (do not change this comment) */
diff --git a/src/s/openbsd.h b/src/s/openbsd.h
index d9d60e3b86..175d61dc9c 100644
--- a/src/s/openbsd.h
+++ b/src/s/openbsd.h
@@ -3,5 +3,3 @@
/* The same as NetBSD. Note there are differences in configure. */
#include "netbsd.h"
-/* arch-tag: 7e3f65ca-3f48-4237-933f-2b208b21e8e2
- (do not change this comment) */
diff --git a/src/s/sol2-10.h b/src/s/sol2-10.h
index fd7f30021e..b20476e7fb 100644
--- a/src/s/sol2-10.h
+++ b/src/s/sol2-10.h
@@ -8,5 +8,3 @@
/* This is needed for the system_process_attributes implementation. */
#define _STRUCTURED_PROC 1
-/* arch-tag: 7c51a134-5469-4d16-aa00-d69224640eeb
- (do not change this comment) */
diff --git a/src/s/sol2-6.h b/src/s/sol2-6.h
index 3b707aa5c3..4c6fd3e2f9 100644
--- a/src/s/sol2-6.h
+++ b/src/s/sol2-6.h
@@ -1,7 +1,6 @@
/* Definitions file for GNU Emacs running on Solaris 2.6.
-Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1999-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -62,5 +61,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define GC_SETJMP_WORKS 1
#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
-/* arch-tag: 71ea3857-89dc-4395-9623-77964e6ed3ca
- (do not change this comment) */
diff --git a/src/s/template.h b/src/s/template.h
index eb7ca85c5e..ee5afa81de 100644
--- a/src/s/template.h
+++ b/src/s/template.h
@@ -2,8 +2,7 @@
This file describes the parameters that system description files
should define or not.
-Copyright (C) 1985, 1986, 1992, 1999, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985-1986, 1992, 1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -121,5 +120,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
you should also check `etc/MACHINES' to make sure its descriptions
of known problems in that configuration should be updated. */
-/* arch-tag: 4b426b11-cb2e-4c0e-a488-e663f76a0515
- (do not change this comment) */
diff --git a/src/s/unixware.h b/src/s/unixware.h
index 81b1b3d97f..c6130669a9 100644
--- a/src/s/unixware.h
+++ b/src/s/unixware.h
@@ -1,7 +1,6 @@
/* s/ file for Unixware.
-Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1999-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -61,5 +60,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->__ptr - (FILE)->__base)
-/* arch-tag: d82e92e7-9443-4a60-a581-7f293cbae8a3
- (do not change this comment) */
diff --git a/src/s/usg5-4-common.h b/src/s/usg5-4-common.h
index 4dcb8e5020..12f73c1b3b 100644
--- a/src/s/usg5-4-common.h
+++ b/src/s/usg5-4-common.h
@@ -1,7 +1,6 @@
/* Definitions file for GNU Emacs running on AT&T's System V Release 4
-Copyright (C) 1987, 1990, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1987, 1990, 1999-2011 Free Software Foundation, Inc.
Written by James Van Artsdalen of Dell Computer Corp. [email protected].
Subsequently improved for Dell 2.2 by Eric S. Raymond <[email protected]>.
@@ -107,5 +106,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* This definition was suggested for next release. So give it a try. */
#define HAVE_SOCKETS
-/* arch-tag: 1a0ed909-5faa-434b-b7c3-9d86c63d53a6
- (do not change this comment) */
diff --git a/src/scroll.c b/src/scroll.c
index 4d1c4045bd..08ae83eeee 100644
--- a/src/scroll.c
+++ b/src/scroll.c
@@ -1,6 +1,7 @@
-/* Calculate what line insertion or deletion to do, and do it,
- Copyright (C) 1985, 1986, 1990, 1993, 1994, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+/* Calculate what line insertion or deletion to do, and do it
+
+Copyright (C) 1985-1986, 1990, 1993-1994, 2001-2011
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -877,8 +878,7 @@ scrolling_max_lines_saved (int start, int end, int *oldhash, int *newhash, int *
/* Return a measure of the cost of moving the lines starting with vpos
FROM, up to but not including vpos TO, down by AMOUNT lines (AMOUNT
- may be negative). These are the same arguments that might be given
- to scroll_frame_lines to perform this scrolling. */
+ may be negative). */
int
scroll_cost (FRAME_PTR frame, int from, int to, int amount)
@@ -1036,5 +1036,3 @@ do_line_insertion_deletion_costs (FRAME_PTR frame,
coefficient);
}
-/* arch-tag: cdb7149c-48e7-4793-a948-2786c8e45485
- (do not change this comment) */
diff --git a/src/search.c b/src/search.c
index f2957c335a..c0f8d8067e 100644
--- a/src/search.c
+++ b/src/search.c
@@ -1,6 +1,5 @@
/* String search routines for GNU Emacs.
- Copyright (C) 1985, 1986, 1987, 1993, 1994, 1997, 1998, 1999, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985-1987, 1993-1994, 1997-1999, 2001-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -91,13 +90,6 @@ Lisp_Object Qinvalid_regexp;
/* Error condition used for failing searches */
Lisp_Object Qsearch_failed;
-Lisp_Object Vsearch_spaces_regexp;
-
-/* If non-nil, the match data will not be changed during call to
- searching or matching functions. This variable is for internal use
- only. */
-Lisp_Object Vinhibit_changing_match_data;
-
static void set_search_regs (EMACS_INT, EMACS_INT);
static void save_search_regs (void);
static EMACS_INT simple_search (EMACS_INT, unsigned char *, EMACS_INT,
@@ -156,11 +148,11 @@ compile_pattern_1 (struct regexp_cache *cp, Lisp_Object pattern, Lisp_Object tra
| (posix ? 0 : RE_NO_POSIX_BACKTRACKING));
if (STRINGP (Vsearch_spaces_regexp))
- re_set_whitespace_regexp (SDATA (Vsearch_spaces_regexp));
+ re_set_whitespace_regexp (SSDATA (Vsearch_spaces_regexp));
else
re_set_whitespace_regexp (NULL);
- val = (char *) re_compile_pattern ((char *) SDATA (pattern),
+ val = (char *) re_compile_pattern (SSDATA (pattern),
SBYTES (pattern), &cp->buf);
/* If the compiled pattern hard codes some of the contents of the
@@ -421,7 +413,7 @@ string_match_1 (Lisp_Object regexp, Lisp_Object string, Lisp_Object start, int p
immediate_quit = 1;
re_match_object = string;
- val = re_search (bufp, (char *) SDATA (string),
+ val = re_search (bufp, SSDATA (string),
SBYTES (string), pos_byte,
SBYTES (string) - pos_byte,
(NILP (Vinhibit_changing_match_data)
@@ -492,7 +484,7 @@ fast_string_match (Lisp_Object regexp, Lisp_Object string)
immediate_quit = 1;
re_match_object = string;
- val = re_search (bufp, (char *) SDATA (string),
+ val = re_search (bufp, SSDATA (string),
SBYTES (string), 0,
SBYTES (string), 0);
immediate_quit = 0;
@@ -535,7 +527,7 @@ fast_string_match_ignore_case (Lisp_Object regexp, Lisp_Object string)
immediate_quit = 1;
re_match_object = string;
- val = re_search (bufp, (char *) SDATA (string),
+ val = re_search (bufp, SSDATA (string),
SBYTES (string), 0,
SBYTES (string), 0);
immediate_quit = 0;
@@ -1275,7 +1267,7 @@ search_buffer (Lisp_Object string, EMACS_INT pos, EMACS_INT pos_byte,
if (multibyte == STRING_MULTIBYTE (string))
{
- raw_pattern = (unsigned char *) SDATA (string);
+ raw_pattern = SDATA (string);
raw_pattern_size = SCHARS (string);
raw_pattern_size_byte = SBYTES (string);
}
@@ -3224,7 +3216,7 @@ syms_of_search (void)
saved_last_thing_searched = Qnil;
staticpro (&saved_last_thing_searched);
- DEFVAR_LISP ("search-spaces-regexp", &Vsearch_spaces_regexp,
+ DEFVAR_LISP ("search-spaces-regexp", Vsearch_spaces_regexp,
doc: /* Regexp to substitute for bunches of spaces in regexp search.
Some commands use this for user-specified regexps.
Spaces that occur inside character classes or repetition operators
@@ -3232,7 +3224,7 @@ or other such regexp constructs are not replaced with this.
A value of nil (which is the normal value) means treat spaces literally. */);
Vsearch_spaces_regexp = Qnil;
- DEFVAR_LISP ("inhibit-changing-match-data", &Vinhibit_changing_match_data,
+ DEFVAR_LISP ("inhibit-changing-match-data", Vinhibit_changing_match_data,
doc: /* Internal use only.
If non-nil, the primitive searching and matching functions
such as `looking-at', `string-match', `re-search-forward', etc.,
@@ -3261,6 +3253,3 @@ is to bind it with `let' around a small expression. */);
defsubr (&Sset_match_data);
defsubr (&Sregexp_quote);
}
-
-/* arch-tag: a6059d79-0552-4f14-a2cb-d379a4e3c78f
- (do not change this comment) */
diff --git a/src/sheap.c b/src/sheap.c
index 8d034ff65a..65fbab538b 100644
--- a/src/sheap.c
+++ b/src/sheap.c
@@ -1,7 +1,7 @@
/* simulate `sbrk' with an array in .bss, for `unexec' support for Cygwin;
complete rewrite of xemacs Cygwin `unexec' code
- Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2004-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -94,5 +94,3 @@ report_sheap_usage (int die_if_pure_storage_exceeded)
message ("%s", buf);
}
-/* arch-tag: 1bc386e8-71c2-4da4-b8b5-c1674a9cf926
- (do not change this comment) */
diff --git a/src/sound.c b/src/sound.c
index 6fd23c9ad6..3a1668e490 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -1,6 +1,5 @@
/* sound.c -- sound support.
- Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1998-1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -1500,5 +1499,3 @@ init_sound (void)
#endif /* HAVE_SOUND */
-/* arch-tag: dd850ad8-0433-4e2c-9cba-b7aeeccc0dbd
- (do not change this comment) */
diff --git a/src/strftime.c b/src/strftime.c
deleted file mode 100644
index 5a0923e372..0000000000
--- a/src/strftime.c
+++ /dev/null
@@ -1,1444 +0,0 @@
-/* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007
- Free Software Foundation, Inc.
-
- NOTE: The canonical source of this file is maintained with gnulib.
- Bugs can be reported to [email protected].
-
- This file is part of the GNU Emacs.
-
- 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 2, 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 the GNU C Library; see the file COPYING. If not,
- write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifdef _LIBC
-# define HAVE_LIMITS_H 1
-# define HAVE_MBLEN 1
-# define HAVE_MBRLEN 1
-# define HAVE_STRUCT_ERA_ENTRY 1
-# define HAVE_TM_GMTOFF 1
-# define HAVE_TM_ZONE 1
-# define HAVE_TZNAME 1
-# define HAVE_TZSET 1
-# define MULTIBYTE_IS_FORMAT_SAFE 1
-# define STDC_HEADERS 1
-# include "../locale/localeinfo.h"
-#endif
-
-#include <ctype.h>
-#include <sys/types.h> /* Some systems define `time_t' here. */
-
-#ifdef TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# ifdef HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-#if HAVE_TZNAME
-#ifndef USE_CRT_DLL
-extern char *tzname[];
-#endif
-#endif
-
-/* Do multibyte processing if multibytes are supported, unless
- multibyte sequences are safe in formats. Multibyte sequences are
- safe if they cannot contain byte sequences that look like format
- conversion specifications. The GNU C Library uses UTF8 multibyte
- encoding, which is safe for formats, but strftime.c can be used
- with other C libraries that use unsafe encodings. */
-#define DO_MULTIBYTE (HAVE_MBLEN && ! MULTIBYTE_IS_FORMAT_SAFE)
-
-#if DO_MULTIBYTE
-# if HAVE_MBRLEN
-# include <wchar.h>
-# ifdef HAVE_SYS__MBSTATE_T_H /* previously tested __hpux */
-# include <sys/_mbstate_t.h>
-# endif
-# if !defined (mbsinit) && !defined (HAVE_MBSINIT)
-# define mbsinit(ps) 1
-# endif /* !defined (mbsinit) && !defined (HAVE_MBSINIT) */
-# else
- /* Simulate mbrlen with mblen as best we can. */
-# define mbstate_t int
-# define mbrlen(s, n, ps) mblen (s, n)
-# define mbsinit(ps) (*(ps) == 0)
-# endif
- static const mbstate_t mbstate_zero;
-#endif
-
-#ifdef HAVE_LIMITS_H
-# include <limits.h>
-#endif
-
-#ifdef STDC_HEADERS
-# include <stddef.h>
-# include <stdlib.h>
-# include <string.h>
-#else
-# ifndef HAVE_MEMCPY
-# define memcpy(d, s, n) bcopy ((s), (d), (n))
-# endif
-#endif
-
-#ifdef COMPILE_WIDE
-# include <endian.h>
-# define CHAR_T wchar_t
-# define UCHAR_T unsigned int
-# define L_(Str) L##Str
-# define NLW(Sym) _NL_W##Sym
-
-# define MEMCPY(d, s, n) __wmemcpy (d, s, n)
-# define STRLEN(s) __wcslen (s)
-
-#else
-# define CHAR_T char
-# define UCHAR_T unsigned char
-# define L_(Str) Str
-# define NLW(Sym) Sym
-
-# if !defined STDC_HEADERS && !defined HAVE_MEMCPY
-# define MEMCPY(d, s, n) bcopy ((s), (d), (n))
-# else
-# define MEMCPY(d, s, n) memcpy ((d), (s), (n))
-# endif
-# define STRLEN(s) strlen (s)
-
-# ifdef _LIBC
-# define MEMPCPY(d, s, n) __mempcpy (d, s, n)
-# else
-# ifndef HAVE_MEMPCPY
-# define MEMPCPY(d, s, n) ((void *) ((char *) memcpy (d, s, n) + (n)))
-# endif
-# endif
-#endif
-
-#ifndef PTR
-# ifdef __STDC__
-# define PTR void *
-# else
-# define PTR char *
-# endif
-#endif
-
-#ifndef CHAR_BIT
-# define CHAR_BIT 8
-#endif
-
-#ifndef NULL
-# define NULL 0
-#endif
-
-#define TYPE_SIGNED(t) ((t) -1 < 0)
-
-/* Bound on length of the string representing an integer value of type t.
- Subtract one for the sign bit if t is signed;
- 302 / 1000 is log10 (2) rounded up;
- add one for integer division truncation;
- add one more for a minus sign if t is signed. */
-#define INT_STRLEN_BOUND(t) \
- ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 + 1 + TYPE_SIGNED (t))
-
-#define TM_YEAR_BASE 1900
-
-#ifndef __isleap
-/* Nonzero if YEAR is a leap year (every 4 years,
- except every 100th isn't, and every 400th is). */
-# define __isleap(year) \
- ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
-#endif
-
-
-#ifdef _LIBC
-# define my_strftime_gmtime_r __gmtime_r
-# define my_strftime_localtime_r __localtime_r
-# define tzname __tzname
-# define tzset __tzset
-#else
-
-/* If we're a strftime substitute in a GNU program, then prefer gmtime
- to gmtime_r, since many gmtime_r implementations are buggy.
- Similarly for localtime_r. */
-
-# if ! HAVE_TM_GMTOFF
-static struct tm *
-my_strftime_gmtime_r (const time_t *t, struct tm *tp)
-{
- struct tm *l = gmtime (t);
- if (! l)
- return 0;
- *tp = *l;
- return tp;
-}
-
-static struct tm *
-my_strftime_localtime_r (const time_t *t, struct tm *tp)
-{
- struct tm *l = localtime (t);
- if (! l)
- return 0;
- *tp = *l;
- return tp;
-}
-# endif /* ! HAVE_TM_GMTOFF */
-#endif /* ! defined _LIBC */
-
-
-#if !defined memset && !defined HAVE_MEMSET && !defined _LIBC
-/* Some systems lack the `memset' function and we don't want to
- introduce additional dependencies. */
-/* The SGI compiler reportedly barfs on the trailing null
- if we use a string constant as the initializer. 28 June 1997, rms. */
-static const CHAR_T spaces[16] = /* " " */
-{
- L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),
- L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' ')
-};
-static const CHAR_T zeroes[16] = /* "0000000000000000" */
-{
- L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),
- L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0')
-};
-
-# define memset_space(P, Len) \
- do { \
- int _len = (Len); \
- \
- do \
- { \
- int _this = _len > 16 ? 16 : _len; \
- (P) = MEMPCPY ((P), spaces, _this * sizeof (CHAR_T)); \
- _len -= _this; \
- } \
- while (_len > 0); \
- } while (0)
-
-# define memset_zero(P, Len) \
- do { \
- int _len = (Len); \
- \
- do \
- { \
- int _this = _len > 16 ? 16 : _len; \
- (P) = MEMPCPY ((P), zeroes, _this * sizeof (CHAR_T)); \
- _len -= _this; \
- } \
- while (_len > 0); \
- } while (0)
-#else
-# ifdef COMPILE_WIDE
-# define memset_space(P, Len) (wmemset ((P), L' ', (Len)), (P) += (Len))
-# define memset_zero(P, Len) (wmemset ((P), L'0', (Len)), (P) += (Len))
-# else
-# define memset_space(P, Len) (memset ((P), ' ', (Len)), (P) += (Len))
-# define memset_zero(P, Len) (memset ((P), '0', (Len)), (P) += (Len))
-# endif
-#endif
-
-#define add(n, f) \
- do \
- { \
- int _n = (n); \
- int _delta = width - _n; \
- int _incr = _n + (_delta > 0 ? _delta : 0); \
- if ((size_t) _incr >= maxsize - i) \
- return 0; \
- if (p) \
- { \
- if (_delta > 0) \
- { \
- if (pad == L_('0')) \
- memset_zero (p, _delta); \
- else \
- memset_space (p, _delta); \
- } \
- f; \
- p += _n; \
- } \
- i += _incr; \
- } while (0)
-
-#define cpy(n, s) \
- add ((n), \
- if (to_lowcase) \
- memcpy_lowcase (p, (s), _n LOCALE_ARG); \
- else if (to_uppcase) \
- memcpy_uppcase (p, (s), _n LOCALE_ARG); \
- else \
- MEMCPY ((PTR) p, (const PTR) (s), _n))
-
-#ifdef COMPILE_WIDE
-# ifndef USE_IN_EXTENDED_LOCALE_MODEL
-# undef __mbsrtowcs_l
-# define __mbsrtowcs_l(d, s, l, st, loc) __mbsrtowcs (d, s, l, st)
-# endif
-# define widen(os, ws, l) \
- { \
- mbstate_t __st; \
- const char *__s = os; \
- memset (&__st, '\0', sizeof (__st)); \
- l = __mbsrtowcs_l (NULL, &__s, 0, &__st, loc); \
- ws = (wchar_t *) alloca ((l + 1) * sizeof (wchar_t)); \
- (void) __mbsrtowcs_l (ws, &__s, l, &__st, loc); \
- }
-#endif
-
-
-#if defined _LIBC && defined USE_IN_EXTENDED_LOCALE_MODEL
-/* We use this code also for the extended locale handling where the
- function gets as an additional argument the locale which has to be
- used. To access the values we have to redefine the _NL_CURRENT
- macro. */
-# define strftime __strftime_l
-# define wcsftime __wcsftime_l
-# undef _NL_CURRENT
-# define _NL_CURRENT(category, item) \
- (current->values[_NL_ITEM_INDEX (item)].string)
-# define LOCALE_ARG , loc
-# define LOCALE_PARAM_DECL , __locale_t loc
-# define HELPER_LOCALE_ARG , current
-#else
-# define LOCALE_ARG
-# define LOCALE_PARAM_DECL
-# ifdef _LIBC
-# define HELPER_LOCALE_ARG , _NL_CURRENT_DATA (LC_TIME)
-# else
-# define HELPER_LOCALE_ARG
-# endif
-#endif
-
-#ifdef COMPILE_WIDE
-# ifdef USE_IN_EXTENDED_LOCALE_MODEL
-# define TOUPPER(Ch, L) __towupper_l (Ch, L)
-# define TOLOWER(Ch, L) __towlower_l (Ch, L)
-# else
-# define TOUPPER(Ch, L) towupper (Ch)
-# define TOLOWER(Ch, L) towlower (Ch)
-# endif
-#else
-# ifdef _LIBC
-# ifdef USE_IN_EXTENDED_LOCALE_MODEL
-# define TOUPPER(Ch, L) __toupper_l (Ch, L)
-# define TOLOWER(Ch, L) __tolower_l (Ch, L)
-# else
-# define TOUPPER(Ch, L) toupper (Ch)
-# define TOLOWER(Ch, L) tolower (Ch)
-# endif
-# else
-# define TOUPPER(Ch, L) (islower (Ch) ? toupper (Ch) : (Ch))
-# define TOLOWER(Ch, L) (isupper (Ch) ? tolower (Ch) : (Ch))
-# endif
-#endif
-/* We don't use `isdigit' here since the locale dependent
- interpretation is not what we want here. We only need to accept
- the arabic digits in the ASCII range. One day there is perhaps a
- more reliable way to accept other sets of digits. */
-#define ISDIGIT(Ch) ((unsigned int) (Ch) - L_('0') <= 9)
-
-static CHAR_T *
-memcpy_lowcase (CHAR_T *dest, const CHAR_T *src, size_t len LOCALE_PARAM_DECL)
-{
- while (len-- > 0)
- dest[len] = TOLOWER ((UCHAR_T) src[len], loc);
- return dest;
-}
-
-static CHAR_T *
-memcpy_uppcase (CHAR_T *dest, const CHAR_T *src, size_t len LOCALE_PARAM_DECL)
-{
- while (len-- > 0)
- dest[len] = TOUPPER ((UCHAR_T) src[len], loc);
- return dest;
-}
-
-
-#if ! HAVE_TM_GMTOFF
-/* Yield the difference between *A and *B,
- measured in seconds, ignoring leap seconds. */
-# define tm_diff ftime_tm_diff
-static int
-tm_diff (const struct tm *a, const struct tm *b)
-{
- /* Compute intervening leap days correctly even if year is negative.
- Take care to avoid int overflow in leap day calculations,
- but it's OK to assume that A and B are close to each other. */
- int a4 = (a->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (a->tm_year & 3);
- int b4 = (b->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (b->tm_year & 3);
- int a100 = a4 / 25 - (a4 % 25 < 0);
- int b100 = b4 / 25 - (b4 % 25 < 0);
- int a400 = a100 >> 2;
- int b400 = b100 >> 2;
- int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
- int years = a->tm_year - b->tm_year;
- int days = (365 * years + intervening_leap_days
- + (a->tm_yday - b->tm_yday));
- return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour))
- + (a->tm_min - b->tm_min))
- + (a->tm_sec - b->tm_sec));
-}
-#endif /* ! HAVE_TM_GMTOFF */
-
-
-
-/* The number of days from the first day of the first ISO week of this
- year to the year day YDAY with week day WDAY. ISO weeks start on
- Monday; the first ISO week has the year's first Thursday. YDAY may
- be as small as YDAY_MINIMUM. */
-#define ISO_WEEK_START_WDAY 1 /* Monday */
-#define ISO_WEEK1_WDAY 4 /* Thursday */
-#define YDAY_MINIMUM (-366)
-static int iso_week_days (int, int);
-#ifdef __GNUC__
-__inline__
-#endif
-static int
-iso_week_days (int yday, int wday)
-{
- /* Add enough to the first operand of % to make it nonnegative. */
- int big_enough_multiple_of_7 = (-YDAY_MINIMUM / 7 + 2) * 7;
- return (yday
- - (yday - wday + ISO_WEEK1_WDAY + big_enough_multiple_of_7) % 7
- + ISO_WEEK1_WDAY - ISO_WEEK_START_WDAY);
-}
-
-
-#if !(defined _NL_CURRENT || HAVE_STRFTIME)
-static CHAR_T const weekday_name[][10] =
- {
- L_("Sunday"), L_("Monday"), L_("Tuesday"), L_("Wednesday"),
- L_("Thursday"), L_("Friday"), L_("Saturday")
- };
-static CHAR_T const month_name[][10] =
- {
- L_("January"), L_("February"), L_("March"), L_("April"), L_("May"),
- L_("June"), L_("July"), L_("August"), L_("September"), L_("October"),
- L_("November"), L_("December")
- };
-#endif
-
-
-/* When compiling this file, GNU applications can #define my_strftime
- to a symbol (typically nstrftime) to get an extended strftime with
- extra arguments UT and NS. */
-
-#ifdef my_strftime
-# define extra_args , ut, ns
-# define extra_args_spec , int ut, int ns
-#else
-# ifdef COMPILE_WIDE
-# define my_strftime wcsftime
-# define nl_get_alt_digit _nl_get_walt_digit
-# else
-# define my_strftime strftime
-# define nl_get_alt_digit _nl_get_alt_digit
-# endif
-# define extra_args
-# define extra_args_spec
-/* We don't have this information in general. */
-# define ut 0
-# define ns 0
-#endif
-
-#if !defined _LIBC && !defined(WINDOWSNT) && HAVE_TZNAME && HAVE_TZSET
- /* Solaris 2.5 tzset sometimes modifies the storage returned by localtime.
- Work around this bug by copying *tp before it might be munged. */
- size_t
- _strftime_copytm (CHAR_T *s, size_t maxsize, const CHAR_T *format,
- const struct tm *tp extra_args_spec LOCALE_PARAM_DECL);
- size_t
- my_strftime (CHAR_T *s, size_t maxsize, const CHAR_T *format,
- const struct tm *tp extra_args_spec)
- {
- struct tm tmcopy;
- tmcopy = *tp;
- return _strftime_copytm (s, maxsize, format, &tmcopy extra_args);
- }
-# undef my_strftime
-# define my_strftime _strftime_copytm
-#endif
-
-
-/* Write information from TP into S according to the format
- string FORMAT, writing no more that MAXSIZE characters
- (including the terminating '\0') and returning number of
- characters written. If S is NULL, nothing will be written
- anywhere, so to determine how many characters would be
- written, use NULL for S and (size_t) UINT_MAX for MAXSIZE. */
-size_t
-my_strftime (CHAR_T *s, size_t maxsize, const CHAR_T *format,
- const struct tm *tp extra_args_spec LOCALE_PARAM_DECL)
-{
-#if defined _LIBC && defined USE_IN_EXTENDED_LOCALE_MODEL
- struct locale_data *const current = loc->__locales[LC_TIME];
-#endif
-
- int hour12 = tp->tm_hour;
-#ifdef _NL_CURRENT
- /* We cannot make the following values variables since we must delay
- the evaluation of these values until really needed since some
- expressions might not be valid in every situation. The `struct tm'
- might be generated by a strptime() call that initialized
- only a few elements. Dereference the pointers only if the format
- requires this. Then it is ok to fail if the pointers are invalid. */
-# define a_wkday \
- ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ABDAY_1) + tp->tm_wday))
-# define f_wkday \
- ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(DAY_1) + tp->tm_wday))
-# define a_month \
- ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ABMON_1) + tp->tm_mon))
-# define f_month \
- ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(MON_1) + tp->tm_mon))
-# define ampm \
- ((const CHAR_T *) _NL_CURRENT (LC_TIME, tp->tm_hour > 11 \
- ? NLW(PM_STR) : NLW(AM_STR)))
-
-# define aw_len STRLEN (a_wkday)
-# define am_len STRLEN (a_month)
-# define ap_len STRLEN (ampm)
-#else
-# if !HAVE_STRFTIME
-# define f_wkday (weekday_name[tp->tm_wday])
-# define f_month (month_name[tp->tm_mon])
-# define a_wkday f_wkday
-# define a_month f_month
-# define ampm (L_("AMPM") + 2 * (tp->tm_hour > 11))
-
- size_t aw_len = 3;
- size_t am_len = 3;
- size_t ap_len = 2;
-# endif
-#endif
- const char *zone;
- size_t i = 0;
- CHAR_T *p = s;
- const CHAR_T *f;
-#if DO_MULTIBYTE && !defined COMPILE_WIDE
- const char *format_end = NULL;
-#endif
-
- zone = NULL;
-#if HAVE_TM_ZONE
- /* The POSIX test suite assumes that setting
- the environment variable TZ to a new value before calling strftime()
- will influence the result (the %Z format) even if the information in
- TP is computed with a totally different time zone.
- This is bogus: though POSIX allows bad behavior like this,
- POSIX does not require it. Do the right thing instead. */
- zone = (const char *) tp->tm_zone;
-#endif
-#if HAVE_TZNAME
- if (ut)
- {
- if (! (zone && *zone))
- zone = "GMT";
- }
- else
- {
- /* POSIX.1 requires that local time zone information be used as
- though strftime called tzset. */
-# if HAVE_TZSET
- tzset ();
-# endif
- }
-#endif
-
- if (hour12 > 12)
- hour12 -= 12;
- else
- if (hour12 == 0)
- hour12 = 12;
-
- for (f = format; *f != '\0'; ++f)
- {
- int pad = 0; /* Padding for number ('-', '_', or 0). */
- int modifier; /* Field modifier ('E', 'O', or 0). */
- int digits; /* Max digits for numeric format. */
- int number_value; /* Numeric value to be printed. */
- int negative_number; /* 1 if the number is negative. */
- const CHAR_T *subfmt;
- CHAR_T *bufp;
- CHAR_T buf[1 + (sizeof (int) < sizeof (time_t)
- ? INT_STRLEN_BOUND (time_t)
- : INT_STRLEN_BOUND (int))];
- int width = -1;
- int to_lowcase = 0;
- int to_uppcase = 0;
- int change_case = 0;
- int format_char;
-
-#if DO_MULTIBYTE && !defined COMPILE_WIDE
- switch (*f)
- {
- case L_('%'):
- break;
-
- case L_('\b'): case L_('\t'): case L_('\n'):
- case L_('\v'): case L_('\f'): case L_('\r'):
- case L_(' '): case L_('!'): case L_('"'): case L_('#'): case L_('&'):
- case L_('\''): case L_('('): case L_(')'): case L_('*'): case L_('+'):
- case L_(','): case L_('-'): case L_('.'): case L_('/'): case L_('0'):
- case L_('1'): case L_('2'): case L_('3'): case L_('4'): case L_('5'):
- case L_('6'): case L_('7'): case L_('8'): case L_('9'): case L_(':'):
- case L_(';'): case L_('<'): case L_('='): case L_('>'): case L_('?'):
- case L_('A'): case L_('B'): case L_('C'): case L_('D'): case L_('E'):
- case L_('F'): case L_('G'): case L_('H'): case L_('I'): case L_('J'):
- case L_('K'): case L_('L'): case L_('M'): case L_('N'): case L_('O'):
- case L_('P'): case L_('Q'): case L_('R'): case L_('S'): case L_('T'):
- case L_('U'): case L_('V'): case L_('W'): case L_('X'): case L_('Y'):
- case L_('Z'): case L_('['): case L_('\\'): case L_(']'): case L_('^'):
- case L_('_'): case L_('a'): case L_('b'): case L_('c'): case L_('d'):
- case L_('e'): case L_('f'): case L_('g'): case L_('h'): case L_('i'):
- case L_('j'): case L_('k'): case L_('l'): case L_('m'): case L_('n'):
- case L_('o'): case L_('p'): case L_('q'): case L_('r'): case L_('s'):
- case L_('t'): case L_('u'): case L_('v'): case L_('w'): case L_('x'):
- case L_('y'): case L_('z'): case L_('{'): case L_('|'): case L_('}'):
- case L_('~'):
- /* The C Standard requires these 98 characters (plus '%') to
- be in the basic execution character set. None of these
- characters can start a multibyte sequence, so they need
- not be analyzed further. */
- add (1, *p = *f);
- continue;
-
- default:
- /* Copy this multibyte sequence until we reach its end, find
- an error, or come back to the initial shift state. */
- {
- mbstate_t mbstate = mbstate_zero;
- size_t len = 0;
- size_t fsize;
-
- if (! format_end)
- format_end = f + strlen (f) + 1;
- fsize = format_end - f;
-
- do
- {
- size_t bytes = mbrlen (f + len, fsize - len, &mbstate);
-
- if (bytes == 0)
- break;
-
- if (bytes == (size_t) -2)
- {
- len += strlen (f + len);
- break;
- }
-
- if (bytes == (size_t) -1)
- {
- len++;
- break;
- }
-
- len += bytes;
- }
- while (! mbsinit (&mbstate));
-
- cpy (len, f);
- f += len - 1;
- continue;
- }
- }
-
-#else /* ! DO_MULTIBYTE */
-
- /* Either multibyte encodings are not supported, they are
- safe for formats, so any non-'%' byte can be copied through,
- or this is the wide character version. */
- if (*f != L_('%'))
- {
- add (1, *p = *f);
- continue;
- }
-
-#endif /* ! DO_MULTIBYTE */
-
- /* Check for flags that can modify a format. */
- while (1)
- {
- switch (*++f)
- {
- /* This influences the number formats. */
- case L_('_'):
- case L_('-'):
- case L_('0'):
- pad = *f;
- continue;
-
- /* This changes textual output. */
- case L_('^'):
- to_uppcase = 1;
- continue;
- case L_('#'):
- change_case = 1;
- continue;
-
- default:
- break;
- }
- break;
- }
-
- /* As a GNU extension we allow to specify the field width. */
- if (ISDIGIT (*f))
- {
- width = 0;
- do
- {
- if (width > INT_MAX / 10
- || (width == INT_MAX / 10 && *f - L_('0') > INT_MAX % 10))
- /* Avoid overflow. */
- width = INT_MAX;
- else
- {
- width *= 10;
- width += *f - L_('0');
- }
- ++f;
- }
- while (ISDIGIT (*f));
- }
-
- /* Check for modifiers. */
- switch (*f)
- {
- case L_('E'):
- case L_('O'):
- modifier = *f++;
- break;
-
- default:
- modifier = 0;
- break;
- }
-
- /* Now do the specified format. */
- format_char = *f;
- switch (format_char)
- {
-#define DO_NUMBER(d, v) \
- digits = d > width ? d : width; \
- number_value = v; goto do_number
-#define DO_NUMBER_SPACEPAD(d, v) \
- digits = d > width ? d : width; \
- number_value = v; goto do_number_spacepad
-
- case L_('%'):
- if (modifier != 0)
- goto bad_format;
- add (1, *p = *f);
- break;
-
- case L_('a'):
- if (modifier != 0)
- goto bad_format;
- if (change_case)
- {
- to_uppcase = 1;
- to_lowcase = 0;
- }
-#if defined _NL_CURRENT || !HAVE_STRFTIME
- cpy (aw_len, a_wkday);
- break;
-#else
- goto underlying_strftime;
-#endif
-
- case 'A':
- if (modifier != 0)
- goto bad_format;
- if (change_case)
- {
- to_uppcase = 1;
- to_lowcase = 0;
- }
-#if defined _NL_CURRENT || !HAVE_STRFTIME
- cpy (STRLEN (f_wkday), f_wkday);
- break;
-#else
- goto underlying_strftime;
-#endif
-
- case L_('b'):
- case L_('h'):
- if (change_case)
- {
- to_uppcase = 1;
- to_lowcase = 0;
- }
- if (modifier != 0)
- goto bad_format;
-#if defined _NL_CURRENT || !HAVE_STRFTIME
- cpy (am_len, a_month);
- break;
-#else
- goto underlying_strftime;
-#endif
-
- case L_('B'):
- if (modifier != 0)
- goto bad_format;
- if (change_case)
- {
- to_uppcase = 1;
- to_lowcase = 0;
- }
-#if defined _NL_CURRENT || !HAVE_STRFTIME
- cpy (STRLEN (f_month), f_month);
- break;
-#else
- goto underlying_strftime;
-#endif
-
- case L_('c'):
- if (modifier == L_('O'))
- goto bad_format;
-#ifdef _NL_CURRENT
- if (! (modifier == 'E'
- && (*(subfmt =
- (const CHAR_T *) _NL_CURRENT (LC_TIME,
- NLW(ERA_D_T_FMT)))
- != '\0')))
- subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_T_FMT));
-#else
-# if HAVE_STRFTIME
- goto underlying_strftime;
-# else
- subfmt = L_("%a %b %e %H:%M:%S %Y");
-# endif
-#endif
-
- subformat:
- {
- CHAR_T *old_start = p;
- size_t len = my_strftime (NULL, (size_t) -1, subfmt,
- tp extra_args LOCALE_ARG);
- add (len, my_strftime (p, maxsize - i, subfmt,
- tp extra_args LOCALE_ARG));
-
- if (to_uppcase)
- while (old_start < p)
- {
- *old_start = TOUPPER ((UCHAR_T) *old_start, loc);
- ++old_start;
- }
- }
- break;
-
-#if HAVE_STRFTIME && ! (defined _NL_CURRENT && HAVE_STRUCT_ERA_ENTRY)
- underlying_strftime:
- {
- /* The relevant information is available only via the
- underlying strftime implementation, so use that. */
- char ufmt[4];
- char *u = ufmt;
- char ubuf[1024]; /* enough for any single format in practice */
- size_t len;
- /* Make sure we're calling the actual underlying strftime.
- In some cases, config.h contains something like
- "#define strftime rpl_strftime". */
-# ifdef strftime
-# undef strftime
- size_t strftime ();
-# endif
-
-#ifdef STRFTIME_NO_POSIX2
- /* Some system libraries do not support the POSIX.2 extensions.
- In those cases, convert %h to %b, and strip modifiers. */
- modifier = 0;
- if (format_char == 'h')
- format_char = 'b';
-#endif
- *u++ = '%';
- if (modifier != 0)
- *u++ = modifier;
- *u++ = format_char;
- *u = '\0';
- len = strftime (ubuf, sizeof ubuf, ufmt, tp);
- if (len == 0 && ubuf[0] != '\0')
- return 0;
- cpy (len, ubuf);
- }
- break;
-#endif
-
- case L_('C'):
- if (modifier == L_('O'))
- goto bad_format;
- if (modifier == L_('E'))
- {
-#if HAVE_STRUCT_ERA_ENTRY
- struct era_entry *era = _nl_get_era_entry (tp HELPER_LOCALE_ARG);
- if (era)
- {
-# ifdef COMPILE_WIDE
- size_t len = __wcslen (era->era_wname);
- cpy (len, era->era_wname);
-# else
- size_t len = strlen (era->era_name);
- cpy (len, era->era_name);
-# endif
- break;
- }
-#else
-# if HAVE_STRFTIME
- goto underlying_strftime;
-# endif
-#endif
- }
-
- {
- int year = tp->tm_year + TM_YEAR_BASE;
- DO_NUMBER (1, year / 100 - (year % 100 < 0));
- }
-
- case L_('x'):
- if (modifier == L_('O'))
- goto bad_format;
-#ifdef _NL_CURRENT
- if (! (modifier == L_('E')
- && (*(subfmt =
- (const CHAR_T *)_NL_CURRENT (LC_TIME, NLW(ERA_D_FMT)))
- != L_('\0'))))
- subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_FMT));
- goto subformat;
-#else
-# if HAVE_STRFTIME
- goto underlying_strftime;
-# else
- /* Fall through. */
-# endif
-#endif
- case L_('D'):
- if (modifier != 0)
- goto bad_format;
- subfmt = L_("%m/%d/%y");
- goto subformat;
-
- case L_('d'):
- if (modifier == L_('E'))
- goto bad_format;
-
- DO_NUMBER (2, tp->tm_mday);
-
- case L_('e'):
- if (modifier == L_('E'))
- goto bad_format;
-
- DO_NUMBER_SPACEPAD (2, tp->tm_mday);
-
- /* All numeric formats set DIGITS and NUMBER_VALUE and then
- jump to one of these two labels. */
-
- do_number_spacepad:
- /* Force `_' flag unless overridden by `0' or `-' flag. */
- if (pad != L_('0') && pad != L_('-'))
- pad = L_('_');
-
- do_number:
- /* Format the number according to the MODIFIER flag. */
-
- if (modifier == L_('O') && 0 <= number_value)
- {
-#ifdef _NL_CURRENT
- /* Get the locale specific alternate representation of
- the number NUMBER_VALUE. If none exist NULL is returned. */
- const CHAR_T *cp = nl_get_alt_digit (number_value
- HELPER_LOCALE_ARG);
-
- if (cp != NULL)
- {
- size_t digitlen = STRLEN (cp);
- if (digitlen != 0)
- {
- cpy (digitlen, cp);
- break;
- }
- }
-#else
-# if HAVE_STRFTIME
- goto underlying_strftime;
-# endif
-#endif
- }
- {
- unsigned int u = number_value;
-
- bufp = buf + sizeof (buf) / sizeof (buf[0]);
- negative_number = number_value < 0;
-
- if (negative_number)
- u = -u;
-
- do
- *--bufp = u % 10 + L_('0');
- while ((u /= 10) != 0);
- }
-
- do_number_sign_and_padding:
- if (negative_number)
- *--bufp = L_('-');
-
- if (pad != L_('-'))
- {
- int padding = digits - (buf + (sizeof (buf) / sizeof (buf[0]))
- - bufp);
-
- if (padding > 0)
- {
- if (pad == L_('_'))
- {
- if ((size_t) padding >= maxsize - i)
- return 0;
-
- if (p)
- memset_space (p, padding);
- i += padding;
- width = width > padding ? width - padding : 0;
- }
- else
- {
- if ((size_t) digits >= maxsize - i)
- return 0;
-
- if (negative_number)
- {
- ++bufp;
-
- if (p)
- *p++ = L_('-');
- ++i;
- }
-
- if (p)
- memset_zero (p, padding);
- i += padding;
- width = 0;
- }
- }
- }
-
- cpy (buf + sizeof (buf) / sizeof (buf[0]) - bufp, bufp);
- break;
-
- case L_('F'):
- if (modifier != 0)
- goto bad_format;
- subfmt = L_("%Y-%m-%d");
- goto subformat;
-
- case L_('H'):
- if (modifier == L_('E'))
- goto bad_format;
-
- DO_NUMBER (2, tp->tm_hour);
-
- case L_('I'):
- if (modifier == L_('E'))
- goto bad_format;
-
- DO_NUMBER (2, hour12);
-
- case L_('k'): /* GNU extension. */
- if (modifier == L_('E'))
- goto bad_format;
-
- DO_NUMBER_SPACEPAD (2, tp->tm_hour);
-
- case L_('l'): /* GNU extension. */
- if (modifier == L_('E'))
- goto bad_format;
-
- DO_NUMBER_SPACEPAD (2, hour12);
-
- case L_('j'):
- if (modifier == L_('E'))
- goto bad_format;
-
- DO_NUMBER (3, 1 + tp->tm_yday);
-
- case L_('M'):
- if (modifier == L_('E'))
- goto bad_format;
-
- DO_NUMBER (2, tp->tm_min);
-
- case L_('m'):
- if (modifier == L_('E'))
- goto bad_format;
-
- DO_NUMBER (2, tp->tm_mon + 1);
-
-#ifndef _LIBC
- case L_('N'): /* GNU extension. */
- if (modifier == L_('E'))
- goto bad_format;
-
- number_value = ns;
- if (width != -1)
- {
- /* Take an explicit width less than 9 as a precision. */
- int j;
- for (j = width; j < 9; j++)
- number_value /= 10;
- }
-
- DO_NUMBER (9, number_value);
-#endif
-
- case L_('n'):
- add (1, *p = L_('\n'));
- break;
-
- case L_('P'):
- to_lowcase = 1;
-#if !defined _NL_CURRENT && HAVE_STRFTIME
- format_char = L_('p');
-#endif
- /* FALLTHROUGH */
-
- case L_('p'):
- if (change_case)
- {
- to_uppcase = 0;
- to_lowcase = 1;
- }
-#if defined _NL_CURRENT || !HAVE_STRFTIME
- cpy (ap_len, ampm);
- break;
-#else
- goto underlying_strftime;
-#endif
-
- case L_('R'):
- subfmt = L_("%H:%M");
- goto subformat;
-
- case L_('r'):
-#ifdef _NL_CURRENT
- if (*(subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME,
- NLW(T_FMT_AMPM)))
- == L_('\0'))
-#endif
- subfmt = L_("%I:%M:%S %p");
- goto subformat;
-
- case L_('S'):
- if (modifier == L_('E'))
- goto bad_format;
-
- DO_NUMBER (2, tp->tm_sec);
-
- case L_('s'): /* GNU extension. */
- {
- struct tm ltm;
- time_t t;
-
- ltm = *tp;
- t = mktime (&ltm);
-
- /* Generate string value for T using time_t arithmetic;
- this works even if sizeof (long) < sizeof (time_t). */
-
- bufp = buf + sizeof (buf) / sizeof (buf[0]);
- negative_number = t < 0;
-
- do
- {
- int d = t % 10;
- t /= 10;
-
- if (negative_number)
- {
- d = -d;
-
- /* Adjust if division truncates to minus infinity. */
- if (0 < -1 % 10 && d < 0)
- {
- t++;
- d += 10;
- }
- }
-
- *--bufp = d + L_('0');
- }
- while (t != 0);
-
- digits = 1;
- goto do_number_sign_and_padding;
- }
-
- case L_('X'):
- if (modifier == L_('O'))
- goto bad_format;
-#ifdef _NL_CURRENT
- if (! (modifier == L_('E')
- && (*(subfmt =
- (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ERA_T_FMT)))
- != L_('\0'))))
- subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(T_FMT));
- goto subformat;
-#else
-# if HAVE_STRFTIME
- goto underlying_strftime;
-# else
- /* Fall through. */
-# endif
-#endif
- case L_('T'):
- subfmt = L_("%H:%M:%S");
- goto subformat;
-
- case L_('t'):
- add (1, *p = L_('\t'));
- break;
-
- case L_('u'):
- DO_NUMBER (1, (tp->tm_wday - 1 + 7) % 7 + 1);
-
- case L_('U'):
- if (modifier == L_('E'))
- goto bad_format;
-
- DO_NUMBER (2, (tp->tm_yday - tp->tm_wday + 7) / 7);
-
- case L_('V'):
- case L_('g'):
- case L_('G'):
- if (modifier == L_('E'))
- goto bad_format;
- {
- int year = tp->tm_year + TM_YEAR_BASE;
- int days = iso_week_days (tp->tm_yday, tp->tm_wday);
-
- if (days < 0)
- {
- /* This ISO week belongs to the previous year. */
- year--;
- days = iso_week_days (tp->tm_yday + (365 + __isleap (year)),
- tp->tm_wday);
- }
- else
- {
- int d = iso_week_days (tp->tm_yday - (365 + __isleap (year)),
- tp->tm_wday);
- if (0 <= d)
- {
- /* This ISO week belongs to the next year. */
- year++;
- days = d;
- }
- }
-
- switch (*f)
- {
- case L_('g'):
- DO_NUMBER (2, (year % 100 + 100) % 100);
-
- case L_('G'):
- DO_NUMBER (1, year);
-
- default:
- DO_NUMBER (2, days / 7 + 1);
- }
- }
-
- case L_('W'):
- if (modifier == L_('E'))
- goto bad_format;
-
- DO_NUMBER (2, (tp->tm_yday - (tp->tm_wday - 1 + 7) % 7 + 7) / 7);
-
- case L_('w'):
- if (modifier == L_('E'))
- goto bad_format;
-
- DO_NUMBER (1, tp->tm_wday);
-
- case L_('Y'):
- if (modifier == 'E')
- {
-#if HAVE_STRUCT_ERA_ENTRY
- struct era_entry *era = _nl_get_era_entry (tp HELPER_LOCALE_ARG);
- if (era)
- {
-# ifdef COMPILE_WIDE
- subfmt = era->era_wformat;
-# else
- subfmt = era->era_format;
-# endif
- goto subformat;
- }
-#else
-# if HAVE_STRFTIME
- goto underlying_strftime;
-# endif
-#endif
- }
- if (modifier == L_('O'))
- goto bad_format;
- else
- DO_NUMBER (1, tp->tm_year + TM_YEAR_BASE);
-
- case L_('y'):
- if (modifier == L_('E'))
- {
-#if HAVE_STRUCT_ERA_ENTRY
- struct era_entry *era = _nl_get_era_entry (tp HELPER_LOCALE_ARG);
- if (era)
- {
- int delta = tp->tm_year - era->start_date[0];
- DO_NUMBER (1, (era->offset
- + delta * era->absolute_direction));
- }
-#else
-# if HAVE_STRFTIME
- goto underlying_strftime;
-# endif
-#endif
- }
- DO_NUMBER (2, (tp->tm_year % 100 + 100) % 100);
-
- case L_('Z'):
- if (change_case)
- {
- to_uppcase = 0;
- to_lowcase = 1;
- }
-
-#if HAVE_TZNAME
- /* The tzset() call might have changed the value. */
- if (!(zone && *zone) && tp->tm_isdst >= 0)
- zone = tzname[tp->tm_isdst];
-#endif
- if (! zone)
- zone = "";
-
-#ifdef COMPILE_WIDE
- {
- /* The zone string is always given in multibyte form. We have
- to transform it first. */
- wchar_t *wczone;
- size_t len;
- widen (zone, wczone, len);
- cpy (len, wczone);
- }
-#else
- cpy (strlen (zone), zone);
-#endif
- break;
-
- case L_('z'):
- if (tp->tm_isdst < 0)
- break;
-
- {
- int diff;
-#if HAVE_TM_GMTOFF
- diff = tp->tm_gmtoff;
-#else
- if (ut)
- diff = 0;
- else
- {
- struct tm gtm;
- struct tm ltm;
- time_t lt;
-
- ltm = *tp;
- lt = mktime (&ltm);
-
- if (lt == (time_t) -1)
- {
- /* mktime returns -1 for errors, but -1 is also a
- valid time_t value. Check whether an error really
- occurred. */
- struct tm tm;
-
- if (! my_strftime_localtime_r (&lt, &tm)
- || ((ltm.tm_sec ^ tm.tm_sec)
- | (ltm.tm_min ^ tm.tm_min)
- | (ltm.tm_hour ^ tm.tm_hour)
- | (ltm.tm_mday ^ tm.tm_mday)
- | (ltm.tm_mon ^ tm.tm_mon)
- | (ltm.tm_year ^ tm.tm_year)))
- break;
- }
-
- if (! my_strftime_gmtime_r (&lt, &gtm))
- break;
-
- diff = tm_diff (&ltm, &gtm);
- }
-#endif
-
- if (diff < 0)
- {
- add (1, *p = L_('-'));
- diff = -diff;
- }
- else
- add (1, *p = L_('+'));
-
- diff /= 60;
- DO_NUMBER (4, (diff / 60) * 100 + diff % 60);
- }
-
- case L_('\0'): /* GNU extension: % at end of format. */
- --f;
- /* Fall through. */
- default:
- /* Unknown format; output the format, including the '%',
- since this is most likely the right thing to do if a
- multibyte string has been misparsed. */
- bad_format:
- {
- int flen;
- for (flen = 1; f[1 - flen] != L_('%'); flen++)
- continue;
- cpy (flen, &f[1 - flen]);
- }
- break;
- }
- }
-
- if (p && maxsize != 0)
- *p = L_('\0');
- return i;
-}
-#ifdef _LIBC
-libc_hidden_def (my_strftime)
-#endif
-
-
-#ifdef emacs
-#undef ut
-/* For Emacs we have a separate interface which corresponds to the normal
- strftime function plus the ut argument, but without the ns argument. */
-size_t
-emacs_strftimeu (char *s, size_t maxsize, const char *format,
- const struct tm *tp, int ut)
-{
- return my_strftime (s, maxsize, format, tp, ut, 0);
-}
-#endif
-
diff --git a/src/syntax.c b/src/syntax.c
index 567f01385d..2f47d73d69 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -1,6 +1,5 @@
/* GNU Emacs routines to deal with syntax tables; also word and list parsing.
- Copyright (C) 1985, 1987, 1993, 1994, 1995, 1997, 1998, 1999, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985, 1987, 1993-1995, 1997-1999, 2001-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -98,23 +97,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
Lisp_Object Qsyntax_table_p, Qsyntax_table, Qscan_error;
-int words_include_escapes;
-int parse_sexp_lookup_properties;
-
-/* Nonzero means `scan-sexps' treat all multibyte characters as symbol. */
-int multibyte_syntax_as_symbol;
-
/* Used as a temporary in SYNTAX_ENTRY and other macros in syntax.h,
if not compiled with GCC. No need to mark it, since it is used
only very temporarily. */
Lisp_Object syntax_temp;
-/* Non-zero means an open parenthesis in column 0 is always considered
- to be the start of a defun. Zero means an open parenthesis in
- column 0 has no special meaning. */
-
-int open_paren_in_column_0_is_defun_start;
-
/* This is the internal form of the parse state used in parse-partial-sexp. */
struct lisp_parse_state
@@ -167,7 +154,6 @@ int syntax_prefix_flag_p (int c)
struct gl_state_s gl_state; /* Global state of syntax parser. */
-INTERVAL interval_of (int, Lisp_Object);
#define INTERVALS_AT_ONCE 10 /* 1 + max-number of intervals
to scan to property-change. */
@@ -1221,12 +1207,6 @@ DEFUN ("internal-describe-syntax-value", Finternal_describe_syntax_value,
return syntax;
}
-int parse_sexp_ignore_comments;
-
-/* Char-table of functions that find the next or previous word
- boundary. */
-Lisp_Object Vfind_word_boundary_function_table;
-
/* Return the position across COUNT words from FROM.
If that many words cannot be found before the end of the buffer, return 0.
COUNT negative means scan backward and stop at word beginning. */
@@ -3483,31 +3463,31 @@ syms_of_syntax (void)
Fput (Qscan_error, Qerror_message,
make_pure_c_string ("Scan error"));
- DEFVAR_BOOL ("parse-sexp-ignore-comments", &parse_sexp_ignore_comments,
+ DEFVAR_BOOL ("parse-sexp-ignore-comments", parse_sexp_ignore_comments,
doc: /* Non-nil means `forward-sexp', etc., should treat comments as whitespace. */);
- DEFVAR_BOOL ("parse-sexp-lookup-properties", &parse_sexp_lookup_properties,
+ DEFVAR_BOOL ("parse-sexp-lookup-properties", parse_sexp_lookup_properties,
doc: /* Non-nil means `forward-sexp', etc., obey `syntax-table' property.
Otherwise, that text property is simply ignored.
See the info node `(elisp)Syntax Properties' for a description of the
`syntax-table' property. */);
words_include_escapes = 0;
- DEFVAR_BOOL ("words-include-escapes", &words_include_escapes,
+ DEFVAR_BOOL ("words-include-escapes", words_include_escapes,
doc: /* Non-nil means `forward-word', etc., should treat escape chars part of words. */);
- DEFVAR_BOOL ("multibyte-syntax-as-symbol", &multibyte_syntax_as_symbol,
+ DEFVAR_BOOL ("multibyte-syntax-as-symbol", multibyte_syntax_as_symbol,
doc: /* Non-nil means `scan-sexps' treats all multibyte characters as symbol. */);
multibyte_syntax_as_symbol = 0;
DEFVAR_BOOL ("open-paren-in-column-0-is-defun-start",
- &open_paren_in_column_0_is_defun_start,
+ open_paren_in_column_0_is_defun_start,
doc: /* *Non-nil means an open paren in column 0 denotes the start of a defun. */);
open_paren_in_column_0_is_defun_start = 1;
DEFVAR_LISP ("find-word-boundary-function-table",
- &Vfind_word_boundary_function_table,
+ Vfind_word_boundary_function_table,
doc: /*
Char table of functions to search for the word boundary.
Each function is called with two arguments; POS and LIMIT.
@@ -3549,5 +3529,3 @@ In both cases, LIMIT bounds the search. */);
defsubr (&Sparse_partial_sexp);
}
-/* arch-tag: 3e297b9f-088e-4b64-8f4c-fb0b3443e412
- (do not change this comment) */
diff --git a/src/syntax.h b/src/syntax.h
index 15e6c72930..bea66d1fad 100644
--- a/src/syntax.h
+++ b/src/syntax.h
@@ -1,6 +1,7 @@
/* Declarations having to do with GNU Emacs syntax tables.
- Copyright (C) 1985, 1993, 1994, 1997, 1998, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1985, 1993-1994, 1997-1998, 2001-2011
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -298,10 +299,5 @@ struct gl_state_s
};
extern struct gl_state_s gl_state;
-extern int parse_sexp_lookup_properties;
-extern INTERVAL interval_of (int, Lisp_Object);
-
extern EMACS_INT scan_words (EMACS_INT, EMACS_INT);
-/* arch-tag: 28833cca-cd73-4741-8c85-a3111166a0e0
- (do not change this comment) */
diff --git a/src/sysdep.c b/src/sysdep.c
index ac766058d3..5f82d2d534 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -1,6 +1,5 @@
/* Interfaces to system-dependent kernel and library entries.
- Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985-1988, 1993-1995, 1999-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -30,9 +29,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifdef HAVE_LIMITS_H
#include <limits.h>
#endif /* HAVE_LIMITS_H */
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#include "lisp.h"
#include "sysselect.h"
@@ -1307,11 +1304,6 @@ setup_pty (int fd)
}
#endif /* HAVE_PTYS */
-/* init_system_name sets up the string for the Lisp function
- system-name to return. */
-
-extern Lisp_Object Vsystem_name;
-
#ifdef HAVE_SOCKETS
#include <sys/socket.h>
#include <netdb.h>
diff --git a/src/sysselect.h b/src/sysselect.h
index 0c90814390..20eade8d07 100644
--- a/src/sysselect.h
+++ b/src/sysselect.h
@@ -1,6 +1,5 @@
/* sysselect.h - System-dependent definitions for the select function.
- Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -54,5 +53,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define select sys_select
#endif
-/* arch-tag: 36d05500-8cf6-4847-8e78-6721f18c06ef
- (do not change this comment) */
diff --git a/src/syssignal.h b/src/syssignal.h
index 48eb722935..7b4070322d 100644
--- a/src/syssignal.h
+++ b/src/syssignal.h
@@ -1,6 +1,5 @@
/* syssignal.h - System-dependent definitions for signals.
- Copyright (C) 1993, 1999, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -159,5 +158,3 @@ extern pthread_t main_thread;
#else /* not FORWARD_SIGNAL_TO_MAIN_THREAD */
#define SIGNAL_THREAD_CHECK(signo)
#endif /* not FORWARD_SIGNAL_TO_MAIN_THREAD */
-/* arch-tag: 4580e86a-340d-4574-9e11-a742b6e1a152
- (do not change this comment) */
diff --git a/src/systime.h b/src/systime.h
index 9f6a907a9c..eae302904f 100644
--- a/src/systime.h
+++ b/src/systime.h
@@ -1,6 +1,5 @@
/* systime.h - System-dependent definitions for time manipulations.
- Copyright (C) 1993, 1994, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993-1994, 2002-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -174,5 +173,3 @@ extern int lisp_time_argument (Lisp_Object, time_t *, int *);
#endif /* EMACS_SYSTIME_H */
-/* arch-tag: dcb79915-cf99-4bce-9778-aade71d07651
- (do not change this comment) */
diff --git a/src/systty.h b/src/systty.h
index 59850e7c32..2eacfdb271 100644
--- a/src/systty.h
+++ b/src/systty.h
@@ -1,6 +1,5 @@
/* systty.h - System-dependent definitions for terminals.
- Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993-1994, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -37,9 +36,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <sys/pty.h>
#endif /* AIX */
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
/* Special cases - inhibiting the use of certain features. */
diff --git a/src/syswait.h b/src/syswait.h
index 36ee571a3b..44a824abad 100644
--- a/src/syswait.h
+++ b/src/syswait.h
@@ -1,6 +1,5 @@
/* Define wait system call interface for Emacs.
- Copyright (C) 1993, 1994, 1995, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993-1995, 2000-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -58,5 +57,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif /* EMACS_SYSWAIT_H */
-/* arch-tag: 7e5d9719-ec66-4b6f-89bb-563eea16a899
- (do not change this comment) */
diff --git a/src/term.c b/src/term.c
index a684edc5a8..1aefe02421 100644
--- a/src/term.c
+++ b/src/term.c
@@ -1,6 +1,5 @@
/* Terminal control module for terminals described by TERMCAP
- Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1998, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985-1987, 1993-1995, 1998, 2000-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -25,11 +24,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <ctype.h>
#include <errno.h>
#include <sys/file.h>
-
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
-
#include <signal.h>
#include <stdarg.h>
#include <setjmp.h>
@@ -125,27 +120,11 @@ static void vfatal (const char *str, va_list ap) NO_RETURN;
#define OUTPUT1_IF(tty, a) do { if (a) emacs_tputs ((tty), a, 1, cmputc); } while (0)
-/* If true, use "vs", otherwise use "ve" to make the cursor visible. */
-
-static int visible_cursor;
-
/* Display space properties */
-/* Functions to call after suspending a tty. */
-Lisp_Object Vsuspend_tty_functions;
-
-/* Functions to call after resuming a tty. */
-Lisp_Object Vresume_tty_functions;
-
/* Chain of all tty device parameters. */
struct tty_display_info *tty_list;
-/* Nonzero means no need to redraw the entire frame on resuming a
- suspended Emacs. This is useful on terminals with multiple
- pages, where one page is used for Emacs and another for all
- else. */
-int no_redraw_on_reenter;
-
/* Meaning of bits in no_color_video. Each bit set means that the
corresponding attribute cannot be combined with colors. */
@@ -176,10 +155,6 @@ int max_frame_lines;
should not open a frame on stdout. */
static int no_controlling_tty;
-/* Provided for lisp packages. */
-
-static int system_uses_terminfo;
-
#ifdef HAVE_GPM
@@ -1973,7 +1948,7 @@ produce_glyphless_glyph (struct it *it, int for_no_font, Lisp_Object acronym)
if (! STRINGP (acronym) && CHAR_TABLE_P (Vglyphless_char_display))
acronym = CHAR_TABLE_REF (Vglyphless_char_display, it->c);
buf[0] = '[';
- str = STRINGP (acronym) ? (char *) SDATA (acronym) : "";
+ str = STRINGP (acronym) ? SSDATA (acronym) : "";
for (len = 0; len < 6 && str[len] && ASCII_BYTE_P (str[len]); len++)
buf[1 + len] = str[len];
buf[1 + len] = ']';
@@ -3181,7 +3156,7 @@ init_tty (const char *name, const char *terminal_type, int must_succeed)
tty->mouse_highlight.mouse_face_window = Qnil;
#endif
-
+
#ifndef DOS_NT
set_tty_hooks (terminal);
@@ -3774,7 +3749,7 @@ mark_ttys (void)
void
syms_of_term (void)
{
- DEFVAR_BOOL ("system-uses-terminfo", &system_uses_terminfo,
+ DEFVAR_BOOL ("system-uses-terminfo", system_uses_terminfo,
doc: /* Non-nil means the system uses terminfo rather than termcap.
This variable can be used by terminal emulator packages. */);
#ifdef TERMINFO
@@ -3783,20 +3758,20 @@ This variable can be used by terminal emulator packages. */);
system_uses_terminfo = 0;
#endif
- DEFVAR_LISP ("suspend-tty-functions", &Vsuspend_tty_functions,
+ DEFVAR_LISP ("suspend-tty-functions", Vsuspend_tty_functions,
doc: /* Functions to be run after suspending a tty.
The functions are run with one argument, the terminal object to be suspended.
See `suspend-tty'. */);
Vsuspend_tty_functions = Qnil;
- DEFVAR_LISP ("resume-tty-functions", &Vresume_tty_functions,
+ DEFVAR_LISP ("resume-tty-functions", Vresume_tty_functions,
doc: /* Functions to be run after resuming a tty.
The functions are run with one argument, the terminal object that was revived.
See `resume-tty'. */);
Vresume_tty_functions = Qnil;
- DEFVAR_BOOL ("visible-cursor", &visible_cursor,
+ DEFVAR_BOOL ("visible-cursor", visible_cursor,
doc: /* Non-nil means to make the cursor very visible.
This only has an effect when running in a text terminal.
What means \"very visible\" is up to your terminal. It may make the cursor
@@ -3824,4 +3799,3 @@ bigger, or it may make it blink, or it may do nothing at all. */);
encode_terminal_src = NULL;
encode_terminal_dst = NULL;
}
-
diff --git a/src/termcap.c b/src/termcap.c
index 4ad0cee626..9e64d02764 100644
--- a/src/termcap.c
+++ b/src/termcap.c
@@ -22,9 +22,7 @@ Boston, MA 02110-1301, USA. */
#include <setjmp.h>
#include <sys/file.h>
#include <fcntl.h>
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#include "lisp.h"
@@ -715,5 +713,3 @@ tprint (cap)
#endif /* TEST */
-/* arch-tag: c2e8d427-2271-4fac-95fe-411857238b80
- (do not change this comment) */
diff --git a/src/termchar.h b/src/termchar.h
index ac652640b1..277a96932b 100644
--- a/src/termchar.h
+++ b/src/termchar.h
@@ -1,6 +1,5 @@
/* Flags and parameters describing terminal's characteristics.
- Copyright (C) 1985, 1986, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985-1986, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -212,5 +211,3 @@ extern struct tty_display_info *tty_list;
#define CURTTY() FRAME_TTY (SELECTED_FRAME())
-/* arch-tag: bf9f0d49-842b-42fb-9348-ec8759b27193
- (do not change this comment) */
diff --git a/src/termhooks.h b/src/termhooks.h
index e71c1159f0..b147f6ed0a 100644
--- a/src/termhooks.h
+++ b/src/termhooks.h
@@ -1,6 +1,6 @@
/* Parameters and display hooks for terminal devices.
- Copyright (C) 1985, 1986, 1993, 1994, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1985-1986, 1993-1994, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -647,7 +647,6 @@ extern struct terminal *terminal_list;
/* Return true if the terminal device is not suspended. */
#define TERMINAL_ACTIVE_P(d) (((d)->type != output_termcap && (d)->type !=output_msdos_raw) || (d)->display_info.tty->input)
-extern Lisp_Object get_terminal_param (struct terminal *, Lisp_Object);
extern struct terminal *get_terminal (Lisp_Object terminal, int);
extern struct terminal *create_terminal (void);
extern void delete_terminal (struct terminal *);
@@ -659,5 +658,3 @@ extern struct terminal *initial_terminal;
extern void close_gpm (int gpm_fd);
#endif
-/* arch-tag: 33a00ecc-52b5-4186-a410-8801ac9f087d
- (do not change this comment) */
diff --git a/src/terminal.c b/src/terminal.c
index bda6c307a1..09c57bc2b0 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -1,5 +1,5 @@
/* Functions related to terminal devices.
- Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2005-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -37,9 +37,6 @@ static int next_terminal_id;
/* The initial terminal device, created by initial_term_init. */
struct terminal *initial_terminal;
-/* Function to use to ring the bell. */
-Lisp_Object Vring_bell_function;
-
static void delete_initial_terminal (struct terminal *);
@@ -291,8 +288,6 @@ delete_terminal (struct terminal *terminal)
Lisp_Object Qrun_hook_with_args;
static Lisp_Object Qdelete_terminal_functions;
-static Lisp_Object Vdelete_terminal_functions;
-
DEFUN ("delete-terminal", Fdelete_terminal, Sdelete_terminal, 0, 2, 0,
doc: /* Delete TERMINAL by deleting all frames on it and closing the terminal.
TERMINAL may be a terminal object, a frame, or nil (meaning the
@@ -429,16 +424,6 @@ selected frame's terminal). */)
-/* Return the value of terminal parameter PARAM in terminal T. */
-Lisp_Object
-get_terminal_param (struct terminal *t, Lisp_Object param)
-{
- Lisp_Object tem = Fassq (param, t->param_alist);
- if (EQ (tem, Qnil))
- return tem;
- return Fcdr (tem);
-}
-
/* Set the value of terminal parameter PARAMETER in terminal D to VALUE.
Return the previous value. */
@@ -540,12 +525,12 @@ void
syms_of_terminal (void)
{
- DEFVAR_LISP ("ring-bell-function", &Vring_bell_function,
+ DEFVAR_LISP ("ring-bell-function", Vring_bell_function,
doc: /* Non-nil means call this function to ring the bell.
The function should accept no arguments. */);
Vring_bell_function = Qnil;
- DEFVAR_LISP ("delete-terminal-functions", &Vdelete_terminal_functions,
+ DEFVAR_LISP ("delete-terminal-functions", Vdelete_terminal_functions,
doc: /* Special hook run when a terminal is deleted.
Each function is called with argument, the terminal.
This may be called just before actually deleting the terminal,
@@ -568,5 +553,3 @@ or some time later. */);
Fprovide (intern_c_string ("multi-tty"), Qnil);
}
-/* arch-tag: e9af6f27-b483-47dc-bb1a-730c1c5cab03
- (do not change this comment) */
diff --git a/src/terminfo.c b/src/terminfo.c
index 50749492cf..905a8edacc 100644
--- a/src/terminfo.c
+++ b/src/terminfo.c
@@ -1,6 +1,5 @@
/* Interface from Emacs to terminfo.
- Copyright (C) 1985, 1986, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985-1986, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -49,5 +48,3 @@ tparam (char *string, char *outstring,
return outstring;
}
-/* arch-tag: a6f96a69-e68f-4e9d-a223-f0b0da26ead5
- (do not change this comment) */
diff --git a/src/termopts.h b/src/termopts.h
index f3f7e97784..86b7cf782c 100644
--- a/src/termopts.h
+++ b/src/termopts.h
@@ -1,6 +1,5 @@
/* Flags and parameters describing user options for handling the terminal.
- Copyright (C) 1985, 1986, 1990, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985-1986, 1990, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -18,12 +17,6 @@ You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
-/* Nonzero means flash the screen instead of ringing the bell. */
-extern int visible_bell;
-
-/* Nonzero means invert white and black for the entire screen. */
-extern int inverse_video;
-
/* Nonzero means use ^S/^Q as cretinous flow control. */
extern int flow_control;
@@ -36,13 +29,3 @@ extern int interrupts_deferred;
/* Terminal has meta key */
extern int meta_key;
-/* Defined in xdisp.c */
-extern Lisp_Object Vtruncate_partial_width_windows;
-
-/* Nonzero means no need to redraw the entire frame on resuming a suspended
- Emacs. This is useful on terminals with multiple pages, where one page is
- used for Emacs and another for all else. */
-extern int no_redraw_on_reenter;
-
-/* arch-tag: 35d4d284-dc1a-4fff-97fa-0154a21aebdb
- (do not change this comment) */
diff --git a/src/textprop.c b/src/textprop.c
index 88e869b13e..5db6033670 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -1,6 +1,5 @@
/* Interface code for dealing with text properties.
- Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993-1995, 1997, 1999-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -68,11 +67,6 @@ Lisp_Object Qfront_sticky, Qrear_nonsticky;
traversing plists. */
#define PLIST_ELT_P(o1, o2) (CONSP (o1) && ((o2)=XCDR (o1), CONSP (o2)))
-Lisp_Object Vinhibit_point_motion_hooks;
-Lisp_Object Vdefault_text_properties;
-Lisp_Object Vchar_property_alias_alist;
-Lisp_Object Vtext_property_default_nonsticky;
-
/* verify_interval_modification saves insertion hooks here
to be run later by report_interval_modification. */
Lisp_Object interval_insert_behind_hooks;
@@ -501,8 +495,7 @@ remove_properties (Lisp_Object plist, Lisp_Object list, INTERVAL i, Lisp_Object
if this changes the interval. */
static INLINE int
-erase_properties (i)
- INTERVAL i;
+erase_properties (INTERVAL i)
{
if (NILP (i->plist))
return 0;
@@ -1604,17 +1597,19 @@ Return t if any property was actually removed, nil otherwise. */)
if (LENGTH (i) >= len)
{
if (! interval_has_some_properties_list (properties, i))
- if (modified)
- {
- if (BUFFERP (object))
- signal_after_change (XINT (start), XINT (end) - XINT (start),
- XINT (end) - XINT (start));
- return Qt;
- }
- else
- return Qnil;
-
- if (LENGTH (i) == len)
+ {
+ if (modified)
+ {
+ if (BUFFERP (object))
+ signal_after_change (XINT (start),
+ XINT (end) - XINT (start),
+ XINT (end) - XINT (start));
+ return Qt;
+ }
+ else
+ return Qnil;
+ }
+ else if (LENGTH (i) == len)
{
if (!modified && BUFFERP (object))
modify_region (XBUFFER (object), XINT (start), XINT (end), 1);
@@ -1624,20 +1619,20 @@ Return t if any property was actually removed, nil otherwise. */)
XINT (end) - XINT (start));
return Qt;
}
-
- /* i has the properties, and goes past the change limit */
- unchanged = i;
- i = split_interval_left (i, len);
- copy_properties (unchanged, i);
- if (!modified && BUFFERP (object))
- modify_region (XBUFFER (object), XINT (start), XINT (end), 1);
- remove_properties (Qnil, properties, i, object);
- if (BUFFERP (object))
- signal_after_change (XINT (start), XINT (end) - XINT (start),
- XINT (end) - XINT (start));
- return Qt;
+ else
+ { /* i has the properties, and goes past the change limit. */
+ unchanged = i;
+ i = split_interval_left (i, len);
+ copy_properties (unchanged, i);
+ if (!modified && BUFFERP (object))
+ modify_region (XBUFFER (object), XINT (start), XINT (end), 1);
+ remove_properties (Qnil, properties, i, object);
+ if (BUFFERP (object))
+ signal_after_change (XINT (start), XINT (end) - XINT (start),
+ XINT (end) - XINT (start));
+ return Qt;
+ }
}
-
if (interval_has_some_properties_list (properties, i))
{
if (!modified && BUFFERP (object))
@@ -2233,13 +2228,13 @@ report_interval_modification (Lisp_Object start, Lisp_Object end)
void
syms_of_textprop (void)
{
- DEFVAR_LISP ("default-text-properties", &Vdefault_text_properties,
+ DEFVAR_LISP ("default-text-properties", Vdefault_text_properties,
doc: /* Property-list used as default values.
The value of a property in this list is seen as the value for every
character that does not have its own value for that property. */);
Vdefault_text_properties = Qnil;
- DEFVAR_LISP ("char-property-alias-alist", &Vchar_property_alias_alist,
+ DEFVAR_LISP ("char-property-alias-alist", Vchar_property_alias_alist,
doc: /* Alist of alternative properties for properties without a value.
Each element should look like (PROPERTY ALTERNATIVE1 ALTERNATIVE2...).
If a piece of text has no direct value for a particular property, then
@@ -2248,13 +2243,13 @@ the first non-nil value from the associated alternative properties is
returned. */);
Vchar_property_alias_alist = Qnil;
- DEFVAR_LISP ("inhibit-point-motion-hooks", &Vinhibit_point_motion_hooks,
+ DEFVAR_LISP ("inhibit-point-motion-hooks", Vinhibit_point_motion_hooks,
doc: /* If non-nil, don't run `point-left' and `point-entered' text properties.
This also inhibits the use of the `intangible' text property. */);
Vinhibit_point_motion_hooks = Qnil;
DEFVAR_LISP ("text-property-default-nonsticky",
- &Vtext_property_default_nonsticky,
+ Vtext_property_default_nonsticky,
doc: /* Alist of properties vs the corresponding non-stickinesses.
Each element has the form (PROPERTY . NONSTICKINESS).
@@ -2337,5 +2332,3 @@ inherits it if NONSTICKINESS is nil. The `front-sticky' and
/* defsubr (&Scopy_text_properties); */
}
-/* arch-tag: 454cdde8-5f86-4faa-a078-101e3625d479
- (do not change this comment) */
diff --git a/src/tparam.c b/src/tparam.c
index d8a8f0260f..fcbb63881e 100644
--- a/src/tparam.c
+++ b/src/tparam.c
@@ -278,5 +278,3 @@ main (argc, argv)
#endif /* DEBUG */
-/* arch-tag: 83f7b5ac-a808-4f75-b87a-123de009b402
- (do not change this comment) */
diff --git a/src/undo.c b/src/undo.c
index cd3ad97349..933982ec30 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -1,6 +1,5 @@
/* undo handling for GNU Emacs.
- Copyright (C) 1990, 1993, 1994, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1990, 1993-1994, 2000-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -25,17 +24,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "commands.h"
#include "window.h"
-/* Limits controlling how much undo information to keep. */
-
-EMACS_INT undo_limit;
-EMACS_INT undo_strong_limit;
-
-Lisp_Object Vundo_outer_limit;
-
-/* Function to call when undo_outer_limit is exceeded. */
-
-Lisp_Object Vundo_outer_limit_function;
-
/* Last buffer for which undo information was recorded. */
/* BEWARE: This is not traced by the GC, so never dereference it! */
struct buffer *last_undo_buffer;
@@ -57,10 +45,6 @@ Lisp_Object Qapply;
an undo-boundary. */
Lisp_Object pending_boundary;
-/* Nonzero means do not record point in record_point. */
-
-int undo_inhibit_record_point;
-
/* Record point as it was at beginning of this command (if necessary)
and prepare the undo info for recording a change.
PT is the position of point that will naturally occur as a result of the
@@ -673,7 +657,7 @@ syms_of_undo (void)
defsubr (&Sprimitive_undo);
defsubr (&Sundo_boundary);
- DEFVAR_INT ("undo-limit", &undo_limit,
+ DEFVAR_INT ("undo-limit", undo_limit,
doc: /* Keep no more undo information once it exceeds this size.
This limit is applied when garbage collection happens.
When a previous command increases the total undo list size past this
@@ -683,7 +667,7 @@ The size is counted as the number of bytes occupied,
which includes both saved text and other data. */);
undo_limit = 80000;
- DEFVAR_INT ("undo-strong-limit", &undo_strong_limit,
+ DEFVAR_INT ("undo-strong-limit", undo_strong_limit,
doc: /* Don't keep more than this much size of undo information.
This limit is applied when garbage collection happens.
When a previous command increases the total undo list size past this
@@ -695,7 +679,7 @@ The size is counted as the number of bytes occupied,
which includes both saved text and other data. */);
undo_strong_limit = 120000;
- DEFVAR_LISP ("undo-outer-limit", &Vundo_outer_limit,
+ DEFVAR_LISP ("undo-outer-limit", Vundo_outer_limit,
doc: /* Outer limit on size of undo information for one command.
At garbage collection time, if the current command has produced
more than this much undo information, it discards the info and displays
@@ -712,7 +696,7 @@ The text above describes the behavior of the function
that variable usually specifies. */);
Vundo_outer_limit = make_number (12000000);
- DEFVAR_LISP ("undo-outer-limit-function", &Vundo_outer_limit_function,
+ DEFVAR_LISP ("undo-outer-limit-function", Vundo_outer_limit_function,
doc: /* Function to call when an undo list exceeds `undo-outer-limit'.
This function is called with one argument, the current undo list size
for the most recent command (since the last undo boundary).
@@ -723,10 +707,8 @@ Garbage collection is inhibited around the call to this function,
so it must make sure not to do a lot of consing. */);
Vundo_outer_limit_function = Qnil;
- DEFVAR_BOOL ("undo-inhibit-record-point", &undo_inhibit_record_point,
+ DEFVAR_BOOL ("undo-inhibit-record-point", undo_inhibit_record_point,
doc: /* Non-nil means do not record `point' in `buffer-undo-list'. */);
undo_inhibit_record_point = 0;
}
-/* arch-tag: d546ee01-4aed-4ffb-bb8b-eefaae50d38a
- (do not change this comment) */
diff --git a/src/unexaix.c b/src/unexaix.c
index 2d128bc680..fe9d13d3e4 100644
--- a/src/unexaix.c
+++ b/src/unexaix.c
@@ -1,6 +1,5 @@
/* Dump an executable image.
- Copyright (C) 1985, 1986, 1987, 1988, 1999, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1985-1988, 1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -639,5 +638,3 @@ start_of_text (void)
return ((char *) 0x10000000);
}
-/* arch-tag: 0783857a-7c2d-456f-a426-58b722d69fd0
- (do not change this comment) */
diff --git a/src/unexcoff.c b/src/unexcoff.c
index fb221dacda..4dafabab68 100644
--- a/src/unexcoff.c
+++ b/src/unexcoff.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 1985, 1986, 1987, 1988, 1992, 1993, 1994, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+/* Copyright (C) 1985-1988, 1992-1994, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -556,5 +555,3 @@ unexec (const char *new_name, const char *a_name)
#endif /* not CANNOT_DUMP */
-/* arch-tag: 62409b69-e27a-4a7c-9413-0210d6b54e7f
- (do not change this comment) */
diff --git a/src/unexcw.c b/src/unexcw.c
index c33d9d9021..02add901bb 100644
--- a/src/unexcw.c
+++ b/src/unexcw.c
@@ -1,7 +1,7 @@
/* unexec() support for Cygwin;
complete rewrite of xemacs Cygwin unexec() code
- Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2004-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -300,5 +300,3 @@ unexec (const char *outfile, const char *infile)
return (0);
}
-/* arch-tag: fc44f6c3-ca0a-45e0-a5a2-58b6101b1e65
- (do not change this comment) */
diff --git a/src/unexelf.c b/src/unexelf.c
index 605b9f75ac..1009c87066 100644
--- a/src/unexelf.c
+++ b/src/unexelf.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 1985, 1986, 1987, 1988, 1990, 1992, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+/* Copyright (C) 1985-1988, 1990, 1992, 1999-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -1309,5 +1308,3 @@ temacs:
fatal ("Can't chmod (%s): errno %d\n", new_name, errno);
}
-/* arch-tag: e02e1512-95e2-4ef0-bba7-b6bce658f1e3
- (do not change this comment) */
diff --git a/src/unexhp9k800.c b/src/unexhp9k800.c
index b9edd4f3a8..c0471992a7 100644
--- a/src/unexhp9k800.c
+++ b/src/unexhp9k800.c
@@ -320,5 +320,3 @@ display_header (hdr, auxhdr)
}
#endif /* DEBUG */
-/* arch-tag: d55a09ac-9427-4ec4-8496-cb9d7710774f
- (do not change this comment) */
diff --git a/src/unexmacosx.c b/src/unexmacosx.c
index f48c8d7dfa..7a55498085 100644
--- a/src/unexmacosx.c
+++ b/src/unexmacosx.c
@@ -1,6 +1,5 @@
/* Dump Emacs in Mach-O format for use on Mac OS X.
- Copyright (C) 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -86,8 +85,17 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
be changed accordingly.
*/
-#include <stdio.h>
+/* config.h #define:s malloc/realloc/free and then includes stdlib.h.
+ We want the undefined versions, but if config.h includes stdlib.h
+ with the #define:s in place, the prototypes will be wrong and we get
+ warnings. To prevent that, include stdlib.h before config.h. */
+
#include <stdlib.h>
+#include <config.h>
+#undef malloc
+#undef realloc
+#undef free
+#include <stdio.h>
#include <fcntl.h>
#include <stdarg.h>
#include <sys/types.h>
@@ -98,10 +106,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#if defined (__ppc__)
#include <mach-o/ppc/reloc.h>
#endif
-#include <config.h>
-#undef malloc
-#undef realloc
-#undef free
#ifdef HAVE_MALLOC_MALLOC_H
#include <malloc/malloc.h>
#else
@@ -1376,5 +1380,3 @@ unexec_free (void *ptr)
malloc_zone_free (emacs_zone, (unexec_malloc_header_t *) ptr - 1);
}
-/* arch-tag: 1a784f7b-a184-4c4f-9544-da8619593d72
- (do not change this comment) */
diff --git a/src/unexsol.c b/src/unexsol.c
index 1d58ed46d4..e1a10f7d21 100644
--- a/src/unexsol.c
+++ b/src/unexsol.c
@@ -27,5 +27,3 @@ unexec (const char *new_name, const char *old_name)
Fcons (build_string ("Cannot unexec"), Fcons (errstring, data)));
}
-/* arch-tag: d8ff72b3-8198-4011-8ef5-011b12027f59
- (do not change this comment) */
diff --git a/src/unexw32.c b/src/unexw32.c
index a4dba647f5..829c864c96 100644
--- a/src/unexw32.c
+++ b/src/unexw32.c
@@ -1,6 +1,5 @@
/* unexec for GNU Emacs on Windows NT.
- Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -826,5 +825,3 @@ unexec (const char *new_name, const char *old_name)
/* eof */
-/* arch-tag: fe1d3d1c-ef88-4917-ab22-f12ab16b3254
- (do not change this comment) */
diff --git a/src/vm-limit.c b/src/vm-limit.c
index 813ee6163c..4694608602 100644
--- a/src/vm-limit.c
+++ b/src/vm-limit.c
@@ -1,6 +1,5 @@
/* Functions for memory limit warnings.
- Copyright (C) 1990, 1992, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1990, 1992, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -299,5 +298,3 @@ memory_warnings (POINTER start, void (*warnfun) (const char *))
lim_data = 0;
}
-/* arch-tag: eab04eda-1f69-447a-8d9f-95f0a3983ca5
- (do not change this comment) */
diff --git a/src/w16select.c b/src/w16select.c
index 994ad9e543..d5aae1b2e5 100644
--- a/src/w16select.c
+++ b/src/w16select.c
@@ -1,7 +1,6 @@
/* 16-bit Windows Selection processing for emacs on MS-Windows
-Copyright (C) 1996, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1996-1997, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -69,13 +68,6 @@ unsigned clipboard_compact (unsigned);
Lisp_Object QCLIPBOARD, QPRIMARY;
-/* Coding system for communicating with other Windows programs via the
- clipboard. */
-static Lisp_Object Vselection_coding_system;
-
-/* Coding system for the next communicating with other Windows programs. */
-static Lisp_Object Vnext_selection_coding_system;
-
/* The segment address and the size of the buffer in low
memory used to move data between us and WinOldAp module. */
static struct {
@@ -693,7 +685,7 @@ syms_of_win16select (void)
defsubr (&Sw16_get_clipboard_data);
defsubr (&Sx_selection_exists_p);
- DEFVAR_LISP ("selection-coding-system", &Vselection_coding_system,
+ DEFVAR_LISP ("selection-coding-system", Vselection_coding_system,
doc: /* Coding system for communicating with other programs.
For MS-Windows and MS-DOS:
@@ -725,7 +717,7 @@ to control which data-type to request for receiving text.
The default value is nil. */);
Vselection_coding_system = intern ("iso-latin-1-dos");
- DEFVAR_LISP ("next-selection-coding-system", &Vnext_selection_coding_system,
+ DEFVAR_LISP ("next-selection-coding-system", Vnext_selection_coding_system,
doc: /* Coding system for the next communication with other programs.
Usually, `selection-coding-system' is used for communicating with
other programs (X Windows clients or MS Windows programs). But, if this
diff --git a/src/w32.c b/src/w32.c
index d8c85bf510..d4f68544c1 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -1,6 +1,5 @@
/* Utility and Unix shadow routines for GNU Emacs on the Microsoft W32 API.
- Copyright (C) 1994, 1995, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1994-1995, 2000-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -148,14 +147,9 @@ typedef HRESULT (WINAPI * ShGetFolderPath_fn)
void globals_of_w32 (void);
static DWORD get_rid (PSID);
-extern Lisp_Object Vw32_downcase_file_names;
-extern Lisp_Object Vw32_generate_fake_inodes;
-extern Lisp_Object Vw32_get_true_file_attributes;
/* Defined in process.c for its own purpose. */
extern Lisp_Object Qlocal;
-extern int w32_num_mouse_buttons;
-
/* Initialization states.
@@ -1514,8 +1508,6 @@ w32_get_resource (char *key, LPDWORD lpdwtype)
}
char *get_emacs_configuration (void);
-extern Lisp_Object Vsystem_configuration;
-
void
init_environment (char ** argv)
{
@@ -5184,9 +5176,6 @@ sys_pipe (int * phandles)
return rc;
}
-/* From ntproc.c */
-extern int w32_pipe_read_delay;
-
/* Function to do blocking read of one byte, needed to implement
select. It is only allowed on sockets and pipes. */
int
@@ -5666,7 +5655,6 @@ check_windows_init_file (void)
if (!noninteractive && !inhibit_window_system)
{
- extern Lisp_Object Vwindow_system, Vload_path, Qfile_exists_p;
Lisp_Object objs[2];
Lisp_Object full_load_path;
Lisp_Object init_file;
diff --git a/src/w32.h b/src/w32.h
index b4f0683a9c..9279ddbe57 100644
--- a/src/w32.h
+++ b/src/w32.h
@@ -2,8 +2,7 @@
#define EMACS_W32_H
/* Support routines for the NT version of Emacs.
- Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -146,5 +145,3 @@ extern int _sys_wait_accept (int fd);
#endif /* EMACS_W32_H */
-/* arch-tag: 02c36b00-312b-4c4d-a1d9-f905c5e968f0
- (do not change this comment) */
diff --git a/src/w32console.c b/src/w32console.c
index 35f0fc195f..31c4a7c4e5 100644
--- a/src/w32console.c
+++ b/src/w32console.c
@@ -1,6 +1,5 @@
/* Terminal hooks for GNU Emacs on the Microsoft W32 API.
- Copyright (C) 1992, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1992, 1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -72,13 +71,6 @@ static DWORD prev_console_mode;
static CONSOLE_CURSOR_INFO prev_console_cursor;
#endif
-extern Lisp_Object Vtty_defined_color_alist;
-
-/* Determine whether to make frame dimensions match the screen buffer,
- or the current window size. The former is desirable when running
- over telnet, while the latter is more useful when working directly at
- the console with a large scroll-back buffer. */
-int w32_use_full_screen_buffer;
HANDLE keyboard_handle;
@@ -747,7 +739,7 @@ void
syms_of_ntterm (void)
{
DEFVAR_BOOL ("w32-use-full-screen-buffer",
- &w32_use_full_screen_buffer,
+ w32_use_full_screen_buffer,
doc: /* Non-nil means make terminal frames use the full screen buffer dimensions.
This is desirable when running Emacs over telnet.
A value of nil means use the current console window dimensions; this
@@ -760,5 +752,3 @@ scroll-back buffer. */);
defsubr (&Sset_message_beep);
}
-/* arch-tag: a390a07f-f661-42bc-aeb4-e6d8bf860337
- (do not change this comment) */
diff --git a/src/w32fns.c b/src/w32fns.c
index 31feadc2d7..b09bb0b5b5 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -1,8 +1,6 @@
/* Graphical user interface functions for the Microsoft W32 API.
-Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 1989, 1992-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -84,117 +82,19 @@ extern int quit_char;
extern const char *const lispy_function_keys[];
-/* The colormap for converting color names to RGB values */
-Lisp_Object Vw32_color_map;
-
-/* Non nil if alt key presses are passed on to Windows. */
-Lisp_Object Vw32_pass_alt_to_system;
-
-/* Non nil if alt key is translated to meta_modifier, nil if it is translated
- to alt_modifier. */
-Lisp_Object Vw32_alt_is_meta;
-
-/* If non-zero, the windows virtual key code for an alternative quit key. */
-int w32_quit_key;
-
-/* Non nil if left window key events are passed on to Windows (this only
- affects whether "tapping" the key opens the Start menu). */
-Lisp_Object Vw32_pass_lwindow_to_system;
-
-/* Non nil if right window key events are passed on to Windows (this
- only affects whether "tapping" the key opens the Start menu). */
-Lisp_Object Vw32_pass_rwindow_to_system;
-
-/* Virtual key code used to generate "phantom" key presses in order
- to stop system from acting on Windows key events. */
-Lisp_Object Vw32_phantom_key_code;
-
-/* Modifier associated with the left "Windows" key, or nil to act as a
- normal key. */
-Lisp_Object Vw32_lwindow_modifier;
-
-/* Modifier associated with the right "Windows" key, or nil to act as a
- normal key. */
-Lisp_Object Vw32_rwindow_modifier;
-
-/* Modifier associated with the "Apps" key, or nil to act as a normal
- key. */
-Lisp_Object Vw32_apps_modifier;
-
-/* Value is nil if Num Lock acts as a function key. */
-Lisp_Object Vw32_enable_num_lock;
-
-/* Value is nil if Caps Lock acts as a function key. */
-Lisp_Object Vw32_enable_caps_lock;
-
-/* Modifier associated with Scroll Lock, or nil to act as a normal key. */
-Lisp_Object Vw32_scroll_lock_modifier;
-
-/* Switch to control whether we inhibit requests for synthesized bold
- and italic versions of fonts. */
-int w32_enable_synthesized_fonts;
-
-/* Enable palette management. */
-Lisp_Object Vw32_enable_palette;
-
-/* Control how close left/right button down events must be to
- be converted to a middle button down event. */
-int w32_mouse_button_tolerance;
-
-/* Minimum interval between mouse movement (and scroll bar drag)
- events that are passed on to the event loop. */
-int w32_mouse_move_interval;
-
-/* Flag to indicate if XBUTTON events should be passed on to Windows. */
-static int w32_pass_extra_mouse_buttons_to_system;
-
-/* Flag to indicate if media keys should be passed on to Windows. */
-static int w32_pass_multimedia_buttons_to_system;
-
-/* Non nil if no window manager is in use. */
-Lisp_Object Vx_no_window_manager;
-
/* If non-zero, a w32 timer that, when it expires, displays an
hourglass cursor on all frames. */
static unsigned hourglass_timer = 0;
static HWND hourglass_hwnd = NULL;
-#if 0 /* TODO: Mouse cursor customization. */
-/* The background and shape of the mouse pointer, and shape when not
- over text or in the modeline. */
-Lisp_Object Vx_pointer_shape, Vx_nontext_pointer_shape, Vx_mode_pointer_shape;
-Lisp_Object Vx_hourglass_pointer_shape, Vx_window_horizontal_drag_shape;
-
-/* The shape when over mouse-sensitive text. */
-
-Lisp_Object Vx_sensitive_text_pointer_shape;
-#endif
-
#ifndef IDC_HAND
#define IDC_HAND MAKEINTRESOURCE(32649)
#endif
-/* Color of chars displayed in cursor box. */
-Lisp_Object Vx_cursor_fore_pixel;
-
/* Nonzero if using Windows. */
static int w32_in_use;
-/* Regexp matching a font name whose width is the same as `PIXEL_SIZE'. */
-
-Lisp_Object Vx_pixel_size_width_font_regexp;
-
-/* Alist of bdf fonts and the files that define them. */
-Lisp_Object Vw32_bdf_filename_alist;
-
-/* A flag to control whether fonts are matched strictly or not. */
-static int w32_strict_fontnames;
-
-/* A flag to control whether we should only repaint if GetUpdateRect
- indicates there is an update region. */
-static int w32_strict_painting;
-
Lisp_Object Qnone;
Lisp_Object Qsuppress_icon;
Lisp_Object Qundefined_color;
@@ -209,9 +109,6 @@ Lisp_Object Qcontrol;
Lisp_Object Qshift;
-/* The ANSI codepage. */
-int w32_ansi_code_page;
-
/* Prefix for system colors. */
#define SYSTEM_COLOR_PREFIX "System"
#define SYSTEM_COLOR_PREFIX_LEN (sizeof (SYSTEM_COLOR_PREFIX) - 1)
@@ -288,14 +185,6 @@ unsigned int msh_mousewheel = 0;
#define MENU_FREE_DELAY 1000
static unsigned menu_free_timer = 0;
-/* In dispnew.c */
-
-extern Lisp_Object Vwindow_system_version;
-
-/* The below are defined in frame.c. */
-
-extern Lisp_Object Vmenu_bar_mode, Vtool_bar_mode;
-extern Lisp_Object Vwindow_system_version;
extern Lisp_Object Qtooltip;
#ifdef GLYPH_DEBUG
@@ -303,17 +192,11 @@ int image_cache_refcount, dpyinfo_refcount;
#endif
-/* From w32term.c. */
-extern int w32_num_mouse_buttons;
-extern Lisp_Object Vw32_recognize_altgr;
-
extern HWND w32_system_caret_hwnd;
extern int w32_system_caret_height;
extern int w32_system_caret_x;
extern int w32_system_caret_y;
-extern int w32_use_visible_system_caret;
-
static HWND w32_visible_system_caret_hwnd;
/* From w32menu.c */
@@ -1622,11 +1505,11 @@ x_set_icon_name (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
BLOCK_INPUT;
result = x_text_icon (f,
- (char *) SDATA ((!NILP (f->icon_name)
- ? f->icon_name
- : !NILP (f->title)
- ? f->title
- : f->name)));
+ SSDATA ((!NILP (f->icon_name)
+ ? f->icon_name
+ : !NILP (f->title)
+ ? f->title
+ : f->name)));
if (result)
{
@@ -3992,7 +3875,7 @@ w32_window (struct frame *f, long window_prompting, int minibuffer_only)
Elsewhere we specify the window name for the window manager. */
{
- char *str = (char *) SDATA (Vx_resource_name);
+ char *str = SSDATA (Vx_resource_name);
f->namebuf = (char *) xmalloc (strlen (str) + 1);
strcpy (f->namebuf, str);
}
@@ -4058,9 +3941,9 @@ x_icon (struct frame *f, Lisp_Object parms)
? IconicState
: NormalState));
- x_text_icon (f, (char *) SDATA ((!NILP (f->icon_name)
- ? f->icon_name
- : f->name)));
+ x_text_icon (f, SSDATA ((!NILP (f->icon_name)
+ ? f->icon_name
+ : f->name)));
#endif
UNBLOCK_INPUT;
@@ -4838,7 +4721,7 @@ x_display_info_for_name (Lisp_Object name)
validate_x_resource_name ();
dpyinfo = w32_term_init (name, (unsigned char *)0,
- (char *) SDATA (Vx_resource_name));
+ SSDATA (Vx_resource_name));
if (dpyinfo == 0)
error ("Cannot connect to server %s", SDATA (name));
@@ -4901,7 +4784,7 @@ terminate Emacs if we can't open the connection.
add_system_logical_colors_to_map (&Vw32_color_map);
if (! NILP (xrm_string))
- xrm_option = (unsigned char *) SDATA (xrm_string);
+ xrm_option = SDATA (xrm_string);
else
xrm_option = (unsigned char *) 0;
@@ -4922,7 +4805,7 @@ terminate Emacs if we can't open the connection.
/* This is what opens the connection and sets x_current_display.
This also initializes many symbols, such as those used for input. */
dpyinfo = w32_term_init (display, xrm_option,
- (char *) SDATA (Vx_resource_name));
+ SSDATA (Vx_resource_name));
if (dpyinfo == 0)
{
@@ -5138,8 +5021,6 @@ no value of TYPE (always string in the MS Windows case). */)
cursor. Duplicated from xdisp.c, but cannot use the version there
due to lack of atimers on w32. */
#define DEFAULT_HOURGLASS_DELAY 1
-extern Lisp_Object Vhourglass_delay;
-
/* Return non-zero if houglass timer has been started or hourglass is shown. */
/* PENDING: if W32 can use atimers (atimer.[hc]) then the common impl in
xdisp.c could be used. */
@@ -5271,10 +5152,6 @@ Window tip_window;
Lisp_Object last_show_tip_args;
-/* Maximum size for tooltips; a cons (COLUMNS . ROWS). */
-
-Lisp_Object Vx_max_tooltip_size;
-
static Lisp_Object
unwind_create_tip_frame (Lisp_Object frame)
@@ -6309,7 +6186,7 @@ an integer representing a ShowWindow flag:
code_convert_string_norecord (make_unibyte_string (errstr,
strlen (errstr)),
Vlocale_coding_system, 0);
- errstr = (char *)SDATA (decoded);
+ errstr = SSDATA (decoded);
}
error ("ShellExecute failed: %s", errstr);
}
@@ -6931,28 +6808,28 @@ syms_of_w32fns (void)
staticpro (&w32_grabbed_keys);
w32_grabbed_keys = Qnil;
- DEFVAR_LISP ("w32-color-map", &Vw32_color_map,
+ DEFVAR_LISP ("w32-color-map", Vw32_color_map,
doc: /* An array of color name mappings for Windows. */);
Vw32_color_map = Qnil;
- DEFVAR_LISP ("w32-pass-alt-to-system", &Vw32_pass_alt_to_system,
+ DEFVAR_LISP ("w32-pass-alt-to-system", Vw32_pass_alt_to_system,
doc: /* Non-nil if Alt key presses are passed on to Windows.
When non-nil, for example, Alt pressed and released and then space will
open the System menu. When nil, Emacs processes the Alt key events, and
then silently swallows them. */);
Vw32_pass_alt_to_system = Qnil;
- DEFVAR_LISP ("w32-alt-is-meta", &Vw32_alt_is_meta,
+ DEFVAR_LISP ("w32-alt-is-meta", Vw32_alt_is_meta,
doc: /* Non-nil if the Alt key is to be considered the same as the META key.
When nil, Emacs will translate the Alt key to the ALT modifier, not to META. */);
Vw32_alt_is_meta = Qt;
- DEFVAR_INT ("w32-quit-key", &w32_quit_key,
+ DEFVAR_INT ("w32-quit-key", w32_quit_key,
doc: /* If non-zero, the virtual key code for an alternative quit key. */);
w32_quit_key = 0;
DEFVAR_LISP ("w32-pass-lwindow-to-system",
- &Vw32_pass_lwindow_to_system,
+ Vw32_pass_lwindow_to_system,
doc: /* If non-nil, the left \"Windows\" key is passed on to Windows.
When non-nil, the Start menu is opened by tapping the key.
@@ -6967,7 +6844,7 @@ the doc string of `w32-phantom-key-code'. */);
Vw32_pass_lwindow_to_system = Qt;
DEFVAR_LISP ("w32-pass-rwindow-to-system",
- &Vw32_pass_rwindow_to_system,
+ Vw32_pass_rwindow_to_system,
doc: /* If non-nil, the right \"Windows\" key is passed on to Windows.
When non-nil, the Start menu is opened by tapping the key.
@@ -6982,7 +6859,7 @@ the doc string of `w32-phantom-key-code'. */);
Vw32_pass_rwindow_to_system = Qt;
DEFVAR_LISP ("w32-phantom-key-code",
- &Vw32_phantom_key_code,
+ Vw32_phantom_key_code,
doc: /* Virtual key code used to generate \"phantom\" key presses.
Value is a number between 0 and 255.
@@ -6994,19 +6871,19 @@ acting on \"Windows\" key events when `w32-pass-lwindow-to-system' or
XSETINT (Vw32_phantom_key_code, 255);
DEFVAR_LISP ("w32-enable-num-lock",
- &Vw32_enable_num_lock,
+ Vw32_enable_num_lock,
doc: /* If non-nil, the Num Lock key acts normally.
Set to nil to handle Num Lock as the `kp-numlock' key. */);
Vw32_enable_num_lock = Qt;
DEFVAR_LISP ("w32-enable-caps-lock",
- &Vw32_enable_caps_lock,
+ Vw32_enable_caps_lock,
doc: /* If non-nil, the Caps Lock key acts normally.
Set to nil to handle Caps Lock as the `capslock' key. */);
Vw32_enable_caps_lock = Qt;
DEFVAR_LISP ("w32-scroll-lock-modifier",
- &Vw32_scroll_lock_modifier,
+ Vw32_scroll_lock_modifier,
doc: /* Modifier to use for the Scroll Lock ON state.
The value can be hyper, super, meta, alt, control or shift for the
respective modifier, or nil to handle Scroll Lock as the `scroll' key.
@@ -7014,7 +6891,7 @@ Any other value will cause the Scroll Lock key to be ignored. */);
Vw32_scroll_lock_modifier = Qnil;
DEFVAR_LISP ("w32-lwindow-modifier",
- &Vw32_lwindow_modifier,
+ Vw32_lwindow_modifier,
doc: /* Modifier to use for the left \"Windows\" key.
The value can be hyper, super, meta, alt, control or shift for the
respective modifier, or nil to appear as the `lwindow' key.
@@ -7022,7 +6899,7 @@ Any other value will cause the key to be ignored. */);
Vw32_lwindow_modifier = Qnil;
DEFVAR_LISP ("w32-rwindow-modifier",
- &Vw32_rwindow_modifier,
+ Vw32_rwindow_modifier,
doc: /* Modifier to use for the right \"Windows\" key.
The value can be hyper, super, meta, alt, control or shift for the
respective modifier, or nil to appear as the `rwindow' key.
@@ -7030,23 +6907,23 @@ Any other value will cause the key to be ignored. */);
Vw32_rwindow_modifier = Qnil;
DEFVAR_LISP ("w32-apps-modifier",
- &Vw32_apps_modifier,
+ Vw32_apps_modifier,
doc: /* Modifier to use for the \"Apps\" key.
The value can be hyper, super, meta, alt, control or shift for the
respective modifier, or nil to appear as the `apps' key.
Any other value will cause the key to be ignored. */);
Vw32_apps_modifier = Qnil;
- DEFVAR_BOOL ("w32-enable-synthesized-fonts", &w32_enable_synthesized_fonts,
+ DEFVAR_BOOL ("w32-enable-synthesized-fonts", w32_enable_synthesized_fonts,
doc: /* Non-nil enables selection of artificially italicized and bold fonts. */);
w32_enable_synthesized_fonts = 0;
- DEFVAR_LISP ("w32-enable-palette", &Vw32_enable_palette,
+ DEFVAR_LISP ("w32-enable-palette", Vw32_enable_palette,
doc: /* Non-nil enables Windows palette management to map colors exactly. */);
Vw32_enable_palette = Qt;
DEFVAR_INT ("w32-mouse-button-tolerance",
- &w32_mouse_button_tolerance,
+ w32_mouse_button_tolerance,
doc: /* Analogue of double click interval for faking middle mouse events.
The value is the minimum time in milliseconds that must elapse between
left and right button down events before they are considered distinct events.
@@ -7055,7 +6932,7 @@ button down event is generated instead. */);
w32_mouse_button_tolerance = GetDoubleClickTime () / 2;
DEFVAR_INT ("w32-mouse-move-interval",
- &w32_mouse_move_interval,
+ w32_mouse_move_interval,
doc: /* Minimum interval between mouse move events.
The value is the minimum time in milliseconds that must elapse between
successive mouse move (or scroll bar drag) events before they are
@@ -7063,7 +6940,7 @@ reported as lisp events. */);
w32_mouse_move_interval = 0;
DEFVAR_BOOL ("w32-pass-extra-mouse-buttons-to-system",
- &w32_pass_extra_mouse_buttons_to_system,
+ w32_pass_extra_mouse_buttons_to_system,
doc: /* If non-nil, the fourth and fifth mouse buttons are passed to Windows.
Recent versions of Windows support mice with up to five buttons.
Since most applications don't support these extra buttons, most mouse
@@ -7073,7 +6950,7 @@ system to handle them. */);
w32_pass_extra_mouse_buttons_to_system = 0;
DEFVAR_BOOL ("w32-pass-multimedia-buttons-to-system",
- &w32_pass_multimedia_buttons_to_system,
+ w32_pass_multimedia_buttons_to_system,
doc: /* If non-nil, media buttons are passed to Windows.
Some modern keyboards contain buttons for controlling media players, web
browsers and other applications. Generally these buttons are handled on a
@@ -7096,7 +6973,7 @@ bass-down, bass-boost, bass-up, treble-down, treble-up */);
w32_pass_multimedia_buttons_to_system = 1;
#if 0 /* TODO: Mouse cursor customization. */
- DEFVAR_LISP ("x-pointer-shape", &Vx_pointer_shape,
+ DEFVAR_LISP ("x-pointer-shape", Vx_pointer_shape,
doc: /* The shape of the pointer when over text.
Changing the value does not affect existing frames
unless you set the mouse color. */);
@@ -7106,37 +6983,37 @@ unless you set the mouse color. */);
Vx_mode_pointer_shape = Qnil;
- DEFVAR_LISP ("x-hourglass-pointer-shape", &Vx_hourglass_pointer_shape,
+ DEFVAR_LISP ("x-hourglass-pointer-shape", Vx_hourglass_pointer_shape,
doc: /* The shape of the pointer when Emacs is busy.
This variable takes effect when you create a new frame
or when you set the mouse color. */);
Vx_hourglass_pointer_shape = Qnil;
DEFVAR_LISP ("x-sensitive-text-pointer-shape",
- &Vx_sensitive_text_pointer_shape,
+ Vx_sensitive_text_pointer_shape,
doc: /* The shape of the pointer when over mouse-sensitive text.
This variable takes effect when you create a new frame
or when you set the mouse color. */);
Vx_sensitive_text_pointer_shape = Qnil;
DEFVAR_LISP ("x-window-horizontal-drag-cursor",
- &Vx_window_horizontal_drag_shape,
+ Vx_window_horizontal_drag_shape,
doc: /* Pointer shape to use for indicating a window can be dragged horizontally.
This variable takes effect when you create a new frame
or when you set the mouse color. */);
Vx_window_horizontal_drag_shape = Qnil;
#endif
- DEFVAR_LISP ("x-cursor-fore-pixel", &Vx_cursor_fore_pixel,
+ DEFVAR_LISP ("x-cursor-fore-pixel", Vx_cursor_fore_pixel,
doc: /* A string indicating the foreground color of the cursor box. */);
Vx_cursor_fore_pixel = Qnil;
- DEFVAR_LISP ("x-max-tooltip-size", &Vx_max_tooltip_size,
+ DEFVAR_LISP ("x-max-tooltip-size", Vx_max_tooltip_size,
doc: /* Maximum size for tooltips.
Value is a pair (COLUMNS . ROWS). Text larger than this is clipped. */);
Vx_max_tooltip_size = Fcons (make_number (80), make_number (40));
- DEFVAR_LISP ("x-no-window-manager", &Vx_no_window_manager,
+ DEFVAR_LISP ("x-no-window-manager", Vx_no_window_manager,
doc: /* Non-nil if no window manager is in use.
Emacs doesn't try to figure this out; this is always nil
unless you set it to something else. */);
@@ -7145,7 +7022,7 @@ unless you set it to something else. */);
Vx_no_window_manager = Qnil;
DEFVAR_LISP ("x-pixel-size-width-font-regexp",
- &Vx_pixel_size_width_font_regexp,
+ Vx_pixel_size_width_font_regexp,
doc: /* Regexp matching a font name whose width is the same as `PIXEL_SIZE'.
Since Emacs gets width of a font matching with this regexp from
@@ -7155,12 +7032,12 @@ Chinese, Japanese, and Korean. */);
Vx_pixel_size_width_font_regexp = Qnil;
DEFVAR_LISP ("w32-bdf-filename-alist",
- &Vw32_bdf_filename_alist,
+ Vw32_bdf_filename_alist,
doc: /* List of bdf fonts and their corresponding filenames. */);
Vw32_bdf_filename_alist = Qnil;
DEFVAR_BOOL ("w32-strict-fontnames",
- &w32_strict_fontnames,
+ w32_strict_fontnames,
doc: /* Non-nil means only use fonts that are exact matches for those requested.
Default is nil, which allows old fontnames that are not XLFD compliant,
and allows third-party CJK display to work by specifying false charset
@@ -7170,7 +7047,7 @@ fontsets are automatically created. */);
w32_strict_fontnames = 0;
DEFVAR_BOOL ("w32-strict-painting",
- &w32_strict_painting,
+ w32_strict_painting,
doc: /* Non-nil means use strict rules for repainting frames.
Set this to nil to get the old behavior for repainting; this should
only be necessary if the default setting causes problems. */);
@@ -7279,7 +7156,7 @@ globals_of_w32fns (void)
GetProcAddress (imm32_lib, "ImmSetCompositionWindow");
}
DEFVAR_INT ("w32-ansi-code-page",
- &w32_ansi_code_page,
+ w32_ansi_code_page,
doc: /* The ANSI code page used by the system. */);
w32_ansi_code_page = GetACP ();
@@ -7324,4 +7201,3 @@ w32_last_error (void)
{
return GetLastError ();
}
-
diff --git a/src/w32font.c b/src/w32font.c
index e7c34378e0..aef62f61a3 100644
--- a/src/w32font.c
+++ b/src/w32font.c
@@ -1,5 +1,5 @@
/* Font backend for the Microsoft W32 API.
- Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2007-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -100,9 +100,6 @@ static Lisp_Object Qw32_charset_arabic, Qw32_charset_greek;
static Lisp_Object Qw32_charset_hebrew, Qw32_charset_vietnamese;
static Lisp_Object Qw32_charset_thai, Qw32_charset_johab, Qw32_charset_mac;
-/* Associative list linking character set strings to Windows codepages. */
-static Lisp_Object Vw32_charset_info_alist;
-
/* Font spacing symbols - defined in font.c. */
extern Lisp_Object Qc, Qp, Qm;
@@ -2535,7 +2532,7 @@ syms_of_w32font (void)
/* W32 font encodings. */
DEFVAR_LISP ("w32-charset-info-alist",
- &Vw32_charset_info_alist,
+ Vw32_charset_info_alist,
doc: /* Alist linking Emacs character sets to Windows fonts and codepages.
Each entry should be of the form:
@@ -2584,5 +2581,3 @@ versions of Windows) characters. */);
register_font_driver (&w32font_driver, NULL);
}
-/* arch-tag: 65b8a3cd-46aa-4c0d-a1f3-99e75b9c07ee
- (do not change this comment) */
diff --git a/src/w32font.h b/src/w32font.h
index 6479f95faf..45c0689719 100644
--- a/src/w32font.h
+++ b/src/w32font.h
@@ -1,5 +1,5 @@
/* Shared GDI and Uniscribe Font backend declarations for the W32 API.
- Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2007-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -85,5 +85,3 @@ Lisp_Object intern_font_name (char *);
#endif
-/* arch-tag: ef9d9675-a2a5-4d01-9526-815e9a3da7cb
- (do not change this comment) */
diff --git a/src/w32gui.h b/src/w32gui.h
index 079cd19a1f..936709af18 100644
--- a/src/w32gui.h
+++ b/src/w32gui.h
@@ -1,6 +1,5 @@
/* Definitions and headers for communication on the Microsoft W32 API.
- Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -149,5 +148,3 @@ typedef struct {
#endif /* EMACS_W32GUI_H */
-/* arch-tag: 9172e5fb-45a5-4684-afd9-ca0e81324604
- (do not change this comment) */
diff --git a/src/w32heap.c b/src/w32heap.c
index 39ff101746..bbdabd2350 100644
--- a/src/w32heap.c
+++ b/src/w32heap.c
@@ -1,6 +1,5 @@
/* Heap management routines for GNU Emacs on the Microsoft W32 API.
- Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/src/w32heap.h b/src/w32heap.h
index 20a49a4e0a..e75bfcf36e 100644
--- a/src/w32heap.h
+++ b/src/w32heap.h
@@ -1,6 +1,5 @@
/* Heap management routines (including unexec) for GNU Emacs on Windows NT.
- Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -94,5 +93,3 @@ IMAGE_SECTION_HEADER * rva_to_section (DWORD rva, IMAGE_NT_HEADERS * nt_header);
#endif /* NTHEAP_H_ */
-/* arch-tag: 3ba4cbe1-8a09-4a41-8f37-fd31f7426b3c
- (do not change this comment) */
diff --git a/src/w32inevt.c b/src/w32inevt.c
index 65b57ffa1f..d0b097100f 100644
--- a/src/w32inevt.c
+++ b/src/w32inevt.c
@@ -1,6 +1,5 @@
/* Input event support for Emacs on the Microsoft W32 API.
- Copyright (C) 1992, 1993, 1995, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1992-1993, 1995, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -51,25 +50,8 @@ static DWORD movement_time;
/* from keyboard.c */
extern void reinvoke_input_signal (void);
-/* from w32console.c */
-extern int w32_use_full_screen_buffer;
-
-/* from w32fns.c */
-extern Lisp_Object Vw32_alt_is_meta;
extern unsigned int map_keypad_keys (unsigned int, unsigned int);
-/* from w32term */
-extern Lisp_Object Vw32_capslock_is_shiftlock;
-extern Lisp_Object Vw32_enable_caps_lock;
-extern Lisp_Object Vw32_enable_num_lock;
-extern Lisp_Object Vw32_recognize_altgr;
-extern Lisp_Object Vw32_pass_lwindow_to_system;
-extern Lisp_Object Vw32_pass_rwindow_to_system;
-extern Lisp_Object Vw32_phantom_key_code;
-extern Lisp_Object Vw32_lwindow_modifier;
-extern Lisp_Object Vw32_rwindow_modifier;
-extern Lisp_Object Vw32_apps_modifier;
-extern Lisp_Object Vw32_scroll_lock_modifier;
extern unsigned int w32_key_to_modifier (int key);
/* Event queue */
diff --git a/src/w32inevt.h b/src/w32inevt.h
index e8c8967e44..9ca5250815 100644
--- a/src/w32inevt.h
+++ b/src/w32inevt.h
@@ -1,6 +1,5 @@
/* Input routines for GNU Emacs on the Microsoft W32 API.
- Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -30,5 +29,3 @@ extern void w32_console_mouse_position (FRAME_PTR *f, int insist,
#endif /* EMACS_W32INEVT_H */
-/* arch-tag: 7641bd54-199f-4552-8e8a-6a2f5340ef13
- (do not change this comment) */
diff --git a/src/w32menu.c b/src/w32menu.c
index ff6bd977be..92447eb9fa 100644
--- a/src/w32menu.c
+++ b/src/w32menu.c
@@ -1,6 +1,5 @@
/* Menu support for GNU Emacs on the Microsoft W32 API.
- Copyright (C) 1986, 1988, 1993, 1994, 1996, 1998, 1999, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1986, 1988, 1993-1994, 1996, 1998-1999, 2001-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -89,9 +88,6 @@ extern Lisp_Object Qmenu_bar;
extern Lisp_Object QCtoggle, QCradio;
-extern Lisp_Object Voverriding_local_map;
-extern Lisp_Object Voverriding_local_map_menu_flag;
-
extern Lisp_Object Qoverriding_local_map, Qoverriding_terminal_local_map;
extern Lisp_Object Qmenu_bar_update_hook;
@@ -530,7 +526,7 @@ set_frame_menubar (FRAME_PTR f, int first_time, int deep_p)
string = AREF (items, i + 1);
if (NILP (string))
break;
- wv->name = (char *) SDATA (string);
+ wv->name = SSDATA (string);
update_submenu_strings (wv->contents);
wv = wv->next;
}
@@ -558,7 +554,7 @@ set_frame_menubar (FRAME_PTR f, int first_time, int deep_p)
break;
wv = xmalloc_widget_value ();
- wv->name = (char *) SDATA (string);
+ wv->name = SSDATA (string);
wv->value = 0;
wv->enabled = 1;
wv->button_type = BUTTON_TYPE_NONE;
@@ -748,7 +744,7 @@ w32_menu_show (FRAME_PTR f, int x, int y, int for_click, int keymaps,
}
pane_string = (NILP (pane_name)
- ? "" : (char *) SDATA (pane_name));
+ ? "" : SSDATA (pane_name));
/* If there is just one top-level pane, put all its items directly
under the top-level menu. */
if (menu_items_n_panes == 1)
@@ -816,9 +812,9 @@ w32_menu_show (FRAME_PTR f, int x, int y, int for_click, int keymaps,
prev_wv->next = wv;
else
save_wv->contents = wv;
- wv->name = (char *) SDATA (item_name);
+ wv->name = SSDATA (item_name);
if (!NILP (descrip))
- wv->key = (char *) SDATA (descrip);
+ wv->key = SSDATA (descrip);
wv->value = 0;
/* Use the contents index as call_data, since we are
restricted to 16-bits. */
@@ -864,7 +860,7 @@ w32_menu_show (FRAME_PTR f, int x, int y, int for_click, int keymaps,
else if (STRING_MULTIBYTE (title))
title = ENCODE_SYSTEM (title);
- wv_title->name = (char *) SDATA (title);
+ wv_title->name = SSDATA (title);
wv_title->enabled = TRUE;
wv_title->title = TRUE;
wv_title->button_type = BUTTON_TYPE_NONE;
@@ -1024,7 +1020,7 @@ w32_dialog_show (FRAME_PTR f, int keymaps,
pane_name = AREF (menu_items, MENU_ITEMS_PANE_NAME);
prefix = AREF (menu_items, MENU_ITEMS_PANE_PREFIX);
pane_string = (NILP (pane_name)
- ? "" : (char *) SDATA (pane_name));
+ ? "" : SSDATA (pane_name));
prev_wv = xmalloc_widget_value ();
prev_wv->value = pane_string;
if (keymaps && !NILP (prefix))
@@ -1072,8 +1068,8 @@ w32_dialog_show (FRAME_PTR f, int keymaps,
prev_wv->next = wv;
wv->name = (char *) button_names[nb_buttons];
if (!NILP (descrip))
- wv->key = (char *) SDATA (descrip);
- wv->value = (char *) SDATA (item_name);
+ wv->key = SSDATA (descrip);
+ wv->value = SSDATA (item_name);
wv->call_data = (void *) &AREF (menu_items, i);
wv->enabled = !NILP (enable);
wv->help = Qnil;
@@ -1326,20 +1322,6 @@ simple_dialog_show (FRAME_PTR f, Lisp_Object contents, Lisp_Object header)
#endif /* !HAVE_DIALOGS */
-/* Is this item a separator? */
-static int
-name_is_separator (const char *name)
-{
- const char *start = name;
-
- /* Check if name string consists of only dashes ('-'). */
- while (*name == '-') name++;
- /* Separators can also be of the form "--:TripleSuperMegaEtched"
- or "--deep-shadow". We don't implement them yet, se we just treat
- them like normal separators. */
- return (*name == '\0' || start + 2 == name);
-}
-
/* UTF8: 0xxxxxxx, 110xxxxx 10xxxxxx, 1110xxxx, 10xxxxxx, 10xxxxxx */
static void
utf8to16 (unsigned char * src, int len, WCHAR * dest)
@@ -1388,7 +1370,7 @@ add_menu_item (HMENU menu, widget_value *wv, HMENU item)
int return_value;
size_t nlen, orig_len;
- if (name_is_separator (wv->name))
+ if (menu_separator_name_p (wv->name))
{
fuFlags = MF_SEPARATOR;
out_string = NULL;
@@ -1747,6 +1729,3 @@ globals_of_w32menu (void)
unicode_append_menu = (AppendMenuW_Proc) GetProcAddress (user32, "AppendMenuW");
unicode_message_box = (MessageBoxW_Proc) GetProcAddress (user32, "MessageBoxW");
}
-
-/* arch-tag: 0eaed431-bb4e-4aac-a527-95a1b4f1fed0
- (do not change this comment) */
diff --git a/src/w32proc.c b/src/w32proc.c
index ff6e22d254..1c009c7f94 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -1,6 +1,5 @@
/* Process support for GNU Emacs on the Microsoft W32 API.
- Copyright (C) 1992, 1995, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1992, 1995, 1999-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -68,47 +67,6 @@ extern BOOL WINAPI IsValidLocale (LCID, DWORD);
+ ((DWORD)(var) - (section)->VirtualAddress) \
+ (filedata).file_base))
-/* Control whether spawnve quotes arguments as necessary to ensure
- correct parsing by child process. Because not all uses of spawnve
- are careful about constructing argv arrays, we make this behavior
- conditional (off by default). */
-Lisp_Object Vw32_quote_process_args;
-
-/* Control whether create_child causes the process' window to be
- hidden. The default is nil. */
-Lisp_Object Vw32_start_process_show_window;
-
-/* Control whether create_child causes the process to inherit Emacs'
- console window, or be given a new one of its own. The default is
- nil, to allow multiple DOS programs to run on Win95. Having separate
- consoles also allows Emacs to cleanly terminate process groups. */
-Lisp_Object Vw32_start_process_share_console;
-
-/* Control whether create_child cause the process to inherit Emacs'
- error mode setting. The default is t, to minimize the possibility of
- subprocesses blocking when accessing unmounted drives. */
-Lisp_Object Vw32_start_process_inherit_error_mode;
-
-/* Time to sleep before reading from a subprocess output pipe - this
- avoids the inefficiency of frequently reading small amounts of data.
- This is primarily necessary for handling DOS processes on Windows 95,
- but is useful for W32 processes on both Windows 95 and NT as well. */
-int w32_pipe_read_delay;
-
-/* Control conversion of upper case file names to lower case.
- nil means no, t means yes. */
-Lisp_Object Vw32_downcase_file_names;
-
-/* Control whether stat() attempts to generate fake but hopefully
- "accurate" inode values, by hashing the absolute truenames of files.
- This should detect aliasing between long and short names, but still
- allows the possibility of hash collisions. */
-Lisp_Object Vw32_generate_fake_inodes;
-
-/* Control whether stat() attempts to determine file type and link count
- exactly, at the expense of slower operation. Since true hard links
- are supported on NTFS volumes, this is only relevant on NT. */
-Lisp_Object Vw32_get_true_file_attributes;
extern Lisp_Object Qlocal;
Lisp_Object Qhigh, Qlow;
@@ -1707,8 +1665,6 @@ extern HANDLE winsock_lib;
extern BOOL term_winsock (void);
extern BOOL init_winsock (int load_now);
-extern Lisp_Object Vsystem_name;
-
DEFUN ("w32-has-winsock", Fw32_has_winsock, Sw32_has_winsock, 0, 1, 0,
doc: /* Test for presence of the Windows socket library `winsock'.
Returns non-nil if winsock support is present, nil otherwise.
@@ -2284,7 +2240,7 @@ syms_of_ntproc (void)
defsubr (&Sw32_get_keyboard_layout);
defsubr (&Sw32_set_keyboard_layout);
- DEFVAR_LISP ("w32-quote-process-args", &Vw32_quote_process_args,
+ DEFVAR_LISP ("w32-quote-process-args", Vw32_quote_process_args,
doc: /* Non-nil enables quoting of process arguments to ensure correct parsing.
Because Windows does not directly pass argv arrays to child processes,
programs have to reconstruct the argv array by parsing the command
@@ -2297,14 +2253,14 @@ will be chosen based on the type of the program. */);
Vw32_quote_process_args = Qt;
DEFVAR_LISP ("w32-start-process-show-window",
- &Vw32_start_process_show_window,
+ Vw32_start_process_show_window,
doc: /* When nil, new child processes hide their windows.
When non-nil, they show their window in the method of their choice.
This variable doesn't affect GUI applications, which will never be hidden. */);
Vw32_start_process_show_window = Qnil;
DEFVAR_LISP ("w32-start-process-share-console",
- &Vw32_start_process_share_console,
+ Vw32_start_process_share_console,
doc: /* When nil, new child processes are given a new console.
When non-nil, they share the Emacs console; this has the limitation of
allowing only one DOS subprocess to run at a time (whether started directly
@@ -2314,13 +2270,13 @@ otherwise respond to interrupts from Emacs. */);
Vw32_start_process_share_console = Qnil;
DEFVAR_LISP ("w32-start-process-inherit-error-mode",
- &Vw32_start_process_inherit_error_mode,
+ Vw32_start_process_inherit_error_mode,
doc: /* When nil, new child processes revert to the default error mode.
When non-nil, they inherit their error mode setting from Emacs, which stops
them blocking when trying to access unmounted drives etc. */);
Vw32_start_process_inherit_error_mode = Qt;
- DEFVAR_INT ("w32-pipe-read-delay", &w32_pipe_read_delay,
+ DEFVAR_INT ("w32-pipe-read-delay", w32_pipe_read_delay,
doc: /* Forced delay before reading subprocess output.
This is done to improve the buffering of subprocess output, by
avoiding the inefficiency of frequently reading small amounts of data.
@@ -2331,7 +2287,7 @@ of time slices to wait (effectively boosting the priority of the child
process temporarily). A value of zero disables waiting entirely. */);
w32_pipe_read_delay = 50;
- DEFVAR_LISP ("w32-downcase-file-names", &Vw32_downcase_file_names,
+ DEFVAR_LISP ("w32-downcase-file-names", Vw32_downcase_file_names,
doc: /* Non-nil means convert all-upper case file names to lower case.
This applies when performing completions and file name expansion.
Note that the value of this setting also affects remote file names,
@@ -2340,7 +2296,7 @@ filesystems via ange-ftp. */);
Vw32_downcase_file_names = Qnil;
#if 0
- DEFVAR_LISP ("w32-generate-fake-inodes", &Vw32_generate_fake_inodes,
+ DEFVAR_LISP ("w32-generate-fake-inodes", Vw32_generate_fake_inodes,
doc: /* Non-nil means attempt to fake realistic inode values.
This works by hashing the truename of files, and should detect
aliasing between long and short (8.3 DOS) names, but can have
@@ -2349,7 +2305,7 @@ the truename of a file can be slow. */);
Vw32_generate_fake_inodes = Qnil;
#endif
- DEFVAR_LISP ("w32-get-true-file-attributes", &Vw32_get_true_file_attributes,
+ DEFVAR_LISP ("w32-get-true-file-attributes", Vw32_get_true_file_attributes,
doc: /* Non-nil means determine accurate file attributes in `file-attributes'.
This option controls whether to issue additional system calls to determine
accurate link counts, file type, and ownership information. It is more
diff --git a/src/w32reg.c b/src/w32reg.c
index 5c02dd376c..e1465be9e4 100644
--- a/src/w32reg.c
+++ b/src/w32reg.c
@@ -1,6 +1,5 @@
/* Emulate the X Resource Manager through the registry.
- Copyright (C) 1990, 1993, 1994, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1990, 1993-1994, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -161,5 +160,3 @@ x_get_string_resource (XrmDatabase rdb, char *name, char *class)
return (w32_get_string_resource (name, class, REG_SZ));
}
-/* arch-tag: 755fce25-42d7-4acb-874f-2fb42336823d
- (do not change this comment) */
diff --git a/src/w32select.c b/src/w32select.c
index 18694d2d33..23d5fb68c7 100644
--- a/src/w32select.c
+++ b/src/w32select.c
@@ -1,7 +1,6 @@
/* Selection processing for Emacs on the Microsoft W32 API.
-Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1993-1994, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -111,13 +110,6 @@ static void setup_windows_coding_system (Lisp_Object coding_system,
PRIMARY and SECONDARY. */
Lisp_Object QCLIPBOARD;
-/* Coding system for communicating with other programs via the
- clipboard. */
-static Lisp_Object Vselection_coding_system;
-
-/* Coding system for the next communication with other programs. */
-static Lisp_Object Vnext_selection_coding_system;
-
/* Internal pseudo-constants, initialized in globals_of_w32select()
based on current system parameters. */
static LCID DEFAULT_LCID;
@@ -1068,7 +1060,7 @@ syms_of_w32select (void)
defsubr (&Sw32_get_clipboard_data);
defsubr (&Sx_selection_exists_p);
- DEFVAR_LISP ("selection-coding-system", &Vselection_coding_system,
+ DEFVAR_LISP ("selection-coding-system", Vselection_coding_system,
doc: /* Coding system for communicating with other programs.
For MS-Windows and MS-DOS:
@@ -1102,7 +1094,7 @@ The default value is nil. */);
below. */
Vselection_coding_system = Qnil;
- DEFVAR_LISP ("next-selection-coding-system", &Vnext_selection_coding_system,
+ DEFVAR_LISP ("next-selection-coding-system", Vnext_selection_coding_system,
doc: /* Coding system for the next communication with other programs.
Usually, `selection-coding-system' is used for communicating with
other programs (X Windows clients or MS Windows programs). But, if this
diff --git a/src/w32term.c b/src/w32term.c
index 7145efbc60..cd4ee54fd2 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -1,8 +1,6 @@
/* Implementation of GUI terminal on the Microsoft W32 API.
-Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 1989, 1993-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -65,10 +63,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
static int max_fringe_bmp = 0;
static HBITMAP *fringe_bmp = 0;
-/* Non-nil means Emacs uses toolkit scroll bars. */
-
-Lisp_Object Vx_toolkit_scroll_bars;
-
/* Temporary variables for w32_read_socket. */
static int last_mousemove_x = 0;
@@ -87,13 +81,6 @@ static int any_help_event_p;
/* Last window where we saw the mouse. Used by mouse-autoselect-window. */
static Lisp_Object last_window;
-/* Non-zero means make use of UNDERLINE_POSITION font properties. */
-int x_use_underline_position_properties;
-
-/* Non-zero means to draw the underline at the same place as the descent line. */
-
-int x_underline_at_descent_line;
-
extern unsigned int msh_mousewheel;
extern void free_frame_menubar (struct frame *);
@@ -166,8 +153,6 @@ HWND w32_system_caret_hwnd;
int w32_system_caret_height;
int w32_system_caret_x;
int w32_system_caret_y;
-int w32_use_visible_system_caret;
-
DWORD dwWindowsThreadId = 0;
HANDLE hWindowsThread = NULL;
DWORD dwMainThreadId = 0;
@@ -186,19 +171,6 @@ static RECT last_mouse_glyph;
static FRAME_PTR last_mouse_glyph_frame;
static Lisp_Object last_mouse_press_frame;
-int w32_num_mouse_buttons;
-
-Lisp_Object Vw32_swap_mouse_buttons;
-
-/* Control whether x_raise_frame also sets input focus. */
-Lisp_Object Vw32_grab_focus_on_raise;
-
-/* Control whether Caps Lock affects non-ascii characters. */
-Lisp_Object Vw32_capslock_is_shiftlock;
-
-/* Control whether right-alt and left-ctrl should be recognized as AltGr. */
-Lisp_Object Vw32_recognize_altgr;
-
/* The scroll bar in which the last motion event occurred.
If the last motion event occurred in a scroll bar, we set this
@@ -226,11 +198,6 @@ static int volatile input_signal_count;
static int input_signal_count;
#endif
-extern Lisp_Object Vcommand_line_args, Vsystem_name;
-
-/* A mask of extra modifier bits to put into every keyboard char. */
-extern EMACS_INT extra_keyboard_modifiers;
-
/* Keyboard code page - may be changed by language-change events. */
static int keyboard_codepage;
@@ -1437,7 +1404,7 @@ x_draw_glyphless_glyph_string_foreground (struct glyph_string *s)
glyph->u.glyphless.ch)
: XCHAR_TABLE (Vglyphless_char_display)->extras[0]);
if (STRINGP (acronym))
- str = (char *) SDATA (acronym);
+ str = SSDATA (acronym);
}
}
else if (glyph->u.glyphless.method == GLYPHLESS_DISPLAY_HEX_CODE)
@@ -6383,18 +6350,18 @@ syms_of_w32term (void)
DEFSYM (Qvendor_specific_keysyms, "vendor-specific-keysyms");
DEFVAR_INT ("w32-num-mouse-buttons",
- &w32_num_mouse_buttons,
+ w32_num_mouse_buttons,
doc: /* Number of physical mouse buttons. */);
w32_num_mouse_buttons = 2;
DEFVAR_LISP ("w32-swap-mouse-buttons",
- &Vw32_swap_mouse_buttons,
+ Vw32_swap_mouse_buttons,
doc: /* Swap the mapping of middle and right mouse buttons.
When nil, middle button is mouse-2 and right button is mouse-3. */);
Vw32_swap_mouse_buttons = Qnil;
DEFVAR_LISP ("w32-grab-focus-on-raise",
- &Vw32_grab_focus_on_raise,
+ Vw32_grab_focus_on_raise,
doc: /* Raised frame grabs input focus.
When t, `raise-frame' grabs input focus as well. This fits well
with the normal Windows click-to-focus policy, but might not be
@@ -6402,20 +6369,20 @@ desirable when using a point-to-focus policy. */);
Vw32_grab_focus_on_raise = Qt;
DEFVAR_LISP ("w32-capslock-is-shiftlock",
- &Vw32_capslock_is_shiftlock,
+ Vw32_capslock_is_shiftlock,
doc: /* Apply CapsLock state to non character input keys.
When nil, CapsLock only affects normal character input keys. */);
Vw32_capslock_is_shiftlock = Qnil;
DEFVAR_LISP ("w32-recognize-altgr",
- &Vw32_recognize_altgr,
+ Vw32_recognize_altgr,
doc: /* Recognize right-alt and left-ctrl as AltGr.
When nil, the right-alt and left-ctrl key combination is
interpreted normally. */);
Vw32_recognize_altgr = Qt;
DEFVAR_BOOL ("w32-use-visible-system-caret",
- &w32_use_visible_system_caret,
+ w32_use_visible_system_caret,
doc: /* Flag to make the system caret visible.
When this is non-nil, Emacs will indicate the position of point by
using the system caret instead of drawing its own cursor. Some screen
@@ -6432,7 +6399,7 @@ the cursor have no effect. */);
/* We don't yet support this, but defining this here avoids whining
from cus-start.el and other places, like "M-x set-variable". */
DEFVAR_BOOL ("x-use-underline-position-properties",
- &x_use_underline_position_properties,
+ x_use_underline_position_properties,
doc: /* *Non-nil means make use of UNDERLINE_POSITION font properties.
A value of nil means ignore them. If you encounter fonts with bogus
UNDERLINE_POSITION font properties, for example 7x13 on XFree prior
@@ -6442,14 +6409,14 @@ sizes. */);
x_use_underline_position_properties = 0;
DEFVAR_BOOL ("x-underline-at-descent-line",
- &x_underline_at_descent_line,
+ x_underline_at_descent_line,
doc: /* *Non-nil means to draw the underline at the same place as the descent line.
A value of nil means to draw the underline according to the value of the
variable `x-use-underline-position-properties', which is usually at the
baseline level. The default value is nil. */);
x_underline_at_descent_line = 0;
- DEFVAR_LISP ("x-toolkit-scroll-bars", &Vx_toolkit_scroll_bars,
+ DEFVAR_LISP ("x-toolkit-scroll-bars", Vx_toolkit_scroll_bars,
doc: /* Which toolkit scroll bars Emacs uses, if any.
A value of nil means Emacs doesn't use toolkit scroll bars.
With the X Window system, the value is a symbol describing the
@@ -6460,4 +6427,3 @@ With MS Windows, the value is t. */);
staticpro (&last_mouse_motion_frame);
last_mouse_motion_frame = Qnil;
}
-
diff --git a/src/w32term.h b/src/w32term.h
index bd535cae57..c79352a8db 100644
--- a/src/w32term.h
+++ b/src/w32term.h
@@ -1,6 +1,5 @@
/* Definitions and headers for communication on the Microsoft W32 API.
- Copyright (C) 1995, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -61,12 +60,6 @@ struct w32_bitmap_record
int height, width, depth;
};
-/* Palette book-keeping stuff for mapping requested colors into the
- system palette. Keep a ref-counted list of requested colors and
- regenerate the app palette whenever the requested list changes. */
-
-extern Lisp_Object Vw32_enable_palette;
-
struct w32_palette_entry {
struct w32_palette_entry * next;
PALETTEENTRY entry;
@@ -194,9 +187,6 @@ extern struct w32_display_info one_w32_display_info;
FONT-LIST-CACHE records previous values returned by x-list-fonts. */
extern Lisp_Object w32_display_name_list;
-/* Regexp matching a font name whose width is the same as `PIXEL_SIZE'. */
-extern Lisp_Object Vx_pixel_size_width_font_regexp;
-
extern struct frame *x_window_to_frame (struct w32_display_info *, HWND);
struct w32_display_info *x_display_info_for_name (Lisp_Object);
@@ -707,5 +697,3 @@ typedef BOOL (WINAPI * AppendMenuW_Proc) (
IN UINT_PTR,
IN LPCWSTR);
-/* arch-tag: f201d05a-1240-4fc5-8ea4-ca24d4ee5671
- (do not change this comment) */
diff --git a/src/w32uniscribe.c b/src/w32uniscribe.c
index 6c29e6ee2d..319f934e3b 100644
--- a/src/w32uniscribe.c
+++ b/src/w32uniscribe.c
@@ -1,5 +1,5 @@
/* Font backend for the Microsoft W32 Uniscribe API.
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2008-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -965,5 +965,3 @@ syms_of_w32uniscribe (void)
register_font_driver (&uniscribe_font_driver, NULL);
}
-/* arch-tag: 9530f0e1-7471-47dd-a780-94330af87ea0
- (do not change this comment) */
diff --git a/src/w32xfns.c b/src/w32xfns.c
index 4cbd812ec0..df9acca5fb 100644
--- a/src/w32xfns.c
+++ b/src/w32xfns.c
@@ -1,6 +1,5 @@
/* Functions taken directly from X sources for use with the Microsoft W32 API.
- Copyright (C) 1989, 1992, 1993, 1994, 1995, 1999, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1989, 1992-1995, 1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -443,5 +442,3 @@ x_sync (void *f)
{
}
-/* arch-tag: 4fab3695-4ad3-4cc6-a2b1-fd2c67dc46be
- (do not change this comment) */
diff --git a/src/widget.c b/src/widget.c
index 2301f76c7c..3053ceaea1 100644
--- a/src/widget.c
+++ b/src/widget.c
@@ -1,6 +1,5 @@
/* The emacs frame widget.
- Copyright (C) 1992, 1993, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1992-1993, 2000-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -561,7 +560,7 @@ setup_frame_gcs (EmacsFrame ew)
if (STRINGP (font))
{
XFontStruct *xfont = XLoadQueryFont (FRAME_X_DISPLAY_INFO (s)->display,
- SDATA (font));
+ SSDATA (font));
if (xfont)
{
gc_values.font = xfont->fid;
@@ -841,6 +840,3 @@ widget_store_internal_border (Widget widget)
ew->emacs_frame.internal_border_width = f->internal_border_width;
}
-
-/* arch-tag: 931d28e5-0d59-405a-8325-7d475d0a13d9
- (do not change this comment) */
diff --git a/src/widget.h b/src/widget.h
index a1ddeb2e94..f64f188e15 100644
--- a/src/widget.h
+++ b/src/widget.h
@@ -1,6 +1,5 @@
/* The emacs frame widget public header file.
- Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -99,5 +98,3 @@ void widget_store_internal_border (Widget widget);
#endif /* _EmacsFrame_h */
-/* arch-tag: 98be17cc-8878-4701-abfa-66f1c04e9cb7
- (do not change this comment) */
diff --git a/src/widgetprv.h b/src/widgetprv.h
index a0b47d9f69..5df0976f87 100644
--- a/src/widgetprv.h
+++ b/src/widgetprv.h
@@ -1,6 +1,5 @@
/* The emacs frame widget private header file.
- Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -77,5 +76,3 @@ extern EmacsFrameClassRec emacsFrameClassRec; /* class pointer */
#endif /* _EmacsFrameP_h */
-/* arch-tag: 2b579b4c-f697-4f86-b27a-35b7cb1a4a1c
- (do not change this comment) */
diff --git a/src/window.c b/src/window.c
index a2a0c79311..41eed893d6 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1,7 +1,6 @@
/* Window creation, deletion and examination for GNU Emacs.
Does not include redisplay.
- Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985-1987, 1993-1998, 2000-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -78,10 +77,14 @@ static Lisp_Object next_window (Lisp_Object, Lisp_Object,
Lisp_Object, int);
static void decode_next_window_args (Lisp_Object *, Lisp_Object *,
Lisp_Object *);
+static void foreach_window (struct frame *,
+ int (* fn) (struct window *, void *),
+ void *);
static int foreach_window_1 (struct window *,
int (* fn) (struct window *, void *),
void *);
static Lisp_Object window_list_1 (Lisp_Object, Lisp_Object, Lisp_Object);
+static Lisp_Object select_window (Lisp_Object, Lisp_Object, int);
/* This is the window in which the terminal's cursor should
be left when nothing is being done with it. This must
@@ -111,42 +114,10 @@ Lisp_Object minibuf_window;
Lisp_Object minibuf_selected_window;
-/* Non-nil means it is the window for C-M-v to scroll
- when the mini-buffer is selected. */
-
-Lisp_Object Vminibuf_scroll_window;
-
-/* Non-nil means this is the buffer whose window C-M-v should scroll. */
-
-Lisp_Object Vother_window_scroll_buffer;
-
-/* Non-nil means it's function to call to display temp buffers. */
-
-Lisp_Object Vtemp_buffer_show_function;
-
-/* Non-zero means line and page scrolling on tall lines (with images)
- does partial scrolling by modifying window-vscroll. */
-
-int auto_window_vscroll_p;
-
-/* Non-zero means to use mode-line-inactive face in all windows but the
- selected-window and the minibuffer-scroll-window when the
- minibuffer is active. */
-int mode_line_in_non_selected_windows;
-
-/* If a window gets smaller than either of these, it is removed. */
-
-EMACS_INT window_min_height;
-EMACS_INT window_min_width;
-
/* Hook run at end of temp_output_buffer_show. */
Lisp_Object Qtemp_buffer_show_hook;
-/* Number of lines of continuity in scrolling by screenfuls. */
-
-EMACS_INT next_screen_context_lines;
-
/* Incremented for each window created. */
static int sequence_number;
@@ -158,17 +129,6 @@ static int window_initialized;
/* Hook to run when window config changes. */
static Lisp_Object Qwindow_configuration_change_hook;
-static Lisp_Object Vwindow_configuration_change_hook;
-
-/* Non-nil means scroll commands try to put point
- at the same screen height as previously. */
-
-Lisp_Object Vscroll_preserve_screen_position;
-
-/* Non-nil means that text is inserted before window's markers. */
-
-Lisp_Object Vwindow_point_insertion_type;
-
/* Incremented by 1 whenever a window is deleted. */
int window_deletion_count;
@@ -186,13 +146,7 @@ static int window_scroll_preserve_vpos;
#if 0 /* This isn't used anywhere. */
/* Nonzero means we can split a frame even if it is "unsplittable". */
static int inhibit_frame_unsplittable;
-#endif /* 0 */
-
-/* If non-nil, then the `recenter' command with a nil argument
- the entire frame to be redrawn; the special value `tty' causes the
- frame to be redrawn only if it is a tty frame. */
-
-static Lisp_Object Vrecenter_redisplay;
+#endif
DEFUN ("windowp", Fwindowp, Swindowp, 1, 1, 0,
@@ -1425,6 +1379,8 @@ DEFUN ("set-window-display-table", Fset_window_display_table, Sset_window_displa
return table;
}
+static void delete_window (Lisp_Object);
+
/* Record info on buffer window w is displaying
when it is about to cease to display that buffer. */
static void
@@ -1548,7 +1504,7 @@ Signal an error when WINDOW is the only window on its frame. */)
return Qnil;
}
-void
+static void
delete_window (register Lisp_Object window)
{
register Lisp_Object tem, parent, sib;
@@ -3522,11 +3478,12 @@ This function runs `window-scroll-functions' before running
else if (!EQ (tem, Qt))
/* w->buffer is t when the window is first being set up. */
{
- if (!EQ (tem, buffer))
- if (EQ (w->dedicated, Qt))
- error ("Window is dedicated to `%s'", SDATA (XBUFFER (tem)->name));
- else
- w->dedicated = Qnil;
+ if (EQ (tem, buffer))
+ return Qnil;
+ else if (EQ (w->dedicated, Qt))
+ error ("Window is dedicated to `%s'", SDATA (XBUFFER (tem)->name));
+ else
+ w->dedicated = Qnil;
unshow_buffer (w);
}
@@ -3535,20 +3492,14 @@ This function runs `window-scroll-functions' before running
return Qnil;
}
-/* Note that selected_window can be nil when this is called from
- Fset_window_configuration. */
-
-DEFUN ("select-window", Fselect_window, Sselect_window, 1, 2, 0,
- doc: /* Select WINDOW. Most editing will apply to WINDOW's buffer.
-If WINDOW is not already selected, make WINDOW's buffer current
-and make WINDOW the frame's selected window. Return WINDOW.
-Optional second arg NORECORD non-nil means do not put this buffer
-at the front of the list of recently selected ones and do not
-make this window the most recently selected one.
+/* If select_window is called with inhibit_point_swap non-zero it will
+ not store point of the old selected window's buffer back into that
+ window's pointm slot. This is needed by Fset_window_configuration to
+ avoid that the display routine is called with selected_window set to
+ Qnil causing a subsequent crash. */
-Note that the main editor command loop selects the buffer of the
-selected window before each command. */)
- (register Lisp_Object window, Lisp_Object norecord)
+static Lisp_Object
+select_window (Lisp_Object window, Lisp_Object norecord, int inhibit_point_swap)
{
register struct window *w;
register struct window *ow;
@@ -3588,7 +3539,7 @@ selected window before each command. */)
/* Store the current buffer's actual point into the
old selected window. It belongs to that window,
and when the window is not selected, must be in the window. */
- if (!NILP (selected_window))
+ if (!inhibit_point_swap)
{
ow = XWINDOW (selected_window);
if (! NILP (ow->buffer))
@@ -3622,6 +3573,25 @@ selected window before each command. */)
return window;
}
+
+/* Note that selected_window can be nil when this is called from
+ Fset_window_configuration. */
+
+DEFUN ("select-window", Fselect_window, Sselect_window, 1, 2, 0,
+ doc: /* Select WINDOW. Most editing will apply to WINDOW's buffer.
+If WINDOW is not already selected, make WINDOW's buffer current
+and make WINDOW the frame's selected window. Return WINDOW.
+Optional second arg NORECORD non-nil means do not put this buffer
+at the front of the list of recently selected ones and do not
+make this window the most recently selected one.
+
+Note that the main editor command loop selects the buffer of the
+selected window before each command. */)
+ (register Lisp_Object window, Lisp_Object norecord)
+{
+ select_window (window, norecord, 0);
+}
+
static Lisp_Object
select_window_norecord (Lisp_Object window)
{
@@ -3957,14 +3927,14 @@ fixed size windows is not altered by this function. */)
return Qnil;
}
-int
+static int
window_height (Lisp_Object window)
{
register struct window *p = XWINDOW (window);
return WINDOW_TOTAL_LINES (p);
}
-int
+static int
window_width (Lisp_Object window)
{
register struct window *p = XWINDOW (window);
@@ -5756,6 +5726,12 @@ zero means top of window, negative means relative to bottom of window. */)
int this_scroll_margin;
#endif
+ if (!(BUFFERP (w->buffer)
+ && XBUFFER (w->buffer) == current_buffer))
+ /* This test is needed to make sure PT/PT_BYTE make sense in w->buffer
+ when passed below to set_marker_both. */
+ error ("move-to-window-line called from unrelated buffer");
+
window = selected_window;
start = marker_position (w->start);
if (start < BEGV || start > ZV)
@@ -6132,10 +6108,6 @@ the return value is nil. Otherwise the value is t. */)
}
FRAME_ROOT_WINDOW (f) = data->root_window;
- /* Prevent "swapping out point" in the old selected window
- using the buffer that has been restored into it.
- We already swapped out point that from that window's old buffer. */
- selected_window = Qnil;
/* Arrange *not* to restore point in the buffer that was
current when the window configuration was saved. */
@@ -6144,7 +6116,11 @@ the return value is nil. Otherwise the value is t. */)
make_number (old_point),
XWINDOW (data->current_window)->buffer);
- Fselect_window (data->current_window, Qnil);
+ /* In the following call to `select-window, prevent "swapping
+ out point" in the old selected window using the buffer that
+ has been restored into it. We already swapped out that point
+ from that window's old buffer. */
+ select_window (data->current_window, Qnil, 1);
XBUFFER (XWINDOW (selected_window)->buffer)->last_selected_window
= selected_window;
@@ -6153,13 +6129,6 @@ the return value is nil. Otherwise the value is t. */)
&& FRAME_LIVE_P (XFRAME (data->focus_frame))))
Fredirect_frame_focus (frame, data->focus_frame);
-#if 0 /* I don't understand why this is needed, and it causes problems
- when the frame's old selected window has been deleted. */
- if (f != selected_frame && FRAME_WINDOW_P (f))
- do_switch_frame (WINDOW_FRAME (XWINDOW (data->root_window)),
- 0, 0, Qnil);
-#endif
-
/* Set the screen height to the value it had before this function. */
if (previous_frame_lines != FRAME_LINES (f)
|| previous_frame_cols != FRAME_COLS (f))
@@ -6816,8 +6785,9 @@ If PIXELS-P is non-nil, the return value is VSCROLL. */)
first argument being a pointer to the leaf window, and with
additional argument USER_DATA. Stops when FN returns 0. */
-void
-foreach_window (struct frame *f, int (*fn) (struct window *, void *), void *user_data)
+static void
+foreach_window (struct frame *f, int (*fn) (struct window *, void *),
+ void *user_data)
{
/* delete_frame may set FRAME_ROOT_WINDOW (f) to Qnil. */
if (WINDOWP (FRAME_ROOT_WINDOW (f)))
@@ -7081,7 +7051,7 @@ syms_of_window (void)
window_scroll_preserve_hpos = -1;
window_scroll_preserve_vpos = -1;
- DEFVAR_LISP ("temp-buffer-show-function", &Vtemp_buffer_show_function,
+ DEFVAR_LISP ("temp-buffer-show-function", Vtemp_buffer_show_function,
doc: /* Non-nil means call as function to display a help buffer.
The function is called with one argument, the buffer to be displayed.
Used by `with-output-to-temp-buffer'.
@@ -7089,29 +7059,29 @@ If this function is used, then it must do the entire job of showing
the buffer; `temp-buffer-show-hook' is not run unless this function runs it. */);
Vtemp_buffer_show_function = Qnil;
- DEFVAR_LISP ("minibuffer-scroll-window", &Vminibuf_scroll_window,
+ DEFVAR_LISP ("minibuffer-scroll-window", Vminibuf_scroll_window,
doc: /* Non-nil means it is the window that C-M-v in minibuffer should scroll. */);
Vminibuf_scroll_window = Qnil;
- DEFVAR_BOOL ("mode-line-in-non-selected-windows", &mode_line_in_non_selected_windows,
+ DEFVAR_BOOL ("mode-line-in-non-selected-windows", mode_line_in_non_selected_windows,
doc: /* Non-nil means to use `mode-line-inactive' face in non-selected windows.
If the minibuffer is active, the `minibuffer-scroll-window' mode line
is displayed in the `mode-line' face. */);
mode_line_in_non_selected_windows = 1;
- DEFVAR_LISP ("other-window-scroll-buffer", &Vother_window_scroll_buffer,
+ DEFVAR_LISP ("other-window-scroll-buffer", Vother_window_scroll_buffer,
doc: /* If non-nil, this is a buffer and \\[scroll-other-window] should scroll its window. */);
Vother_window_scroll_buffer = Qnil;
- DEFVAR_BOOL ("auto-window-vscroll", &auto_window_vscroll_p,
+ DEFVAR_BOOL ("auto-window-vscroll", auto_window_vscroll_p,
doc: /* *Non-nil means to automatically adjust `window-vscroll' to view tall lines. */);
auto_window_vscroll_p = 1;
- DEFVAR_INT ("next-screen-context-lines", &next_screen_context_lines,
+ DEFVAR_INT ("next-screen-context-lines", next_screen_context_lines,
doc: /* *Number of lines of continuity when scrolling by screenfuls. */);
next_screen_context_lines = 2;
- DEFVAR_INT ("window-min-height", &window_min_height,
+ DEFVAR_INT ("window-min-height", window_min_height,
doc: /* Allow deleting windows less than this tall.
The value is measured in line units. If a window wants a modeline it
is counted as one line.
@@ -7120,7 +7090,7 @@ Emacs honors settings of this variable when enlarging or shrinking
windows vertically. A value less than 1 is invalid. */);
window_min_height = 4;
- DEFVAR_INT ("window-min-width", &window_min_width,
+ DEFVAR_INT ("window-min-width", window_min_width,
doc: /* Allow deleting windows less than this wide.
The value is measured in characters and includes any fringes or
the scrollbar.
@@ -7130,7 +7100,7 @@ windows horizontally. A value less than 2 is invalid. */);
window_min_width = 10;
DEFVAR_LISP ("scroll-preserve-screen-position",
- &Vscroll_preserve_screen_position,
+ Vscroll_preserve_screen_position,
doc: /* *Controls if scroll commands move point to keep its screen position unchanged.
A value of nil means point does not keep its screen position except
at the scroll margin or window boundary respectively.
@@ -7142,19 +7112,19 @@ Scroll commands should have the `scroll-command' property
on their symbols to be controlled by this variable. */);
Vscroll_preserve_screen_position = Qnil;
- DEFVAR_LISP ("window-point-insertion-type", &Vwindow_point_insertion_type,
+ DEFVAR_LISP ("window-point-insertion-type", Vwindow_point_insertion_type,
doc: /* Type of marker to use for `window-point'. */);
Vwindow_point_insertion_type = Qnil;
DEFVAR_LISP ("window-configuration-change-hook",
- &Vwindow_configuration_change_hook,
+ Vwindow_configuration_change_hook,
doc: /* Functions to call when window configuration changes.
The buffer-local part is run once per window, with the relevant window
selected; while the global part is run only once for the modified frame,
with the relevant frame selected. */);
Vwindow_configuration_change_hook = Qnil;
- DEFVAR_LISP ("recenter-redisplay", &Vrecenter_redisplay,
+ DEFVAR_LISP ("recenter-redisplay", Vrecenter_redisplay,
doc: /* If non-nil, then the `recenter' command with a nil argument
will redraw the entire frame; the special value `tty' causes the
frame to be redrawn only if it is a tty frame. */);
@@ -7197,6 +7167,7 @@ frame to be redrawn only if it is a tty frame. */);
defsubr (&Sprevious_window);
defsubr (&Sother_window);
defsubr (&Sget_lru_window);
+ defsubr (&Swindow_use_time);
defsubr (&Sget_largest_window);
defsubr (&Sget_buffer_window);
defsubr (&Sdelete_other_windows);
@@ -7258,5 +7229,3 @@ keys_of_window (void)
initial_define_key (meta_map, 'v', "scroll-down-command");
}
-/* arch-tag: 90a9c576-0590-48f1-a5f1-6c96a0452d9f
- (do not change this comment) */
diff --git a/src/window.h b/src/window.h
index c1148836d7..491ffa30bd 100644
--- a/src/window.h
+++ b/src/window.h
@@ -1,6 +1,5 @@
/* Window definitions for GNU Emacs.
- Copyright (C) 1985, 1986, 1993, 1995, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 1985-1986, 1993, 1995, 1997-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -753,20 +752,6 @@ extern Lisp_Object minibuf_window;
extern Lisp_Object minibuf_selected_window;
-/* Non-nil => window to for C-M-v to scroll when the minibuffer is
- selected. */
-
-extern Lisp_Object Vminibuf_scroll_window;
-
-/* Nil or a symbol naming the window system under which emacs is
- running ('x is the only current possibility) */
-
-extern Lisp_Object Vinitial_window_system;
-
-/* Version number of X windows: 10, 11 or nil. */
-
-extern Lisp_Object Vwindow_system_version;
-
/* Window that the mouse is over (nil if no mouse support). */
extern Lisp_Object Vmouse_window;
@@ -778,29 +763,18 @@ extern Lisp_Object Vmouse_event;
EXFUN (Fnext_window, 3);
EXFUN (Fselect_window, 2);
EXFUN (Fset_window_buffer, 3);
-EXFUN (Fset_window_hscroll, 2);
-EXFUN (Fwindow_hscroll, 1);
EXFUN (Fset_window_vscroll, 3);
-EXFUN (Fwindow_vscroll, 2);
EXFUN (Fset_window_margins, 3);
-EXFUN (Fwindow_live_p, 1);
EXFUN (Fset_window_point, 2);
extern Lisp_Object make_window (void);
-extern void delete_window (Lisp_Object);
extern Lisp_Object window_from_coordinates (struct frame *, int, int,
enum window_part *, int);
EXFUN (Fwindow_dedicated_p, 1);
-extern int window_height (Lisp_Object);
-extern int window_width (Lisp_Object);
-EXFUN (Fwindow_full_width_p, 1);
extern void set_window_height (Lisp_Object, int, int);
extern void set_window_width (Lisp_Object, int, int);
extern void change_window_heights (Lisp_Object, int);
extern void delete_all_subwindows (struct window *);
extern void freeze_window_starts (struct frame *, int);
-extern void foreach_window (struct frame *,
- int (* fn) (struct window *, void *),
- void *);
extern void grow_mini_window (struct window *, int);
extern void shrink_mini_window (struct window *);
extern int window_relative_x_coord (struct window *, enum window_part, int);
@@ -881,26 +855,19 @@ struct glyph *get_phys_cursor_glyph (struct window *w);
extern Lisp_Object Qwindowp, Qwindow_live_p;
extern Lisp_Object Vwindow_list;
-EXFUN (Fwindow_end, 2);
EXFUN (Fselected_window, 0);
EXFUN (Fwindow_minibuffer_p, 1);
EXFUN (Fdelete_window, 1);
EXFUN (Fwindow_buffer, 1);
EXFUN (Fget_buffer_window, 2);
EXFUN (Fsave_window_excursion, UNEVALLED);
-EXFUN (Fsplit_window, 3);
EXFUN (Fset_window_configuration, 1);
EXFUN (Fcurrent_window_configuration, 1);
extern int compare_window_configurations (Lisp_Object, Lisp_Object, int);
-EXFUN (Fcoordinates_in_window_p, 2);
-EXFUN (Fwindow_at, 3);
EXFUN (Fpos_visible_in_window_p, 3);
extern void mark_window_cursors_off (struct window *);
extern int window_internal_height (struct window *);
-extern int window_internal_width (struct window *);
EXFUN (Frecenter, 1);
-EXFUN (Fscroll_other_window, 1);
-EXFUN (Fset_window_start, 3);
extern void temp_output_buffer_show (Lisp_Object);
extern void replace_buffer_in_all_windows (Lisp_Object);
extern void init_window_once (void);
@@ -912,5 +879,3 @@ extern int window_box_text_cols (struct window *w);
#endif /* not WINDOW_H_INCLUDED */
-/* arch-tag: d4a6942f-e433-4ffe-ac10-2c3574f28577
- (do not change this comment) */
diff --git a/src/xdisp.c b/src/xdisp.c
index 77e9db2e5e..5f86a59496 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -1,8 +1,6 @@
/* Display generation from window structure and buffer text.
-Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+Copyright (C) 1985-1988, 1993-1995, 1997-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -319,9 +317,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define INFINITY 10000000
Lisp_Object Qoverriding_local_map, Qoverriding_terminal_local_map;
-Lisp_Object Qwindow_scroll_functions, Vwindow_scroll_functions;
-Lisp_Object Qwindow_text_change_functions, Vwindow_text_change_functions;
-Lisp_Object Qredisplay_end_trigger_functions, Vredisplay_end_trigger_functions;
+Lisp_Object Qwindow_scroll_functions;
+Lisp_Object Qwindow_text_change_functions;
+Lisp_Object Qredisplay_end_trigger_functions;
Lisp_Object Qinhibit_point_motion_hooks;
Lisp_Object QCeval, QCfile, QCdata, QCpropertize;
Lisp_Object Qfontified;
@@ -336,82 +334,22 @@ Lisp_Object Qbar, Qhbar, Qbox, Qhollow;
/* Pointer shapes */
Lisp_Object Qarrow, Qhand, Qtext;
-Lisp_Object Qrisky_local_variable;
-
/* Holds the list (error). */
Lisp_Object list_of_error;
-/* Functions called to fontify regions of text. */
-
-Lisp_Object Vfontification_functions;
Lisp_Object Qfontification_functions;
-/* Non-nil means automatically select any window when the mouse
- cursor moves into it. */
-Lisp_Object Vmouse_autoselect_window;
-
-Lisp_Object Vwrap_prefix, Qwrap_prefix;
-Lisp_Object Vline_prefix, Qline_prefix;
-
-/* Non-zero means draw tool bar buttons raised when the mouse moves
- over them. */
-
-int auto_raise_tool_bar_buttons_p;
-
-/* Non-zero means to reposition window if cursor line is only partially visible. */
-
-int make_cursor_line_fully_visible_p;
-
-/* Margin below tool bar in pixels. 0 or nil means no margin.
- If value is `internal-border-width' or `border-width',
- the corresponding frame parameter is used. */
-
-Lisp_Object Vtool_bar_border;
-
-/* Margin around tool bar buttons in pixels. */
-
-Lisp_Object Vtool_bar_button_margin;
-
-/* Thickness of shadow to draw around tool bar buttons. */
-
-EMACS_INT tool_bar_button_relief;
-
-/* Non-nil means automatically resize tool-bars so that all tool-bar
- items are visible, and no blank lines remain.
-
- If value is `grow-only', only make tool-bar bigger. */
-
-Lisp_Object Vauto_resize_tool_bars;
-
-/* Type of tool bar. Can be symbols image, text, both or both-hroiz. */
-
-Lisp_Object Vtool_bar_style;
-
-/* Maximum number of characters a label can have to be shown. */
-
-EMACS_INT tool_bar_max_label_size;
-
-/* Non-zero means draw block and hollow cursor as wide as the glyph
- under it. For example, if a block cursor is over a tab, it will be
- drawn as wide as that tab on the display. */
-
-int x_stretch_cursor_p;
+Lisp_Object Qwrap_prefix;
+Lisp_Object Qline_prefix;
/* Non-nil means don't actually do any redisplay. */
-Lisp_Object Vinhibit_redisplay, Qinhibit_redisplay;
-
-/* Non-zero means Lisp evaluation during redisplay is inhibited. */
-
-int inhibit_eval_during_redisplay;
+Lisp_Object Qinhibit_redisplay;
/* Names of text properties relevant for redisplay. */
Lisp_Object Qdisplay;
-/* Symbols used in text property values. */
-
-Lisp_Object Vdisplay_pixels_per_inch;
Lisp_Object Qspace, QCalign_to, QCrelative_width, QCrelative_height;
Lisp_Object Qleft_margin, Qright_margin, Qspace_width, Qraise;
Lisp_Object Qslice;
@@ -419,14 +357,6 @@ Lisp_Object Qcenter;
Lisp_Object Qmargin, Qpointer;
Lisp_Object Qline_height;
-/* Non-nil means highlight trailing whitespace. */
-
-Lisp_Object Vshow_trailing_whitespace;
-
-/* Non-nil means escape non-break space and hyphens. */
-
-Lisp_Object Vnobreak_char_display;
-
#ifdef HAVE_WINDOW_SYSTEM
/* Test if overflow newline into fringe. Called with iterator IT
@@ -451,12 +381,6 @@ Lisp_Object Vnobreak_char_display;
#define IT_DISPLAYING_WHITESPACE(it) \
(it->what == IT_CHARACTER && (it->c == ' ' || it->c == '\t'))
-/* Non-nil means show the text cursor in void text areas
- i.e. in blank areas after eol and eob. This used to be
- the default in 21.3. */
-
-Lisp_Object Vvoid_text_area_pointer;
-
/* Name of the face used to highlight trailing whitespace. */
Lisp_Object Qtrailing_whitespace;
@@ -524,37 +448,6 @@ static int this_line_start_x;
static struct buffer *this_line_buffer;
-/* Nonzero means truncate lines in all windows less wide than the
- frame. */
-
-Lisp_Object Vtruncate_partial_width_windows;
-
-/* A flag to control how to display unibyte 8-bit character. */
-
-int unibyte_display_via_language_environment;
-
-/* Nonzero means we have more than one non-mini-buffer-only frame.
- Not guaranteed to be accurate except while parsing
- frame-title-format. */
-
-int multiple_frames;
-
-Lisp_Object Vglobal_mode_string;
-
-
-/* List of variables (symbols) which hold markers for overlay arrows.
- The symbols on this list are examined during redisplay to determine
- where to display overlay arrows. */
-
-Lisp_Object Voverlay_arrow_variable_list;
-
-/* Marker for where to display an arrow on top of the buffer text. */
-
-Lisp_Object Voverlay_arrow_position;
-
-/* String to display for the arrow. Only used on terminal frames. */
-
-Lisp_Object Voverlay_arrow_string;
/* Values of those variables at last redisplay are stored as
properties on `overlay-arrow-position' symbol. However, if
@@ -568,47 +461,12 @@ Lisp_Object Qlast_arrow_position, Qlast_arrow_string;
Lisp_Object Qoverlay_arrow_string, Qoverlay_arrow_bitmap;
-/* Like mode-line-format, but for the title bar on a visible frame. */
-
-Lisp_Object Vframe_title_format;
-
-/* Like mode-line-format, but for the title bar on an iconified frame. */
-
-Lisp_Object Vicon_title_format;
-
-/* List of functions to call when a window's size changes. These
- functions get one arg, a frame on which one or more windows' sizes
- have changed. */
-
-static Lisp_Object Vwindow_size_change_functions;
-
-Lisp_Object Qmenu_bar_update_hook, Vmenu_bar_update_hook;
+Lisp_Object Qmenu_bar_update_hook;
/* Nonzero if an overlay arrow has been displayed in this window. */
static int overlay_arrow_seen;
-/* Nonzero means highlight the region even in nonselected windows. */
-
-int highlight_nonselected_windows;
-
-/* If cursor motion alone moves point off frame, try scrolling this
- many lines up or down if that will bring it back. */
-
-static EMACS_INT scroll_step;
-
-/* Nonzero means scroll just far enough to bring point back on the
- screen, when appropriate. */
-
-static EMACS_INT scroll_conservatively;
-
-/* Recenter the window whenever point gets within this many lines of
- the top or bottom of the window. This value is translated into a
- pixel value by multiplying it with FRAME_LINE_HEIGHT, which means
- that there is really a fixed pixel height scroll margin. */
-
-EMACS_INT scroll_margin;
-
/* Number of windows showing the buffer of the selected window (or
another buffer with the same base buffer). keyboard.c refers to
this. */
@@ -619,14 +477,6 @@ int buffer_shared;
static Lisp_Object default_invis_vector[3];
-/* Zero means display the mode-line/header-line/menu-bar in the default face
- (this slightly odd definition is for compatibility with previous versions
- of emacs), non-zero means display them using their respective faces.
-
- This variable is deprecated. */
-
-int mode_line_inverse_video;
-
/* Prompt to display in front of the mini-buffer contents. */
Lisp_Object minibuf_prompt;
@@ -672,19 +522,6 @@ int cursor_type_changed;
int line_number_displayed;
-/* Maximum buffer size for which to display line numbers. */
-
-Lisp_Object Vline_number_display_limit;
-
-/* Line width to consider when repositioning for line number display. */
-
-static EMACS_INT line_number_display_limit_width;
-
-/* Number of lines to keep in the message log buffer. t means
- infinite. nil means don't log at all. */
-
-Lisp_Object Vmessage_log_max;
-
/* The name of the *Messages* buffer, a string. */
static Lisp_Object Vmessages_buffer_name;
@@ -715,23 +552,6 @@ int message_buf_print;
/* The symbol `inhibit-menubar-update' and its DEFVAR_BOOL variable. */
Lisp_Object Qinhibit_menubar_update;
-int inhibit_menubar_update;
-
-/* When evaluating expressions from menu bar items (enable conditions,
- for instance), this is the frame they are being processed for. */
-
-Lisp_Object Vmenu_updating_frame;
-
-/* Maximum height for resizing mini-windows. Either a float
- specifying a fraction of the available height, or an integer
- specifying a number of lines. */
-
-Lisp_Object Vmax_mini_window_height;
-
-/* Non-zero means messages should be displayed with truncated
- lines instead of being continued. */
-
-int message_truncate_lines;
Lisp_Object Qmessage_truncate_lines;
/* Set to 1 in clear_message to make redisplay_internal aware
@@ -739,9 +559,6 @@ Lisp_Object Qmessage_truncate_lines;
static int message_cleared_p;
-/* How to blink the default frame cursor off. */
-Lisp_Object Vblink_cursor_alist;
-
/* A scratch glyph row with contents used for generating truncation
glyphs. Also used in direct_output_for_insert. */
@@ -773,11 +590,6 @@ int current_mode_line_height, current_header_line_height;
#if GLYPH_DEBUG
-/* Variables to turn off display optimizations from Lisp. */
-
-int inhibit_try_window_id, inhibit_try_window_reusing;
-int inhibit_try_cursor_movement;
-
/* Non-zero means print traces of redisplay if compiled with
GLYPH_DEBUG != 0. */
@@ -794,40 +606,12 @@ int trace_move;
#define TRACE_MOVE(x) (void) 0
#endif
-/* Non-zero means automatically scroll windows horizontally to make
- point visible. */
-
-int automatic_hscrolling_p;
Lisp_Object Qauto_hscroll_mode;
-/* How close to the margin can point get before the window is scrolled
- horizontally. */
-EMACS_INT hscroll_margin;
-
-/* How much to scroll horizontally when point is inside the above margin. */
-Lisp_Object Vhscroll_step;
-
-/* The variable `resize-mini-windows'. If nil, don't resize
- mini-windows. If t, always resize them to fit the text they
- display. If `grow-only', let mini-windows grow only until they
- become empty. */
-
-Lisp_Object Vresize_mini_windows;
-
/* Buffer being redisplayed -- for redisplay_window_error. */
struct buffer *displayed_buffer;
-/* Space between overline and text. */
-
-EMACS_INT overline_margin;
-
-/* Require underline to be at least this many screen pixels below baseline
- This to avoid underline "merging" with the base of letters at small
- font sizes, particularly when x_use_underline_position_properties is on. */
-
-EMACS_INT underline_minimum_offset;
-
/* Value returned from text property handlers (see below). */
enum prop_handled
@@ -927,11 +711,6 @@ static struct glyph_slice null_glyph_slice = { 0, 0, 0, 0 };
int redisplaying_p;
-/* Non-zero means don't free realized faces. Bound while freeing
- realized faces is dangerous because glyph matrices might still
- reference them. */
-
-int inhibit_free_realized_faces;
Lisp_Object Qinhibit_free_realized_faces;
/* If a string, XTread_socket generates an event to display that string.
@@ -948,9 +727,6 @@ Lisp_Object previous_help_echo_string;
/* Platform-independent portion of hourglass implementation. */
-/* Non-zero means we're allowed to display a hourglass pointer. */
-int display_hourglass_p;
-
/* Non-zero means an hourglass cursor is currently shown. */
int hourglass_shown_p;
@@ -958,15 +734,9 @@ int hourglass_shown_p;
an hourglass cursor on all frames. */
struct atimer *hourglass_atimer;
-/* Number of seconds to wait before displaying an hourglass cursor. */
-Lisp_Object Vhourglass_delay;
-
/* Name of the face used to display glyphless characters. */
Lisp_Object Qglyphless_char;
-/* Char-table to control the display of glyphless characters. */
-Lisp_Object Vglyphless_char_display;
-
/* Symbol for the purpose of Vglyphless_char_display. */
Lisp_Object Qglyphless_char_display;
@@ -1544,11 +1314,10 @@ pos_visible_p (struct window *w, EMACS_INT charpos, int *x, int *y,
}
-/* Return the next character from STR which is MAXLEN bytes long.
- Return in *LEN the length of the character. This is like
- STRING_CHAR_AND_LENGTH but never returns an invalid character. If
- we find one, we return a `?', but with the length of the invalid
- character. */
+/* Return the next character from STR. Return in *LEN the length of
+ the character. This is like STRING_CHAR_AND_LENGTH but never
+ returns an invalid character. If we find one, we return a `?', but
+ with the length of the invalid character. */
static INLINE int
string_char_and_length (const unsigned char *str, int *len)
@@ -1577,15 +1346,13 @@ string_pos_nchars_ahead (struct text_pos pos, Lisp_Object string, EMACS_INT ncha
if (STRING_MULTIBYTE (string))
{
- EMACS_INT rest = SBYTES (string) - BYTEPOS (pos);
const unsigned char *p = SDATA (string) + BYTEPOS (pos);
int len;
while (nchars--)
{
string_char_and_length (p, &len);
- p += len, rest -= len;
- xassert (rest >= 0);
+ p += len;
CHARPOS (pos) += 1;
BYTEPOS (pos) += len;
}
@@ -1625,15 +1392,13 @@ c_string_pos (EMACS_INT charpos, const unsigned char *s, int multibyte_p)
if (multibyte_p)
{
- EMACS_INT rest = strlen (s);
int len;
SET_TEXT_POS (pos, 0, 0);
while (charpos--)
{
string_char_and_length (s, &len);
- s += len, rest -= len;
- xassert (rest >= 0);
+ s += len;
CHARPOS (pos) += 1;
BYTEPOS (pos) += len;
}
@@ -2406,7 +2171,7 @@ remember_mouse_glyph (struct frame *f, int gx, int gy, NativeRectangle *rect)
static Lisp_Object
safe_eval_handler (Lisp_Object arg)
{
- add_to_log ("Error during redisplay: %s", arg, Qnil);
+ add_to_log ("Error during redisplay: %S", arg, Qnil);
return Qnil;
}
@@ -3013,7 +2778,7 @@ init_from_display_pos (struct it *it, struct window *w, struct display_pos *pos)
to 16 in 22.1 to make this a lesser problem. */
for (i = 0; i < it->n_overlay_strings && i < OVERLAY_STRING_CHUNK_SIZE; ++i)
{
- const char *s = SDATA (it->overlay_strings[i]);
+ const char *s = SSDATA (it->overlay_strings[i]);
const char *e = s + SBYTES (it->overlay_strings[i]);
while (s < e && *s != '\n')
@@ -3406,6 +3171,8 @@ handle_fontified_prop (struct it *it)
val = Vfontification_functions;
specbind (Qfontification_functions, Qnil);
+ xassert (it->end_charpos == ZV);
+
if (!CONSP (val) || EQ (XCAR (val), Qlambda))
safe_call1 (val, pos);
else
@@ -3445,6 +3212,13 @@ handle_fontified_prop (struct it *it)
unbind_to (count, Qnil);
+ /* The fontification code may have added/removed text.
+ It could do even a lot worse, but let's at least protect against
+ the most obvious case where only the text past `pos' gets changed',
+ as is/was done in grep.el where some escapes sequences are turned
+ into face properties (bug#7876). */
+ it->end_charpos = ZV;
+
/* Return HANDLED_RECOMPUTE_PROPS only if function fontified
something. This avoids an endless loop if they failed to
fontify the text for which reason ever. */
@@ -4823,6 +4597,7 @@ next_overlay_string (struct it *it)
&& it->stop_charpos <= it->end_charpos));
it->current.overlay_string_index = -1;
it->n_overlay_strings = 0;
+ it->overlay_strings_charpos = -1;
/* If we're at the end of the buffer, record that we have
processed the overlay strings there already, so that
@@ -4835,11 +4610,13 @@ next_overlay_string (struct it *it)
/* There are more overlay strings to process. If
IT->current.overlay_string_index has advanced to a position
where we must load IT->overlay_strings with more strings, do
- it. */
+ it. We must load at the IT->overlay_strings_charpos where
+ IT->n_overlay_strings was originally computed; when invisible
+ text is present, this might not be IT_CHARPOS (Bug#7016). */
int i = it->current.overlay_string_index % OVERLAY_STRING_CHUNK_SIZE;
if (it->current.overlay_string_index && i == 0)
- load_overlay_strings (it, 0);
+ load_overlay_strings (it, it->overlay_strings_charpos);
/* Initialize IT to deliver display elements from the overlay
string. */
@@ -5051,8 +4828,9 @@ load_overlay_strings (struct it *it, EMACS_INT charpos)
if (n > 1)
qsort (entries, n, sizeof *entries, compare_overlay_entries);
- /* Record the total number of strings to process. */
+ /* Record number of overlay strings, and where we computed it. */
it->n_overlay_strings = n;
+ it->overlay_strings_charpos = charpos;
/* IT->current.overlay_string_index is the number of overlay strings
that have already been consumed by IT. Copy some of the
@@ -10492,7 +10270,7 @@ display_tool_bar_line (struct it *it, int height)
row->used[TEXT_AREA] = n_glyphs_before;
*it = it_before;
/* If this is the only glyph on this line, it will never fit on the
- toolbar, so skip it. But ensure there is at least one glyph,
+ tool-bar, so skip it. But ensure there is at least one glyph,
so we don't accidentally disable the tool-bar. */
if (n_glyphs_before == 0
&& (it->vpos > 0 || IT_STRING_CHARPOS (*it) < it->end_charpos-1))
@@ -11231,7 +11009,7 @@ EMACS_INT debug_delta, debug_delta_bytes;
/* Values of window_end_pos and window_end_vpos at the end of
try_window_id. */
-EMACS_INT debug_end_pos, debug_end_vpos;
+EMACS_INT debug_end_vpos;
/* Append a string to W->desired_matrix->method. FMT is a printf
format string. A1...A9 are a supplement for a variable-length
@@ -11264,7 +11042,7 @@ debug_method_add (w, fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9)
w,
((BUFFERP (w->buffer)
&& STRINGP (XBUFFER (w->buffer)->name))
- ? (char *) SDATA (XBUFFER (w->buffer)->name)
+ ? SSDATA (XBUFFER (w->buffer)->name)
: "no buffer"),
buffer);
}
@@ -13169,7 +12947,7 @@ cursor_row_fully_visible_p (struct window *w, int force_p, int current_matrix_p)
/* Try scrolling PT into view in window WINDOW. JUST_THIS_ONE_P
non-zero means only WINDOW is redisplayed in redisplay_internal.
- TEMP_SCROLL_STEP has the same meaning as scroll_step, and is used
+ TEMP_SCROLL_STEP has the same meaning as emacs_scroll_step, and is used
in redisplay_window to bring a partially visible line into view in
the case that only the cursor has moved.
@@ -13194,7 +12972,7 @@ enum
static int
try_scrolling (Lisp_Object window, int just_this_one_p,
- EMACS_INT scroll_conservatively, EMACS_INT scroll_step,
+ EMACS_INT arg_scroll_conservatively, EMACS_INT scroll_step,
int temp_scroll_step, int last_line_misfit)
{
struct window *w = XWINDOW (window);
@@ -13221,20 +12999,20 @@ try_scrolling (Lisp_Object window, int just_this_one_p,
else
this_scroll_margin = 0;
- /* Force scroll_conservatively to have a reasonable value, to avoid
+ /* Force arg_scroll_conservatively to have a reasonable value, to avoid
overflow while computing how much to scroll. Note that the user
can supply scroll-conservatively equal to `most-positive-fixnum',
which can be larger than INT_MAX. */
- if (scroll_conservatively > scroll_limit)
+ if (arg_scroll_conservatively > scroll_limit)
{
- scroll_conservatively = scroll_limit;
+ arg_scroll_conservatively = scroll_limit;
scroll_max = INT_MAX;
}
- else if (scroll_step || scroll_conservatively || temp_scroll_step)
+ else if (scroll_step || arg_scroll_conservatively || temp_scroll_step)
/* Compute how much we should try to scroll maximally to bring
point into view. */
scroll_max = (max (scroll_step,
- max (scroll_conservatively, temp_scroll_step))
+ max (arg_scroll_conservatively, temp_scroll_step))
* FRAME_LINE_HEIGHT (f));
else if (NUMBERP (current_buffer->scroll_down_aggressively)
|| NUMBERP (current_buffer->scroll_up_aggressively))
@@ -13265,7 +13043,7 @@ try_scrolling (Lisp_Object window, int just_this_one_p,
/* Compute how many pixels below window bottom to stop searching
for PT. This avoids costly search for PT that is far away if
the user limited scrolling by a small number of lines, but
- always finds PT if scroll_conservatively is set to a large
+ always finds PT if arg_scroll_conservatively is set to a large
number, such as most-positive-fixnum. */
int slack = max (scroll_max, 10 * FRAME_LINE_HEIGHT (f));
int y_to_move =
@@ -13294,10 +13072,10 @@ try_scrolling (Lisp_Object window, int just_this_one_p,
window start down. If scrolling conservatively, move it just
enough down to make point visible. If scroll_step is set,
move it down by scroll_step. */
- if (scroll_conservatively)
+ if (arg_scroll_conservatively)
amount_to_scroll
= min (max (dy, FRAME_LINE_HEIGHT (f)),
- FRAME_LINE_HEIGHT (f) * scroll_conservatively);
+ FRAME_LINE_HEIGHT (f) * arg_scroll_conservatively);
else if (scroll_step || temp_scroll_step)
amount_to_scroll = scroll_max;
else
@@ -13378,7 +13156,7 @@ try_scrolling (Lisp_Object window, int just_this_one_p,
/* Compute new window start. */
start_display (&it, w, startp);
- if (scroll_conservatively)
+ if (arg_scroll_conservatively)
amount_to_scroll
= max (dy, FRAME_LINE_HEIGHT (f) * max (scroll_step, temp_scroll_step));
else if (scroll_step || temp_scroll_step)
@@ -13426,7 +13204,11 @@ try_scrolling (Lisp_Object window, int just_this_one_p,
/* If cursor ends up on a partially visible line,
treat that as being off the bottom of the screen. */
- if (! cursor_row_fully_visible_p (w, extra_scroll_margin_lines <= 1, 0))
+ if (! cursor_row_fully_visible_p (w, extra_scroll_margin_lines <= 1, 0)
+ /* It's possible that the cursor is on the first line of the
+ buffer, which is partially obscured due to a vscroll
+ (Bug#7537). In that case, avoid looping forever . */
+ && extra_scroll_margin_lines < w->desired_matrix->nrows - 1)
{
clear_glyph_matrix (w->desired_matrix);
++extra_scroll_margin_lines;
@@ -14358,7 +14140,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
/* Try to scroll by specified few lines. */
if ((scroll_conservatively
- || scroll_step
+ || emacs_scroll_step
|| temp_scroll_step
|| NUMBERP (current_buffer->scroll_up_aggressively)
|| NUMBERP (current_buffer->scroll_down_aggressively))
@@ -14370,7 +14152,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
successful, 0 if not successful. */
int rc = try_scrolling (window, just_this_one_p,
scroll_conservatively,
- scroll_step,
+ emacs_scroll_step,
temp_scroll_step, last_line_misfit);
switch (rc)
{
@@ -19065,23 +18847,27 @@ DEFUN ("format-mode-line", Fformat_mode_line, Sformat_mode_line,
First arg FORMAT specifies the mode line format (see `mode-line-format'
for details) to use.
-Optional second arg FACE specifies the face property to put
-on all characters for which no face is specified.
-The value t means whatever face the window's mode line currently uses
-\(either `mode-line' or `mode-line-inactive', depending).
-A value of nil means the default is no face property.
-If FACE is an integer, the value string has no text properties.
+By default, the format is evaluated for the currently selected window.
+
+Optional second arg FACE specifies the face property to put on all
+characters for which no face is specified. The value nil means the
+default face. The value t means whatever face the window's mode line
+currently uses (either `mode-line' or `mode-line-inactive',
+depending on whether the window is the selected window or not).
+An integer value means the value string has no text
+properties.
Optional third and fourth args WINDOW and BUFFER specify the window
and buffer to use as the context for the formatting (defaults
-are the selected window and the window's buffer). */)
- (Lisp_Object format, Lisp_Object face, Lisp_Object window, Lisp_Object buffer)
+are the selected window and the WINDOW's buffer). */)
+ (Lisp_Object format, Lisp_Object face,
+ Lisp_Object window, Lisp_Object buffer)
{
struct it it;
int len;
struct window *w;
struct buffer *old_buffer = NULL;
- int face_id = -1;
+ int face_id;
int no_props = INTEGERP (face);
int count = SPECPDL_INDEX ();
Lisp_Object str;
@@ -19104,15 +18890,14 @@ are the selected window and the window's buffer). */)
if (no_props)
face = Qnil;
- if (!NILP (face))
- {
- if (EQ (face, Qt))
- face = (EQ (window, selected_window) ? Qmode_line : Qmode_line_inactive);
- face_id = lookup_named_face (XFRAME (WINDOW_FRAME (w)), face, 0);
- }
-
- if (face_id < 0)
- face_id = DEFAULT_FACE_ID;
+ face_id = (NILP (face) || EQ (face, Qdefault)) ? DEFAULT_FACE_ID
+ : EQ (face, Qt) ? (EQ (window, selected_window)
+ ? MODE_LINE_FACE_ID : MODE_LINE_INACTIVE_FACE_ID)
+ : EQ (face, Qmode_line) ? MODE_LINE_FACE_ID
+ : EQ (face, Qmode_line_inactive) ? MODE_LINE_INACTIVE_FACE_ID
+ : EQ (face, Qheader_line) ? HEADER_LINE_FACE_ID
+ : EQ (face, Qtool_bar) ? TOOL_BAR_FACE_ID
+ : DEFAULT_FACE_ID;
if (XBUFFER (buffer) != current_buffer)
old_buffer = current_buffer;
@@ -19520,9 +19305,9 @@ decode_mode_spec (struct window *w, register int c, int field_width,
case 'F':
/* %F displays the frame name. */
if (!NILP (f->title))
- return (char *) SDATA (f->title);
+ return SSDATA (f->title);
if (f->explicit_name || ! FRAME_WINDOW_P (f))
- return (char *) SDATA (f->name);
+ return SSDATA (f->name);
return "Emacs";
case 'f':
@@ -19805,7 +19590,7 @@ decode_mode_spec (struct window *w, register int c, int field_width,
if (STRINGP (obj))
{
*string = obj;
- return (char *) SDATA (obj);
+ return SSDATA (obj);
}
else
return "";
@@ -20292,7 +20077,7 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
{
if (SCHARS (SYMBOL_NAME (prop)) == 2)
{
- char *unit = SDATA (SYMBOL_NAME (prop));
+ char *unit = SSDATA (SYMBOL_NAME (prop));
if (unit[0] == 'i' && unit[1] == 'n')
pixels = 1.0;
@@ -22452,7 +22237,7 @@ produce_glyphless_glyph (struct it *it, int for_no_font, Lisp_Object acronym)
{
if (! STRINGP (acronym) && CHAR_TABLE_P (Vglyphless_char_display))
acronym = CHAR_TABLE_REF (Vglyphless_char_display, it->c);
- str = STRINGP (acronym) ? (char *) SDATA (acronym) : "";
+ str = STRINGP (acronym) ? SSDATA (acronym) : "";
}
else
{
@@ -22488,7 +22273,7 @@ produce_glyphless_glyph (struct it *it, int for_no_font, Lisp_Object acronym)
else
upper_xoff = (width - metrics_upper.width) / 2;
}
-
+
/* +5 is for horizontal bars of a box plus 1-pixel spaces at
top, bottom, and between upper and lower strings. */
height = (metrics_upper.ascent + metrics_upper.descent
@@ -26575,8 +26360,6 @@ syms_of_xdisp (void)
staticpro (&Qarrow);
Qtext = intern_c_string ("text");
staticpro (&Qtext);
- Qrisky_local_variable = intern_c_string ("risky-local-variable");
- staticpro (&Qrisky_local_variable);
Qinhibit_free_realized_faces = intern_c_string ("inhibit-free-realized-faces");
staticpro (&Qinhibit_free_realized_faces);
@@ -26633,19 +26416,19 @@ syms_of_xdisp (void)
staticpro (&Qleft_to_right);
#ifdef HAVE_WINDOW_SYSTEM
- DEFVAR_BOOL ("x-stretch-cursor", &x_stretch_cursor_p,
+ DEFVAR_BOOL ("x-stretch-cursor", x_stretch_cursor_p,
doc: /* *Non-nil means draw block cursor as wide as the glyph under it.
For example, if a block cursor is over a tab, it will be drawn as
wide as that tab on the display. */);
x_stretch_cursor_p = 0;
#endif
- DEFVAR_LISP ("show-trailing-whitespace", &Vshow_trailing_whitespace,
+ DEFVAR_LISP ("show-trailing-whitespace", Vshow_trailing_whitespace,
doc: /* *Non-nil means highlight trailing whitespace.
The face used for trailing whitespace is `trailing-whitespace'. */);
Vshow_trailing_whitespace = Qnil;
- DEFVAR_LISP ("nobreak-char-display", &Vnobreak_char_display,
+ DEFVAR_LISP ("nobreak-char-display", Vnobreak_char_display,
doc: /* *Control highlighting of nobreak space and soft hyphen.
A value of t means highlight the character itself (for nobreak space,
use face `nobreak-space').
@@ -26654,47 +26437,47 @@ Other values mean display the escape glyph followed by an ordinary
space or ordinary hyphen. */);
Vnobreak_char_display = Qt;
- DEFVAR_LISP ("void-text-area-pointer", &Vvoid_text_area_pointer,
+ DEFVAR_LISP ("void-text-area-pointer", Vvoid_text_area_pointer,
doc: /* *The pointer shape to show in void text areas.
A value of nil means to show the text pointer. Other options are `arrow',
`text', `hand', `vdrag', `hdrag', `modeline', and `hourglass'. */);
Vvoid_text_area_pointer = Qarrow;
- DEFVAR_LISP ("inhibit-redisplay", &Vinhibit_redisplay,
+ DEFVAR_LISP ("inhibit-redisplay", Vinhibit_redisplay,
doc: /* Non-nil means don't actually do any redisplay.
This is used for internal purposes. */);
Vinhibit_redisplay = Qnil;
- DEFVAR_LISP ("global-mode-string", &Vglobal_mode_string,
+ DEFVAR_LISP ("global-mode-string", Vglobal_mode_string,
doc: /* String (or mode line construct) included (normally) in `mode-line-format'. */);
Vglobal_mode_string = Qnil;
- DEFVAR_LISP ("overlay-arrow-position", &Voverlay_arrow_position,
+ DEFVAR_LISP ("overlay-arrow-position", Voverlay_arrow_position,
doc: /* Marker for where to display an arrow on top of the buffer text.
This must be the beginning of a line in order to work.
See also `overlay-arrow-string'. */);
Voverlay_arrow_position = Qnil;
- DEFVAR_LISP ("overlay-arrow-string", &Voverlay_arrow_string,
+ DEFVAR_LISP ("overlay-arrow-string", Voverlay_arrow_string,
doc: /* String to display as an arrow in non-window frames.
See also `overlay-arrow-position'. */);
Voverlay_arrow_string = make_pure_c_string ("=>");
- DEFVAR_LISP ("overlay-arrow-variable-list", &Voverlay_arrow_variable_list,
+ DEFVAR_LISP ("overlay-arrow-variable-list", Voverlay_arrow_variable_list,
doc: /* List of variables (symbols) which hold markers for overlay arrows.
The symbols on this list are examined during redisplay to determine
where to display overlay arrows. */);
Voverlay_arrow_variable_list
= Fcons (intern_c_string ("overlay-arrow-position"), Qnil);
- DEFVAR_INT ("scroll-step", &scroll_step,
+ DEFVAR_INT ("scroll-step", emacs_scroll_step,
doc: /* *The number of lines to try scrolling a window by when point moves out.
If that fails to bring point back on frame, point is centered instead.
If this is zero, point is always centered after it moves off frame.
If you want scrolling to always be a line at a time, you should set
`scroll-conservatively' to a large value rather than set this to 1. */);
- DEFVAR_INT ("scroll-conservatively", &scroll_conservatively,
+ DEFVAR_INT ("scroll-conservatively", scroll_conservatively,
doc: /* *Scroll up to this many lines, to bring point back on screen.
If point moves off-screen, redisplay will scroll by up to
`scroll-conservatively' lines in order to bring point just barely
@@ -26704,23 +26487,23 @@ recenters point as usual.
A value of zero means always recenter point if it moves off screen. */);
scroll_conservatively = 0;
- DEFVAR_INT ("scroll-margin", &scroll_margin,
+ DEFVAR_INT ("scroll-margin", scroll_margin,
doc: /* *Number of lines of margin at the top and bottom of a window.
Recenter the window whenever point gets within this many lines
of the top or bottom of the window. */);
scroll_margin = 0;
- DEFVAR_LISP ("display-pixels-per-inch", &Vdisplay_pixels_per_inch,
+ DEFVAR_LISP ("display-pixels-per-inch", Vdisplay_pixels_per_inch,
doc: /* Pixels per inch value for non-window system displays.
Value is a number or a cons (WIDTH-DPI . HEIGHT-DPI). */);
Vdisplay_pixels_per_inch = make_float (72.0);
#if GLYPH_DEBUG
- DEFVAR_INT ("debug-end-pos", &debug_end_pos, doc: /* Don't ask. */);
+ DEFVAR_INT ("debug-end-pos", debug_end_pos, doc: /* Don't ask. */);
#endif
DEFVAR_LISP ("truncate-partial-width-windows",
- &Vtruncate_partial_width_windows,
+ Vtruncate_partial_width_windows,
doc: /* Non-nil means truncate lines in windows narrower than the frame.
For an integer value, truncate lines in each window narrower than the
full frame width, provided the window width is less than that integer;
@@ -26734,36 +26517,36 @@ A value of nil means to respect the value of `truncate-lines'.
If `word-wrap' is enabled, you might want to reduce this. */);
Vtruncate_partial_width_windows = make_number (50);
- DEFVAR_BOOL ("mode-line-inverse-video", &mode_line_inverse_video,
+ DEFVAR_BOOL ("mode-line-inverse-video", mode_line_inverse_video,
doc: /* When nil, display the mode-line/header-line/menu-bar in the default face.
Any other value means to use the appropriate face, `mode-line',
`header-line', or `menu' respectively. */);
mode_line_inverse_video = 1;
- DEFVAR_LISP ("line-number-display-limit", &Vline_number_display_limit,
+ DEFVAR_LISP ("line-number-display-limit", Vline_number_display_limit,
doc: /* *Maximum buffer size for which line number should be displayed.
If the buffer is bigger than this, the line number does not appear
in the mode line. A value of nil means no limit. */);
Vline_number_display_limit = Qnil;
DEFVAR_INT ("line-number-display-limit-width",
- &line_number_display_limit_width,
+ line_number_display_limit_width,
doc: /* *Maximum line width (in characters) for line number display.
If the average length of the lines near point is bigger than this, then the
line number may be omitted from the mode line. */);
line_number_display_limit_width = 200;
- DEFVAR_BOOL ("highlight-nonselected-windows", &highlight_nonselected_windows,
+ DEFVAR_BOOL ("highlight-nonselected-windows", highlight_nonselected_windows,
doc: /* *Non-nil means highlight region even in nonselected windows. */);
highlight_nonselected_windows = 0;
- DEFVAR_BOOL ("multiple-frames", &multiple_frames,
+ DEFVAR_BOOL ("multiple-frames", multiple_frames,
doc: /* Non-nil if more than one frame is visible on this display.
Minibuffer-only frames don't count, but iconified frames do.
This variable is not guaranteed to be accurate except while processing
`frame-title-format' and `icon-title-format'. */);
- DEFVAR_LISP ("frame-title-format", &Vframe_title_format,
+ DEFVAR_LISP ("frame-title-format", Vframe_title_format,
doc: /* Template for displaying the title bar of visible frames.
\(Assuming the window manager supports this feature.)
@@ -26771,7 +26554,7 @@ This variable has the same structure as `mode-line-format', except that
the %c and %l constructs are ignored. It is used only on frames for
which no explicit name has been set \(see `modify-frame-parameters'). */);
- DEFVAR_LISP ("icon-title-format", &Vicon_title_format,
+ DEFVAR_LISP ("icon-title-format", Vicon_title_format,
doc: /* Template for displaying the title bar of an iconified frame.
\(Assuming the window manager supports this feature.)
This variable has the same structure as `mode-line-format' (which see),
@@ -26788,13 +26571,13 @@ and is used only on frames for which no explicit name has been set
Qnil)))),
Qnil)));
- DEFVAR_LISP ("message-log-max", &Vmessage_log_max,
+ DEFVAR_LISP ("message-log-max", Vmessage_log_max,
doc: /* Maximum number of lines to keep in the message log buffer.
If nil, disable message logging. If t, log messages but don't truncate
the buffer when it becomes large. */);
Vmessage_log_max = make_number (100);
- DEFVAR_LISP ("window-size-change-functions", &Vwindow_size_change_functions,
+ DEFVAR_LISP ("window-size-change-functions", Vwindow_size_change_functions,
doc: /* Functions called before redisplay, if window sizes have changed.
The value should be a list of functions that take one argument.
Just before redisplay, for each frame, if any of its windows have changed
@@ -26802,7 +26585,7 @@ size since the last redisplay, or have been split or deleted,
all the functions in the list are called, with the frame as argument. */);
Vwindow_size_change_functions = Qnil;
- DEFVAR_LISP ("window-scroll-functions", &Vwindow_scroll_functions,
+ DEFVAR_LISP ("window-scroll-functions", Vwindow_scroll_functions,
doc: /* List of functions to call before redisplaying a window with scrolling.
Each function is called with two arguments, the window and its new
display-start position. Note that these functions are also called by
@@ -26811,17 +26594,17 @@ valid when these functions are called. */);
Vwindow_scroll_functions = Qnil;
DEFVAR_LISP ("window-text-change-functions",
- &Vwindow_text_change_functions,
+ Vwindow_text_change_functions,
doc: /* Functions to call in redisplay when text in the window might change. */);
Vwindow_text_change_functions = Qnil;
- DEFVAR_LISP ("redisplay-end-trigger-functions", &Vredisplay_end_trigger_functions,
+ DEFVAR_LISP ("redisplay-end-trigger-functions", Vredisplay_end_trigger_functions,
doc: /* Functions called when redisplay of a window reaches the end trigger.
Each function is called with two arguments, the window and the end trigger value.
See `set-window-redisplay-end-trigger'. */);
Vredisplay_end_trigger_functions = Qnil;
- DEFVAR_LISP ("mouse-autoselect-window", &Vmouse_autoselect_window,
+ DEFVAR_LISP ("mouse-autoselect-window", Vmouse_autoselect_window,
doc: /* *Non-nil means autoselect window with mouse pointer.
If nil, do not autoselect windows.
A positive number means delay autoselection by that many seconds: a
@@ -26841,7 +26624,7 @@ When customizing this variable make sure that the actual value of
`focus-follows-mouse' matches the behavior of your window manager. */);
Vmouse_autoselect_window = Qnil;
- DEFVAR_LISP ("auto-resize-tool-bars", &Vauto_resize_tool_bars,
+ DEFVAR_LISP ("auto-resize-tool-bars", Vauto_resize_tool_bars,
doc: /* *Non-nil means automatically resize tool-bars.
This dynamically changes the tool-bar's height to the minimum height
that is needed to make all tool-bar items visible.
@@ -26849,15 +26632,15 @@ If value is `grow-only', the tool-bar's height is only increased
automatically; to decrease the tool-bar height, use \\[recenter]. */);
Vauto_resize_tool_bars = Qt;
- DEFVAR_BOOL ("auto-raise-tool-bar-buttons", &auto_raise_tool_bar_buttons_p,
+ DEFVAR_BOOL ("auto-raise-tool-bar-buttons", auto_raise_tool_bar_buttons_p,
doc: /* *Non-nil means raise tool-bar buttons when the mouse moves over them. */);
auto_raise_tool_bar_buttons_p = 1;
- DEFVAR_BOOL ("make-cursor-line-fully-visible", &make_cursor_line_fully_visible_p,
+ DEFVAR_BOOL ("make-cursor-line-fully-visible", make_cursor_line_fully_visible_p,
doc: /* *Non-nil means to scroll (recenter) cursor line if it is not fully visible. */);
make_cursor_line_fully_visible_p = 1;
- DEFVAR_LISP ("tool-bar-border", &Vtool_bar_border,
+ DEFVAR_LISP ("tool-bar-border", Vtool_bar_border,
doc: /* *Border below tool-bar in pixels.
If an integer, use it as the height of the border.
If it is one of `internal-border-width' or `border-width', use the
@@ -26865,7 +26648,7 @@ value of the corresponding frame parameter.
Otherwise, no border is added below the tool-bar. */);
Vtool_bar_border = Qinternal_border_width;
- DEFVAR_LISP ("tool-bar-button-margin", &Vtool_bar_button_margin,
+ DEFVAR_LISP ("tool-bar-button-margin", Vtool_bar_button_margin,
doc: /* *Margin around tool-bar buttons in pixels.
If an integer, use that for both horizontal and vertical margins.
Otherwise, value should be a pair of integers `(HORZ . VERT)' with
@@ -26873,12 +26656,12 @@ HORZ specifying the horizontal margin, and VERT specifying the
vertical margin. */);
Vtool_bar_button_margin = make_number (DEFAULT_TOOL_BAR_BUTTON_MARGIN);
- DEFVAR_INT ("tool-bar-button-relief", &tool_bar_button_relief,
+ DEFVAR_INT ("tool-bar-button-relief", tool_bar_button_relief,
doc: /* *Relief thickness of tool-bar buttons. */);
tool_bar_button_relief = DEFAULT_TOOL_BAR_BUTTON_RELIEF;
- DEFVAR_LISP ("tool-bar-style", &Vtool_bar_style,
- doc: /* *Tool bar style to use.
+ DEFVAR_LISP ("tool-bar-style", Vtool_bar_style,
+ doc: /* Tool bar style to use.
It can be one of
image - show images only
text - show text only
@@ -26888,13 +26671,13 @@ It can be one of
any other - use system default or image if no system default. */);
Vtool_bar_style = Qnil;
- DEFVAR_INT ("tool-bar-max-label-size", &tool_bar_max_label_size,
+ DEFVAR_INT ("tool-bar-max-label-size", tool_bar_max_label_size,
doc: /* *Maximum number of characters a label can have to be shown.
The tool bar style must also show labels for this to have any effect, see
`tool-bar-style'. */);
tool_bar_max_label_size = DEFAULT_TOOL_BAR_LABEL_SIZE;
- DEFVAR_LISP ("fontification-functions", &Vfontification_functions,
+ DEFVAR_LISP ("fontification-functions", Vfontification_functions,
doc: /* List of functions to call to fontify regions of text.
Each function is called with one argument POS. Functions must
fontify a region starting at POS in the current buffer, and give
@@ -26903,7 +26686,7 @@ fontified regions the property `fontified'. */);
Fmake_variable_buffer_local (Qfontification_functions);
DEFVAR_BOOL ("unibyte-display-via-language-environment",
- &unibyte_display_via_language_environment,
+ unibyte_display_via_language_environment,
doc: /* *Non-nil means display unibyte text according to language environment.
Specifically, this means that raw bytes in the range 160-255 decimal
are displayed by converting them to the equivalent multibyte characters
@@ -26914,13 +26697,13 @@ Note that this variable affects only how these bytes are displayed,
but does not change the fact they are interpreted as raw bytes. */);
unibyte_display_via_language_environment = 0;
- DEFVAR_LISP ("max-mini-window-height", &Vmax_mini_window_height,
+ DEFVAR_LISP ("max-mini-window-height", Vmax_mini_window_height,
doc: /* *Maximum height for resizing mini-windows.
If a float, it specifies a fraction of the mini-window frame's height.
If an integer, it specifies a number of lines. */);
Vmax_mini_window_height = make_float (0.25);
- DEFVAR_LISP ("resize-mini-windows", &Vresize_mini_windows,
+ DEFVAR_LISP ("resize-mini-windows", Vresize_mini_windows,
doc: /* *How to resize mini-windows.
A value of nil means don't automatically resize mini-windows.
A value of t means resize them to fit the text displayed in them.
@@ -26929,7 +26712,7 @@ only, until their display becomes empty, at which point the windows
go back to their normal size. */);
Vresize_mini_windows = Qgrow_only;
- DEFVAR_LISP ("blink-cursor-alist", &Vblink_cursor_alist,
+ DEFVAR_LISP ("blink-cursor-alist", Vblink_cursor_alist,
doc: /* Alist specifying how to blink the cursor off.
Each element has the form (ON-STATE . OFF-STATE). Whenever the
`cursor-type' frame-parameter or variable equals ON-STATE,
@@ -26941,7 +26724,7 @@ If a frame's ON-STATE has no entry in this list,
the frame's other specifications determine how to blink the cursor off. */);
Vblink_cursor_alist = Qnil;
- DEFVAR_BOOL ("auto-hscroll-mode", &automatic_hscrolling_p,
+ DEFVAR_BOOL ("auto-hscroll-mode", automatic_hscrolling_p,
doc: /* Allow or disallow automatic horizontal scrolling of windows.
If non-nil, windows are automatically scrolled horizontally to make
point visible. */);
@@ -26949,12 +26732,12 @@ point visible. */);
Qauto_hscroll_mode = intern_c_string ("auto-hscroll-mode");
staticpro (&Qauto_hscroll_mode);
- DEFVAR_INT ("hscroll-margin", &hscroll_margin,
+ DEFVAR_INT ("hscroll-margin", hscroll_margin,
doc: /* *How many columns away from the window edge point is allowed to get
before automatic hscrolling will horizontally scroll the window. */);
hscroll_margin = 5;
- DEFVAR_LISP ("hscroll-step", &Vhscroll_step,
+ DEFVAR_LISP ("hscroll-step", Vhscroll_step,
doc: /* *How many columns to scroll the window when point gets too close to the edge.
When point is less than `hscroll-margin' columns from the window
edge, automatic hscrolling will scroll the window by the amount of columns
@@ -26972,28 +26755,28 @@ Note that the lower bound for automatic hscrolling specified by `scroll-left'
and `scroll-right' overrides this variable's effect. */);
Vhscroll_step = make_number (0);
- DEFVAR_BOOL ("message-truncate-lines", &message_truncate_lines,
+ DEFVAR_BOOL ("message-truncate-lines", message_truncate_lines,
doc: /* If non-nil, messages are truncated instead of resizing the echo area.
Bind this around calls to `message' to let it take effect. */);
message_truncate_lines = 0;
- DEFVAR_LISP ("menu-bar-update-hook", &Vmenu_bar_update_hook,
+ DEFVAR_LISP ("menu-bar-update-hook", Vmenu_bar_update_hook,
doc: /* Normal hook run to update the menu bar definitions.
Redisplay runs this hook before it redisplays the menu bar.
This is used to update submenus such as Buffers,
whose contents depend on various data. */);
Vmenu_bar_update_hook = Qnil;
- DEFVAR_LISP ("menu-updating-frame", &Vmenu_updating_frame,
+ DEFVAR_LISP ("menu-updating-frame", Vmenu_updating_frame,
doc: /* Frame for which we are updating a menu.
The enable predicate for a menu binding should check this variable. */);
Vmenu_updating_frame = Qnil;
- DEFVAR_BOOL ("inhibit-menubar-update", &inhibit_menubar_update,
+ DEFVAR_BOOL ("inhibit-menubar-update", inhibit_menubar_update,
doc: /* Non-nil means don't update menu bars. Internal use only. */);
inhibit_menubar_update = 0;
- DEFVAR_LISP ("wrap-prefix", &Vwrap_prefix,
+ DEFVAR_LISP ("wrap-prefix", Vwrap_prefix,
doc: /* Prefix prepended to all continuation lines at display time.
The value may be a string, an image, or a stretch-glyph; it is
interpreted in the same way as the value of a `display' text property.
@@ -27007,7 +26790,7 @@ To add a prefix to non-continuation lines, use `line-prefix'. */);
Qwrap_prefix = intern_c_string ("wrap-prefix");
Fmake_variable_buffer_local (Qwrap_prefix);
- DEFVAR_LISP ("line-prefix", &Vline_prefix,
+ DEFVAR_LISP ("line-prefix", Vline_prefix,
doc: /* Prefix prepended to all non-continuation lines at display time.
The value may be a string, an image, or a stretch-glyph; it is
interpreted in the same way as the value of a `display' text property.
@@ -27021,36 +26804,36 @@ To add a prefix to continuation lines, use `wrap-prefix'. */);
Qline_prefix = intern_c_string ("line-prefix");
Fmake_variable_buffer_local (Qline_prefix);
- DEFVAR_BOOL ("inhibit-eval-during-redisplay", &inhibit_eval_during_redisplay,
+ DEFVAR_BOOL ("inhibit-eval-during-redisplay", inhibit_eval_during_redisplay,
doc: /* Non-nil means don't eval Lisp during redisplay. */);
inhibit_eval_during_redisplay = 0;
- DEFVAR_BOOL ("inhibit-free-realized-faces", &inhibit_free_realized_faces,
+ DEFVAR_BOOL ("inhibit-free-realized-faces", inhibit_free_realized_faces,
doc: /* Non-nil means don't free realized faces. Internal use only. */);
inhibit_free_realized_faces = 0;
#if GLYPH_DEBUG
- DEFVAR_BOOL ("inhibit-try-window-id", &inhibit_try_window_id,
+ DEFVAR_BOOL ("inhibit-try-window-id", inhibit_try_window_id,
doc: /* Inhibit try_window_id display optimization. */);
inhibit_try_window_id = 0;
- DEFVAR_BOOL ("inhibit-try-window-reusing", &inhibit_try_window_reusing,
+ DEFVAR_BOOL ("inhibit-try-window-reusing", inhibit_try_window_reusing,
doc: /* Inhibit try_window_reusing display optimization. */);
inhibit_try_window_reusing = 0;
- DEFVAR_BOOL ("inhibit-try-cursor-movement", &inhibit_try_cursor_movement,
+ DEFVAR_BOOL ("inhibit-try-cursor-movement", inhibit_try_cursor_movement,
doc: /* Inhibit try_cursor_movement display optimization. */);
inhibit_try_cursor_movement = 0;
#endif /* GLYPH_DEBUG */
- DEFVAR_INT ("overline-margin", &overline_margin,
+ DEFVAR_INT ("overline-margin", overline_margin,
doc: /* *Space between overline and text, in pixels.
The default value is 2: the height of the overline (1 pixel) plus 1 pixel
margin to the caracter height. */);
overline_margin = 2;
DEFVAR_INT ("underline-minimum-offset",
- &underline_minimum_offset,
+ underline_minimum_offset,
doc: /* Minimum distance between baseline and underline.
This can improve legibility of underlined text at small font sizes,
particularly when using variable `x-use-underline-position-properties'
@@ -27058,13 +26841,13 @@ with fonts that specify an UNDERLINE_POSITION relatively close to the
baseline. The default value is 1. */);
underline_minimum_offset = 1;
- DEFVAR_BOOL ("display-hourglass", &display_hourglass_p,
+ DEFVAR_BOOL ("display-hourglass", display_hourglass_p,
doc: /* Non-nil means show an hourglass pointer, when Emacs is busy.
This feature only works when on a window system that can change
cursor shapes. */);
display_hourglass_p = 1;
- DEFVAR_LISP ("hourglass-delay", &Vhourglass_delay,
+ DEFVAR_LISP ("hourglass-delay", Vhourglass_delay,
doc: /* *Seconds to wait before displaying an hourglass pointer when Emacs is busy. */);
Vhourglass_delay = make_number (DEFAULT_HOURGLASS_DELAY);
@@ -27084,7 +26867,7 @@ cursor shapes. */);
Qchar_table_extra_slots = intern_c_string ("char-table-extra-slots");
Fput (Qglyphless_char_display, Qchar_table_extra_slots, make_number (1));
- DEFVAR_LISP ("glyphless-char-display", &Vglyphless_char_display,
+ DEFVAR_LISP ("glyphless-char-display", Vglyphless_char_display,
doc: /* Char-table to control displaying of glyphless characters.
Each element, if non-nil, is an ASCII acronym string (displayed in a box)
or one of these symbols:
@@ -27215,4 +26998,3 @@ cancel_hourglass (void)
#endif
}
#endif /* ! WINDOWSNT */
-
diff --git a/src/xfaces.c b/src/xfaces.c
index 5c7cfe6760..f1d21c098f 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -1,8 +1,6 @@
/* xfaces.c -- "Face" primitives.
-Copyright (C) 1993, 1994, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 1993-1994, 1998-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -355,13 +353,6 @@ Lisp_Object Qmode_line_inactive, Qvertical_border;
Lisp_Object Qface_alias;
-/* Default stipple pattern used on monochrome displays. This stipple
- pattern is used on monochrome displays instead of shades of gray
- for a face background color. See `set-face-stipple' for possible
- values for this variable. */
-
-Lisp_Object Vface_default_stipple;
-
/* Alist of alternative font families. Each element is of the form
(FAMILY FAMILY1 FAMILY2 ...). If fonts of FAMILY can't be loaded,
try FAMILY1, then FAMILY2, ... */
@@ -380,20 +371,8 @@ Lisp_Object Vface_alternative_font_registry_alist;
font may be scaled if its name matches a regular expression in the
list. */
-Lisp_Object Vscalable_fonts_allowed, Qscalable_fonts_allowed;
-
-/* List of regular expressions that matches names of fonts to ignore. */
-
-Lisp_Object Vface_ignored_fonts;
+Lisp_Object Qscalable_fonts_allowed;
-/* Alist of font name patterns vs the rescaling factor. */
-
-Lisp_Object Vface_font_rescale_alist;
-
-/* Maximum number of fonts to consider in font_list. If not an
- integer > 0, DEFAULT_FONT_LIST_LIMIT is used instead. */
-
-Lisp_Object Vfont_list_limit;
#define DEFAULT_FONT_LIST_LIMIT 100
/* The symbols `foreground-color' and `background-color' which can be
@@ -414,30 +393,6 @@ Lisp_Object Qface_no_inherit;
Lisp_Object Qbitmap_spec_p;
-/* Alist of global face definitions. Each element is of the form
- (FACE . LFACE) where FACE is a symbol naming a face and LFACE
- is a Lisp vector of face attributes. These faces are used
- to initialize faces for new frames. */
-
-Lisp_Object Vface_new_frame_defaults;
-
-/* Alist of face remappings. Each element is of the form:
- (FACE REPLACEMENT...) which causes display of the face FACE to use
- REPLACEMENT... instead. REPLACEMENT... is interpreted the same way
- the value of a `face' text property is: it may be (1) A face name,
- (2) A list of face names, (3) A property-list of face attribute/value
- pairs, or (4) A list of face names intermixed with lists containing
- face attribute/value pairs.
-
- Multiple entries in REPLACEMENT... are merged together to form the final
- result, with faces or attributes earlier in the list taking precedence
- over those that are later.
-
- Face-name remapping cycles are suppressed; recursive references use
- the underlying face instead of the remapped face. */
-
-Lisp_Object Vface_remapping_alist;
-
/* The next ID to assign to Lisp faces. */
static int next_lface_id;
@@ -455,10 +410,6 @@ Lisp_Object Qtty_color_desc, Qtty_color_by_index, Qtty_color_standard_values;
Lisp_Object Qtty_color_alist;
-/* An alist of defined terminal colors and their RGB values. */
-
-Lisp_Object Vtty_defined_color_alist;
-
/* Counter for calls to clear_face_cache. If this counter reaches
CLEAR_FONT_TABLE_COUNT, and a frame has more than
CLEAR_FONT_TABLE_NFONTS load, unused fonts are freed. */
@@ -1028,7 +979,7 @@ load_pixmap (FRAME_PTR f, Lisp_Object name, unsigned int *w_ptr, unsigned int *h
h = XINT (Fcar (Fcdr (name)));
bits = Fcar (Fcdr (Fcdr (name)));
- bitmap_id = x_create_bitmap_from_data (f, SDATA (bits),
+ bitmap_id = x_create_bitmap_from_data (f, SSDATA (bits),
w, h);
}
else
@@ -1320,7 +1271,7 @@ If FRAME is nil or omitted, use the selected frame. */)
else
CHECK_FRAME (frame);
f = XFRAME (frame);
- return face_color_gray_p (f, SDATA (color)) ? Qt : Qnil;
+ return face_color_gray_p (f, SSDATA (color)) ? Qt : Qnil;
}
@@ -1341,7 +1292,7 @@ COLOR must be a valid color name. */)
else
CHECK_FRAME (frame);
f = XFRAME (frame);
- if (face_color_supported_p (f, SDATA (color), !NILP (background_p)))
+ if (face_color_supported_p (f, SSDATA (color), !NILP (background_p)))
return Qt;
return Qnil;
}
@@ -1371,7 +1322,7 @@ load_color (struct frame *f, struct face *face, Lisp_Object name, enum lface_att
/* if the color map is full, defined_color will return a best match
to the values in an existing cell. */
- if (!defined_color (f, SDATA (name), &color, 1))
+ if (!defined_color (f, SSDATA (name), &color, 1))
{
add_to_log ("Unable to load color \"%s\"", name, Qnil);
@@ -1448,7 +1399,7 @@ load_face_colors (struct frame *f, struct face *face, Lisp_Object *attrs)
face_color_supported_p is smart enough to know that grays are
"supported" as background because we are supposed to use stipple
for them. */
- if (!face_color_supported_p (f, SDATA (bg), 0)
+ if (!face_color_supported_p (f, SSDATA (bg), 0)
&& !NILP (Fbitmap_spec_p (Vface_default_stipple)))
{
x_destroy_bitmap (f, face->stipple);
@@ -1635,7 +1586,7 @@ compare_fonts_by_sort_order (const void *v1, const void *v2)
if (idx <= FONT_REGISTRY_INDEX)
{
if (STRINGP (val1))
- result = STRINGP (val2) ? strcmp (SDATA (val1), SDATA (val2)) : -1;
+ result = STRINGP (val2) ? strcmp (SSDATA (val1), SSDATA (val2)) : -1;
else
result = STRINGP (val2) ? 1 : 0;
}
@@ -2080,7 +2031,7 @@ resolve_face_name (Lisp_Object face_name, int signal_p)
Lisp_Object tortoise, hare;
if (STRINGP (face_name))
- face_name = intern (SDATA (face_name));
+ face_name = intern (SSDATA (face_name));
if (NILP (face_name) || !SYMBOLP (face_name))
return face_name;
@@ -3551,7 +3502,7 @@ DEFUN ("internal-set-lisp-face-attribute-from-resource",
else if (EQ (attr, QCbold) || EQ (attr, QCitalic))
value = face_boolean_x_resource_value (value, 1);
else if (EQ (attr, QCweight) || EQ (attr, QCslant) || EQ (attr, QCwidth))
- value = intern (SDATA (value));
+ value = intern (SSDATA (value));
else if (EQ (attr, QCreverse_video) || EQ (attr, QCinverse_video))
value = face_boolean_x_resource_value (value, 1);
else if (EQ (attr, QCunderline)
@@ -3596,7 +3547,7 @@ x_update_menu_appearance (struct frame *f)
char line[512];
Lisp_Object lface = lface_from_face_name (f, Qmenu, 1);
struct face *face = FACE_FROM_ID (f, MENU_FACE_ID);
- const char *myname = SDATA (Vx_resource_name);
+ const char *myname = SSDATA (Vx_resource_name);
int changed_p = 0;
#ifdef USE_MOTIF
const char *popup_path = "popup_menu";
@@ -3657,9 +3608,9 @@ x_update_menu_appearance (struct frame *f)
if (! NILP (xlfd))
{
#if defined HAVE_X_I18N
- char *fontsetname = xic_create_fontsetname (SDATA (xlfd), motif);
+ char *fontsetname = xic_create_fontsetname (SSDATA (xlfd), motif);
#else
- char *fontsetname = (char *) SDATA (xlfd);
+ char *fontsetname = SSDATA (xlfd);
#endif
sprintf (line, "%s.pane.menubar*font%s: %s",
myname, suffix, fontsetname);
@@ -3668,7 +3619,7 @@ x_update_menu_appearance (struct frame *f)
myname, popup_path, suffix, fontsetname);
XrmPutLineResource (&rdb, line);
changed_p = 1;
- if (fontsetname != (char *) SDATA (xlfd))
+ if (fontsetname != SSDATA (xlfd))
xfree (fontsetname);
}
}
@@ -4253,10 +4204,10 @@ If FRAME is unspecified or nil, the current frame is used. */)
f = XFRAME (frame);
if (!(CONSP (color1) && parse_rgb_list (color1, &cdef1))
- && !(STRINGP (color1) && defined_color (f, SDATA (color1), &cdef1, 0)))
+ && !(STRINGP (color1) && defined_color (f, SSDATA (color1), &cdef1, 0)))
signal_error ("Invalid color", color1);
if (!(CONSP (color2) && parse_rgb_list (color2, &cdef2))
- && !(STRINGP (color2) && defined_color (f, SDATA (color2), &cdef2, 0)))
+ && !(STRINGP (color2) && defined_color (f, SSDATA (color2), &cdef2, 0)))
signal_error ("Invalid color", color2);
return make_number (color_distance (&cdef1, &cdef2));
@@ -6715,29 +6666,29 @@ syms_of_xfaces (void)
defsubr (&Sdump_colors);
#endif
- DEFVAR_LISP ("font-list-limit", &Vfont_list_limit,
+ DEFVAR_LISP ("font-list-limit", Vfont_list_limit,
doc: /* *Limit for font matching.
If an integer > 0, font matching functions won't load more than
that number of fonts when searching for a matching font. */);
Vfont_list_limit = make_number (DEFAULT_FONT_LIST_LIMIT);
- DEFVAR_LISP ("face-new-frame-defaults", &Vface_new_frame_defaults,
+ DEFVAR_LISP ("face-new-frame-defaults", Vface_new_frame_defaults,
doc: /* List of global face definitions (for internal use only.) */);
Vface_new_frame_defaults = Qnil;
- DEFVAR_LISP ("face-default-stipple", &Vface_default_stipple,
+ DEFVAR_LISP ("face-default-stipple", Vface_default_stipple,
doc: /* *Default stipple pattern used on monochrome displays.
This stipple pattern is used on monochrome displays
instead of shades of gray for a face background color.
See `set-face-stipple' for possible values for this variable. */);
Vface_default_stipple = make_pure_c_string ("gray3");
- DEFVAR_LISP ("tty-defined-color-alist", &Vtty_defined_color_alist,
+ DEFVAR_LISP ("tty-defined-color-alist", Vtty_defined_color_alist,
doc: /* An alist of defined terminal colors and their RGB values.
See the docstring of `tty-color-alist' for the details. */);
Vtty_defined_color_alist = Qnil;
- DEFVAR_LISP ("scalable-fonts-allowed", &Vscalable_fonts_allowed,
+ DEFVAR_LISP ("scalable-fonts-allowed", Vscalable_fonts_allowed,
doc: /* Allowed scalable fonts.
A value of nil means don't allow any scalable fonts.
A value of t means allow any scalable font.
@@ -6747,13 +6698,13 @@ Note that if value is nil, a scalable font might still be used, if no
other font of the appropriate family and registry is available. */);
Vscalable_fonts_allowed = Qnil;
- DEFVAR_LISP ("face-ignored-fonts", &Vface_ignored_fonts,
+ DEFVAR_LISP ("face-ignored-fonts", Vface_ignored_fonts,
doc: /* List of ignored fonts.
Each element is a regular expression that matches names of fonts to
ignore. */);
Vface_ignored_fonts = Qnil;
- DEFVAR_LISP ("face-remapping-alist", &Vface_remapping_alist,
+ DEFVAR_LISP ("face-remapping-alist", Vface_remapping_alist,
doc: /* Alist of face remappings.
Each element is of the form:
@@ -6794,7 +6745,7 @@ buffer contents change, you may need to call `redraw-display' after
changing this variable for it to take effect. */);
Vface_remapping_alist = Qnil;
- DEFVAR_LISP ("face-font-rescale-alist", &Vface_font_rescale_alist,
+ DEFVAR_LISP ("face-font-rescale-alist", Vface_font_rescale_alist,
doc: /* Alist of fonts vs the rescaling factors.
Each element is a cons (FONT-PATTERN . RESCALE-RATIO), where
FONT-PATTERN is a font-spec or a regular expression matching a font name, and
@@ -6810,4 +6761,3 @@ a font of 10 point, we actually use a font of 10 * RESCALE-RATIO point. */);
defsubr (&Sx_family_fonts);
#endif
}
-
diff --git a/src/xfns.c b/src/xfns.c
index 32e390e1e1..f8ac7c3f76 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -1,8 +1,6 @@
/* Functions for the X window system.
-Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 1989, 1992-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -24,10 +22,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <math.h>
#include <setjmp.h>
#include <ctype.h>
-
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
/* This makes the fields of a Display accessible, in Xlib header files. */
@@ -122,20 +117,12 @@ extern double atof ();
#ifdef USE_MOTIF
-/* LessTif/Motif version info. */
-
-static Lisp_Object Vmotif_version_string;
-
#endif /* USE_MOTIF */
#endif /* USE_X_TOOLKIT */
#ifdef USE_GTK
-/* GTK+ version info */
-
-static Lisp_Object Vgtk_version_string;
-
#endif /* USE_GTK */
#define MAXREQUEST(dpy) (XMaxRequestSize (dpy))
@@ -148,57 +135,10 @@ int gray_bitmap_width = gray_width;
int gray_bitmap_height = gray_height;
char *gray_bitmap_bits = gray_bits;
-/* Non-zero means prompt with the old GTK file selection dialog. */
-
-int x_gtk_use_old_file_dialog;
-
-/* If non-zero, by default show hidden files in the GTK file chooser. */
-
-int x_gtk_show_hidden_files;
-
-/* If non-zero, don't show additional help text in the GTK file chooser. */
-
-int x_gtk_file_dialog_help_text;
-
-/* If non-zero, don't collapse to tool bar when it is detached. */
-
-int x_gtk_whole_detached_tool_bar;
-
-/* If non-zero, use Gtk+ tooltips. */
-
-static int x_gtk_use_system_tooltips;
-
-/* The background and shape of the mouse pointer, and shape when not
- over text or in the modeline. */
-
-Lisp_Object Vx_pointer_shape, Vx_nontext_pointer_shape, Vx_mode_pointer_shape;
-Lisp_Object Vx_hourglass_pointer_shape;
-
-/* The shape when over mouse-sensitive text. */
-
-Lisp_Object Vx_sensitive_text_pointer_shape;
-
-/* If non-nil, the pointer shape to indicate that windows can be
- dragged horizontally. */
-
-Lisp_Object Vx_window_horizontal_drag_shape;
-
-/* Color of chars displayed in cursor box. */
-
-Lisp_Object Vx_cursor_fore_pixel;
-
/* Nonzero if using X. */
static int x_in_use;
-/* Non nil if no window manager is in use. */
-
-Lisp_Object Vx_no_window_manager;
-
-/* Regexp matching a font name whose width is the same as `PIXEL_SIZE'. */
-
-Lisp_Object Vx_pixel_size_width_font_regexp;
-
Lisp_Object Qnone;
Lisp_Object Qsuppress_icon;
Lisp_Object Qundefined_color;
@@ -629,7 +569,7 @@ x_real_positions (FRAME_PTR f, int *xptr, int *yptr)
if (rc == Success && actual_type == target_type && !x_had_errors_p (dpy)
&& actual_size == 4 && actual_format == 32)
{
- int ign;
+ unsigned int ign;
Window rootw;
long *fe = (long *)tmp_data;
@@ -730,7 +670,7 @@ x_decode_color (FRAME_PTR f, Lisp_Object color_name, int mono_color)
/* x_defined_color is responsible for coping with failures
by looking for a near-miss. */
- if (x_defined_color (f, SDATA (color_name), &cdef, 1))
+ if (x_defined_color (f, SSDATA (color_name), &cdef, 1))
return cdef.pixel;
signal_error ("Undefined color", color_name);
@@ -759,7 +699,7 @@ x_set_tool_bar_position (struct frame *f,
if (EQ (new_value, old_value)) return;
#ifdef USE_GTK
- if (xg_change_toolbar_position (f, new_value))
+ if (xg_change_toolbar_position (f, new_value))
f->tool_bar_position = new_value;
#endif
}
@@ -781,7 +721,7 @@ xg_set_icon (FRAME_PTR f, Lisp_Object file)
{
GdkPixbuf *pixbuf;
GError *err = NULL;
- char *filename = (char *) SDATA (found);
+ char *filename = SSDATA (found);
BLOCK_INPUT;
pixbuf = gdk_pixbuf_new_from_file (filename, &err);
@@ -1219,9 +1159,9 @@ x_set_icon_type (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
BLOCK_INPUT;
if (NILP (arg))
result = x_text_icon (f,
- (char *) SDATA ((!NILP (f->icon_name)
- ? f->icon_name
- : f->name)));
+ SSDATA ((!NILP (f->icon_name)
+ ? f->icon_name
+ : f->name)));
else
result = x_bitmap_icon (f, arg);
@@ -1256,11 +1196,11 @@ x_set_icon_name (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
BLOCK_INPUT;
result = x_text_icon (f,
- (char *) SDATA ((!NILP (f->icon_name)
- ? f->icon_name
- : !NILP (f->title)
- ? f->title
- : f->name)));
+ SSDATA ((!NILP (f->icon_name)
+ ? f->icon_name
+ : !NILP (f->title)
+ ? f->title
+ : f->name)));
if (result)
{
@@ -1656,14 +1596,14 @@ x_set_name_internal (FRAME_PTR f, Lisp_Object name)
#ifdef USE_GTK
gtk_window_set_title (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
- (char *) SDATA (encoded_name));
+ SSDATA (encoded_name));
#else /* not USE_GTK */
XSetWMName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &text);
XChangeProperty (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
FRAME_X_DISPLAY_INFO (f)->Xatom_net_wm_name,
FRAME_X_DISPLAY_INFO (f)->Xatom_UTF8_STRING,
8, PropModeReplace,
- (char *) SDATA (encoded_name),
+ SDATA (encoded_name),
SBYTES (encoded_name));
#endif /* not USE_GTK */
@@ -1672,7 +1612,7 @@ x_set_name_internal (FRAME_PTR f, Lisp_Object name)
FRAME_X_DISPLAY_INFO (f)->Xatom_net_wm_icon_name,
FRAME_X_DISPLAY_INFO (f)->Xatom_UTF8_STRING,
8, PropModeReplace,
- (char *) SDATA (encoded_icon_name),
+ SDATA (encoded_icon_name),
SBYTES (encoded_icon_name));
if (do_free_icon_value)
@@ -1718,7 +1658,7 @@ x_set_name (struct frame *f, Lisp_Object name, int explicit)
/* Check for no change needed in this very common case
before we do any consing. */
if (!strcmp (FRAME_X_DISPLAY_INFO (f)->x_id_name,
- SDATA (f->name)))
+ SSDATA (f->name)))
return;
name = build_string (FRAME_X_DISPLAY_INFO (f)->x_id_name);
}
@@ -2455,7 +2395,7 @@ x_window (struct frame *f, long window_prompting, int minibuffer_only)
Elsewhere we specify the window name for the window manager. */
{
- char *str = (char *) SDATA (Vx_resource_name);
+ char *str = SSDATA (Vx_resource_name);
f->namebuf = (char *) xmalloc (strlen (str) + 1);
strcpy (f->namebuf, str);
}
@@ -2604,8 +2544,8 @@ x_window (struct frame *f, long window_prompting, int minibuffer_only)
validate_x_resource_name ();
- class_hints.res_name = (char *) SDATA (Vx_resource_name);
- class_hints.res_class = (char *) SDATA (Vx_resource_class);
+ class_hints.res_name = SSDATA (Vx_resource_name);
+ class_hints.res_class = SSDATA (Vx_resource_class);
XSetClassHint (FRAME_X_DISPLAY (f), XtWindow (shell_widget), &class_hints);
#ifdef HAVE_X_I18N
@@ -2769,8 +2709,8 @@ x_window (struct frame *f)
validate_x_resource_name ();
- class_hints.res_name = (char *) SDATA (Vx_resource_name);
- class_hints.res_class = (char *) SDATA (Vx_resource_class);
+ class_hints.res_name = SSDATA (Vx_resource_name);
+ class_hints.res_class = SSDATA (Vx_resource_class);
XSetClassHint (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), &class_hints);
/* The menubar is part of the ordinary display;
@@ -2882,9 +2822,9 @@ x_icon (struct frame *f, Lisp_Object parms)
: NormalState));
#endif
- x_text_icon (f, (char *) SDATA ((!NILP (f->icon_name)
- ? f->icon_name
- : f->name)));
+ x_text_icon (f, SSDATA ((!NILP (f->icon_name)
+ ? f->icon_name
+ : f->name)));
UNBLOCK_INPUT;
}
@@ -3513,7 +3453,7 @@ This function is an internal primitive--use `make-frame' instead. */)
}
BLOCK_INPUT;
-
+
/* Set machine name and pid for the purpose of window managers. */
set_machine_and_pid_properties(f);
@@ -3609,7 +3549,7 @@ DEFUN ("xw-color-defined-p", Fxw_color_defined_p, Sxw_color_defined_p, 1, 2, 0,
CHECK_STRING (color);
- if (x_defined_color (f, SDATA (color), &foo, 0))
+ if (x_defined_color (f, SSDATA (color), &foo, 0))
return Qt;
else
return Qnil;
@@ -3624,7 +3564,7 @@ DEFUN ("xw-color-values", Fxw_color_values, Sxw_color_values, 1, 2, 0,
CHECK_STRING (color);
- if (x_defined_color (f, SDATA (color), &foo, 0))
+ if (x_defined_color (f, SSDATA (color), &foo, 0))
return list3 (make_number (foo.red),
make_number (foo.green),
make_number (foo.blue));
@@ -4025,7 +3965,7 @@ select_visual (struct x_display_info *dpyinfo)
int i, class = -1;
XVisualInfo vinfo;
- strcpy (s, SDATA (value));
+ strcpy (s, SSDATA (value));
dash = strchr (s, '-');
if (dash)
{
@@ -4105,7 +4045,7 @@ x_display_info_for_name (Lisp_Object name)
validate_x_resource_name ();
dpyinfo = x_term_init (name, (char *)0,
- (char *) SDATA (Vx_resource_name));
+ SSDATA (Vx_resource_name));
if (dpyinfo == 0)
error ("Cannot connect to X server %s", SDATA (name));
@@ -4140,7 +4080,7 @@ terminate Emacs if we can't open the connection.
#endif
if (! NILP (xrm_string))
- xrm_option = (unsigned char *) SDATA (xrm_string);
+ xrm_option = SDATA (xrm_string);
else
xrm_option = (unsigned char *) 0;
@@ -4149,7 +4089,7 @@ terminate Emacs if we can't open the connection.
/* This is what opens the connection and sets x_current_display.
This also initializes many symbols, such as those used for input. */
dpyinfo = x_term_init (display, xrm_option,
- (char *) SDATA (Vx_resource_name));
+ SSDATA (Vx_resource_name));
if (dpyinfo == 0)
{
@@ -4304,11 +4244,11 @@ FRAME. Default is to change on the edit X window. */)
}
BLOCK_INPUT;
- prop_atom = XInternAtom (FRAME_X_DISPLAY (f), SDATA (prop), False);
+ prop_atom = XInternAtom (FRAME_X_DISPLAY (f), SSDATA (prop), False);
if (! NILP (type))
{
CHECK_STRING (type);
- target_type = XInternAtom (FRAME_X_DISPLAY (f), SDATA (type), False);
+ target_type = XInternAtom (FRAME_X_DISPLAY (f), SSDATA (type), False);
}
if (! NILP (outer_p)) w = FRAME_OUTER_WINDOW (f);
@@ -4339,7 +4279,7 @@ FRAME nil or omitted means use the selected frame. Value is PROP. */)
CHECK_STRING (prop);
BLOCK_INPUT;
- prop_atom = XInternAtom (FRAME_X_DISPLAY (f), SDATA (prop), False);
+ prop_atom = XInternAtom (FRAME_X_DISPLAY (f), SSDATA (prop), False);
XDeleteProperty (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), prop_atom);
/* Make sure the property is removed when we return. */
@@ -4403,13 +4343,13 @@ no value of TYPE (always string in the MS Windows case). */)
BLOCK_INPUT;
if (STRINGP (type))
{
- if (strcmp ("AnyPropertyType", SDATA (type)) == 0)
+ if (strcmp ("AnyPropertyType", SSDATA (type)) == 0)
target_type = AnyPropertyType;
else
- target_type = XInternAtom (FRAME_X_DISPLAY (f), SDATA (type), False);
+ target_type = XInternAtom (FRAME_X_DISPLAY (f), SSDATA (type), False);
}
- prop_atom = XInternAtom (FRAME_X_DISPLAY (f), SDATA (prop), False);
+ prop_atom = XInternAtom (FRAME_X_DISPLAY (f), SSDATA (prop), False);
rc = XGetWindowProperty (FRAME_X_DISPLAY (f), target_window,
prop_atom, 0, 0, False, target_type,
&actual_type, &actual_format, &actual_size,
@@ -4605,10 +4545,6 @@ Window tip_window;
Lisp_Object last_show_tip_args;
-/* Maximum size for tooltips; a cons (COLUMNS . ROWS). */
-
-Lisp_Object Vx_max_tooltip_size;
-
static Lisp_Object
unwind_create_tip_frame (Lisp_Object frame)
@@ -5068,7 +5004,7 @@ Text larger than the specified size is clipped. */)
#ifdef USE_GTK
if (x_gtk_use_system_tooltips)
{
- int ok;
+ int ok;
/* Hide a previous tip, if any. */
Fx_hide_tip ();
@@ -5915,28 +5851,28 @@ syms_of_xfns (void)
Fput (Qundefined_color, Qerror_message,
make_pure_c_string ("Undefined color"));
- DEFVAR_LISP ("x-pointer-shape", &Vx_pointer_shape,
+ DEFVAR_LISP ("x-pointer-shape", Vx_pointer_shape,
doc: /* The shape of the pointer when over text.
Changing the value does not affect existing frames
unless you set the mouse color. */);
Vx_pointer_shape = Qnil;
#if 0 /* This doesn't really do anything. */
- DEFVAR_LISP ("x-nontext-pointer-shape", &Vx_nontext_pointer_shape,
+ DEFVAR_LISP ("x-nontext-pointer-shape", Vx_nontext_pointer_shape,
doc: /* The shape of the pointer when not over text.
This variable takes effect when you create a new frame
or when you set the mouse color. */);
#endif
Vx_nontext_pointer_shape = Qnil;
- DEFVAR_LISP ("x-hourglass-pointer-shape", &Vx_hourglass_pointer_shape,
+ DEFVAR_LISP ("x-hourglass-pointer-shape", Vx_hourglass_pointer_shape,
doc: /* The shape of the pointer when Emacs is busy.
This variable takes effect when you create a new frame
or when you set the mouse color. */);
Vx_hourglass_pointer_shape = Qnil;
#if 0 /* This doesn't really do anything. */
- DEFVAR_LISP ("x-mode-pointer-shape", &Vx_mode_pointer_shape,
+ DEFVAR_LISP ("x-mode-pointer-shape", Vx_mode_pointer_shape,
doc: /* The shape of the pointer when over the mode line.
This variable takes effect when you create a new frame
or when you set the mouse color. */);
@@ -5944,29 +5880,29 @@ or when you set the mouse color. */);
Vx_mode_pointer_shape = Qnil;
DEFVAR_LISP ("x-sensitive-text-pointer-shape",
- &Vx_sensitive_text_pointer_shape,
+ Vx_sensitive_text_pointer_shape,
doc: /* The shape of the pointer when over mouse-sensitive text.
This variable takes effect when you create a new frame
or when you set the mouse color. */);
Vx_sensitive_text_pointer_shape = Qnil;
DEFVAR_LISP ("x-window-horizontal-drag-cursor",
- &Vx_window_horizontal_drag_shape,
+ Vx_window_horizontal_drag_shape,
doc: /* Pointer shape to use for indicating a window can be dragged horizontally.
This variable takes effect when you create a new frame
or when you set the mouse color. */);
Vx_window_horizontal_drag_shape = Qnil;
- DEFVAR_LISP ("x-cursor-fore-pixel", &Vx_cursor_fore_pixel,
+ DEFVAR_LISP ("x-cursor-fore-pixel", Vx_cursor_fore_pixel,
doc: /* A string indicating the foreground color of the cursor box. */);
Vx_cursor_fore_pixel = Qnil;
- DEFVAR_LISP ("x-max-tooltip-size", &Vx_max_tooltip_size,
+ DEFVAR_LISP ("x-max-tooltip-size", Vx_max_tooltip_size,
doc: /* Maximum size for tooltips.
Value is a pair (COLUMNS . ROWS). Text larger than this is clipped. */);
Vx_max_tooltip_size = Fcons (make_number (80), make_number (40));
- DEFVAR_LISP ("x-no-window-manager", &Vx_no_window_manager,
+ DEFVAR_LISP ("x-no-window-manager", Vx_no_window_manager,
doc: /* Non-nil if no X window manager is in use.
Emacs doesn't try to figure this out; this is always nil
unless you set it to something else. */);
@@ -5975,7 +5911,7 @@ unless you set it to something else. */);
Vx_no_window_manager = Qnil;
DEFVAR_LISP ("x-pixel-size-width-font-regexp",
- &Vx_pixel_size_width_font_regexp,
+ Vx_pixel_size_width_font_regexp,
doc: /* Regexp matching a font name whose width is the same as `PIXEL_SIZE'.
Since Emacs gets width of a font matching with this regexp from
@@ -5985,32 +5921,32 @@ Chinese, Japanese, and Korean. */);
Vx_pixel_size_width_font_regexp = Qnil;
/* This is not ifdef:ed, so other builds than GTK can customize it. */
- DEFVAR_BOOL ("x-gtk-use-old-file-dialog", &x_gtk_use_old_file_dialog,
+ DEFVAR_BOOL ("x-gtk-use-old-file-dialog", x_gtk_use_old_file_dialog,
doc: /* *Non-nil means prompt with the old GTK file selection dialog.
If nil or if the file selection dialog is not available, the new GTK file
chooser is used instead. To turn off all file dialogs set the
variable `use-file-dialog'. */);
x_gtk_use_old_file_dialog = 0;
- DEFVAR_BOOL ("x-gtk-show-hidden-files", &x_gtk_show_hidden_files,
+ DEFVAR_BOOL ("x-gtk-show-hidden-files", x_gtk_show_hidden_files,
doc: /* *If non-nil, the GTK file chooser will by default show hidden files.
Note that this is just the default, there is a toggle button on the file
chooser to show or not show hidden files on a case by case basis. */);
x_gtk_show_hidden_files = 0;
- DEFVAR_BOOL ("x-gtk-file-dialog-help-text", &x_gtk_file_dialog_help_text,
+ DEFVAR_BOOL ("x-gtk-file-dialog-help-text", x_gtk_file_dialog_help_text,
doc: /* *If non-nil, the GTK file chooser will show additional help text.
If more space for files in the file chooser dialog is wanted, set this to nil
to turn the additional text off. */);
x_gtk_file_dialog_help_text = 1;
- DEFVAR_BOOL ("x-gtk-whole-detached-tool-bar", &x_gtk_whole_detached_tool_bar,
+ DEFVAR_BOOL ("x-gtk-whole-detached-tool-bar", x_gtk_whole_detached_tool_bar,
doc: /* *If non-nil, a detached tool bar is shown in full.
The default is to just show an arrow and pressing on that arrow shows
the tool bar buttons. */);
x_gtk_whole_detached_tool_bar = 0;
- DEFVAR_BOOL ("x-gtk-use-system-tooltips", &x_gtk_use_system_tooltips,
+ DEFVAR_BOOL ("x-gtk-use-system-tooltips", x_gtk_use_system_tooltips,
doc: /* *If non-nil with a Gtk+ built Emacs, the Gtk+ toolip is used.
Otherwise use Emacs own tooltip implementation.
When using Gtk+ tooltips, the tooltip face is not used. */);
@@ -6023,7 +5959,7 @@ When using Gtk+ tooltips, the tooltip face is not used. */);
#ifdef USE_MOTIF
Fprovide (intern_c_string ("motif"), Qnil);
- DEFVAR_LISP ("motif-version-string", &Vmotif_version_string,
+ DEFVAR_LISP ("motif-version-string", Vmotif_version_string,
doc: /* Version info for LessTif/Motif. */);
Vmotif_version_string = build_string (XmVERSION_STRING);
#endif /* USE_MOTIF */
@@ -6038,7 +5974,7 @@ When using Gtk+ tooltips, the tooltip face is not used. */);
Fprovide (intern_c_string ("gtk"), Qnil);
Fprovide (intern_c_string ("move-toolbar"), Qnil);
- DEFVAR_LISP ("gtk-version-string", &Vgtk_version_string,
+ DEFVAR_LISP ("gtk-version-string", Vgtk_version_string,
doc: /* Version info for GTK+. */);
{
char gtk_version[40];
@@ -6104,4 +6040,3 @@ When using Gtk+ tooltips, the tooltip face is not used. */);
}
#endif /* HAVE_X_WINDOWS */
-
diff --git a/src/xfont.c b/src/xfont.c
index d4c6af17c4..51b1c1c6de 100644
--- a/src/xfont.c
+++ b/src/xfont.c
@@ -1,6 +1,6 @@
/* xfont.c -- X core font driver.
- Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
- Copyright (C) 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 2006-2011 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H13PRO009
@@ -362,7 +362,7 @@ xfont_list_pattern (Display *display, const char *pattern,
script = Qnil;
}
}
-
+
BLOCK_INPUT;
x_catch_errors (display);
@@ -540,7 +540,7 @@ xfont_list (Lisp_Object frame, Lisp_Object spec)
if (STRINGP (XCAR (alter))
&& ((r - name) + SBYTES (XCAR (alter))) < 256)
{
- strcpy (r, (char *) SDATA (XCAR (alter)));
+ strcpy (r, SSDATA (XCAR (alter)));
list = xfont_list_pattern (display, name, registry, script);
if (! NILP (list))
break;
@@ -797,7 +797,7 @@ xfont_open (FRAME_PTR f, Lisp_Object entity, int pixel_size)
ASET (font_object, FONT_TYPE_INDEX, Qx);
if (STRINGP (fullname))
{
- font_parse_xlfd ((char *) SDATA (fullname), font_object);
+ font_parse_xlfd (SSDATA (fullname), font_object);
ASET (font_object, FONT_NAME_INDEX, fullname);
}
else
@@ -1113,6 +1113,3 @@ syms_of_xfont (void)
xfont_driver.type = Qx;
register_font_driver (&xfont_driver, NULL);
}
-
-/* arch-tag: 23c5f366-a5ee-44b7-a3b7-90d6da7fd749
- (do not change this comment) */
diff --git a/src/xftfont.c b/src/xftfont.c
index a44921a11d..e7eabc47c3 100644
--- a/src/xftfont.c
+++ b/src/xftfont.c
@@ -1,6 +1,6 @@
/* xftfont.c -- XFT font driver.
- Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
- Copyright (C) 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 2006-2011 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H13PRO009
@@ -778,5 +778,3 @@ syms_of_xftfont (void)
register_font_driver (&xftfont_driver, NULL);
}
-/* arch-tag: 64ec61bf-7c8e-4fe6-b953-c6a85d5e1605
- (do not change this comment) */
diff --git a/src/xgselect.c b/src/xgselect.c
index 487f9882b8..359a8fbc89 100644
--- a/src/xgselect.c
+++ b/src/xgselect.c
@@ -1,6 +1,6 @@
/* Function for handling the GLib event loop.
- Copyright (C) 2009, 2010
- Free Software Foundation, Inc.
+
+Copyright (C) 2009-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -157,5 +157,3 @@ xgselect_initialize (void)
#endif /* defined (USE_GTK) || defined (HAVE_GCONF) */
}
-/* arch-tag: c5873ee3-d1f6-44f9-9f3b-b14f70fd0e6a
- (do not change this comment) */
diff --git a/src/xgselect.h b/src/xgselect.h
index f120d8866c..1d3a8508b9 100644
--- a/src/xgselect.h
+++ b/src/xgselect.h
@@ -1,6 +1,6 @@
/* Header for xg_select.
- Copyright (C) 2009, 2010
- Free Software Foundation, Inc.
+
+Copyright (C) 2009-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -34,5 +34,3 @@ extern void xgselect_initialize (void);
#endif /* XGSELECT_H */
-/* arch-tag: 0c5392a8-3a41-41eb-839c-58e6595926f0
- (do not change this comment) */
diff --git a/src/xmenu.c b/src/xmenu.c
index e8be9c6ad4..8ab10be8fa 100644
--- a/src/xmenu.c
+++ b/src/xmenu.c
@@ -1,6 +1,7 @@
/* X Communication module for terminals which understand the X protocol.
- Copyright (C) 1986, 1988, 1993, 1994, 1996, 1999, 2000, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1986, 1988, 1993-1994, 1996, 1999-2011
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -882,7 +883,7 @@ static void
apply_systemfont_to_dialog (Widget w)
{
const char *fn = xsettings_get_system_normal_font ();
- if (fn)
+ if (fn)
{
XrmDatabase db = XtDatabase (XtDisplay (w));
if (db)
@@ -1106,7 +1107,7 @@ set_frame_menubar (FRAME_PTR f, int first_time, int deep_p)
string = XVECTOR (items)->contents[i + 1];
if (NILP (string))
break;
- wv->name = (char *) SDATA (string);
+ wv->name = SSDATA (string);
update_submenu_strings (wv->contents);
wv = wv->next;
}
@@ -1135,7 +1136,7 @@ set_frame_menubar (FRAME_PTR f, int first_time, int deep_p)
break;
wv = xmalloc_widget_value ();
- wv->name = (char *) SDATA (string);
+ wv->name = SSDATA (string);
wv->value = 0;
wv->enabled = 1;
wv->button_type = BUTTON_TYPE_NONE;
@@ -1680,7 +1681,7 @@ xmenu_show (FRAME_PTR f, int x, int y, int for_click, int keymaps,
}
#endif
pane_string = (NILP (pane_name)
- ? "" : (char *) SDATA (pane_name));
+ ? "" : SSDATA (pane_name));
/* If there is just one top-level pane, put all its items directly
under the top-level menu. */
if (menu_items_n_panes == 1)
@@ -1745,9 +1746,9 @@ xmenu_show (FRAME_PTR f, int x, int y, int for_click, int keymaps,
prev_wv->next = wv;
else
save_wv->contents = wv;
- wv->name = (char *) SDATA (item_name);
+ wv->name = SSDATA (item_name);
if (!NILP (descrip))
- wv->key = (char *) SDATA (descrip);
+ wv->key = SSDATA (descrip);
wv->value = 0;
/* If this item has a null value,
make the call_data null so that it won't display a box
@@ -1798,7 +1799,7 @@ xmenu_show (FRAME_PTR f, int x, int y, int for_click, int keymaps,
title = ENCODE_MENU_STRING (title);
#endif
- wv_title->name = (char *) SDATA (title);
+ wv_title->name = SSDATA (title);
wv_title->enabled = TRUE;
wv_title->button_type = BUTTON_TYPE_NONE;
wv_title->help = Qnil;
@@ -2019,7 +2020,7 @@ xdialog_show (FRAME_PTR f,
pane_name = XVECTOR (menu_items)->contents[MENU_ITEMS_PANE_NAME];
prefix = XVECTOR (menu_items)->contents[MENU_ITEMS_PANE_PREFIX];
pane_string = (NILP (pane_name)
- ? "" : (char *) SDATA (pane_name));
+ ? "" : SSDATA (pane_name));
prev_wv = xmalloc_widget_value ();
prev_wv->value = pane_string;
if (keymaps && !NILP (prefix))
@@ -2066,8 +2067,8 @@ xdialog_show (FRAME_PTR f,
prev_wv->next = wv;
wv->name = (char *) button_names[nb_buttons];
if (!NILP (descrip))
- wv->key = (char *) SDATA (descrip);
- wv->value = (char *) SDATA (item_name);
+ wv->key = SSDATA (descrip);
+ wv->value = SSDATA (item_name);
wv->call_data = (void *) &XVECTOR (menu_items)->contents[i];
wv->enabled = !NILP (enable);
wv->help = Qnil;
@@ -2317,7 +2318,7 @@ xmenu_show (FRAME_PTR f, int x, int y, int for_click, int keymaps,
pane_name = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_NAME];
prefix = XVECTOR (menu_items)->contents[i + MENU_ITEMS_PANE_PREFIX];
pane_string = (NILP (pane_name)
- ? "" : (char *) SDATA (pane_name));
+ ? "" : SSDATA (pane_name));
if (keymaps && !NILP (prefix))
pane_string++;
@@ -2582,4 +2583,3 @@ syms_of_xmenu (void)
defsubr (&Sx_popup_dialog);
#endif
}
-
diff --git a/src/xml.c b/src/xml.c
index fde9d4d382..16907d4b44 100644
--- a/src/xml.c
+++ b/src/xml.c
@@ -1,5 +1,5 @@
/* Interface to libxml2.
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -96,7 +96,7 @@ parse_region (Lisp_Object start, Lisp_Object end, Lisp_Object base_url, int html
if (! NILP (base_url))
{
CHECK_STRING (base_url);
- burl = SDATA (base_url);
+ burl = SSDATA (base_url);
}
bytes = CHAR_TO_BYTE (iend) - CHAR_TO_BYTE (istart);
diff --git a/src/xrdb.c b/src/xrdb.c
index 90a85e287b..90afe32bb6 100644
--- a/src/xrdb.c
+++ b/src/xrdb.c
@@ -1,6 +1,5 @@
/* Deal with the X Resource Manager.
- Copyright (C) 1990, 1993, 1994, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1990, 1993-1994, 2000-2011 Free Software Foundation, Inc.
Author: Joseph Arceneaux
Created: 4/90
@@ -22,10 +21,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
-
#include <errno.h>
#include <epaths.h>
@@ -76,8 +72,9 @@ char *x_customization_string;
/* Return the value of the emacs.customization (Emacs.Customization)
resource, for later use in search path decoding. If we find no
such resource, return zero. */
-char *
-x_get_customization_string (XrmDatabase db, const char *name, const char *class)
+static char *
+x_get_customization_string (XrmDatabase db, const char *name,
+ const char *class)
{
char *full_name
= (char *) alloca (strlen (name) + sizeof ("customization") + 3);
@@ -609,8 +606,9 @@ x_load_resources (Display *display, const char *xrm_string,
/* Retrieve the value of the resource specified by NAME with class CLASS
and of type TYPE from database RDB. The value is returned in RET_VALUE. */
-int
-x_get_resource (XrmDatabase rdb, const char *name, const char *class, XrmRepresentation expected_type, XrmValue *ret_value)
+static int
+x_get_resource (XrmDatabase rdb, const char *name, const char *class,
+ XrmRepresentation expected_type, XrmValue *ret_value)
{
XrmValue value;
XrmName namelist[100];
@@ -765,5 +763,3 @@ main (argc, argv)
}
#endif /* TESTRM */
-/* arch-tag: 37e6fbab-ed05-4363-9e76-6c4109ed511f
- (do not change this comment) */
diff --git a/src/xselect.c b/src/xselect.c
index 7b91d6f69b..96c8b9c4c4 100644
--- a/src/xselect.c
+++ b/src/xselect.c
@@ -1,6 +1,5 @@
/* X Selection processing for Emacs.
- Copyright (C) 1993, 1994, 1995, 1996, 1997, 2000, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993-1997, 2000-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -27,9 +26,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
-#ifdef HAVE_UNISTD_H
+
#include <unistd.h>
-#endif
#include "lisp.h"
#include "xterm.h" /* for all of the X includes */
@@ -112,8 +110,6 @@ Lisp_Object QUTF8_STRING; /* This is a type of selection. */
Lisp_Object Qcompound_text_with_extensions;
-static Lisp_Object Vx_lost_selection_functions;
-static Lisp_Object Vx_sent_selection_functions;
static Lisp_Object Qforeign_selection;
/* If this is a smaller number than the max-request-size of the display,
@@ -130,31 +126,6 @@ static Lisp_Object Qforeign_selection;
/* Defined in keyboard.c. */
extern unsigned long last_event_timestamp;
-/* This is an association list whose elements are of the form
- ( SELECTION-NAME SELECTION-VALUE SELECTION-TIMESTAMP FRAME)
- SELECTION-NAME is a lisp symbol, whose name is the name of an X Atom.
- SELECTION-VALUE is the value that emacs owns for that selection.
- It may be any kind of Lisp object.
- SELECTION-TIMESTAMP is the time at which emacs began owning this selection,
- as a cons of two 16-bit numbers (making a 32 bit time.)
- FRAME is the frame for which we made the selection.
- If there is an entry in this alist, then it can be assumed that Emacs owns
- that selection.
- The only (eq) parts of this list that are visible from Lisp are the
- selection-values. */
-static Lisp_Object Vselection_alist;
-
-/* This is an alist whose CARs are selection-types (whose names are the same
- as the names of X Atoms) and whose CDRs are the names of Lisp functions to
- call to convert the given Emacs selection value to a string representing
- the given selection type. This is for Lisp-level extension of the emacs
- selection handling. */
-static Lisp_Object Vselection_converter_alist;
-
-/* If the selection owner takes too long to reply to a selection request,
- we give up on it. This is in milliseconds (0 = no timeout.) */
-static EMACS_INT x_selection_timeout;
-
/* Define a queue to save up SELECTION_REQUEST_EVENT events for later
@@ -263,9 +234,9 @@ symbol_to_x_atom (struct x_display_info *dpyinfo, Display *display, Lisp_Object
if (EQ (sym, QNULL)) return dpyinfo->Xatom_NULL;
if (!SYMBOLP (sym)) abort ();
- TRACE1 (" XInternAtom %s", (char *) SDATA (SYMBOL_NAME (sym)));
+ TRACE1 (" XInternAtom %s", SSDATA (SYMBOL_NAME (sym)));
BLOCK_INPUT;
- val = XInternAtom (display, (char *) SDATA (SYMBOL_NAME (sym)), False);
+ val = XInternAtom (display, SSDATA (SYMBOL_NAME (sym)), False);
UNBLOCK_INPUT;
return val;
}
@@ -2283,7 +2254,7 @@ x_fill_property_data (Display *dpy, Lisp_Object data, void *ret, int format)
else if (STRINGP (o))
{
BLOCK_INPUT;
- val = (long) XInternAtom (dpy, (char *) SDATA (o), False);
+ val = (long) XInternAtom (dpy, SSDATA (o), False);
UNBLOCK_INPUT;
}
else
@@ -2420,7 +2391,7 @@ FRAME is on. If FRAME is nil, the selected frame is used. */)
else if (STRINGP (atom))
{
BLOCK_INPUT;
- x_atom = XInternAtom (FRAME_X_DISPLAY (f), (char *) SDATA (atom), False);
+ x_atom = XInternAtom (FRAME_X_DISPLAY (f), SSDATA (atom), False);
UNBLOCK_INPUT;
}
else
@@ -2531,7 +2502,7 @@ are ignored. */)
CHECK_STRING (message_type);
x_send_client_event(display, dest, from,
XInternAtom (dpyinfo->display,
- SDATA (message_type),
+ SSDATA (message_type),
False),
format, values);
@@ -2567,9 +2538,9 @@ x_send_client_event (Lisp_Object display, Lisp_Object dest, Lisp_Object from, At
}
else if (STRINGP (dest))
{
- if (strcmp (SDATA (dest), "PointerWindow") == 0)
+ if (strcmp (SSDATA (dest), "PointerWindow") == 0)
wdest = PointerWindow;
- else if (strcmp (SDATA (dest), "InputFocus") == 0)
+ else if (strcmp (SSDATA (dest), "InputFocus") == 0)
wdest = InputFocus;
else
error ("DEST as a string must be one of PointerWindow or InputFocus");
@@ -2647,7 +2618,7 @@ syms_of_xselect (void)
Vselection_alist = Qnil;
staticpro (&Vselection_alist);
- DEFVAR_LISP ("selection-converter-alist", &Vselection_converter_alist,
+ DEFVAR_LISP ("selection-converter-alist", Vselection_converter_alist,
doc: /* An alist associating X Windows selection-types with functions.
These functions are called to convert the selection, with three args:
the name of the selection (typically `PRIMARY', `SECONDARY', or `CLIPBOARD');
@@ -2662,7 +2633,7 @@ means that a side-effect was executed,
and there is no meaningful selection value. */);
Vselection_converter_alist = Qnil;
- DEFVAR_LISP ("x-lost-selection-functions", &Vx_lost_selection_functions,
+ DEFVAR_LISP ("x-lost-selection-functions", Vx_lost_selection_functions,
doc: /* A list of functions to be called when Emacs loses an X selection.
\(This happens when some other X client makes its own selection
or when a Lisp program explicitly clears the selection.)
@@ -2670,7 +2641,7 @@ The functions are called with one argument, the selection type
\(a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'). */);
Vx_lost_selection_functions = Qnil;
- DEFVAR_LISP ("x-sent-selection-functions", &Vx_sent_selection_functions,
+ DEFVAR_LISP ("x-sent-selection-functions", Vx_sent_selection_functions,
doc: /* A list of functions to be called when Emacs answers a selection request.
The functions are called with four arguments:
- the selection name (typically `PRIMARY', `SECONDARY', or `CLIPBOARD');
@@ -2684,7 +2655,7 @@ This hook doesn't let you change the behavior of Emacs's selection replies,
it merely informs you that they have happened. */);
Vx_sent_selection_functions = Qnil;
- DEFVAR_INT ("x-selection-timeout", &x_selection_timeout,
+ DEFVAR_INT ("x-selection-timeout", x_selection_timeout,
doc: /* Number of milliseconds to wait for a selection reply.
If the selection owner doesn't reply in this time, we give up.
A value of 0 means wait as long as necessary. This is initialized from the
@@ -2714,6 +2685,3 @@ A value of 0 means wait as long as necessary. This is initialized from the
Qforeign_selection = intern_c_string ("foreign-selection");
staticpro (&Qforeign_selection);
}
-
-/* arch-tag: 7c293b0f-9918-4f69-8ac7-03e142307236
- (do not change this comment) */
diff --git a/src/xsettings.c b/src/xsettings.c
index 83ca87ed0b..e3d2c6e9ef 100644
--- a/src/xsettings.c
+++ b/src/xsettings.c
@@ -1,6 +1,6 @@
-/* Functions for handle font and other changes dynamically.
- Copyright (C) 2009, 2010
- Free Software Foundation, Inc.
+/* Functions for handling font and other changes dynamically.
+
+Copyright (C) 2009-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -44,8 +44,6 @@ static char *current_font;
static struct x_display_info *first_dpyinfo;
static Lisp_Object Qmonospace_font_name, Qfont_name, Qfont_render,
Qtool_bar_style;
-static int use_system_font;
-static Lisp_Object Vxft_settings;
static Lisp_Object current_tool_bar_style;
#ifdef HAVE_GCONF
@@ -751,14 +749,14 @@ syms_of_xsettings (void)
defsubr (&Sfont_get_system_font);
defsubr (&Sfont_get_system_normal_font);
- DEFVAR_BOOL ("font-use-system-font", &use_system_font,
+ DEFVAR_BOOL ("font-use-system-font", use_system_font,
doc: /* *Non-nil means to apply the system defined font dynamically.
When this is non-nil and the system defined fixed width font changes, we
update frames dynamically.
If this variable is nil, Emacs ignores system font changes. */);
use_system_font = 0;
- DEFVAR_LISP ("xft-settings", &Vxft_settings,
+ DEFVAR_LISP ("xft-settings", Vxft_settings,
doc: /* Font settings applied to Xft. */);
Vxft_settings = make_string ("", 0);
@@ -777,5 +775,3 @@ If this variable is nil, Emacs ignores system font changes. */);
Fprovide (intern_c_string ("dynamic-setting"), Qnil);
}
-/* arch-tag: 541716ed-2e6b-42e1-8212-3197e01ea61d
- (do not change this comment) */
diff --git a/src/xsettings.h b/src/xsettings.h
index 50819d456c..5b2fdbf43c 100644
--- a/src/xsettings.h
+++ b/src/xsettings.h
@@ -1,6 +1,6 @@
/* Functions for handle font changes dynamically.
- Copyright (C) 2009, 2010
- Free Software Foundation, Inc.
+
+Copyright (C) 2009-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -20,8 +20,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifndef XSETTINGS_H
#define XSETTINGS_H
-EXFUN (Ffont_get_system_font, 0);
-EXFUN (Ffont_get_system_normal_font, 0);
EXFUN (Ftool_bar_get_system_style, 0);
extern void xsettings_initialize (struct x_display_info *dpyinfo);
@@ -33,5 +31,3 @@ extern const char *xsettings_get_system_normal_font (void);
#endif /* XSETTINGS_H */
-/* arch-tag: 2c0f5c49-e925-4452-b778-4c082da6dd72
- (do not change this comment) */
diff --git a/src/xsmfns.c b/src/xsmfns.c
index 7b82fd4e61..15db459e14 100644
--- a/src/xsmfns.c
+++ b/src/xsmfns.c
@@ -1,7 +1,7 @@
/* Session management module for systems which understand the X Session
management protocol.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+
+Copyright (C) 2002-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -26,10 +26,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <X11/Xlib.h>
#include <X11/Xutil.h>
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
-
#include <sys/param.h>
#include <stdio.h>
#include <setjmp.h>
@@ -42,9 +39,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "termopts.h"
#include "xterm.h"
-/* Avoid "differ in sign" warnings */
-#define SSDATA(x) ((char *) SDATA (x))
-
/* This is the event used when SAVE_SESSION_EVENT occurs. */
static struct input_event emacs_event;
@@ -69,15 +63,6 @@ static char *client_id;
static char *emacs_program;
-/* The client session id for this session as a lisp object. */
-
-Lisp_Object Vx_session_id;
-
-/* The id we had the previous session. This is only available if we
- have been started by the session manager with SMID_OPT. */
-
-Lisp_Object Vx_session_previous_id;
-
/* The option we tell the session manager to start Emacs with when
restarting Emacs. The client_id is appended. */
@@ -172,6 +157,7 @@ smc_interact_CB (SmcConn smcConn, SmPointer clientData)
{
doing_interact = True;
emacs_event.kind = SAVE_SESSION_EVENT;
+ emacs_event.arg = Qnil;
}
/* This is called when the session manager tells us to save ourselves.
@@ -243,7 +229,7 @@ smc_save_yourself_CB (SmcConn smcConn,
props[props_idx]->vals[2].value = NOSPLASH_OPT;
cwd = get_current_dir_name ();
- if (cwd)
+ if (cwd)
{
chdir_opt = xmalloc (strlen (CHDIR_OPT) + strlen (cwd) + 1);
strcpy (chdir_opt, CHDIR_OPT);
@@ -308,8 +294,8 @@ smc_save_yourself_CB (SmcConn smcConn,
static void
smc_die_CB (SmcConn smcConn, SmPointer clientData)
{
- SmcCloseConnection (smcConn, 0, 0);
- ice_connection_closed ();
+ emacs_event.kind = SAVE_SESSION_EVENT;
+ emacs_event.arg = Qt;
}
/* We don't use the next two but they are mandatory, leave them empty.
@@ -405,8 +391,8 @@ create_client_leader_window (struct x_display_info *dpyinfo, char *client_id)
-1, -1, 1, 1,
CopyFromParent, CopyFromParent, CopyFromParent);
- class_hints.res_name = (char *) SDATA (Vx_resource_name);
- class_hints.res_class = (char *) SDATA (Vx_resource_class);
+ class_hints.res_name = SSDATA (Vx_resource_name);
+ class_hints.res_class = SSDATA (Vx_resource_class);
XSetClassHint (dpyinfo->display, w, &class_hints);
XStoreName (dpyinfo->display, w, class_hints.res_name);
@@ -522,9 +508,12 @@ is told to abort the window system shutdown.
Do not call this function yourself. */)
(Lisp_Object event)
{
+ int kill_emacs = CONSP (event) && CONSP (XCDR (event))
+ && EQ (Qt, XCAR (XCDR (event)));
+
/* Check doing_interact so that we don't do anything if someone called
this at the wrong time. */
- if (doing_interact)
+ if (doing_interact && ! kill_emacs)
{
Bool cancel_shutdown = False;
@@ -535,10 +524,21 @@ Do not call this function yourself. */)
doing_interact = False;
}
+ else if (kill_emacs)
+ {
+ /* We should not do user interaction here, but it is not easy to
+ prevent. Fix this in next version. */
+ Fkill_emacs (Qnil);
+
+ /* This will not be reached, but we want kill-emacs-hook to be run. */
+ SmcCloseConnection (smc_conn, 0, 0);
+ ice_connection_closed ();
+ }
return Qnil;
}
+
/***********************************************************************
Initialization
@@ -546,7 +546,7 @@ Do not call this function yourself. */)
void
syms_of_xsmfns (void)
{
- DEFVAR_LISP ("x-session-id", &Vx_session_id,
+ DEFVAR_LISP ("x-session-id", Vx_session_id,
doc: /* The session id Emacs got from the session manager for this session.
Changing the value does not change the session id used by Emacs.
The value is nil if no session manager is running.
@@ -554,7 +554,7 @@ See also `x-session-previous-id', `emacs-save-session-functions',
`emacs-session-save' and `emacs-session-restore'." */);
Vx_session_id = Qnil;
- DEFVAR_LISP ("x-session-previous-id", &Vx_session_previous_id,
+ DEFVAR_LISP ("x-session-previous-id", Vx_session_previous_id,
doc: /* The previous session id Emacs got from session manager.
If Emacs is running on a window system that has a session manager, the
session manager gives Emacs a session id. It is feasible for Emacs Lisp
@@ -581,6 +581,3 @@ See also `emacs-save-session-functions', `emacs-session-save' and
}
#endif /* HAVE_X_SM */
-
-/* arch-tag: 56a2c58c-adfa-430a-b772-130abd29fd2e
- (do not change this comment) */
diff --git a/src/xterm.c b/src/xterm.c
index a571d02557..b6e596b854 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -1,8 +1,6 @@
/* X Communication module for terminals which understand the X protocol.
-Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+Copyright (C) 1989, 1993-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -90,9 +88,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
-#ifdef HAVE_UNISTD_H
+
#include <unistd.h>
-#endif
#ifdef USE_GTK
#include "gtkutil.h"
@@ -148,10 +145,6 @@ int use_xim = 0; /* configure --without-xim */
-/* Non-nil means Emacs uses toolkit scroll bars. */
-
-Lisp_Object Vx_toolkit_scroll_bars;
-
/* Non-zero means that a HELP_EVENT has been generated since Emacs
start. */
@@ -160,14 +153,6 @@ static int any_help_event_p;
/* Last window where we saw the mouse. Used by mouse-autoselect-window. */
static Lisp_Object last_window;
-/* Non-zero means make use of UNDERLINE_POSITION font properties. */
-
-int x_use_underline_position_properties;
-
-/* Non-zero means to draw the underline at the same place as the descent line. */
-
-int x_underline_at_descent_line;
-
/* This is a chain of structures for all the X displays currently in
use. */
@@ -208,11 +193,6 @@ static String Xt_default_resources[] = {0};
static int toolkit_scroll_bar_interaction;
-/* Non-zero means to not move point as a result of clicking on a
- frame to focus it (when focus-follows-mouse is nil). */
-
-int x_mouse_click_focus_ignore_position;
-
/* Non-zero timeout value means ignore next mouse click if it arrives
before that timeout elapses (i.e. as part of the same sequence of
events resulting from clicking on a frame to select it). */
@@ -283,10 +263,6 @@ static int input_signal_count;
static int x_noop_count;
-/* The keysyms to use for the various modifiers. */
-
-Lisp_Object Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym, Vx_super_keysym;
-Lisp_Object Vx_keysym_table;
static Lisp_Object Qalt, Qhyper, Qmeta, Qsuper, Qmodifier_value;
static Lisp_Object Qvendor_specific_keysyms;
@@ -303,11 +279,34 @@ Lisp_Object Qx_gtk_map_stock;
/* Some functions take this as char *, not const char *. */
static char emacs_class[] = EMACS_CLASS;
-/* Used in x_flush. */
+/* XEmbed implementation. */
+
+#define XEMBED_VERSION 0
+
+enum xembed_info
+ {
+ XEMBED_MAPPED = 1 << 0
+ };
-extern XrmDatabase x_load_resources (Display *, const char *, const char *,
- const char *);
-extern int x_bitmap_mask (FRAME_PTR, int);
+enum xembed_message
+ {
+ XEMBED_EMBEDDED_NOTIFY = 0,
+ XEMBED_WINDOW_ACTIVATE = 1,
+ XEMBED_WINDOW_DEACTIVATE = 2,
+ XEMBED_REQUEST_FOCUS = 3,
+ XEMBED_FOCUS_IN = 4,
+ XEMBED_FOCUS_OUT = 5,
+ XEMBED_FOCUS_NEXT = 6,
+ XEMBED_FOCUS_PREV = 7,
+
+ XEMBED_MODALITY_ON = 10,
+ XEMBED_MODALITY_OFF = 11,
+ XEMBED_REGISTER_ACCELERATOR = 12,
+ XEMBED_UNREGISTER_ACCELERATOR = 13,
+ XEMBED_ACTIVATE_ACCELERATOR = 14
+ };
+
+/* Used in x_flush. */
static int x_alloc_nearest_color_1 (Display *, Colormap, XColor *);
static void x_set_window_size_1 (struct frame *, int, int, int);
@@ -409,9 +408,8 @@ struct record event_record[100];
int event_record_index;
-record_event (locus, type)
- char *locus;
- int type;
+void
+record_event (char *locus, int type)
{
if (event_record_index == sizeof (event_record) / sizeof (struct record))
event_record_index = 0;
@@ -489,14 +487,14 @@ x_set_frame_alpha (struct frame *f)
&data);
if (rc == Success && actual != None)
- if (*(unsigned long *)data == opac)
- {
- XFree ((void *) data);
- x_uncatch_errors ();
- return;
- }
- else
+ {
XFree ((void *) data);
+ if (*(unsigned long *)data == opac)
+ {
+ x_uncatch_errors ();
+ return;
+ }
+ }
x_uncatch_errors ();
}
@@ -900,6 +898,7 @@ static void x_draw_relief_rect (struct frame *, int, int, int, int,
XRectangle *);
static void x_draw_box_rect (struct glyph_string *, int, int, int, int,
int, int, int, XRectangle *);
+static void x_scroll_bar_clear (struct frame *);
#if GLYPH_DEBUG
static void x_check_font (struct frame *, struct font *);
@@ -1364,7 +1363,7 @@ x_draw_glyphless_glyph_string_foreground (struct glyph_string *s)
glyph->u.glyphless.ch)
: XCHAR_TABLE (Vglyphless_char_display)->extras[0]);
if (STRINGP (acronym))
- str = (char *) SDATA (acronym);
+ str = SSDATA (acronym);
}
}
else if (glyph->u.glyphless.method == GLYPHLESS_DISPLAY_HEX_CODE)
@@ -5614,7 +5613,7 @@ x_scroll_bar_report_motion (FRAME_PTR *fp, Lisp_Object *bar_window, enum scroll_
Clear out the scroll bars, and ask for expose events, so we can
redraw them. */
-void
+static void
x_scroll_bar_clear (FRAME_PTR f)
{
#ifndef USE_TOOLKIT_SCROLL_BARS
@@ -5764,6 +5763,10 @@ event_handler_gdk (GdkXEvent *gxev, GdkEvent *ev, gpointer data)
#endif /* USE_GTK */
+static void xembed_send_message (struct frame *f, Time time,
+ enum xembed_message message,
+ long detail, long data1, long data2);
+
/* Handles the XEvent EVENT on display DPYINFO.
*FINISH is X_EVENT_GOTO_OUT if caller should stop reading events.
@@ -6498,7 +6501,6 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventp, int *finish,
{
/* Decode the input data. */
int require;
- unsigned char *p;
/* The input should be decoded with `coding_system'
which depends on which X*LookupString function
@@ -7947,7 +7949,7 @@ x_new_font (struct frame *f, Lisp_Object font_object, int fontset)
&& (FRAME_XIC_STYLE (f) & (XIMPreeditPosition | XIMStatusArea)))
{
BLOCK_INPUT;
- xic_set_xfontset (f, SDATA (fontset_ascii (fontset)));
+ xic_set_xfontset (f, SSDATA (fontset_ascii (fontset)));
UNBLOCK_INPUT;
}
#endif
@@ -8438,7 +8440,7 @@ get_current_wm_state (struct frame *f,
for (i = 0; i < actual_size; ++i)
{
Atom a = ((Atom*)tmp_data)[i];
- if (a == dpyinfo->Xatom_net_wm_state_maximized_horz)
+ if (a == dpyinfo->Xatom_net_wm_state_maximized_horz)
{
if (*size_state == FULLSCREEN_HEIGHT)
*size_state = FULLSCREEN_MAXIMIZED;
@@ -8469,7 +8471,6 @@ do_ewmh_fullscreen (struct frame *f)
{
struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
int have_net_atom = wm_supports (f, dpyinfo->Xatom_net_wm_state);
- Lisp_Object lval = get_frame_param (f, Qfullscreen);
int cur, dummy;
get_current_wm_state (f, FRAME_OUTER_WINDOW (f), &cur, &dummy);
@@ -8587,9 +8588,13 @@ x_check_fullscreen (struct frame *f)
if (f->output_data.x->parent_desc != FRAME_X_DISPLAY_INFO (f)->root_window)
return; /* Only fullscreen without WM or with EWM hints (above). */
+ /* Setting fullscreen to nil doesn't do anything. We could save the
+ last non-fullscreen size and restore it, but it seems like a
+ lot of work for this unusual case (no window manager running). */
+
if (f->want_fullscreen != FULLSCREEN_NONE)
{
- int width = FRAME_COLS (f), height = FRAME_LINES (f);
+ int width = FRAME_PIXEL_WIDTH (f), height = FRAME_PIXEL_HEIGHT (f);
struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
switch (f->want_fullscreen)
@@ -8607,12 +8612,8 @@ x_check_fullscreen (struct frame *f)
height = x_display_pixel_height (dpyinfo);
}
- if (FRAME_COLS (f) != width || FRAME_LINES (f) != height)
- {
- change_frame_size (f, height, width, 0, 1, 0);
- SET_FRAME_GARBAGED (f);
- cancel_mouse_face (f);
- }
+ XResizeWindow (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
+ width, height);
}
}
@@ -8989,10 +8990,9 @@ XTframe_raise_lower (FRAME_PTR f, int raise_flag)
/* XEmbed implementation. */
-void
+static void
xembed_set_info (struct frame *f, enum xembed_info flags)
{
- Atom atom;
unsigned long data[2];
struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
@@ -9004,7 +9004,7 @@ xembed_set_info (struct frame *f, enum xembed_info flags)
32, PropModeReplace, (unsigned char *) data, 2);
}
-void
+static void
xembed_send_message (struct frame *f, Time time, enum xembed_message message, long int detail, long int data1, long int data2)
{
XEvent event;
@@ -9873,7 +9873,7 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
++x_initialized;
}
- if (! x_display_ok (SDATA (display_name)))
+ if (! x_display_ok (SSDATA (display_name)))
error ("Display %s can't be opened", SDATA (display_name));
#ifdef USE_GTK
@@ -9892,7 +9892,7 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
{
static char display_opt[] = "--display";
static char name_opt[] = "--name";
-
+
for (argc = 0; argc < NUM_ARGV; ++argc)
argv[argc] = 0;
@@ -9965,7 +9965,7 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
argv[argc++] = xrm_option;
}
turn_on_atimers (0);
- dpy = XtOpenDisplay (Xt_app_con, SDATA (display_name),
+ dpy = XtOpenDisplay (Xt_app_con, SSDATA (display_name),
resource_name, EMACS_CLASS,
emacs_options, XtNumber (emacs_options),
&argc, argv);
@@ -10004,8 +10004,8 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
for (share = x_display_list, tail = x_display_name_list; share;
share = share->next, tail = XCDR (tail))
- if (same_x_server (SDATA (XCAR (XCAR (tail))),
- SDATA (display_name)))
+ if (same_x_server (SSDATA (XCAR (XCAR (tail))),
+ SSDATA (display_name)))
break;
if (share)
terminal->kboard = share->terminal->kboard;
@@ -10066,7 +10066,7 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
/* Set the name of the terminal. */
terminal->name = (char *) xmalloc (SBYTES (display_name) + 1);
- strncpy (terminal->name, SDATA (display_name), SBYTES (display_name));
+ strncpy (terminal->name, SSDATA (display_name), SBYTES (display_name));
terminal->name[SBYTES (display_name)] = 0;
#if 0
@@ -10157,8 +10157,8 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
build_string ("PrivateColormap"),
Qnil, Qnil);
if (STRINGP (value)
- && (!strcmp (SDATA (value), "true")
- || !strcmp (SDATA (value), "on")))
+ && (!strcmp (SSDATA (value), "true")
+ || !strcmp (SSDATA (value), "on")))
dpyinfo->cmap = XCopyColormapAndFree (dpyinfo->display, dpyinfo->cmap);
}
}
@@ -10355,8 +10355,8 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
build_string ("Synchronous"),
Qnil, Qnil);
if (STRINGP (value)
- && (!strcmp (SDATA (value), "true")
- || !strcmp (SDATA (value), "on")))
+ && (!strcmp (SSDATA (value), "true")
+ || !strcmp (SSDATA (value), "on")))
XSynchronize (dpyinfo->display, True);
}
@@ -10368,13 +10368,13 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
Qnil, Qnil);
#ifdef USE_XIM
if (STRINGP (value)
- && (!strcmp (SDATA (value), "false")
- || !strcmp (SDATA (value), "off")))
+ && (!strcmp (SSDATA (value), "false")
+ || !strcmp (SSDATA (value), "off")))
use_xim = 0;
#else
if (STRINGP (value)
- && (!strcmp (SDATA (value), "true")
- || !strcmp (SDATA (value), "on")))
+ && (!strcmp (SSDATA (value), "true")
+ || !strcmp (SSDATA (value), "on")))
use_xim = 1;
#endif
}
@@ -10750,7 +10750,7 @@ syms_of_xterm (void)
#endif
DEFVAR_BOOL ("x-use-underline-position-properties",
- &x_use_underline_position_properties,
+ x_use_underline_position_properties,
doc: /* *Non-nil means make use of UNDERLINE_POSITION font properties.
A value of nil means ignore them. If you encounter fonts with bogus
UNDERLINE_POSITION font properties, for example 7x13 on XFree prior
@@ -10760,7 +10760,7 @@ sizes. */);
x_use_underline_position_properties = 1;
DEFVAR_BOOL ("x-underline-at-descent-line",
- &x_underline_at_descent_line,
+ x_underline_at_descent_line,
doc: /* *Non-nil means to draw the underline at the same place as the descent line.
A value of nil means to draw the underline according to the value of the
variable `x-use-underline-position-properties', which is usually at the
@@ -10768,7 +10768,7 @@ baseline level. The default value is nil. */);
x_underline_at_descent_line = 0;
DEFVAR_BOOL ("x-mouse-click-focus-ignore-position",
- &x_mouse_click_focus_ignore_position,
+ x_mouse_click_focus_ignore_position,
doc: /* Non-nil means that a mouse click to focus a frame does not move point.
This variable is only used when the window manager requires that you
click on a frame to select it (give it focus). In that case, a value
@@ -10777,7 +10777,7 @@ reflect the mouse click position, while a non-nil value means that the
selected window or cursor position is preserved. */);
x_mouse_click_focus_ignore_position = 0;
- DEFVAR_LISP ("x-toolkit-scroll-bars", &Vx_toolkit_scroll_bars,
+ DEFVAR_LISP ("x-toolkit-scroll-bars", Vx_toolkit_scroll_bars,
doc: /* Which toolkit scroll bars Emacs uses, if any.
A value of nil means Emacs doesn't use toolkit scroll bars.
With the X Window system, the value is a symbol describing the
@@ -10810,35 +10810,35 @@ With MS Windows, the value is t. */);
Qsuper = intern_c_string ("super");
Fput (Qsuper, Qmodifier_value, make_number (super_modifier));
- DEFVAR_LISP ("x-alt-keysym", &Vx_alt_keysym,
+ DEFVAR_LISP ("x-alt-keysym", Vx_alt_keysym,
doc: /* Which keys Emacs uses for the alt modifier.
This should be one of the symbols `alt', `hyper', `meta', `super'.
For example, `alt' means use the Alt_L and Alt_R keysyms. The default
is nil, which is the same as `alt'. */);
Vx_alt_keysym = Qnil;
- DEFVAR_LISP ("x-hyper-keysym", &Vx_hyper_keysym,
+ DEFVAR_LISP ("x-hyper-keysym", Vx_hyper_keysym,
doc: /* Which keys Emacs uses for the hyper modifier.
This should be one of the symbols `alt', `hyper', `meta', `super'.
For example, `hyper' means use the Hyper_L and Hyper_R keysyms. The
default is nil, which is the same as `hyper'. */);
Vx_hyper_keysym = Qnil;
- DEFVAR_LISP ("x-meta-keysym", &Vx_meta_keysym,
+ DEFVAR_LISP ("x-meta-keysym", Vx_meta_keysym,
doc: /* Which keys Emacs uses for the meta modifier.
This should be one of the symbols `alt', `hyper', `meta', `super'.
For example, `meta' means use the Meta_L and Meta_R keysyms. The
default is nil, which is the same as `meta'. */);
Vx_meta_keysym = Qnil;
- DEFVAR_LISP ("x-super-keysym", &Vx_super_keysym,
+ DEFVAR_LISP ("x-super-keysym", Vx_super_keysym,
doc: /* Which keys Emacs uses for the super modifier.
This should be one of the symbols `alt', `hyper', `meta', `super'.
For example, `super' means use the Super_L and Super_R keysyms. The
default is nil, which is the same as `super'. */);
Vx_super_keysym = Qnil;
- DEFVAR_LISP ("x-keysym-table", &Vx_keysym_table,
+ DEFVAR_LISP ("x-keysym-table", Vx_keysym_table,
doc: /* Hash table of character codes indexed by X keysym codes. */);
Vx_keysym_table = make_hash_table (Qeql, make_number (900),
make_float (DEFAULT_REHASH_SIZE),
@@ -10847,4 +10847,3 @@ default is nil, which is the same as `super'. */);
}
#endif /* HAVE_X_WINDOWS */
-
diff --git a/src/xterm.h b/src/xterm.h
index fbfb043601..4775655a7f 100644
--- a/src/xterm.h
+++ b/src/xterm.h
@@ -1,6 +1,5 @@
/* Definitions and headers for communication with X protocol.
- Copyright (C) 1989, 1993, 1994, 1998, 1999, 2000, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1989, 1993-1994, 1998-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -270,8 +269,8 @@ struct x_display_info
Atom Xatom_Scrollbar;
/* Atom used in XEmbed client messages. */
- Atom Xatom_XEMBED, Xatom_XEMBED_INFO;;
-
+ Atom Xatom_XEMBED, Xatom_XEMBED_INFO;
+
/* The frame (if any) which has the X window that has keyboard focus.
Zero if none. This is examined by Ffocus_frame in xfns.c. Note
that a mere EnterNotify event can set this; if you need to know the
@@ -388,9 +387,6 @@ extern struct x_display_info *x_display_list;
FONT-LIST-CACHE records previous values returned by x-list-fonts. */
extern Lisp_Object x_display_name_list;
-/* Regexp matching a font name whose width is the same as `PIXEL_SIZE'. */
-extern Lisp_Object Vx_pixel_size_width_font_regexp;
-
extern struct x_display_info *x_display_info_for_display (Display *);
extern struct x_display_info *x_display_info_for_name (Lisp_Object);
extern void x_set_frame_alpha (struct frame *);
@@ -933,11 +929,7 @@ void x_handle_property_notify (XPropertyEvent *);
/* From xfns.c. */
-Lisp_Object display_x_get_resource (struct x_display_info *,
- Lisp_Object, Lisp_Object,
- Lisp_Object, Lisp_Object);
struct frame *check_x_frame (Lisp_Object);
-EXFUN (Fx_display_color_p, 1);
EXFUN (Fx_display_grayscale_p, 1);
extern void x_free_gcs (struct frame *);
extern int gray_bitmap_width, gray_bitmap_height;
@@ -945,25 +937,11 @@ extern char *gray_bitmap_bits;
/* From xrdb.c. */
-char *x_get_customization_string (XrmDatabase, const char *, const char *);
XrmDatabase x_load_resources (Display *, const char *, const char *,
const char *);
-int x_get_resource (XrmDatabase, const char *, const char *,
- XrmRepresentation, XrmValue *);
-void x_delete_display (struct x_display_info *);
-void x_make_frame_visible (struct frame *);
-void x_iconify_frame (struct frame *);
-void x_wm_set_size_hint (struct frame *, long, int);
-int x_text_icon (struct frame *, const char *);
-int x_bitmap_icon (struct frame *, Lisp_Object);
-void x_set_window_size (struct frame *, int, int, int);
-void x_wm_set_window_state (struct frame *, int);
-int x_alloc_nearest_color (struct frame *, Colormap, XColor *);
/* Defined in xterm.c */
-extern void cancel_mouse_face (struct frame *);
-extern void x_scroll_bar_clear (struct frame *);
extern int x_text_icon (struct frame *, const char *);
extern int x_bitmap_icon (struct frame *, Lisp_Object);
extern void x_catch_errors (Display *);
@@ -992,11 +970,12 @@ extern void x_initialize (void);
extern unsigned long x_copy_color (struct frame *, unsigned long);
#ifdef USE_X_TOOLKIT
extern XtAppContext Xt_app_con;
-extern int x_alloc_lighter_color_for_widget (Widget, Display*, Colormap,
+extern int x_alloc_lighter_color_for_widget (Widget, Display *, Colormap,
unsigned long *,
double, int);
extern void x_activate_timeout_atimer (void);
#endif
+extern int x_alloc_nearest_color (struct frame *, Colormap, XColor *);
extern void x_query_colors (struct frame *f, XColor *, int);
extern void x_query_color (struct frame *f, XColor *);
extern void x_clear_area (Display *, Window, int, int, int, int, int);
@@ -1076,8 +1055,6 @@ extern void x_set_tool_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
/* Defined in xfaces.c */
-extern int compute_glyph_face (struct frame *, int, int);
-extern int compute_glyph_face_1 (struct frame *, Lisp_Object, int);
extern void x_free_dpy_colors (Display *, Screen *, Colormap,
unsigned long *, int);
@@ -1104,61 +1081,9 @@ extern int x_session_have_connection (void);
extern void x_session_close (void);
#endif
-/* XEmbed implementation. */
-
-#define XEMBED_VERSION 0
-
-enum xembed_info
- {
- XEMBED_MAPPED = 1 << 0
- };
-
-enum xembed_message
- {
- XEMBED_EMBEDDED_NOTIFY = 0,
- XEMBED_WINDOW_ACTIVATE = 1,
- XEMBED_WINDOW_DEACTIVATE = 2,
- XEMBED_REQUEST_FOCUS = 3,
- XEMBED_FOCUS_IN = 4,
- XEMBED_FOCUS_OUT = 5,
- XEMBED_FOCUS_NEXT = 6,
- XEMBED_FOCUS_PREV = 7,
-
- XEMBED_MODALITY_ON = 10,
- XEMBED_MODALITY_OFF = 11,
- XEMBED_REGISTER_ACCELERATOR = 12,
- XEMBED_UNREGISTER_ACCELERATOR = 13,
- XEMBED_ACTIVATE_ACCELERATOR = 14
- };
-
-enum xembed_focus
- {
- XEMBED_FOCUS_CURRENT = 0,
- XEMBED_FOCUS_FIRST = 1,
- XEMBED_FOCUS_LAST = 2
- };
-
-enum xembed_modifier
- {
- XEMBED_MODIFIER_SHIFT = 1 << 0,
- XEMBED_MODIFIER_CONTROL = 1 << 1,
- XEMBED_MODIFIER_ALT = 1 << 2,
- XEMBED_MODIFIER_SUPER = 1 << 3,
- XEMBED_MODIFIER_HYPER = 1 << 4
- };
-
-enum xembed_accelerator
- {
- XEMBED_ACCELERATOR_OVERLOADED = 1 << 0
- };
-
/* Defined in xterm.c */
extern Lisp_Object Qx_gtk_map_stock;
-extern void xembed_set_info (struct frame *f, enum xembed_info flags);
-extern void xembed_send_message (struct frame *f, Time time,
- enum xembed_message message,
- long detail, long data1, long data2);
/* Is the frame embedded into another application? */
@@ -1183,6 +1108,3 @@ extern void xembed_send_message (struct frame *f, Time time,
(nr).y = (ry), \
(nr).width = (rwidth), \
(nr).height = (rheight))
-
-/* arch-tag: 78a7972a-b18f-4694-861a-0780c4b3090e
- (do not change this comment) */
diff --git a/test/ChangeLog b/test/ChangeLog
index 3b1921c598..f555878cb4 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,24 @@
+2011-01-27 Chong Yidong <[email protected]>
+
+ * automated/font-parse-tests.el: Move from
+ font-parse-testsuite.el.
+
+2011-01-26 Chong Yidong <[email protected]>
+
+ * font-parse-testsuite.el (test-font-parse-data): New file.
+
+2011-01-13 Stefan Monnier <[email protected]>
+
+ * indent/prolog.prolog: Add tokenizing tests.
+
+2011-01-13 Christian Ohler <[email protected]>
+
+ * automated: New directory for automated tests.
+
+ * automated/ert-tests.el, automated/ert-x-tests.el: New files.
+
+ * automated/Makefile.in: New file.
+
2010-11-11 Stefan Monnier <[email protected]>
* indent/modula2.mod: New file.
@@ -218,10 +239,9 @@
;; Local Variables:
;; coding: utf-8
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2008-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -237,5 +257,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: 6f0d1c86-c141-46da-b387-cf17e38c7bf7
diff --git a/test/automated/Makefile.in b/test/automated/Makefile.in
new file mode 100644
index 0000000000..b16c972189
--- /dev/null
+++ b/test/automated/Makefile.in
@@ -0,0 +1,158 @@
+# Maintenance productions for the automated test directory
+# Copyright (C) 2010-2011 Free Software Foundation, Inc.
+
+# 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/>.
+
+SHELL = /bin/sh
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+abs_top_builddir = @abs_top_builddir@
+test = $(srcdir)
+VPATH = $(srcdir)
+lispsrc = $(top_srcdir)/lisp
+lisp = ${abs_top_builddir}/lisp
+
+# You can specify a different executable on the make command line,
+# e.g. "make EMACS=../src/emacs ...".
+
+# We sometimes change directory before running Emacs (typically when
+# building out-of-tree, we chdir to the source directory), so we need
+# to use an absolute file name.
+EMACS = ${abs_top_builddir}/src/emacs
+
+# Command line flags for Emacs.
+
+EMACSOPT = -batch --no-site-file --no-site-lisp
+
+# Extra flags to pass to the byte compiler
+BYTE_COMPILE_EXTRA_FLAGS =
+# For example to not display the undefined function warnings you can use this:
+# BYTE_COMPILE_EXTRA_FLAGS = --eval '(setq byte-compile-warnings (quote (not unresolved)))'
+# The example above is just for developers, it should not be used by default.
+
+# The actual Emacs command run in the targets below.
+emacs = EMACSLOADPATH=$(lispsrc):$(test) LC_ALL=C $(EMACS) $(EMACSOPT)
+
+# Common command to find subdirectories
+setwins=subdirs=`(find . -type d -print)`; \
+ for file in $$subdirs; do \
+ case $$file in */.* | */.*/* | */=* ) ;; \
+ *) wins="$$wins $$file" ;; \
+ esac; \
+ done
+
+all: test
+
+doit:
+
+
+# Files MUST be compiled one by one. If we compile several files in a
+# row (i.e., in the same instance of Emacs) we can't make sure that
+# the compilation environment is clean. We also set the load-path of
+# the Emacs used for compilation to the current directory and its
+# subdirectories, to make sure require's and load's in the files being
+# compiled find the right files.
+
+.SUFFIXES: .elc .el
+
+# An old-fashioned suffix rule, which, according to the GNU Make manual,
+# cannot have prerequisites.
+.el.elc:
+ @echo Compiling $<
+ @$(emacs) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile $<
+
+.PHONY: lisp-compile compile-main compile compile-always
+
+lisp-compile:
+ cd $(lisp); $(MAKE) $(MFLAGS) compile EMACS=$(EMACS)
+
+# In `compile-main' we could directly do
+# ... | xargs $(MAKE) $(MFLAGS) EMACS="$(EMACS)"
+# and it works, but it generates a lot of messages like
+# make[2]: « gnus/gnus-mlspl.elc » is up to date.
+# so instead, we use "xargs echo" to split the list of file into manageable
+# chunks and then use an intermediate `compile-targets' target so the
+# actual targets (the .elc files) are not mentioned as targets on the
+# make command line.
+
+
+.PHONY: compile-targets
+# TARGETS is set dynamically in the recursive call from `compile-main'.
+compile-targets: $(TARGETS)
+
+# Compile all the Elisp files that need it. Beware: it approximates
+# `no-byte-compile', so watch out for false-positives!
+compile-main: compile-clean lisp-compile
+ @(cd $(test); $(setwins); \
+ els=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.el |g'`; \
+ for el in $$els; do \
+ test -f $$el || continue; \
+ test ! -f $${el}c && GREP_OPTIONS= grep '^;.*no-byte-compile: t' $$el > /dev/null && continue; \
+ echo "$${el}c"; \
+ done | xargs echo) | \
+ while read chunk; do \
+ $(MAKE) $(MFLAGS) compile-targets EMACS="$(EMACS)" TARGETS="$$chunk"; \
+ done
+
+.PHONY: compile-clean
+# Erase left-over .elc files that do not have a corresponding .el file.
+compile-clean:
+ @cd $(test); $(setwins); \
+ elcs=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.elc |g'`; \
+ for el in $$(echo $$elcs | sed -e 's/\.elc/\.el/g'); do \
+ if test -f "$$el" -o \! -f "$${el}c"; then :; else \
+ echo rm "$${el}c"; \
+ rm "$${el}c"; \
+ fi \
+ done
+
+# Compile all Lisp files, but don't recompile those that are up to
+# date. Some .el files don't get compiled because they set the
+# local variable no-byte-compile.
+# Calling make recursively because suffix rule cannot have prerequisites.
+# Explicitly pass EMACS (sometimes ../src/bootstrap-emacs) to those
+# sub-makes that run rules that use it, for the sake of some non-GNU makes.
+compile: $(LOADDEFS) autoloads compile-first
+ $(MAKE) $(MFLAGS) compile-main EMACS=$(EMACS)
+
+# Compile all Lisp files. This is like `compile' but compiles files
+# unconditionally. Some files don't actually get compiled because they
+# set the local variable no-byte-compile.
+compile-always: doit
+ cd $(test); rm -f *.elc */*.elc */*/*.elc */*/*/*.elc
+ $(MAKE) $(MFLAGS) compile EMACS=$(EMACS)
+
+bootstrap-clean:
+ cd $(test); rm -f *.elc */*.elc */*/*.elc */*/*/*.elc
+
+distclean:
+ -rm -f ./Makefile
+
+maintainer-clean: distclean bootstrap-clean
+
+check: compile-main
+ @(cd $(test); $(setwins); \
+ pattern=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.el |g'`; \
+ for el in $$pattern; do \
+ test -f $$el || continue; \
+ args="$$args -l $$el"; \
+ els="$$els $$el"; \
+ done; \
+ echo Testing $$els; \
+ $(emacs) $$args -f ert-run-tests-batch-and-exit)
+
+# Makefile ends here.
diff --git a/test/automated/ert-tests.el b/test/automated/ert-tests.el
new file mode 100644
index 0000000000..b6d70dee7e
--- /dev/null
+++ b/test/automated/ert-tests.el
@@ -0,0 +1,949 @@
+;;; ert-tests.el --- ERT's self-tests
+
+;; Copyright (C) 2007-2008, 2010-2011 Free Software Foundation, Inc.
+
+;; Author: Christian Ohler <[email protected]>
+
+;; This file is part of GNU Emacs.
+
+;; 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/'.
+
+;;; Commentary:
+
+;; This file is part of ERT, the Emacs Lisp Regression Testing tool.
+;; See ert.el or the texinfo manual for more details.
+
+;;; Code:
+
+(eval-when-compile
+ (require 'cl))
+(require 'ert)
+
+
+;;; Self-test that doesn't rely on ERT, for bootstrapping.
+
+;; This is used to test that bodies actually run.
+(defvar ert--test-body-was-run)
+(ert-deftest ert-test-body-runs ()
+ (setq ert--test-body-was-run t))
+
+(defun ert-self-test ()
+ "Run ERT's self-tests and make sure they actually ran."
+ (let ((window-configuration (current-window-configuration)))
+ (let ((ert--test-body-was-run nil))
+ ;; The buffer name chosen here should not compete with the default
+ ;; results buffer name for completion in `switch-to-buffer'.
+ (let ((stats (ert-run-tests-interactively "^ert-" " *ert self-tests*")))
+ (assert ert--test-body-was-run)
+ (if (zerop (ert-stats-completed-unexpected stats))
+ ;; Hide results window only when everything went well.
+ (set-window-configuration window-configuration)
+ (error "ERT self-test failed"))))))
+
+(defun ert-self-test-and-exit ()
+ "Run ERT's self-tests and exit Emacs.
+
+The exit code will be zero if the tests passed, nonzero if they
+failed or if there was a problem."
+ (unwind-protect
+ (progn
+ (ert-self-test)
+ (kill-emacs 0))
+ (unwind-protect
+ (progn
+ (message "Error running tests")
+ (backtrace))
+ (kill-emacs 1))))
+
+
+;;; Further tests are defined using ERT.
+
+(ert-deftest ert-test-nested-test-body-runs ()
+ "Test that nested test bodies run."
+ (lexical-let ((was-run nil))
+ (let ((test (make-ert-test :body (lambda ()
+ (setq was-run t)))))
+ (assert (not was-run))
+ (ert-run-test test)
+ (assert was-run))))
+
+
+;;; Test that pass/fail works.
+(ert-deftest ert-test-pass ()
+ (let ((test (make-ert-test :body (lambda ()))))
+ (let ((result (ert-run-test test)))
+ (assert (ert-test-passed-p result)))))
+
+(ert-deftest ert-test-fail ()
+ (let ((test (make-ert-test :body (lambda () (ert-fail "failure message")))))
+ (let ((result (let ((ert-debug-on-error nil))
+ (ert-run-test test))))
+ (assert (ert-test-failed-p result) t)
+ (assert (equal (ert-test-result-with-condition-condition result)
+ '(ert-test-failed "failure message"))
+ t))))
+
+(ert-deftest ert-test-fail-debug-with-condition-case ()
+ (let ((test (make-ert-test :body (lambda () (ert-fail "failure message")))))
+ (condition-case condition
+ (progn
+ (let ((ert-debug-on-error t))
+ (ert-run-test test))
+ (assert nil))
+ ((error)
+ (assert (equal condition '(ert-test-failed "failure message")) t)))))
+
+(ert-deftest ert-test-fail-debug-with-debugger-1 ()
+ (let ((test (make-ert-test :body (lambda () (ert-fail "failure message")))))
+ (let ((debugger (lambda (&rest debugger-args)
+ (assert nil))))
+ (let ((ert-debug-on-error nil))
+ (ert-run-test test)))))
+
+(ert-deftest ert-test-fail-debug-with-debugger-2 ()
+ (let ((test (make-ert-test :body (lambda () (ert-fail "failure message")))))
+ (block nil
+ (let ((debugger (lambda (&rest debugger-args)
+ (return-from nil nil))))
+ (let ((ert-debug-on-error t))
+ (ert-run-test test))
+ (assert nil)))))
+
+(ert-deftest ert-test-fail-debug-nested-with-debugger ()
+ (let ((test (make-ert-test :body (lambda ()
+ (let ((ert-debug-on-error t))
+ (ert-fail "failure message"))))))
+ (let ((debugger (lambda (&rest debugger-args)
+ (assert nil nil "Assertion a"))))
+ (let ((ert-debug-on-error nil))
+ (ert-run-test test))))
+ (let ((test (make-ert-test :body (lambda ()
+ (let ((ert-debug-on-error nil))
+ (ert-fail "failure message"))))))
+ (block nil
+ (let ((debugger (lambda (&rest debugger-args)
+ (return-from nil nil))))
+ (let ((ert-debug-on-error t))
+ (ert-run-test test))
+ (assert nil nil "Assertion b")))))
+
+(ert-deftest ert-test-error ()
+ (let ((test (make-ert-test :body (lambda () (error "Error message")))))
+ (let ((result (let ((ert-debug-on-error nil))
+ (ert-run-test test))))
+ (assert (ert-test-failed-p result) t)
+ (assert (equal (ert-test-result-with-condition-condition result)
+ '(error "Error message"))
+ t))))
+
+(ert-deftest ert-test-error-debug ()
+ (let ((test (make-ert-test :body (lambda () (error "Error message")))))
+ (condition-case condition
+ (progn
+ (let ((ert-debug-on-error t))
+ (ert-run-test test))
+ (assert nil))
+ ((error)
+ (assert (equal condition '(error "Error message")) t)))))
+
+
+;;; Test that `should' works.
+(ert-deftest ert-test-should ()
+ (let ((test (make-ert-test :body (lambda () (should nil)))))
+ (let ((result (let ((ert-debug-on-error nil))
+ (ert-run-test test))))
+ (assert (ert-test-failed-p result) t)
+ (assert (equal (ert-test-result-with-condition-condition result)
+ '(ert-test-failed ((should nil) :form nil :value nil)))
+ t)))
+ (let ((test (make-ert-test :body (lambda () (should t)))))
+ (let ((result (ert-run-test test)))
+ (assert (ert-test-passed-p result) t))))
+
+(ert-deftest ert-test-should-value ()
+ (should (eql (should 'foo) 'foo))
+ (should (eql (should 'bar) 'bar)))
+
+(ert-deftest ert-test-should-not ()
+ (let ((test (make-ert-test :body (lambda () (should-not t)))))
+ (let ((result (let ((ert-debug-on-error nil))
+ (ert-run-test test))))
+ (assert (ert-test-failed-p result) t)
+ (assert (equal (ert-test-result-with-condition-condition result)
+ '(ert-test-failed ((should-not t) :form t :value t)))
+ t)))
+ (let ((test (make-ert-test :body (lambda () (should-not nil)))))
+ (let ((result (ert-run-test test)))
+ (assert (ert-test-passed-p result)))))
+
+(ert-deftest ert-test-should-with-macrolet ()
+ (let ((test (make-ert-test :body (lambda ()
+ (macrolet ((foo () `(progn t nil)))
+ (should (foo)))))))
+ (let ((result (let ((ert-debug-on-error nil))
+ (ert-run-test test))))
+ (should (ert-test-failed-p result))
+ (should (equal
+ (ert-test-result-with-condition-condition result)
+ '(ert-test-failed ((should (foo))
+ :form (progn t nil)
+ :value nil)))))))
+
+(ert-deftest ert-test-should-error ()
+ ;; No error.
+ (let ((test (make-ert-test :body (lambda () (should-error (progn))))))
+ (let ((result (let ((ert-debug-on-error nil))
+ (ert-run-test test))))
+ (should (ert-test-failed-p result))
+ (should (equal (ert-test-result-with-condition-condition result)
+ '(ert-test-failed
+ ((should-error (progn))
+ :form (progn)
+ :value nil
+ :fail-reason "did not signal an error"))))))
+ ;; A simple error.
+ (should (equal (should-error (error "Foo"))
+ '(error "Foo")))
+ ;; Error of unexpected type.
+ (let ((test (make-ert-test :body (lambda ()
+ (should-error (error "Foo")
+ :type 'singularity-error)))))
+ (let ((result (ert-run-test test)))
+ (should (ert-test-failed-p result))
+ (should (equal
+ (ert-test-result-with-condition-condition result)
+ '(ert-test-failed
+ ((should-error (error "Foo") :type 'singularity-error)
+ :form (error "Foo")
+ :condition (error "Foo")
+ :fail-reason
+ "the error signalled did not have the expected type"))))))
+ ;; Error of the expected type.
+ (let* ((error nil)
+ (test (make-ert-test
+ :body (lambda ()
+ (setq error
+ (should-error (signal 'singularity-error nil)
+ :type 'singularity-error))))))
+ (let ((result (ert-run-test test)))
+ (should (ert-test-passed-p result))
+ (should (equal error '(singularity-error))))))
+
+(ert-deftest ert-test-should-error-subtypes ()
+ (should-error (signal 'singularity-error nil)
+ :type 'singularity-error
+ :exclude-subtypes t)
+ (let ((test (make-ert-test
+ :body (lambda ()
+ (should-error (signal 'arith-error nil)
+ :type 'singularity-error)))))
+ (let ((result (ert-run-test test)))
+ (should (ert-test-failed-p result))
+ (should (equal
+ (ert-test-result-with-condition-condition result)
+ '(ert-test-failed
+ ((should-error (signal 'arith-error nil)
+ :type 'singularity-error)
+ :form (signal arith-error nil)
+ :condition (arith-error)
+ :fail-reason
+ "the error signalled did not have the expected type"))))))
+ (let ((test (make-ert-test
+ :body (lambda ()
+ (should-error (signal 'arith-error nil)
+ :type 'singularity-error
+ :exclude-subtypes t)))))
+ (let ((result (ert-run-test test)))
+ (should (ert-test-failed-p result))
+ (should (equal
+ (ert-test-result-with-condition-condition result)
+ '(ert-test-failed
+ ((should-error (signal 'arith-error nil)
+ :type 'singularity-error
+ :exclude-subtypes t)
+ :form (signal arith-error nil)
+ :condition (arith-error)
+ :fail-reason
+ "the error signalled did not have the expected type"))))))
+ (let ((test (make-ert-test
+ :body (lambda ()
+ (should-error (signal 'singularity-error nil)
+ :type 'arith-error
+ :exclude-subtypes t)))))
+ (let ((result (ert-run-test test)))
+ (should (ert-test-failed-p result))
+ (should (equal
+ (ert-test-result-with-condition-condition result)
+ '(ert-test-failed
+ ((should-error (signal 'singularity-error nil)
+ :type 'arith-error
+ :exclude-subtypes t)
+ :form (signal singularity-error nil)
+ :condition (singularity-error)
+ :fail-reason
+ "the error signalled was a subtype of the expected type")))))
+ ))
+
+(defmacro ert--test-my-list (&rest args)
+ "Don't use this. Instead, call `list' with ARGS, it does the same thing.
+
+This macro is used to test if macroexpansion in `should' works."
+ `(list ,@args))
+
+(ert-deftest ert-test-should-failure-debugging ()
+ "Test that `should' errors contain the information we expect them to."
+ (loop for (body expected-condition) in
+ `((,(lambda () (let ((x nil)) (should x)))
+ (ert-test-failed ((should x) :form x :value nil)))
+ (,(lambda () (let ((x t)) (should-not x)))
+ (ert-test-failed ((should-not x) :form x :value t)))
+ (,(lambda () (let ((x t)) (should (not x))))
+ (ert-test-failed ((should (not x)) :form (not t) :value nil)))
+ (,(lambda () (let ((x nil)) (should-not (not x))))
+ (ert-test-failed ((should-not (not x)) :form (not nil) :value t)))
+ (,(lambda () (let ((x t) (y nil)) (should-not
+ (ert--test-my-list x y))))
+ (ert-test-failed
+ ((should-not (ert--test-my-list x y))
+ :form (list t nil)
+ :value (t nil))))
+ (,(lambda () (let ((x t)) (should (error "Foo"))))
+ (error "Foo")))
+ do
+ (let ((test (make-ert-test :body body)))
+ (condition-case actual-condition
+ (progn
+ (let ((ert-debug-on-error t))
+ (ert-run-test test))
+ (assert nil))
+ ((error)
+ (should (equal actual-condition expected-condition)))))))
+
+(ert-deftest ert-test-deftest ()
+ (should (equal (macroexpand '(ert-deftest abc () "foo" :tags '(bar)))
+ '(progn
+ (ert-set-test 'abc
+ (make-ert-test :name 'abc
+ :documentation "foo"
+ :tags '(bar)
+ :body (lambda ())))
+ (push '(ert-deftest . abc) current-load-list)
+ 'abc)))
+ (should (equal (macroexpand '(ert-deftest def ()
+ :expected-result ':passed))
+ '(progn
+ (ert-set-test 'def
+ (make-ert-test :name 'def
+ :expected-result-type ':passed
+ :body (lambda ())))
+ (push '(ert-deftest . def) current-load-list)
+ 'def)))
+ ;; :documentation keyword is forbidden
+ (should-error (macroexpand '(ert-deftest ghi ()
+ :documentation "foo"))))
+
+(ert-deftest ert-test-record-backtrace ()
+ (let ((test (make-ert-test :body (lambda () (ert-fail "foo")))))
+ (let ((result (ert-run-test test)))
+ (should (ert-test-failed-p result))
+ (with-temp-buffer
+ (ert--print-backtrace (ert-test-failed-backtrace result))
+ (goto-char (point-min))
+ (end-of-line)
+ (let ((first-line (buffer-substring-no-properties (point-min) (point))))
+ (should (equal first-line " signal(ert-test-failed (\"foo\"))")))))))
+
+(ert-deftest ert-test-messages ()
+ :tags '(:causes-redisplay)
+ (let* ((message-string "Test message")
+ (messages-buffer (get-buffer-create "*Messages*"))
+ (test (make-ert-test :body (lambda () (message "%s" message-string)))))
+ (with-current-buffer messages-buffer
+ (let ((result (ert-run-test test)))
+ (should (equal (concat message-string "\n")
+ (ert-test-result-messages result)))))))
+
+(ert-deftest ert-test-running-tests ()
+ (let ((outer-test (ert-get-test 'ert-test-running-tests)))
+ (should (equal (ert-running-test) outer-test))
+ (let (test1 test2 test3)
+ (setq test1 (make-ert-test
+ :name "1"
+ :body (lambda ()
+ (should (equal (ert-running-test) outer-test))
+ (should (equal ert--running-tests
+ (list test1 test2 test3
+ outer-test)))))
+ test2 (make-ert-test
+ :name "2"
+ :body (lambda ()
+ (should (equal (ert-running-test) outer-test))
+ (should (equal ert--running-tests
+ (list test3 test2 outer-test)))
+ (ert-run-test test1)))
+ test3 (make-ert-test
+ :name "3"
+ :body (lambda ()
+ (should (equal (ert-running-test) outer-test))
+ (should (equal ert--running-tests
+ (list test3 outer-test)))
+ (ert-run-test test2))))
+ (should (ert-test-passed-p (ert-run-test test3))))))
+
+(ert-deftest ert-test-test-result-expected-p ()
+ "Test `ert-test-result-expected-p' and (implicitly) `ert-test-result-type-p'."
+ ;; passing test
+ (let ((test (make-ert-test :body (lambda ()))))
+ (should (ert-test-result-expected-p test (ert-run-test test))))
+ ;; unexpected failure
+ (let ((test (make-ert-test :body (lambda () (ert-fail "failed")))))
+ (should-not (ert-test-result-expected-p test (ert-run-test test))))
+ ;; expected failure
+ (let ((test (make-ert-test :body (lambda () (ert-fail "failed"))
+ :expected-result-type ':failed)))
+ (should (ert-test-result-expected-p test (ert-run-test test))))
+ ;; `not' expected type
+ (let ((test (make-ert-test :body (lambda ())
+ :expected-result-type '(not :failed))))
+ (should (ert-test-result-expected-p test (ert-run-test test))))
+ (let ((test (make-ert-test :body (lambda ())
+ :expected-result-type '(not :passed))))
+ (should-not (ert-test-result-expected-p test (ert-run-test test))))
+ ;; `and' expected type
+ (let ((test (make-ert-test :body (lambda ())
+ :expected-result-type '(and :passed :failed))))
+ (should-not (ert-test-result-expected-p test (ert-run-test test))))
+ (let ((test (make-ert-test :body (lambda ())
+ :expected-result-type '(and :passed
+ (not :failed)))))
+ (should (ert-test-result-expected-p test (ert-run-test test))))
+ ;; `or' expected type
+ (let ((test (make-ert-test :body (lambda ())
+ :expected-result-type '(or (and :passed :failed)
+ :passed))))
+ (should (ert-test-result-expected-p test (ert-run-test test))))
+ (let ((test (make-ert-test :body (lambda ())
+ :expected-result-type '(or (and :passed :failed)
+ nil (not t)))))
+ (should-not (ert-test-result-expected-p test (ert-run-test test)))))
+
+;;; Test `ert-select-tests'.
+(ert-deftest ert-test-select-regexp ()
+ (should (equal (ert-select-tests "^ert-test-select-regexp$" t)
+ (list (ert-get-test 'ert-test-select-regexp)))))
+
+(ert-deftest ert-test-test-boundp ()
+ (should (ert-test-boundp 'ert-test-test-boundp))
+ (should-not (ert-test-boundp (make-symbol "ert-not-a-test"))))
+
+(ert-deftest ert-test-select-member ()
+ (should (equal (ert-select-tests '(member ert-test-select-member) t)
+ (list (ert-get-test 'ert-test-select-member)))))
+
+(ert-deftest ert-test-select-test ()
+ (should (equal (ert-select-tests (ert-get-test 'ert-test-select-test) t)
+ (list (ert-get-test 'ert-test-select-test)))))
+
+(ert-deftest ert-test-select-symbol ()
+ (should (equal (ert-select-tests 'ert-test-select-symbol t)
+ (list (ert-get-test 'ert-test-select-symbol)))))
+
+(ert-deftest ert-test-select-and ()
+ (let ((test (make-ert-test
+ :name nil
+ :body nil
+ :most-recent-result (make-ert-test-failed
+ :condition nil
+ :backtrace nil
+ :infos nil))))
+ (should (equal (ert-select-tests `(and (member ,test) :failed) t)
+ (list test)))))
+
+(ert-deftest ert-test-select-tag ()
+ (let ((test (make-ert-test
+ :name nil
+ :body nil
+ :tags '(a b))))
+ (should (equal (ert-select-tests `(tag a) (list test)) (list test)))
+ (should (equal (ert-select-tests `(tag b) (list test)) (list test)))
+ (should (equal (ert-select-tests `(tag c) (list test)) '()))))
+
+
+;;; Tests for utility functions.
+(ert-deftest ert-test-proper-list-p ()
+ (should (ert--proper-list-p '()))
+ (should (ert--proper-list-p '(1)))
+ (should (ert--proper-list-p '(1 2)))
+ (should (ert--proper-list-p '(1 2 3)))
+ (should (ert--proper-list-p '(1 2 3 4)))
+ (should (not (ert--proper-list-p 'a)))
+ (should (not (ert--proper-list-p '(1 . a))))
+ (should (not (ert--proper-list-p '(1 2 . a))))
+ (should (not (ert--proper-list-p '(1 2 3 . a))))
+ (should (not (ert--proper-list-p '(1 2 3 4 . a))))
+ (let ((a (list 1)))
+ (setf (cdr (last a)) a)
+ (should (not (ert--proper-list-p a))))
+ (let ((a (list 1 2)))
+ (setf (cdr (last a)) a)
+ (should (not (ert--proper-list-p a))))
+ (let ((a (list 1 2 3)))
+ (setf (cdr (last a)) a)
+ (should (not (ert--proper-list-p a))))
+ (let ((a (list 1 2 3 4)))
+ (setf (cdr (last a)) a)
+ (should (not (ert--proper-list-p a))))
+ (let ((a (list 1 2)))
+ (setf (cdr (last a)) (cdr a))
+ (should (not (ert--proper-list-p a))))
+ (let ((a (list 1 2 3)))
+ (setf (cdr (last a)) (cdr a))
+ (should (not (ert--proper-list-p a))))
+ (let ((a (list 1 2 3 4)))
+ (setf (cdr (last a)) (cdr a))
+ (should (not (ert--proper-list-p a))))
+ (let ((a (list 1 2 3)))
+ (setf (cdr (last a)) (cddr a))
+ (should (not (ert--proper-list-p a))))
+ (let ((a (list 1 2 3 4)))
+ (setf (cdr (last a)) (cddr a))
+ (should (not (ert--proper-list-p a))))
+ (let ((a (list 1 2 3 4)))
+ (setf (cdr (last a)) (cdddr a))
+ (should (not (ert--proper-list-p a)))))
+
+(ert-deftest ert-test-parse-keys-and-body ()
+ (should (equal (ert--parse-keys-and-body '(foo)) '(nil (foo))))
+ (should (equal (ert--parse-keys-and-body '(:bar foo)) '((:bar foo) nil)))
+ (should (equal (ert--parse-keys-and-body '(:bar foo a (b)))
+ '((:bar foo) (a (b)))))
+ (should (equal (ert--parse-keys-and-body '(:bar foo :a (b)))
+ '((:bar foo :a (b)) nil)))
+ (should (equal (ert--parse-keys-and-body '(bar foo :a (b)))
+ '(nil (bar foo :a (b)))))
+ (should-error (ert--parse-keys-and-body '(:bar foo :a))))
+
+
+(ert-deftest ert-test-run-tests-interactively ()
+ :tags '(:causes-redisplay)
+ (let ((passing-test (make-ert-test :name 'passing-test
+ :body (lambda () (ert-pass))))
+ (failing-test (make-ert-test :name 'failing-test
+ :body (lambda () (ert-fail
+ "failure message")))))
+ (let ((ert-debug-on-error nil))
+ (let* ((buffer-name (generate-new-buffer-name " *ert-test-run-tests*"))
+ (messages nil)
+ (mock-message-fn
+ (lambda (format-string &rest args)
+ (push (apply #'format format-string args) messages))))
+ (save-window-excursion
+ (unwind-protect
+ (let ((case-fold-search nil))
+ (ert-run-tests-interactively
+ `(member ,passing-test ,failing-test) buffer-name
+ mock-message-fn)
+ (should (equal messages `(,(concat
+ "Ran 2 tests, 1 results were "
+ "as expected, 1 unexpected"))))
+ (with-current-buffer buffer-name
+ (goto-char (point-min))
+ (should (equal
+ (buffer-substring (point-min)
+ (save-excursion
+ (forward-line 4)
+ (point)))
+ (concat
+ "Selector: (member <passing-test> <failing-test>)\n"
+ "Passed: 1\n"
+ "Failed: 1 (1 unexpected)\n"
+ "Total: 2/2\n")))))
+ (when (get-buffer buffer-name)
+ (kill-buffer buffer-name))))))))
+
+(ert-deftest ert-test-special-operator-p ()
+ (should (ert--special-operator-p 'if))
+ (should-not (ert--special-operator-p 'car))
+ (should-not (ert--special-operator-p 'ert--special-operator-p))
+ (let ((b (ert--gensym)))
+ (should-not (ert--special-operator-p b))
+ (fset b 'if)
+ (should (ert--special-operator-p b))))
+
+(ert-deftest ert-test-list-of-should-forms ()
+ (let ((test (make-ert-test :body (lambda ()
+ (should t)
+ (should (null '()))
+ (should nil)
+ (should t)))))
+ (let ((result (let ((ert-debug-on-error nil))
+ (ert-run-test test))))
+ (should (equal (ert-test-result-should-forms result)
+ '(((should t) :form t :value t)
+ ((should (null '())) :form (null nil) :value t)
+ ((should nil) :form nil :value nil)))))))
+
+(ert-deftest ert-test-list-of-should-forms-observers-should-not-stack ()
+ (let ((test (make-ert-test
+ :body (lambda ()
+ (let ((test2 (make-ert-test
+ :body (lambda ()
+ (should t)))))
+ (let ((result (ert-run-test test2)))
+ (should (ert-test-passed-p result))))))))
+ (let ((result (let ((ert-debug-on-error nil))
+ (ert-run-test test))))
+ (should (ert-test-passed-p result))
+ (should (eql (length (ert-test-result-should-forms result))
+ 1)))))
+
+(ert-deftest ert-test-list-of-should-forms-no-deep-copy ()
+ (let ((test (make-ert-test :body (lambda ()
+ (let ((obj (list 'a)))
+ (should (equal obj '(a)))
+ (setf (car obj) 'b)
+ (should (equal obj '(b))))))))
+ (let ((result (let ((ert-debug-on-error nil))
+ (ert-run-test test))))
+ (should (ert-test-passed-p result))
+ (should (equal (ert-test-result-should-forms result)
+ '(((should (equal obj '(a))) :form (equal (b) (a)) :value t
+ :explanation nil)
+ ((should (equal obj '(b))) :form (equal (b) (b)) :value t
+ :explanation nil)
+ ))))))
+
+(ert-deftest ert-test-remprop ()
+ (let ((x (ert--gensym)))
+ (should (equal (symbol-plist x) '()))
+ ;; Remove nonexistent property on empty plist.
+ (ert--remprop x 'b)
+ (should (equal (symbol-plist x) '()))
+ (put x 'a 1)
+ (should (equal (symbol-plist x) '(a 1)))
+ ;; Remove nonexistent property on nonempty plist.
+ (ert--remprop x 'b)
+ (should (equal (symbol-plist x) '(a 1)))
+ (put x 'b 2)
+ (put x 'c 3)
+ (put x 'd 4)
+ (should (equal (symbol-plist x) '(a 1 b 2 c 3 d 4)))
+ ;; Remove property that is neither first nor last.
+ (ert--remprop x 'c)
+ (should (equal (symbol-plist x) '(a 1 b 2 d 4)))
+ ;; Remove last property from a plist of length >1.
+ (ert--remprop x 'd)
+ (should (equal (symbol-plist x) '(a 1 b 2)))
+ ;; Remove first property from a plist of length >1.
+ (ert--remprop x 'a)
+ (should (equal (symbol-plist x) '(b 2)))
+ ;; Remove property when there is only one.
+ (ert--remprop x 'b)
+ (should (equal (symbol-plist x) '()))))
+
+(ert-deftest ert-test-remove-if-not ()
+ (let ((list (list 'a 'b 'c 'd))
+ (i 0))
+ (let ((result (ert--remove-if-not (lambda (x)
+ (should (eql x (nth i list)))
+ (incf i)
+ (member i '(2 3)))
+ list)))
+ (should (equal i 4))
+ (should (equal result '(b c)))
+ (should (equal list '(a b c d)))))
+ (should (equal '()
+ (ert--remove-if-not (lambda (x) (should nil)) '()))))
+
+(ert-deftest ert-test-remove* ()
+ (let ((list (list 'a 'b 'c 'd))
+ (key-index 0)
+ (test-index 0))
+ (let ((result
+ (ert--remove* 'foo list
+ :key (lambda (x)
+ (should (eql x (nth key-index list)))
+ (prog1
+ (list key-index x)
+ (incf key-index)))
+ :test
+ (lambda (a b)
+ (should (eql a 'foo))
+ (should (equal b (list test-index
+ (nth test-index list))))
+ (incf test-index)
+ (member test-index '(2 3))))))
+ (should (equal key-index 4))
+ (should (equal test-index 4))
+ (should (equal result '(a d)))
+ (should (equal list '(a b c d)))))
+ (let ((x (cons nil nil))
+ (y (cons nil nil)))
+ (should (equal (ert--remove* x (list x y))
+ ;; or (list x), since we use `equal' -- the
+ ;; important thing is that only one element got
+ ;; removed, this proves that the default test is
+ ;; `eql', not `equal'
+ (list y)))))
+
+
+(ert-deftest ert-test-set-functions ()
+ (let ((c1 (cons nil nil))
+ (c2 (cons nil nil))
+ (sym (make-symbol "a")))
+ (let ((e '())
+ (a (list 'a 'b sym nil "" "x" c1 c2))
+ (b (list c1 'y 'b sym 'x)))
+ (should (equal (ert--set-difference e e) e))
+ (should (equal (ert--set-difference a e) a))
+ (should (equal (ert--set-difference e a) e))
+ (should (equal (ert--set-difference a a) e))
+ (should (equal (ert--set-difference b e) b))
+ (should (equal (ert--set-difference e b) e))
+ (should (equal (ert--set-difference b b) e))
+ (should (equal (ert--set-difference a b) (list 'a nil "" "x" c2)))
+ (should (equal (ert--set-difference b a) (list 'y 'x)))
+
+ ;; We aren't testing whether this is really using `eq' rather than `eql'.
+ (should (equal (ert--set-difference-eq e e) e))
+ (should (equal (ert--set-difference-eq a e) a))
+ (should (equal (ert--set-difference-eq e a) e))
+ (should (equal (ert--set-difference-eq a a) e))
+ (should (equal (ert--set-difference-eq b e) b))
+ (should (equal (ert--set-difference-eq e b) e))
+ (should (equal (ert--set-difference-eq b b) e))
+ (should (equal (ert--set-difference-eq a b) (list 'a nil "" "x" c2)))
+ (should (equal (ert--set-difference-eq b a) (list 'y 'x)))
+
+ (should (equal (ert--union e e) e))
+ (should (equal (ert--union a e) a))
+ (should (equal (ert--union e a) a))
+ (should (equal (ert--union a a) a))
+ (should (equal (ert--union b e) b))
+ (should (equal (ert--union e b) b))
+ (should (equal (ert--union b b) b))
+ (should (equal (ert--union a b) (list 'a 'b sym nil "" "x" c1 c2 'y 'x)))
+ (should (equal (ert--union b a) (list c1 'y 'b sym 'x 'a nil "" "x" c2)))
+
+ (should (equal (ert--intersection e e) e))
+ (should (equal (ert--intersection a e) e))
+ (should (equal (ert--intersection e a) e))
+ (should (equal (ert--intersection a a) a))
+ (should (equal (ert--intersection b e) e))
+ (should (equal (ert--intersection e b) e))
+ (should (equal (ert--intersection b b) b))
+ (should (equal (ert--intersection a b) (list 'b sym c1)))
+ (should (equal (ert--intersection b a) (list c1 'b sym))))))
+
+(ert-deftest ert-test-gensym ()
+ ;; Since the expansion of `should' calls `ert--gensym' and thus has a
+ ;; side-effect on `ert--gensym-counter', we have to make sure all
+ ;; macros in our test body are expanded before we rebind
+ ;; `ert--gensym-counter' and run the body. Otherwise, the test would
+ ;; fail if run interpreted.
+ (let ((body (byte-compile
+ '(lambda ()
+ (should (equal (symbol-name (ert--gensym)) "G0"))
+ (should (equal (symbol-name (ert--gensym)) "G1"))
+ (should (equal (symbol-name (ert--gensym)) "G2"))
+ (should (equal (symbol-name (ert--gensym "foo")) "foo3"))
+ (should (equal (symbol-name (ert--gensym "bar")) "bar4"))
+ (should (equal ert--gensym-counter 5))))))
+ (let ((ert--gensym-counter 0))
+ (funcall body))))
+
+(ert-deftest ert-test-coerce-to-vector ()
+ (let* ((a (vector))
+ (b (vector 1 a 3))
+ (c (list))
+ (d (list b a)))
+ (should (eql (ert--coerce-to-vector a) a))
+ (should (eql (ert--coerce-to-vector b) b))
+ (should (equal (ert--coerce-to-vector c) (vector)))
+ (should (equal (ert--coerce-to-vector d) (vector b a)))))
+
+(ert-deftest ert-test-string-position ()
+ (should (eql (ert--string-position ?x "") nil))
+ (should (eql (ert--string-position ?a "abc") 0))
+ (should (eql (ert--string-position ?b "abc") 1))
+ (should (eql (ert--string-position ?c "abc") 2))
+ (should (eql (ert--string-position ?d "abc") nil))
+ (should (eql (ert--string-position ?A "abc") nil)))
+
+(ert-deftest ert-test-mismatch ()
+ (should (eql (ert--mismatch "" "") nil))
+ (should (eql (ert--mismatch "" "a") 0))
+ (should (eql (ert--mismatch "a" "a") nil))
+ (should (eql (ert--mismatch "ab" "a") 1))
+ (should (eql (ert--mismatch "Aa" "aA") 0))
+ (should (eql (ert--mismatch '(a b c) '(a b d)) 2)))
+
+(ert-deftest ert-test-string-first-line ()
+ (should (equal (ert--string-first-line "") ""))
+ (should (equal (ert--string-first-line "abc") "abc"))
+ (should (equal (ert--string-first-line "abc\n") "abc"))
+ (should (equal (ert--string-first-line "foo\nbar") "foo"))
+ (should (equal (ert--string-first-line " foo\nbar\nbaz\n") " foo")))
+
+(ert-deftest ert-test-explain-not-equal ()
+ (should (equal (ert--explain-not-equal nil 'foo)
+ '(different-atoms nil foo)))
+ (should (equal (ert--explain-not-equal '(a a) '(a b))
+ '(list-elt 1 (different-atoms a b))))
+ (should (equal (ert--explain-not-equal '(1 48) '(1 49))
+ '(list-elt 1 (different-atoms (48 "#x30" "?0")
+ (49 "#x31" "?1")))))
+ (should (equal (ert--explain-not-equal 'nil '(a))
+ '(different-types nil (a))))
+ (should (equal (ert--explain-not-equal '(a b c) '(a b c d))
+ '(proper-lists-of-different-length 3 4 (a b c) (a b c d)
+ first-mismatch-at 3)))
+ (let ((sym (make-symbol "a")))
+ (should (equal (ert--explain-not-equal 'a sym)
+ `(different-symbols-with-the-same-name a ,sym)))))
+
+(ert-deftest ert-test-explain-not-equal-improper-list ()
+ (should (equal (ert--explain-not-equal '(a . b) '(a . c))
+ '(cdr (different-atoms b c)))))
+
+(ert-deftest ert-test-significant-plist-keys ()
+ (should (equal (ert--significant-plist-keys '()) '()))
+ (should (equal (ert--significant-plist-keys '(a b c d e f c g p q r nil s t))
+ '(a c e p s))))
+
+(ert-deftest ert-test-plist-difference-explanation ()
+ (should (equal (ert--plist-difference-explanation
+ '(a b c nil) '(a b))
+ nil))
+ (should (equal (ert--plist-difference-explanation
+ '(a b c t) '(a b))
+ '(different-properties-for-key c (different-atoms t nil))))
+ (should (equal (ert--plist-difference-explanation
+ '(a b c t) '(c nil a b))
+ '(different-properties-for-key c (different-atoms t nil))))
+ (should (equal (ert--plist-difference-explanation
+ '(a b c (foo . bar)) '(c (foo . baz) a b))
+ '(different-properties-for-key c
+ (cdr
+ (different-atoms bar baz))))))
+
+(ert-deftest ert-test-abbreviate-string ()
+ (should (equal (ert--abbreviate-string "foo" 4 nil) "foo"))
+ (should (equal (ert--abbreviate-string "foo" 3 nil) "foo"))
+ (should (equal (ert--abbreviate-string "foo" 3 nil) "foo"))
+ (should (equal (ert--abbreviate-string "foo" 2 nil) "fo"))
+ (should (equal (ert--abbreviate-string "foo" 1 nil) "f"))
+ (should (equal (ert--abbreviate-string "foo" 0 nil) ""))
+ (should (equal (ert--abbreviate-string "bar" 4 t) "bar"))
+ (should (equal (ert--abbreviate-string "bar" 3 t) "bar"))
+ (should (equal (ert--abbreviate-string "bar" 3 t) "bar"))
+ (should (equal (ert--abbreviate-string "bar" 2 t) "ar"))
+ (should (equal (ert--abbreviate-string "bar" 1 t) "r"))
+ (should (equal (ert--abbreviate-string "bar" 0 t) "")))
+
+(ert-deftest ert-test-explain-not-equal-string-properties ()
+ (should
+ (equal (ert--explain-not-equal-including-properties #("foo" 0 1 (a b))
+ "foo")
+ '(char 0 "f"
+ (different-properties-for-key a (different-atoms b nil))
+ context-before ""
+ context-after "oo")))
+ (should (equal (ert--explain-not-equal-including-properties
+ #("foo" 1 3 (a b))
+ #("goo" 0 1 (c d)))
+ '(array-elt 0 (different-atoms (?f "#x66" "?f")
+ (?g "#x67" "?g")))))
+ (should
+ (equal (ert--explain-not-equal-including-properties
+ #("foo" 0 1 (a b c d) 1 3 (a b))
+ #("foo" 0 1 (c d a b) 1 2 (a foo)))
+ '(char 1 "o" (different-properties-for-key a (different-atoms b foo))
+ context-before "f" context-after "o"))))
+
+(ert-deftest ert-test-equal-including-properties ()
+ (should (equal-including-properties "foo" "foo"))
+ (should (ert-equal-including-properties "foo" "foo"))
+
+ (should (equal-including-properties #("foo" 0 3 (a b))
+ (propertize "foo" 'a 'b)))
+ (should (ert-equal-including-properties #("foo" 0 3 (a b))
+ (propertize "foo" 'a 'b)))
+
+ (should (equal-including-properties #("foo" 0 3 (a b c d))
+ (propertize "foo" 'a 'b 'c 'd)))
+ (should (ert-equal-including-properties #("foo" 0 3 (a b c d))
+ (propertize "foo" 'a 'b 'c 'd)))
+
+ (should-not (equal-including-properties #("foo" 0 3 (a b c e))
+ (propertize "foo" 'a 'b 'c 'd)))
+ (should-not (ert-equal-including-properties #("foo" 0 3 (a b c e))
+ (propertize "foo" 'a 'b 'c 'd)))
+
+ ;; This is bug 6581.
+ (should-not (equal-including-properties #("foo" 0 3 (a (t)))
+ (propertize "foo" 'a (list t))))
+ (should (ert-equal-including-properties #("foo" 0 3 (a (t)))
+ (propertize "foo" 'a (list t)))))
+
+(ert-deftest ert-test-stats-set-test-and-result ()
+ (let* ((test-1 (make-ert-test :name 'test-1
+ :body (lambda () nil)))
+ (test-2 (make-ert-test :name 'test-2
+ :body (lambda () nil)))
+ (test-3 (make-ert-test :name 'test-2
+ :body (lambda () nil)))
+ (stats (ert--make-stats (list test-1 test-2) 't))
+ (failed (make-ert-test-failed :condition nil
+ :backtrace nil
+ :infos nil)))
+ (should (eql 2 (ert-stats-total stats)))
+ (should (eql 0 (ert-stats-completed stats)))
+ (should (eql 0 (ert-stats-completed-expected stats)))
+ (should (eql 0 (ert-stats-completed-unexpected stats)))
+ (ert--stats-set-test-and-result stats 0 test-1 (make-ert-test-passed))
+ (should (eql 2 (ert-stats-total stats)))
+ (should (eql 1 (ert-stats-completed stats)))
+ (should (eql 1 (ert-stats-completed-expected stats)))
+ (should (eql 0 (ert-stats-completed-unexpected stats)))
+ (ert--stats-set-test-and-result stats 0 test-1 failed)
+ (should (eql 2 (ert-stats-total stats)))
+ (should (eql 1 (ert-stats-completed stats)))
+ (should (eql 0 (ert-stats-completed-expected stats)))
+ (should (eql 1 (ert-stats-completed-unexpected stats)))
+ (ert--stats-set-test-and-result stats 0 test-1 nil)
+ (should (eql 2 (ert-stats-total stats)))
+ (should (eql 0 (ert-stats-completed stats)))
+ (should (eql 0 (ert-stats-completed-expected stats)))
+ (should (eql 0 (ert-stats-completed-unexpected stats)))
+ (ert--stats-set-test-and-result stats 0 test-3 failed)
+ (should (eql 2 (ert-stats-total stats)))
+ (should (eql 1 (ert-stats-completed stats)))
+ (should (eql 0 (ert-stats-completed-expected stats)))
+ (should (eql 1 (ert-stats-completed-unexpected stats)))
+ (ert--stats-set-test-and-result stats 1 test-2 (make-ert-test-passed))
+ (should (eql 2 (ert-stats-total stats)))
+ (should (eql 2 (ert-stats-completed stats)))
+ (should (eql 1 (ert-stats-completed-expected stats)))
+ (should (eql 1 (ert-stats-completed-unexpected stats)))
+ (ert--stats-set-test-and-result stats 0 test-1 (make-ert-test-passed))
+ (should (eql 2 (ert-stats-total stats)))
+ (should (eql 2 (ert-stats-completed stats)))
+ (should (eql 2 (ert-stats-completed-expected stats)))
+ (should (eql 0 (ert-stats-completed-unexpected stats)))))
+
+
+(provide 'ert-tests)
+
+;;; ert-tests.el ends here
diff --git a/test/automated/ert-x-tests.el b/test/automated/ert-x-tests.el
new file mode 100644
index 0000000000..f6f6f74b68
--- /dev/null
+++ b/test/automated/ert-x-tests.el
@@ -0,0 +1,273 @@
+;;; ert-x-tests.el --- Tests for ert-x.el
+
+;; Copyright (C) 2008, 2010-2011 Free Software Foundation, Inc.
+
+;; Author: Phil Hagelberg
+;; Author: Christian Ohler <[email protected]>
+
+;; This file is part of GNU Emacs.
+
+;; 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/'.
+
+;;; Commentary:
+
+;; This file is part of ERT, the Emacs Lisp Regression Testing tool.
+;; See ert.el or the texinfo manual for more details.
+
+;;; Code:
+
+(eval-when-compile
+ (require 'cl))
+(require 'ert)
+(require 'ert-x)
+
+;;; Utilities
+
+(ert-deftest ert-test-buffer-string-reindented ()
+ (ert-with-test-buffer (:name "well-indented")
+ (insert (concat "(hello (world\n"
+ " 'elisp)\n"))
+ (emacs-lisp-mode)
+ (should (equal (ert-buffer-string-reindented) (buffer-string))))
+ (ert-with-test-buffer (:name "badly-indented")
+ (insert (concat "(hello\n"
+ " world)"))
+ (emacs-lisp-mode)
+ (should-not (equal (ert-buffer-string-reindented) (buffer-string)))))
+
+(defun ert--hash-table-to-alist (table)
+ (let ((accu nil))
+ (maphash (lambda (key value)
+ (push (cons key value) accu))
+ table)
+ (nreverse accu)))
+
+(ert-deftest ert-test-test-buffers ()
+ (let (buffer-1
+ buffer-2)
+ (let ((test-1
+ (make-ert-test
+ :name 'test-1
+ :body (lambda ()
+ (ert-with-test-buffer (:name "foo")
+ (should (string-match
+ "[*]Test buffer (ert-test-test-buffers): foo[*]"
+ (buffer-name)))
+ (setq buffer-1 (current-buffer))))))
+ (test-2
+ (make-ert-test
+ :name 'test-2
+ :body (lambda ()
+ (ert-with-test-buffer (:name "bar")
+ (should (string-match
+ "[*]Test buffer (ert-test-test-buffers): bar[*]"
+ (buffer-name)))
+ (setq buffer-2 (current-buffer))
+ (ert-fail "fail for test"))))))
+ (let ((ert--test-buffers (make-hash-table :weakness t)))
+ (ert-run-tests `(member ,test-1 ,test-2) #'ignore)
+ (should (equal (ert--hash-table-to-alist ert--test-buffers)
+ `((,buffer-2 . t))))
+ (should-not (buffer-live-p buffer-1))
+ (should (buffer-live-p buffer-2))))))
+
+
+(ert-deftest ert-filter-string ()
+ (should (equal (ert-filter-string "foo bar baz" "quux")
+ "foo bar baz"))
+ (should (equal (ert-filter-string "foo bar baz" "bar")
+ "foo baz")))
+
+(ert-deftest ert-propertized-string ()
+ (should (ert-equal-including-properties
+ (ert-propertized-string "a" '(a b) "b" '(c t) "cd")
+ #("abcd" 1 2 (a b) 2 4 (c t))))
+ (should (ert-equal-including-properties
+ (ert-propertized-string "foo " '(face italic) "bar" " baz" nil
+ " quux")
+ #("foo bar baz quux" 4 11 (face italic)))))
+
+
+;;; Tests for ERT itself that require test features from ert-x.el.
+
+(ert-deftest ert-test-run-tests-interactively-2 ()
+ :tags '(:causes-redisplay)
+ (let ((passing-test (make-ert-test :name 'passing-test
+ :body (lambda () (ert-pass))))
+ (failing-test (make-ert-test :name 'failing-test
+ :body (lambda ()
+ (ert-info ((propertize "foo\nbar"
+ 'a 'b))
+ (ert-fail
+ "failure message"))))))
+ (let ((ert-debug-on-error nil))
+ (let* ((buffer-name (generate-new-buffer-name "*ert-test-run-tests*"))
+ (messages nil)
+ (mock-message-fn
+ (lambda (format-string &rest args)
+ (push (apply #'format format-string args) messages))))
+ (flet ((expected-string (with-font-lock-p)
+ (ert-propertized-string
+ "Selector: (member <passing-test> <failing-test>)\n"
+ "Passed: 1\n"
+ "Failed: 1 (1 unexpected)\n"
+ "Total: 2/2\n\n"
+ "Started at:\n"
+ "Finished.\n"
+ "Finished at:\n\n"
+ `(category ,(button-category-symbol
+ 'ert--results-progress-bar-button)
+ button (t)
+ face ,(if with-font-lock-p
+ 'ert-test-result-unexpected
+ 'button))
+ ".F" nil "\n\n"
+ `(category ,(button-category-symbol
+ 'ert--results-expand-collapse-button)
+ button (t)
+ face ,(if with-font-lock-p
+ 'ert-test-result-unexpected
+ 'button))
+ "F" nil " "
+ `(category ,(button-category-symbol
+ 'ert--test-name-button)
+ button (t)
+ ert-test-name failing-test)
+ "failing-test"
+ nil "\n Info: " '(a b) "foo\n"
+ nil " " '(a b) "bar"
+ nil "\n (ert-test-failed \"failure message\")\n\n\n"
+ )))
+ (save-window-excursion
+ (unwind-protect
+ (let ((case-fold-search nil))
+ (ert-run-tests-interactively
+ `(member ,passing-test ,failing-test) buffer-name
+ mock-message-fn)
+ (should (equal messages `(,(concat
+ "Ran 2 tests, 1 results were "
+ "as expected, 1 unexpected"))))
+ (with-current-buffer buffer-name
+ (font-lock-mode 0)
+ (should (ert-equal-including-properties
+ (ert-filter-string (buffer-string)
+ '("Started at:\\(.*\\)$" 1)
+ '("Finished at:\\(.*\\)$" 1))
+ (expected-string nil)))
+ ;; `font-lock-mode' only works if interactive, so
+ ;; pretend we are.
+ (let ((noninteractive nil))
+ (font-lock-mode 1))
+ (should (ert-equal-including-properties
+ (ert-filter-string (buffer-string)
+ '("Started at:\\(.*\\)$" 1)
+ '("Finished at:\\(.*\\)$" 1))
+ (expected-string t)))))
+ (when (get-buffer buffer-name)
+ (kill-buffer buffer-name)))))))))
+
+(ert-deftest ert-test-describe-test ()
+ "Tests `ert-describe-test'."
+ (save-window-excursion
+ (ert-with-buffer-renamed ("*Help*")
+ (if (< emacs-major-version 24)
+ (should (equal (should-error (ert-describe-test 'ert-describe-test))
+ '(error "Requires Emacs 24")))
+ (ert-describe-test 'ert-test-describe-test)
+ (with-current-buffer "*Help*"
+ (let ((case-fold-search nil))
+ (should (string-match (concat
+ "\\`ert-test-describe-test is a test"
+ " defined in `ert-x-tests.elc?'\\.\n\n"
+ "Tests `ert-describe-test'\\.\n\\'")
+ (buffer-string)))))))))
+
+(ert-deftest ert-test-message-log-truncation ()
+ :tags '(:causes-redisplay)
+ (let ((test (make-ert-test
+ :body (lambda ()
+ ;; Emacs would combine messages if we
+ ;; generate the same message multiple
+ ;; times.
+ (message "a")
+ (message "b")
+ (message "c")
+ (message "d")))))
+ (let (result)
+ (ert-with-buffer-renamed ("*Messages*")
+ (let ((message-log-max 2))
+ (setq result (ert-run-test test)))
+ (should (equal (with-current-buffer "*Messages*"
+ (buffer-string))
+ "c\nd\n")))
+ (should (equal (ert-test-result-messages result) "a\nb\nc\nd\n")))))
+
+(ert-deftest ert-test-builtin-message-log-flushing ()
+ "This test attempts to demonstrate that there is no way to
+force immediate truncation of the *Messages* buffer from Lisp
+\(and hence justifies the existence of
+`ert--force-message-log-buffer-truncation'\): The only way that
+came to my mind was \(message \"\"\), which doesn't have the
+desired effect."
+ :tags '(:causes-redisplay)
+ (ert-with-buffer-renamed ("*Messages*")
+ (with-current-buffer "*Messages*"
+ (should (equal (buffer-string) ""))
+ ;; We used to get sporadic failures in this test that involved
+ ;; a spurious newline at the beginning of the buffer, before
+ ;; the first message. Below, we print a message and erase the
+ ;; buffer since this seems to eliminate the sporadic failures.
+ (message "foo")
+ (erase-buffer)
+ (should (equal (buffer-string) ""))
+ (let ((message-log-max 2))
+ (let ((message-log-max t))
+ (loop for i below 4 do
+ (message "%s" i))
+ (should (equal (buffer-string) "0\n1\n2\n3\n")))
+ (should (equal (buffer-string) "0\n1\n2\n3\n"))
+ (message "")
+ (should (equal (buffer-string) "0\n1\n2\n3\n"))
+ (message "Test message")
+ (should (equal (buffer-string) "3\nTest message\n"))))))
+
+(ert-deftest ert-test-force-message-log-buffer-truncation ()
+ :tags '(:causes-redisplay)
+ (labels ((body ()
+ (loop for i below 3 do
+ (message "%s" i)))
+ ;; Uses the implicit messages buffer truncation implemented
+ ;; in Emacs' C core.
+ (c (x)
+ (ert-with-buffer-renamed ("*Messages*")
+ (let ((message-log-max x))
+ (body))
+ (with-current-buffer "*Messages*"
+ (buffer-string))))
+ ;; Uses our lisp reimplementation.
+ (lisp (x)
+ (ert-with-buffer-renamed ("*Messages*")
+ (let ((message-log-max t))
+ (body))
+ (let ((message-log-max x))
+ (ert--force-message-log-buffer-truncation))
+ (with-current-buffer "*Messages*"
+ (buffer-string)))))
+ (loop for x in '(0 1 2 3 4 t) do
+ (should (equal (c x) (lisp x))))))
+
+
+(provide 'ert-x-tests)
+
+;;; ert-x-tests.el ends here
diff --git a/test/automated/font-parse-tests.el b/test/automated/font-parse-tests.el
new file mode 100644
index 0000000000..5fc0f6c604
--- /dev/null
+++ b/test/automated/font-parse-tests.el
@@ -0,0 +1,163 @@
+;;; font-parse-tests.el --- Test suite for font parsing.
+
+;; Copyright (C) 2011 Free Software Foundation, Inc.
+
+;; Author: Chong Yidong <[email protected]>
+;; Keywords: internal
+;; Human-Keywords: internal
+
+;; 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:
+
+;; Type M-x test-font-parse RET to generate the test buffer.
+
+;; TODO: Convert to ERT format.
+
+;;; Code:
+
+(require 'ert)
+
+(defvar font-parse-tests--data
+ `((" " ,(intern " ") nil nil nil nil)
+ ("Monospace" Monospace nil nil nil nil)
+ ("Foo1" Foo1 nil nil nil nil)
+ ("12" nil 12.0 nil nil nil)
+ ("12 " ,(intern "12 ") nil nil nil nil)
+ ;; Fontconfig format
+ ("Foo:" Foo nil nil nil nil)
+ ("Foo-8" Foo 8.0 nil nil nil)
+ ("Foo-18:" Foo 18.0 nil nil nil)
+ ("Foo-18:light" Foo 18.0 light nil nil)
+ ("Foo 10:weight=bold" ,(intern "Foo 10") nil bold nil nil)
+ ("Foo-12:weight=bold" Foo 12.0 bold nil nil)
+ ("Foo 8-20:slant=oblique" ,(intern "Foo 8") 20.0 nil oblique nil)
+ ("Foo:light:roman" Foo nil light roman nil)
+ ("Foo:italic:roman" Foo nil nil roman nil)
+ ("Foo 12:light:oblique" ,(intern "Foo 12") nil light oblique nil)
+ ("Foo-12:demibold:oblique" Foo 12.0 demibold oblique nil)
+ ("Foo:black:proportional" Foo nil black nil 0)
+ ("Foo-10:black:proportional" Foo 10.0 black nil 0)
+ ("Foo:weight=normal" Foo nil normal nil nil)
+ ("Foo:weight=bold" Foo nil bold nil nil)
+ ("Foo:weight=bold:slant=italic" Foo nil bold italic)
+ ("Foo:weight=bold:slant=italic:mono" Foo nil bold italic 100)
+ ("Foo-10:demibold:slant=normal" Foo 10.0 demibold normal nil)
+ ("Foo 11-16:oblique:weight=bold" ,(intern "Foo 11") 16.0 bold oblique nil)
+ ("Foo:oblique:randomprop=randomtag:weight=bold" Foo nil bold oblique nil)
+ ("Foo:randomprop=randomtag:bar=baz" Foo nil nil nil nil)
+ ("Foo Book Light:bar=baz" ,(intern "Foo Book Light") nil nil nil nil)
+ ("Foo Book Light 10:bar=baz" ,(intern "Foo Book Light 10") nil nil nil nil)
+ ("Foo Book Light-10:bar=baz" ,(intern "Foo Book Light") 10.0 nil nil nil)
+ ;; GTK format
+ ("Oblique" nil nil nil oblique nil)
+ ("Bold 17" nil 17.0 bold nil nil)
+ ("17 Bold" ,(intern "17") nil bold nil nil)
+ ("Book Oblique 2" nil 2.0 book oblique nil)
+ ("Bar 7" Bar 7.0 nil nil nil)
+ ("Bar Ultra-Light" Bar nil ultra-light nil nil)
+ ("Bar Light 8" Bar 8.0 light nil nil)
+ ("Bar Book Medium 9" Bar 9.0 medium nil nil)
+ ("Bar Semi-Bold Italic 10" Bar 10.0 semi-bold italic nil)
+ ("Bar Semi-Condensed Bold Italic 11" Bar 11.0 bold italic nil)
+ ("Foo 10 11" ,(intern "Foo 10") 11.0 nil nil nil)
+ ("Foo 1985 Book" ,(intern "Foo 1985") nil book nil nil)
+ ("Foo 1985 A Book" ,(intern "Foo 1985 A") nil book nil nil)
+ ("Foo 1 Book 12" ,(intern "Foo 1") 12.0 book nil nil)
+ ("Foo A Book 12 A" ,(intern "Foo A Book 12 A") nil nil nil nil)
+ ("Foo 1985 Book 12 Oblique" ,(intern "Foo 1985 Book 12") nil nil oblique nil)
+ ("Foo 1985 Book 12 Italic 10" ,(intern "Foo 1985 Book 12") 10.0 nil italic nil)
+ ("Foo Book Bar 6 Italic" ,(intern "Foo Book Bar 6") nil nil italic nil)
+ ("Foo Book Bar Bold" ,(intern "Foo Book Bar") nil bold nil nil))
+ "List of font names parse data.
+Each element should have the form
+ (NAME FAMILY SIZE WEIGHT SLANT SPACING)
+where NAME is the name to parse, and the remainder are the
+expected font properties from parsing NAME.")
+
+(defun font-parse-check (name prop expected)
+ (let ((result (font-get (font-spec :name name) prop)))
+ (if (and (symbolp result) (symbolp expected))
+ (eq result expected)
+ (equal result expected))))
+
+(put 'font-parse-check 'ert-explainer 'font-parse-explain)
+
+(defun font-parse-explain (name prop expected)
+ (let ((result (font-get (font-spec :name name) prop))
+ (propname (symbol-name prop)))
+ (format "Parsing `%s': expected %s `%s', got `%s'."
+ name (substring propname 1) expected
+ (font-get (font-spec :name name) prop))))
+
+(ert-deftest font-parse-tests ()
+ "Test parsing of Fontconfig-style and GTK-style font names."
+ (dolist (test font-parse-tests--data)
+ (let* ((name (nth 0 test)))
+ (should (font-parse-check name :family (nth 1 test)))
+ (should (font-parse-check name :size (nth 2 test)))
+ (should (font-parse-check name :weight (nth 3 test)))
+ (should (font-parse-check name :slant (nth 4 test)))
+ (should (font-parse-check name :spacing (nth 5 test))))))
+
+
+(defun test-font-parse ()
+ "Test font name parsing."
+ (interactive)
+ (switch-to-buffer (generate-new-buffer "*Font Pase Test*"))
+ (setq show-trailing-whitespace nil)
+ (let ((pass-face '((t :foreground "green")))
+ (fail-face '((t :foreground "red"))))
+ (dolist (test font-parse-tests--data)
+ (let* ((name (nth 0 test))
+ (fs (font-spec :name name))
+ (family (font-get fs :family))
+ (size (font-get fs :size))
+ (weight (font-get fs :weight))
+ (slant (font-get fs :slant))
+ (spacing (font-get fs :spacing)))
+ (insert name)
+ (if (> (current-column) 20)
+ (insert "\n"))
+ (indent-to-column 21)
+ (insert (propertize (symbol-name family)
+ 'face (if (eq family (nth 1 test))
+ pass-face
+ fail-face)))
+ (indent-to-column 40)
+ (insert (propertize (format "%s" size)
+ 'face (if (equal size (nth 2 test))
+ pass-face
+ fail-face)))
+ (indent-to-column 48)
+ (insert (propertize (format "%s" weight)
+ 'face (if (eq weight (nth 3 test))
+ pass-face
+ fail-face)))
+ (indent-to-column 60)
+ (insert (propertize (format "%s" slant)
+ 'face (if (eq slant (nth 4 test))
+ pass-face
+ fail-face)))
+ (indent-to-column 69)
+ (insert (propertize (format "%s" spacing)
+ 'face (if (eq spacing (nth 5 test))
+ pass-face
+ fail-face)))
+ (insert "\n"))))
+ (goto-char (point-min)))
+
+;;; font-parse-tests.el ends here.
diff --git a/test/bytecomp-testsuite.el b/test/bytecomp-testsuite.el
index 4c0c9f03d2..2a8bba5218 100644
--- a/test/bytecomp-testsuite.el
+++ b/test/bytecomp-testsuite.el
@@ -1,6 +1,6 @@
;;; bytecomp-testsuite.el
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Shigeru Fukaya <[email protected]>
;; Created: November 2008
@@ -280,4 +280,3 @@ Subtests signal errors if something goes wrong."
(provide 'byte-opt-testsuite)
-;; arch-tag: 01cb2664-5e7f-4213-ace0-91447d70b7dc
diff --git a/test/cedet/cedet-utests.el b/test/cedet/cedet-utests.el
index aab07d4947..d161ae68fc 100644
--- a/test/cedet/cedet-utests.el
+++ b/test/cedet/cedet-utests.el
@@ -1,6 +1,6 @@
;;; cedet-utests.el --- Run all unit tests in the CEDET suite.
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -512,5 +512,4 @@ When optional NO-ERROR don't throw an error if we can't run tests."
(provide 'cedet-utests)
-;; arch-tag: ace16290-4119-4df0-b33c-8c6b809f420d
;;; cedet-utests.el ends here
diff --git a/test/cedet/ede-tests.el b/test/cedet/ede-tests.el
index 2dc5dbf8ac..f07098a8a9 100644
--- a/test/cedet/ede-tests.el
+++ b/test/cedet/ede-tests.el
@@ -1,6 +1,6 @@
;;; ede-tests.el --- Some tests for the Emacs Development Environment
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -84,5 +84,4 @@ The search is done with the current EDE root."
(data-debug-insert-object-slots loc "]"))
)
-;; arch-tag: 79fae12e-652f-4544-a20e-b24d87b4917d
;;; ede-test.el ends here
diff --git a/test/cedet/semantic-ia-utest.el b/test/cedet/semantic-ia-utest.el
index 00f6632f9f..765029151d 100644
--- a/test/cedet/semantic-ia-utest.el
+++ b/test/cedet/semantic-ia-utest.el
@@ -1,6 +1,6 @@
;;; semantic-ia-utest.el --- Analyzer unit tests
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -525,5 +525,4 @@ Pass ARGS to format to create the log message."
(provide 'semantic-ia-utest)
-;; arch-tag: 03ede3fb-7ef0-4500-a7c2-bbf647957310
;;; semantic-ia-utest.el ends here
diff --git a/test/cedet/semantic-tests.el b/test/cedet/semantic-tests.el
index 8708ee7738..c840993bf2 100644
--- a/test/cedet/semantic-tests.el
+++ b/test/cedet/semantic-tests.el
@@ -1,6 +1,6 @@
;;; semantic-utest.el --- Miscellaneous Semantic tests.
-;;; Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2003-2004, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -388,4 +388,3 @@ gcc version 2.95.2 19991024 (release)"
(semantic-gcc-test-output-parser))
)
-;; arch-tag: 91686489-4ab3-4392-8277-b3831269ddbb
diff --git a/test/cedet/semantic-utest-c.el b/test/cedet/semantic-utest-c.el
index bc8acaf367..946a818e70 100644
--- a/test/cedet/semantic-utest-c.el
+++ b/test/cedet/semantic-utest-c.el
@@ -1,6 +1,6 @@
;;; semantic-utest-c.el --- C based parsing tests.
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -69,5 +69,4 @@
(provide 'semantic-utest-c)
-;; arch-tag: a90183e0-36ba-486e-9adb-8d37c929e6ba
;;; semantic-utest-c.el ends here
diff --git a/test/cedet/semantic-utest.el b/test/cedet/semantic-utest.el
index 123be9b570..a9a7c765f2 100644
--- a/test/cedet/semantic-utest.el
+++ b/test/cedet/semantic-utest.el
@@ -1,6 +1,6 @@
;;; semantic-utest.el --- Tests for semantic's parsing system.
-;;; Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2003-2004, 2007-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -864,5 +864,4 @@ SKIPNAMES is a list of names to remove from NAME-CONTENTS"
-;; arch-tag: 082cbe6f-2290-476e-9760-a19a6bdd16b8
;;; semantic-utest.el ends here
diff --git a/test/cedet/srecode-tests.el b/test/cedet/srecode-tests.el
index 7997ff415e..10b06f5cd0 100644
--- a/test/cedet/srecode-tests.el
+++ b/test/cedet/srecode-tests.el
@@ -1,6 +1,6 @@
;;; srecode-tests.el --- Some tests for CEDET's srecode
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -293,5 +293,4 @@ Dump out the extracted dictionary."
(princ "\n--------------------------------------------\n")
(srecode-dump extract))))))
-;; arch-tag: 7a467849-b415-4bdc-ba2a-284ace156a65
;;; srecode-tests.el ends here
diff --git a/test/cedet/tests/test.c b/test/cedet/tests/test.c
index 3ded385fed..6f96f79491 100644
--- a/test/cedet/tests/test.c
+++ b/test/cedet/tests/test.c
@@ -1,7 +1,6 @@
/* test.c --- Semantic unit test for C.
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
Author: Eric M. Ludlam <[email protected]>
@@ -241,5 +240,3 @@ int funk4_fixme(arg_61, arg_62)
/* End of C tests */
-/* arch-tag: ac9c7740-05ad-4821-a0b4-5db4357750ae
- (do not change this comment) */
diff --git a/test/cedet/tests/test.el b/test/cedet/tests/test.el
index d406f447df..8a95572c49 100644
--- a/test/cedet/tests/test.el
+++ b/test/cedet/tests/test.el
@@ -1,7 +1,6 @@
;;; test.el --- Unit test file for Semantic Emacs Lisp support.
-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2005-2011 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <[email protected]>
@@ -157,5 +156,3 @@
;;; Provide
;;
(provide 'test)
-
-;; arch-tag: ecda6dd6-db71-4b28-aa47-6adc585dce06
diff --git a/test/cedet/tests/test.make b/test/cedet/tests/test.make
index 82cce6fd34..a8a3e344ca 100644
--- a/test/cedet/tests/test.make
+++ b/test/cedet/tests/test.make
@@ -1,6 +1,6 @@
# test.make --- Semantic unit test for Make -*- makefile -*-
-# Copyright (C) 2001, 2002, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2001-2002, 2010-2011 Free Software Foundation, Inc.
# Author: Eric M. Ludlam <[email protected]>
diff --git a/test/cedet/tests/testdoublens.cpp b/test/cedet/tests/testdoublens.cpp
index 59e820027c..c0993af086 100644
--- a/test/cedet/tests/testdoublens.cpp
+++ b/test/cedet/tests/testdoublens.cpp
@@ -1,6 +1,6 @@
// testdoublens.cpp --- semantic-ia-utest completion engine unit tests
-// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+// Copyright (C) 2008-2011 Free Software Foundation, Inc.
// Author: Eric M. Ludlam <[email protected]>
@@ -164,4 +164,3 @@ namespace d {
} // namespace f
} // namespace d
-// arch-tag: a185c9f1-7519-48de-8eba-9d9b4140624b
diff --git a/test/cedet/tests/testdoublens.hpp b/test/cedet/tests/testdoublens.hpp
index 63b48257bb..94349ed854 100644
--- a/test/cedet/tests/testdoublens.hpp
+++ b/test/cedet/tests/testdoublens.hpp
@@ -1,6 +1,6 @@
// testdoublens.hpp --- Header file used in one of the Semantic tests
-// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+// Copyright (C) 2008-2011 Free Software Foundation, Inc.
// Author: Eric M. Ludlam <[email protected]>
@@ -68,4 +68,3 @@ namespace a {
} // namespace b
} // namespace a
-// arch-tag: 22e0ca95-6a61-4627-8816-68c67a896a8d
diff --git a/test/cedet/tests/testfriends.cpp b/test/cedet/tests/testfriends.cpp
index ef024f43f0..20425f93af 100644
--- a/test/cedet/tests/testfriends.cpp
+++ b/test/cedet/tests/testfriends.cpp
@@ -36,4 +36,3 @@ int B::testB() {
int B::testAB() { // %1% ( ( "testfriends.cpp" ) ( "B" "B::testAB" ) )
}
-// arch-tag: 31ea93db-59f8-4301-8e32-06536358618e
diff --git a/test/cedet/tests/testjavacomp.java b/test/cedet/tests/testjavacomp.java
index 369c93d9fd..e9aed8c51f 100644
--- a/test/cedet/tests/testjavacomp.java
+++ b/test/cedet/tests/testjavacomp.java
@@ -1,6 +1,6 @@
// testjavacomp.java --- Semantic unit test for Java
-// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+// Copyright (C) 2009-2011 Free Software Foundation, Inc.
// Author: Eric M. Ludlam <[email protected]>
diff --git a/test/cedet/tests/testnsp.cpp b/test/cedet/tests/testnsp.cpp
index fba9bdfb17..012dc66060 100644
--- a/test/cedet/tests/testnsp.cpp
+++ b/test/cedet/tests/testnsp.cpp
@@ -27,4 +27,3 @@ void myfcn_not_in_ns (void) {
; // #1# ( "fromchild" "fromroot" )
}
-// arch-tag: 2e9c6bf7-1574-440f-ba66-5c8fe034cdec
diff --git a/test/cedet/tests/testpolymorph.cpp b/test/cedet/tests/testpolymorph.cpp
index 329f4d598f..493b4344c1 100644
--- a/test/cedet/tests/testpolymorph.cpp
+++ b/test/cedet/tests/testpolymorph.cpp
@@ -1,6 +1,6 @@
/** testpolymorph.cpp --- A sequence of polymorphism examples.
*
- * Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+ * Copyright (C) 2009-2011 Free Software Foundation, Inc.
*
* Author: Eric M. Ludlam <[email protected]>
*
@@ -129,4 +129,3 @@ namespace template_multiple_spec {
// End of polymorphism test file.
-// arch-tag: e2c04959-9b3b-4b4f-b9c2-445bf4848aa4
diff --git a/test/cedet/tests/testspp.c b/test/cedet/tests/testspp.c
index cd6d0f2a24..1cd45e47e1 100644
--- a/test/cedet/tests/testspp.c
+++ b/test/cedet/tests/testspp.c
@@ -1,6 +1,6 @@
/* testspp.cpp --- Semantic unit test for the C preprocessor
- Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2007-2011 Free Software Foundation, Inc.
Author: Eric M. Ludlam <[email protected]>
@@ -100,5 +100,3 @@ int no_show_moose_elif_2() {}
int show_moose_elif_else() {}
#endif
-/* arch-tag: 5ea50b2a-1e12-439e-ade4-e68267f49674
- (do not change this comment) */
diff --git a/test/cedet/tests/testsppcomplete.c b/test/cedet/tests/testsppcomplete.c
index 772be33300..d789994228 100644
--- a/test/cedet/tests/testsppcomplete.c
+++ b/test/cedet/tests/testsppcomplete.c
@@ -28,5 +28,3 @@ int main(int argc, char *argv[]) {
; // #3# ( "test" )
}
-/* arch-tag: f4a9fe26-9035-4378-b951-9f06d6554599
- (do not change this comment) */
diff --git a/test/cedet/tests/testsppreplace.c b/test/cedet/tests/testsppreplace.c
index 7d2593eea0..4ec87654dc 100644
--- a/test/cedet/tests/testsppreplace.c
+++ b/test/cedet/tests/testsppreplace.c
@@ -1,5 +1,5 @@
/* testsppreplace.c --- unit test for CPP/SPP Replacement
- Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2007-2011 Free Software Foundation, Inc.
Author: Eric M. Ludlam <[email protected]>
@@ -152,5 +152,3 @@ int STARTMACRO () {
/* END */
-/* arch-tag: ee9bd650-35f4-468f-82d7-a5f3606c0132
- (do not change this comment) */
diff --git a/test/cedet/tests/testsppreplaced.c b/test/cedet/tests/testsppreplaced.c
index f42727e9eb..5098715081 100644
--- a/test/cedet/tests/testsppreplaced.c
+++ b/test/cedet/tests/testsppreplaced.c
@@ -1,5 +1,5 @@
/* testsppreplaced.c --- unit test for CPP/SPP Replacement
- Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2007-2011 Free Software Foundation, Inc.
Author: Eric M. Ludlam <[email protected]>
@@ -116,5 +116,3 @@ int MACROA () {
/* End */
-/* arch-tag: fbc5621d-769c-45d0-b924-6c56743189e5
- (do not change this comment) */
diff --git a/test/cedet/tests/testsubclass.cpp b/test/cedet/tests/testsubclass.cpp
index 4d379f707a..6a704818b0 100644
--- a/test/cedet/tests/testsubclass.cpp
+++ b/test/cedet/tests/testsubclass.cpp
@@ -1,6 +1,6 @@
// testsubclass.cpp --- unit test for analyzer and complex C++ inheritance
-// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+// Copyright (C) 2007-2011 Free Software Foundation, Inc.
// Author: Eric M. Ludlam <[email protected]>
@@ -247,4 +247,3 @@ bool sneaky::bugalope::testAccess() //^9^
;
}
-// arch-tag: 20a08c42-9ba6-4c8d-966a-893b37c841ef
diff --git a/test/cedet/tests/testsubclass.hh b/test/cedet/tests/testsubclass.hh
index 15a757c7e7..9e6d777d74 100644
--- a/test/cedet/tests/testsubclass.hh
+++ b/test/cedet/tests/testsubclass.hh
@@ -1,6 +1,6 @@
// testsubclass.hh --- unit test for analyzer and complex C++ inheritance
-// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+// Copyright (C) 2007-2011 Free Software Foundation, Inc.
// Author: Eric M. Ludlam <[email protected]>
@@ -189,4 +189,3 @@ namespace sneaky {
#endif
-// arch-tag: e292a1d5-5434-4b4d-8e0e-808101ad84b6
diff --git a/test/cedet/tests/testtypedefs.cpp b/test/cedet/tests/testtypedefs.cpp
index 3f0be25c49..f97b140045 100644
--- a/test/cedet/tests/testtypedefs.cpp
+++ b/test/cedet/tests/testtypedefs.cpp
@@ -1,6 +1,6 @@
// testtypedefs.cpp --- Sample with some fake bits out of std::string
-// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+// Copyright (C) 2008-2011 Free Software Foundation, Inc.
// Author: Eric M. Ludlam <[email protected]>
@@ -79,4 +79,3 @@ int main()
return 0;
}
-// arch-tag: 5a841384-8685-4344-bf45-15d3db19a87b
diff --git a/test/cedet/tests/testvarnames.c b/test/cedet/tests/testvarnames.c
index f069efa725..51d8285730 100644
--- a/test/cedet/tests/testvarnames.c
+++ b/test/cedet/tests/testvarnames.c
@@ -1,7 +1,7 @@
/* testvarnames.cpp
Test variable and function names, lists of variables on one line, etc.
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2008-2011 Free Software Foundation, Inc.
Author: Eric M. Ludlam <[email protected]>
@@ -89,5 +89,3 @@ int test_1(int var_arg1) {
; // #11# ( "named_3" "named_4")
}
-/* arch-tag: ca9f23e9-0c66-4a5e-b233-3fdc841d3a63
- (do not change this comment) */
diff --git a/test/comint-testsuite.el b/test/comint-testsuite.el
index 9a4e7eae3b..262ac28479 100644
--- a/test/comint-testsuite.el
+++ b/test/comint-testsuite.el
@@ -1,6 +1,6 @@
;;; bytecomp-testsuite.el
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
diff --git a/test/icalendar-testsuite.el b/test/icalendar-testsuite.el
index 351bd528bc..5a6bec30dc 100644
--- a/test/icalendar-testsuite.el
+++ b/test/icalendar-testsuite.el
@@ -1,6 +1,6 @@
;; icalendar-testsuite.el --- Test suite for icalendar.el
-;; Copyright (C) 2005, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2005, 2008-2011 Free Software Foundation, Inc.
;; Author: Ulf Jasper <[email protected]>
;; Created: March 2005
@@ -1855,5 +1855,4 @@ SUMMARY:and diary-anniversary
(provide 'icalendar-testsuite)
-;; arch-tag: 33a98396-90e9-49c8-b0e9-b606386d6e8c
;;; icalendar-testsuite.el ends here
diff --git a/test/indent/prolog.prolog b/test/indent/prolog.prolog
index 8b96cd56a3..6cb5535fe8 100644
--- a/test/indent/prolog.prolog
+++ b/test/indent/prolog.prolog
@@ -1,11 +1,18 @@
-%% -*- mode: prolog; coding: utf-8 -*-
+%% -*- mode: prolog; coding: utf-8; fill-column: 78 -*-
+
+%% Testing correct tokenizing.
+foo(X) :- 0'= = X.
+foo(X) :- 8'234 = X.
+foo(X) :- '\x45\' = X.
+foo(X) :- 'test 0'=X.
+foo(X) :- 'test 8'=X.
%% wf(+E)
%% Vérifie que E est une expression syntaxiquement correcte.
-wf(X) :- atom(X); integer(X); var(X). %Une variable ou un entier.
-wf(lambda(X, T, B)) :- atom(X), wf(T), wf(B). %Une fonction.
-wf(app(E1, E2)) :- wf(E1), wf(E2). %Un appel de fonction.
-wf(pi(X, T, B)) :- atom(X), wf(T), wf(B). %Le type d'une fonction.
+wf(X) :- atom(X); integer(X); var(X). %Une variable ou un entier.
+wf(lambda(X, T, B)) :- atom(X), wf(T), wf(B). %Une fonction.
+wf(app(E1, E2)) :- wf(E1), wf(E2). %Un appel de fonction.
+wf(pi(X, T, B)) :- atom(X), wf(T), wf(B). %Le type d'une fonction.
%% Éléments additionnels utilisés dans le langage source.
wf(lambda(X, B)) :- atom(X), wf(B).
diff --git a/test/newsticker-testsuite.el b/test/newsticker-testsuite.el
index f8f094f345..99e40a7ef1 100644
--- a/test/newsticker-testsuite.el
+++ b/test/newsticker-testsuite.el
@@ -1,7 +1,6 @@
;;; newsticker-testsuite.el --- Test suite for newsticker.
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2003-2011 Free Software Foundation, Inc.
;; Author: Ulf Jasper <[email protected]>
;; Filename: newsticker-testsuite.el
@@ -177,5 +176,4 @@ Signals an error if something goes wrong."
(provide 'newsticker-testsuite)
-;; arch-tag: e6c09af2-cc7a-4373-8f5f-9c36699ec34c
;;; newsticker-testsuite.el ends here
diff --git a/test/occur-testsuite.el b/test/occur-testsuite.el
index a4756c49e2..6f1107e5c1 100644
--- a/test/occur-testsuite.el
+++ b/test/occur-testsuite.el
@@ -1,6 +1,6 @@
;;; occur-testsuite.el --- Test suite for occur.
-;; Copyright (C) 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
;; Author: Juri Linkov <[email protected]>
;; Keywords: matching, internal
diff --git a/test/redisplay-testsuite.el b/test/redisplay-testsuite.el
index c7616fea67..afa42cc494 100644
--- a/test/redisplay-testsuite.el
+++ b/test/redisplay-testsuite.el
@@ -1,6 +1,6 @@
;;; redisplay-testsuite.el --- Test suite for redisplay.
-;; Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
;; Author: Chong Yidong <[email protected]>
;; Keywords: internal
@@ -178,4 +178,3 @@ static unsigned char x_bits[] = {0xff, 0x81, 0xbd, 0xa5, 0xa5, 0xbd, 0x81, 0xff
(test-redisplay-3)
(goto-char (point-min))))
-;; arch-tag: fcee53c8-024f-403d-9154-61ae3ce0bfb8
diff --git a/update-subdirs b/update-subdirs
index 26853455e2..dfd594ae78 100755
--- a/update-subdirs
+++ b/update-subdirs
@@ -1,8 +1,8 @@
#!/bin/sh
# Write into $1/subdirs.el a list of subdirs of directory $1.
-# Copyright (C) 1994, 1995, 1997, 1999, 2001, 2002, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1994-1995, 1997, 1999, 2001-2011
+# Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -55,5 +55,3 @@ else
mv subdirs.el~ subdirs.el
fi
fi
-
-# arch-tag: 56ebcf1b-5c30-4934-b0b4-72d374064704
diff --git a/vpath.sed b/vpath.sed
index 0eb98cc829..a792eb0e91 100644
--- a/vpath.sed
+++ b/vpath.sed
@@ -6,4 +6,3 @@ vpath %.c $(srcdir)\
vpath %.h $(srcdir)\
\
-# arch-tag: 56a64b50-e4e8-443a-960f-f13af0f1a545
diff --git a/warn-on-use.h b/warn-on-use.h
new file mode 100644
index 0000000000..fdf250e9f4
--- /dev/null
+++ b/warn-on-use.h
@@ -0,0 +1,109 @@
+/* A C macro for emitting warnings if a function is used.
+ Copyright (C) 2010-2011 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
+ Lesser 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/>. */
+
+/* _GL_WARN_ON_USE (function, "literal string") issues a declaration
+ for FUNCTION which will then trigger a compiler warning containing
+ the text of "literal string" anywhere that function is called, if
+ supported by the compiler. If the compiler does not support this
+ feature, the macro expands to an unused extern declaration.
+
+ This macro is useful for marking a function as a potential
+ portability trap, with the intent that "literal string" include
+ instructions on the replacement function that should be used
+ instead. However, one of the reasons that a function is a
+ portability trap is if it has the wrong signature. Declaring
+ FUNCTION with a different signature in C is a compilation error, so
+ this macro must use the same type as any existing declaration so
+ that programs that avoid the problematic FUNCTION do not fail to
+ compile merely because they included a header that poisoned the
+ function. But this implies that _GL_WARN_ON_USE is only safe to
+ use if FUNCTION is known to already have a declaration. Use of
+ this macro implies that there must not be any other macro hiding
+ the declaration of FUNCTION; but undefining FUNCTION first is part
+ of the poisoning process anyway (although for symbols that are
+ provided only via a macro, the result is a compilation error rather
+ than a warning containing "literal string"). Also note that in
+ C++, it is only safe to use if FUNCTION has no overloads.
+
+ For an example, it is possible to poison 'getline' by:
+ - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]],
+ [getline]) in configure.ac, which potentially defines
+ HAVE_RAW_DECL_GETLINE
+ - adding this code to a header that wraps the system <stdio.h>:
+ #undef getline
+ #if HAVE_RAW_DECL_GETLINE
+ _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but"
+ "not universally present; use the gnulib module getline");
+ #endif
+
+ It is not possible to directly poison global variables. But it is
+ possible to write a wrapper accessor function, and poison that
+ (less common usage, like &environ, will cause a compilation error
+ 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; }
+ _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
+ # undef environ
+ # define environ (*rpl_environ ())
+ #endif
+ */
+#ifndef _GL_WARN_ON_USE
+
+# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
+/* A compiler attribute is available in gcc versions 4.3.0 and later. */
+# define _GL_WARN_ON_USE(function, message) \
+extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+/* Verify the existence of the function. */
+# define _GL_WARN_ON_USE(function, message) \
+extern __typeof__ (function) function
+# else /* Unsupported. */
+# define _GL_WARN_ON_USE(function, message) \
+_GL_WARN_EXTERN_C int _gl_warn_on_use
+# endif
+#endif
+
+/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
+ is like _GL_WARN_ON_USE (function, "string"), except that the function is
+ declared with the given prototype, consisting of return type, parameters,
+ and attributes.
+ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
+ not work in this case. */
+#ifndef _GL_WARN_ON_USE_CXX
+# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
+# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
+extern rettype function parameters_and_attributes \
+ __attribute__ ((__warning__ (msg)))
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+/* Verify the existence of the function. */
+# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
+extern rettype function parameters_and_attributes
+# else /* Unsupported. */
+# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
+_GL_WARN_EXTERN_C int _gl_warn_on_use
+# endif
+#endif
+
+/* _GL_WARN_EXTERN_C declaration;
+ performs the declaration with C linkage. */
+#ifndef _GL_WARN_EXTERN_C
+# if defined __cplusplus
+# define _GL_WARN_EXTERN_C extern "C"
+# else
+# define _GL_WARN_EXTERN_C extern
+# endif
+#endif